diff --git a/flake-parts/hosts.nix b/flake-parts/hosts.nix index 357e0c8..8fb4c1a 100644 --- a/flake-parts/hosts.nix +++ b/flake-parts/hosts.nix @@ -1,11 +1,16 @@ -{ inputs, self, ... }: +{ + inputs, + self, + lib, + ... +}: let - lib = inputs.nixpkgs.lib.extend (_: _: { custom = import "${self}/lib" inputs.nixpkgs.lib; }); + inherit (self) lib'; mkHost = hostName: inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs self lib; }; + specialArgs = { inherit inputs self lib'; }; modules = [ { networking = { inherit hostName; }; } "${self}/hosts/common.nix" @@ -25,9 +30,9 @@ let in { flake = { - nixosConfigurations = "${self}/hosts" |> lib.custom.listDirectories |> lib.custom.genAttrs mkHost; + nixosConfigurations = "${self}/hosts" |> lib'.listDirectories |> lib'.genAttrs mkHost; - deploy.nodes = "${self}/hosts" |> lib.custom.listDirectories |> lib.custom.genAttrs mkDeployNode; + deploy.nodes = "${self}/hosts" |> lib'.listDirectories |> lib'.genAttrs mkDeployNode; checks = inputs.deploy-rs.lib |> lib.mapAttrs (_: deployLib: deployLib.deployChecks self.deploy); }; diff --git a/flake-parts/lib.nix b/flake-parts/lib.nix new file mode 100644 index 0000000..c97b506 --- /dev/null +++ b/flake-parts/lib.nix @@ -0,0 +1,4 @@ +{ self, inputs, ... }: +{ + flake.lib' = import "${self}/lib" inputs.nixpkgs.lib; +} diff --git a/flake-parts/modules.nix b/flake-parts/modules.nix index 39a3932..de08ea1 100644 --- a/flake-parts/modules.nix +++ b/flake-parts/modules.nix @@ -1,10 +1,7 @@ -{ self, inputs, ... }: -let - lib = inputs.nixpkgs.lib.extend (_: _: { custom = import "${self}/lib" inputs.nixpkgs.lib; }); -in +{ self, ... }: { flake = { - nixosModules.default.imports = lib.custom.listNixFilesRecursive "${self}/modules/system"; - homeManagerModules.default.imports = lib.custom.listNixFilesRecursive "${self}/modules/home"; + nixosModules.default.imports = self.lib'.listNixFilesRecursive "${self}/modules/system"; + homeManagerModules.default.imports = self.lib'.listNixFilesRecursive "${self}/modules/home"; }; } diff --git a/flake.nix b/flake.nix index 4a7c71b..b580c41 100644 --- a/flake.nix +++ b/flake.nix @@ -71,13 +71,10 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" ]; - imports = [ - ./flake-parts/dev-shell.nix - ./flake-parts/formatter.nix - ./flake-parts/hosts.nix - ./flake-parts/install-anywhere.nix - ./flake-parts/modules.nix - ./flake-parts/sops.nix - ]; + imports = + ./flake-parts + |> builtins.readDir + |> builtins.attrNames + |> builtins.map (name: ./flake-parts + "/${name}"); }; } diff --git a/modules/system/services/caddy.nix b/modules/system/services/caddy.nix index 35ec99a..aff9eff 100644 --- a/modules/system/services/caddy.nix +++ b/modules/system/services/caddy.nix @@ -2,6 +2,7 @@ config, pkgs, lib, + lib', ... }: let @@ -10,8 +11,8 @@ let virtualHosts = cfg.virtualHosts |> lib.attrValues |> lib.filter (value: value.enable); - tailscaleHosts = virtualHosts |> lib.filter (value: lib.custom.isTailscaleDomain value.domain); - nonTailscaleHosts = virtualHosts |> lib.filter (value: !lib.custom.isTailscaleDomain value.domain); + tailscaleHosts = virtualHosts |> lib.filter (value: lib'.isTailscaleDomain value.domain); + nonTailscaleHosts = virtualHosts |> lib.filter (value: !lib'.isTailscaleDomain value.domain); webPorts = [ 80 @@ -28,8 +29,8 @@ let { domain, port, ... }: '' import subdomain-log ${domain} - @${lib.custom.subdomainOf domain} host ${domain} - handle @${lib.custom.subdomainOf domain} { + @${lib'.subdomainOf domain} host ${domain} + handle @${lib'.subdomainOf domain} { reverse_proxy localhost:${toString port} } ''; @@ -42,7 +43,7 @@ let lib.nameValuePair domain { logFormat = "output file ${config.services.caddy.logDir}/${domain}.log { mode 640 }"; extraConfig = '' - bind tailscale/${lib.custom.subdomainOf domain} + bind tailscale/${lib'.subdomainOf domain} reverse_proxy localhost:${toString port} ''; }; @@ -141,7 +142,7 @@ in ''; virtualHosts = nonTailscaleHosts - |> lib.groupBy (value: lib.custom.rootDomainOf value.domain) + |> lib.groupBy (value: lib'.rootDomainOf value.domain) |> lib.mapAttrs' mkWildCardDomain; }; }) diff --git a/modules/system/services/syncthing.nix b/modules/system/services/syncthing.nix index 6949973..77d83f9 100644 --- a/modules/system/services/syncthing.nix +++ b/modules/system/services/syncthing.nix @@ -2,6 +2,7 @@ config, self, lib, + lib', ... }: let @@ -51,7 +52,7 @@ in message = "Running syncthing on a server requires `gui.domain` to be set."; } { - assertion = (cfg.gui.domain != null) -> (lib.custom.isTailscaleDomain cfg.gui.domain); + assertion = (cfg.gui.domain != null) -> (lib'.isTailscaleDomain cfg.gui.domain); message = "The syncthing gui should only be exposed on a private network as it isn't yet configured with access controll."; } ]; @@ -108,7 +109,7 @@ in genFolders = folders: folders - |> lib.custom.genAttrs (name: { + |> lib'.genAttrs (name: { path = "${dataDir}/${name}"; ignorePerms = false; devices = config.services.syncthing.settings.devices |> lib.attrNames; diff --git a/modules/system/services/wlan.nix b/modules/system/services/wlan.nix index 0b28a3f..60130ca 100644 --- a/modules/system/services/wlan.nix +++ b/modules/system/services/wlan.nix @@ -2,6 +2,7 @@ config, pkgs, lib, + lib', ... }: let @@ -30,7 +31,7 @@ in sops.secrets = cfg.networks |> lib.map (name: "iwd/${name}") - |> lib.custom.genAttrs (_: { + |> lib'.genAttrs (_: { restartUnits = [ "iwd.service" ]; }); diff --git a/modules/system/web-services/filebrowser.nix b/modules/system/web-services/filebrowser.nix index e026410..cdf35d2 100644 --- a/modules/system/web-services/filebrowser.nix +++ b/modules/system/web-services/filebrowser.nix @@ -3,6 +3,7 @@ modulesPath, inputs, lib, + lib', ... }: let @@ -29,7 +30,7 @@ in config = lib.mkIf cfg.enable { assertions = [ { - assertion = lib.custom.isTailscaleDomain cfg.domain; + assertion = lib'.isTailscaleDomain cfg.domain; message = "Filebrowser isn't yet configured with access controll."; } ]; diff --git a/modules/system/web-services/freshrss.nix b/modules/system/web-services/freshrss.nix index 9f3560c..0a4d020 100644 --- a/modules/system/web-services/freshrss.nix +++ b/modules/system/web-services/freshrss.nix @@ -1,6 +1,7 @@ { config, lib, + lib', ... }: let @@ -24,7 +25,7 @@ in config = lib.mkIf cfg.enable { assertions = [ { - assertion = lib.custom.isTailscaleDomain cfg.domain; + assertion = lib'.isTailscaleDomain cfg.domain; message = "FreshRSS isn't configured with access controll."; } ]; diff --git a/modules/system/web-services/gatus.nix b/modules/system/web-services/gatus.nix index 2294737..5b7a385 100644 --- a/modules/system/web-services/gatus.nix +++ b/modules/system/web-services/gatus.nix @@ -3,6 +3,7 @@ self, pkgs-unstable, lib, + lib', ... }: let @@ -110,7 +111,7 @@ in |> lib.filter (domain: domain != cfg.domain) |> lib.map ( domain: - lib.nameValuePair (lib.custom.subdomainOf domain) { + lib.nameValuePair (lib'.subdomainOf domain) { inherit domain; group = hostName; }