diff --git a/docs/dictionary.md b/docs/dictionary.md index 679a1be..4f83086 100644 --- a/docs/dictionary.md +++ b/docs/dictionary.md @@ -53,7 +53,7 @@ Use the simplest accurate word when a term is not listed. | assembly file | Nix | A Nix file under `flake/` that constructs flake outputs or arguments passed to NixOS modules. | | assembly function | Nix | A project function exposed under `flake` because it creates modules, systems, or assembly values. | | library file | Nix | A Nix file that defines reusable project functions instead of a NixOS module or flake output. | -| library function | Nix | A pure project function exposed under `flake.lib`. | +| library function | Nix | A pure project function exposed under `flake.util`. | | NixOS module | Nix | A Nix file evaluated by `nixosSystem` for a NixOS configuration. | | overlay | Nix | A function that modifies a Nix package set by adding or replacing packages. | | workspace | Window management | A named or numbered group of windows in a graphical session. Some desktop environments call this a virtual desktop. | diff --git a/docs/nix.md b/docs/nix.md index 0d647a6..c6893db 100644 --- a/docs/nix.md +++ b/docs/nix.md @@ -10,14 +10,14 @@ Read this document with `docs/dictionary.md`. Use `lib` only for the base `nixpkgs.lib` value. Do not use `lib` for project functions. -Use `flake.lib` for library functions passed through module arguments. +Use `flake.util` for library functions passed through module arguments. Use `flake.mk` for assembly functions passed through module arguments. Avoid: ```nix specialArgs = { - lib = flakeLib; + lib = util; }; ``` @@ -38,20 +38,20 @@ Then call project functions through `flake` inside modules: ... }: { - networking.networkmanager.unmanaged = [ "interface-name:${flake.lib.bridgeName 10}" ]; + networking.networkmanager.unmanaged = [ "interface-name:${flake.util.bridgeName 10}" ]; } ``` ### Name project function namespaces by role -Put pure project functions under `flake.lib`. +Put pure project functions under `flake.util`. Put functions that create modules, systems, or assembly values under `flake`. This keeps data-only functions separate from functions that carry flake context. Avoid: ```nix -flake.lib.mkGuest { name = "sample"; } +flake.util.mkGuest { name = "sample"; } ``` Use: diff --git a/flake/default.nix b/flake/default.nix index ccfd0a7..87a1ed8 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -6,10 +6,15 @@ let # TODO: refactor the registry code registryAssembly = import ./registry.nix { inherit lib self; }; - flakeLib = import ../lib { inherit lib; }; + # TODO: remove this after the refactor of this file is done and clean + util = import ../lib { inherit lib; }; + mkModules = import ./modules.nix { inherit util; }; - moduleFiles = flakeLib.collectNixFiles (self + "/modules"); - guestFiles = flakeLib.collectNixFiles (self + "/guests"); + modules = mkModules { + root = self + "/modules"; + }; + repositoryModules = modules; + guestFiles = util.collectNixFiles (self + "/guests"); collectedRegistry = registryAssembly.collect { hosts = self.nixosConfigurations; }; @@ -26,7 +31,7 @@ let inherit (hosts) mkHosts; inherit (guests) mkGuest; - lib = flakeLib; + inherit util; }; guests = import ./guests.nix { @@ -35,9 +40,9 @@ let lib self specialArgs - moduleFiles + repositoryModules registryAssembly - flakeLib + util ; }; @@ -47,7 +52,7 @@ let lib self specialArgs - moduleFiles + repositoryModules guestFiles registryAssembly ; diff --git a/flake/guests.nix b/flake/guests.nix index 0df16f3..3f4d8d8 100644 --- a/flake/guests.nix +++ b/flake/guests.nix @@ -3,9 +3,9 @@ lib, self, specialArgs, - moduleFiles, + repositoryModules, registryAssembly, - flakeLib, + util, }: let mkGuest = @@ -103,7 +103,7 @@ let }; mac = lib.mkOption { type = lib.types.str; - default = flakeLib.deriveMac name; + default = util.deriveMac name; defaultText = lib.literalMD "a stable address derived from the guest's namespace path"; example = "bc:24:11:00:00:01"; description = '' @@ -306,7 +306,7 @@ let } (lib.mkIf networked ( let - bridgeDevice = "sys-subsystem-net-devices-${lib.replaceStrings [ "-" ] [ "\\x2d" ] (flakeLib.bridgeName cfg.vlan)}.device"; + bridgeDevice = "sys-subsystem-net-devices-${lib.replaceStrings [ "-" ] [ "\\x2d" ] (util.bridgeName cfg.vlan)}.device"; in { after = [ bridgeDevice ]; @@ -319,7 +319,7 @@ let containers.${machineName} = lib.mkIf (cfg.backend == "container") { autoStart = cfg.autoStart; privateNetwork = lib.mkDefault true; - hostBridge = lib.mkIf networked (flakeLib.bridgeName cfg.vlan); + hostBridge = lib.mkIf networked (util.bridgeName cfg.vlan); privateUsers = lib.mkDefault "no"; additionalCapabilities = lib.optionals cfg.nesting [ "CAP_NET_ADMIN" ]; allowedDevices = lib.optionals cfg.nesting [ @@ -339,7 +339,9 @@ let config = { imports = - moduleFiles + [ + repositoryModules + ] ++ [ registryAssembly.module inputs.sops-nix.nixosModules.sops diff --git a/flake/hosts.nix b/flake/hosts.nix index 59a4c88..0b7c889 100644 --- a/flake/hosts.nix +++ b/flake/hosts.nix @@ -3,7 +3,7 @@ lib, self, specialArgs, - moduleFiles, + repositoryModules, guestFiles, registryAssembly, }: @@ -16,7 +16,9 @@ let inputs.nixpkgs.lib.nixosSystem { inherit system specialArgs; modules = - moduleFiles + [ + repositoryModules + ] ++ guestFiles ++ [ inputs.chaotic.nixosModules.default diff --git a/flake/modules.nix b/flake/modules.nix new file mode 100644 index 0000000..5c38e3e --- /dev/null +++ b/flake/modules.nix @@ -0,0 +1,5 @@ +{ util }: +{ root }: +{ + imports = util.collectNixFiles root; +} diff --git a/modules/network/vlans.nix b/modules/network/vlans.nix index 311851d..dc4124c 100644 --- a/modules/network/vlans.nix +++ b/modules/network/vlans.nix @@ -8,7 +8,7 @@ let cfg = config.modules.network.vlans; - inherit (flake.lib) bridgeName; + inherit (flake.util) bridgeName; vlanName = id: "${cfg.trunk}.${toString id}"; in