{ inputs = { agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; 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 = { agenix, home-manager, impermanence, nixpkgs, noshell, nur, nvf, stylix, ... }: let laptop = import ./machines/laptop/machine.nix; _173-249-5-230 = import ./machines/173-249-5-230/machine.nix; configuration = machine: modules: nixpkgs.lib.nixosSystem { system = machine.system; specialArgs = {inherit machine;}; modules = modules ++ [ machine.configuration machine.hardware-configuration ]; }; configurationWithHomeManager = machine: (configuration machine [ agenix.nixosModules.default home-manager.nixosModules.home-manager { nixpkgs.overlays = [ agenix.overlays.default nur.overlays.default ]; home-manager.useGlobalPkgs = true; home-manager.extraSpecialArgs = {inherit machine;}; home-manager.users = builtins.mapAttrs (name: value: value) ( nixpkgs.legacyPackages.${machine.system}.lib.genAttrs machine.usernames ( name: { imports = [ agenix.homeManagerModules.default stylix.homeModules.stylix nvf.homeManagerModules.default ./users/${name}/home.nix ]; } ) ); } impermanence.nixosModules.impermanence noshell.nixosModules.default ]); in { nixosConfigurations.${laptop.hostname} = configurationWithHomeManager laptop; nixosConfigurations.${_173-249-5-230.hostname} = configurationWithHomeManager _173-249-5-230; }; }