aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2025-07-29 02:05:03 +0200
committerschererleander <leander@schererleander.de>2025-07-29 02:05:03 +0200
commit012c5e58e5ae2101c5d00e3b2dd1711a1d13f444 (patch)
tree31302d5d4358293f634d11daa54c834b61cf6ba5
parent7b3bf7557d4cd2d3263425cbfa15350b4c3ed361 (diff)
feat: make system wrapper
-rw-r--r--lib/default.nix43
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;
+ };
+}
+