summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorseth <[email protected]>2024-05-24 04:46:59 -0400
committerseth <[email protected]>2024-05-24 21:36:05 -0600
commitef2b5ea9f2f9450eac7ac2a875a8f1c6599c1ed0 (patch)
tree5d21686d2d34986c6fcdf23fcd8f3a3c176d53bd /lib
parent5533072babca9fdefe45151ee834cdd14e1c679e (diff)
don't use flake module
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix19
-rw-r--r--lib/lib.nix47
2 files changed, 53 insertions, 13 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 92ae0f0..c2936aa 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -1,14 +1,7 @@
-{lib, ...}: let
- fnsFrom = files:
- builtins.listToAttrs (
- map (file: {
- name = lib.removeSuffix ".nix" (baseNameOf file);
- value = import file lib;
- })
- files
- );
-in {
- flake.lib = fnsFrom [
- ./nginx.nix
- ];
+{lib, ...} @ args: {
+ flake.lib =
+ (lib.extend (final: prev: {
+ my = import ./lib.nix args;
+ }))
+ .my;
}
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;
+}