{ description = "NixOS + Home Manager flake (root)"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; todo.url = "github:sioodmy/todo"; zen-browser = { url = "github:0xc000022070/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; personal = { url = "path:./personal.stub.nix"; flake = false; }; }; outputs = inputs@{ self, nixpkgs, home-manager, ... }: let personal = import inputs.personal; username = personal.username or "krosh"; gitName = personal.gitName or "Dmitrii Gudov"; gitEmail = personal.gitEmail or "gudovdo@my.msu.ru"; mkHost = { hostName, system ? "x86_64-linux" }: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs username gitName gitEmail; }; modules = [ ./hosts/${hostName}/configuration.nix home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.${username} = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit inputs username gitName gitEmail; }; } ]; }; pkgsFor = system: nixpkgs.legacyPackages.${system}; in { nixosConfigurations = { loki-nixos = mkHost { hostName = "loki-nixos"; system = "x86_64-linux"; }; fenrir-nixos = mkHost { hostName = "fenrir-nixos"; system = "x86_64-linux"; }; }; }; }