diff options
Diffstat (limited to 'lib/lib.nix')
| -rw-r--r-- | lib/lib.nix | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/lib.nix b/lib/lib.nix new file mode 100644 index 0000000..5b7ee7d --- /dev/null +++ b/lib/lib.nix @@ -0,0 +1,47 @@ +{ + lib, + self, + inputs, + ... +}: let + wrapBuilderWith = apply: builder: args: builder (apply args); + + wrapBuilder = type: + wrapBuilderWith ({ + modules ? [], + specialArgs ? {}, + ... + } @ args: + args + // { + modules = + modules + ++ lib.attrValues (self."${type}Modules" or {}); + + specialArgs = specialArgs // {inherit inputs;}; + }); + + wrapNixOS = wrapBuilder "nixos"; + wrapDarwin = wrapBuilder "darwin"; + + wrapUser = wrapBuilderWith ({ + modules ? [], + extraSpecialArgs ? {}, + ... + } @ args: + args + // { + modules = + modules + ++ lib.attrValues (self.homeManagerModules or {}); + + extraSpecialArgs = extraSpecialArgs // {inherit inputs;}; + }); +in { + nixosSystem = wrapNixOS inputs.nixpkgs.lib.nixosSystem; + nixosSystemStable = wrapNixOS inputs.nixpkgs-stable.lib.nixosSystem; + darwinSystem = wrapDarwin inputs.nix-darwin.lib.darwinSystem; + homeManagerConfiguration = wrapUser inputs.home-manager.lib.homeManagerConfiguration; + + nginx = import ./nginx.nix lib; +} |
