commit 6907d433d3965e70224b522a4c83cf81510b06eb Author: Gregory Bednov Date: Sat Jan 25 16:01:31 2025 +0300 Add files via upload diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..da46183 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,109 @@ +{ + config, + pkgs, + simintech, + stm32cubemx, + inputs, + ... +}: +let + serverIP = "10.0.174.12"; + hasBootPartition = config.fileSystems ? "/boot"; + isNvidia = (builtins.readFile (pkgs.runCommandLocal "isNvidia" {} '' + ${pkgs.pciutils}/bin/lspci | ${pkgs.busybox}/bin/grep NVIDIA | ${pkgs.busybox}/bin/grep VGA > $out + '')) != ""; +in +{ + users.users.student = { + isNormalUser = true; + initialPassword = "student"; # вход беспарольный, но пароль student + extraGroups = [ "video" "sound" "input" "storage" ]; + packages = []; + }; + + imports = [ ./hardware-configuration.nix ]; + + # если машина установлена на диск с Windows, + # то она позволяет "увидеть" и выбрать Windows в течение 30 с + # иначе - 5 c таймаута (для виртуалок) + boot.loader = if hasBootPartition then { + efi.canTouchEfiVariables = true; + timeout = 30; + grub = { + enable = true; + efiSupport = true; + device = "nodev"; + useOSProber = true; + theme = "${pkgs.sleek-grub-theme.override{ withStyle = "orange"; withBanner = "Выберите ОС"; }}"; + }; + } else { + timeout = 5; + grub = { + enable = true; + device = "/dev/sda"; + theme = "${pkgs.sleek-grub-theme.override{ withStyle = "orange"; withBanner = "Загрузчик Linux"; }}"; + }; + }; + time.hardwareClockInLocalTime = hasBootPartition; + + # настройки Nix + nixpkgs.config.allowUnfree = true; + nix.settings.auto-optimise-store = true; + nix.extraOptions = '' + experimental-features = nix-command flakes + ''; + + ##### СЕТЕВЫЕ НАСТРОЙКИ ####### + # каждый компьютер виден под уникальным именем через Avahi + services.avahi = { + hostName = "nixos" + + builtins.readFile ((pkgs.runCommandLocal "uuid" {} '' + mkdir $out + cat /proc/sys/kernel/random/uuid > $out/uuid + '')+"/uuid"); + enable = true; + nssmdns4 = true; + publish = { + enable = true; + hinfo = true; + addresses = true; + }; + }; + + # каждый компьютер имеет выход в интернет + networking.networkmanager.enable = true; + + networking.hostName = "nixos"; + + # каждый компьютер ресолвит DNS-запросы СТРОГО через наш сервер + networking.nameservers = [ serverIP ]; + + # каждый компьютер знает, что kafpi.local - это адрес нашего сервера + networking.hosts."${serverIP}" = [ "kafpi.local" ]; + + #### ЛОКАЛИЗАЦИЯ ##### + + time.timeZone = "Europe/Moscow"; + i18n.defaultLocale = "ru_RU.UTF-8"; + console = { + font = "cyr-sun16"; + useXkbConfig = true; + }; + + ####### ПРОЧИЕ НАСТРОЙКИ ####### + environment.systemPackages = with pkgs; [ + vim + tree + wget + git + ]; + + # удаленный доступ в пределах нашей сети + services.openssh = { + enable = true; + settings.PermitRootLogin = "yes"; + }; + + # НЕ МЕНЯТЬ, иначе придётся все компы переустанавливать, а не обновлять + system.stateVersion = "24.05"; +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..5c9ccf8 --- /dev/null +++ b/flake.nix @@ -0,0 +1,30 @@ +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + inputs.simintech.url = "github:gregorybednov/simintech_nix"; # /94cb0192edb8f42e21362dae2c3712a4cfa7d71e; + inputs.mireadesktop.url = "github:gregorybednov/mireadesktop"; + inputs.stm32cubemx.url = "github:gregorybednov/stm32cubemx"; + inputs.gostfont.url = "github:gregorybednov/gostfont"; + inputs.nix-jetbrains-plugins.url = "github:gregorybednov/nix-jetbrains-plugins"; + inputs.mireapython.url = "github:gregorybednov/mireapython"; + + outputs = + { + self, + nixpkgs, + simintech, + stm32cubemx, + ... + }@inputs: + { + nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit simintech; + inherit stm32cubemx; + inherit inputs; + }; + modules = [ + ./configuration.nix + ]; + }; + }; +}