{ description = "Модульная конфигурация NixOS 25.11 на Flake с Home Manager для виртуальной машины"; inputs = { # Nixpkgs - главный репозиторий пакетов # Используем nixos-25.11 для стабильности вместо unstable nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; # Hardware profiles для различных машин nixos-hardware.url = "github:nixos/nixos-hardware"; # Home Manager для управления конфигурацией пользователя home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixos-hardware, home-manager }: let # Переменные для переиспользования system = "x86_64-linux"; version = "25.11"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; in { # Главная конфигурация NixOS nixosConfigurations.nixos-vm = nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit pkgs; }; modules = [ ./configuration.nix # Модуль Home Manager для управления конфигурацией пользователя home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.ada = import ./home/ada/default.nix; } ]; }; # Окружение для разработки конфигурации devShells.${system}.default = pkgs.mkShell { description = "Development environment для NixOS конфигурации"; buildInputs = with pkgs; [ # Инструменты Nix nix-output-monitor nvd nix-tree nixfmt-classic # Редакторы vim nano # Утилиты для работы git ripgrep fd ]; shellHook = '' echo "🚀 Development environment loaded" echo "📚 Доступные утилиты:" echo " - nixfmt: Форматирование Nix кода" echo " - nvd: Сравнение версий" echo " - nix-tree: Дерево зависимостей" echo "💡 Совет: запусти 'nh os switch' для применения конфигурации" ''; }; # Форматеры кода formatter.${system} = pkgs.nixfmt-classic; }; }