{ inputs = { home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence.url = "github:nix-community/impermanence"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; noshell = { url = "github:viperML/noshell"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; nvf = { url = "github:notashelf/nvf"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { home-manager, impermanence, nixpkgs, noshell, nur, nvf, stylix, ... }: let laptop = import ./machines/laptop/machine.nix; in { nixosConfigurations.${laptop.hostname} = nixpkgs.lib.nixosSystem { system = laptop.system; specialArgs = {machine = laptop;}; modules = [ home-manager.nixosModules.home-manager { nixpkgs.overlays = [nur.overlays.default]; home-manager.useGlobalPkgs = true; home-manager.extraSpecialArgs = { machine = laptop; }; home-manager.users = builtins.mapAttrs (name: value: value) ( nixpkgs.legacyPackages.${laptop.system}.lib.genAttrs laptop.usernames ( name: { imports = [ stylix.homeModules.stylix nvf.homeManagerModules.default ./users/${name}/home.nix ]; } ) ); } impermanence.nixosModules.impermanence noshell.nixosModules.default ./configuration.nix laptop.hardware-configuration ]; }; }; }