diff options
| author | schererleander <leander@schererleander.de> | 2025-07-29 02:05:03 +0200 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-07-29 02:05:03 +0200 |
| commit | 012c5e58e5ae2101c5d00e3b2dd1711a1d13f444 (patch) | |
| tree | 31302d5d4358293f634d11daa54c834b61cf6ba5 /lib/default.nix | |
| parent | 7b3bf7557d4cd2d3263425cbfa15350b4c3ed361 (diff) | |
feat: make system wrapper
Diffstat (limited to 'lib/default.nix')
| -rw-r--r-- | lib/default.nix | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..ac0a88a --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,43 @@ +{ inputs, ... }: + +let + lib = inputs.nixpkgs.lib; + isDarwin = s: lib.strings.hasSuffix "-darwin" s; +in rec { + mkSystem = + { host + , username + , system + , extraModules ? [ ] + , extraArguments ? { } + }: + let + darwinHost = isDarwin system; + builder = if darwinHost + then inputs.nix-darwin.lib.darwinSystem + else inputs.nixpkgs.lib.nixosSystem; + hmModule = if darwinHost + then inputs.home-manager.darwinModules.home-manager + else inputs.home-manager.nixosModules.home-manager; + hostDir = ../hosts/${host}; + hostCfg = hostDir + "/configuration.nix"; + hostHome = hostDir + "/home.nix"; + modules = + [ hostCfg ] + ++ (lib.optional darwinHost inputs."mac-app-util".darwinModules.default) + ++ [ + hmModule { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.users.${username} = import hostHome; + } + ] + ++ extraModules; + in + builder { + inherit system modules; + specialArgs = { inherit inputs username; } // extraArguments; + }; +} + |
