From 7e7c8947fc2ff5598124c4a4c18bd28432fa017e Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Mon, 8 Sep 2025 14:01:35 -0500 Subject: rework most of config; probably broke jupiter again; working to add ganymede (non-nixos) to this repo --- lib/nix-furnace/mkSystem.nix | 105 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 lib/nix-furnace/mkSystem.nix (limited to 'lib/nix-furnace/mkSystem.nix') diff --git a/lib/nix-furnace/mkSystem.nix b/lib/nix-furnace/mkSystem.nix new file mode 100644 index 0000000..3285f3a --- /dev/null +++ b/lib/nix-furnace/mkSystem.nix @@ -0,0 +1,105 @@ +let + my-lib = import ../lib.nix; + inherit (my-lib.globimport) getSubdirs lazyImport; + + listModules = getSubdirs ../../modules; + + mkNixosSystem = { + inputs, + hostname, + username, + module_types, + }: + inputs.nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs my-lib;}; + modules = [ + {networking.hostName = hostname;} + + ../../hosts/${hostname}/config.nix + + # Nixos-sided modules + { + imports = + [ + ../../modules/options.nix + ../../hosts/${hostname}/config.nix + (lazyImport ../../hosts/${hostname}/nixos.nix) + ] + ++ (listModules + |> (builtins.map (modName: [ + (lazyImport ../../modules/${modName}/options.nix) + (lazyImport ../../modules/${modName}/nixos/default.nix) + ])) + |> my-lib.flatten); + } + + # Home-sided modules + ( + if (builtins.elem "home" module_types) + then { + imports = [ + inputs.home-manager.nixosModules.home-manager + ]; + home-manager = { + backupFileExtension = "bak"; + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = {inherit inputs my-lib;}; + users.${username} = { + imports = + [ + ../../modules/options.nix + ../../hosts/${hostname}/config.nix + (lazyImport ../../hosts/${hostname}/home.nix) + { + home.preferXdgDirectories = true; + } + ] + ++ (listModules + |> (builtins.map (modName: [ + (lazyImport ../../modules/${modName}/options.nix) + (lazyImport ../../modules/${modName}/home/default.nix) + ])) + |> my-lib.flatten); + }; + }; + } + else {} + ) + + # Hjem-sided modules + ( + if (builtins.elem "hjem" module_types) + then { + imports = [ + inputs.hjem.nixosModules.hjem + ]; + hjem = { + extraModules = + [ + ../../modules/options.nix + ../../hosts/${hostname}/config.nix + (lazyImport ../../hosts/${hostname}/hjem.nix) + ] + ++ (listModules + |> (builtins.map (modName: [ + (lazyImport ../../modules/${modName}/options.nix) + (lazyImport ../../modules/${modName}/hjem/default.nix) + ])) + |> my-lib.flatten); + specialArgs = {inherit inputs my-lib;}; + users.${username} = { + enable = true; + user = username; + directory = "/home/${username}"; + }; + }; + } + else {} + ) + + # This is where we would add nix-on-droid modules + ]; + }; +in + mkNixosSystem -- cgit v1.3.1