From 81f19890fce7c4638f7d5084e47d6817465c7a83 Mon Sep 17 00:00:00 2001 From: oliverwiegers Date: Mon, 27 Jan 2025 15:31:54 +0100 Subject: [PATCH] Add support for extraModules input NixOS offers the possibility to pass a list of extraModules to lib.nixosSystem which later get merged with the modules list and baseModules. This offers the possibility to read additional modules from environment files or a custom module-list.nix. NixOS implementation is [here](https://github.com/NixOS/nixpkgs/blob/8601973cec591ab18357eb7c26c52769d990d1ed/nixos/lib/eval-config.nix#L33). Dor nix-darwin an implementation was started in #592. I restarted the implementation and removed the usage of `NIXOS_EXTRA_MODULE_PATH` env variable because NixOS deprecated this one. --- eval-config.nix | 7 ++++--- flake.nix | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/eval-config.nix b/eval-config.nix index 7c6d48ffc..88e247156 100644 --- a/eval-config.nix +++ b/eval-config.nix @@ -17,6 +17,7 @@ in { lib , modules , baseModules ? import ./modules/module-list.nix +, extraModules ? [] , specialArgs ? { } , check ? true , enableNixpkgsReleaseCheck ? true @@ -72,14 +73,14 @@ let _file = ./eval-config.nix; config = { _module.args = { - inherit baseModules modules; + inherit baseModules extraModules modules; }; }; }; - eval = lib.evalModules (builtins.removeAttrs args [ "lib" "enableNixpkgsReleaseCheck" ] // { + eval = lib.evalModules (builtins.removeAttrs args [ "lib" "enableNixpkgsReleaseCheck" "extraModules" ] // { class = "darwin"; - modules = modules ++ [ argsModule ] ++ baseModules; + modules = baseModules ++ extraModules ++ modules ++ [ argsModule ]; specialArgs = { modulesPath = builtins.toString ./modules; } // specialArgs; }); in diff --git a/flake.nix b/flake.nix index 92569fa93..ecfd214a6 100644 --- a/flake.nix +++ b/flake.nix @@ -18,11 +18,13 @@ lib = { evalConfig = import ./eval-config.nix; - darwinSystem = args@{ modules, ... }: self.lib.evalConfig ( + darwinSystem = args@{ modules, extraModules ? [], ... }: self.lib.evalConfig ( { inherit (nixpkgs) lib; } // nixpkgs.lib.optionalAttrs (args ? pkgs) { inherit (args.pkgs) lib; } // builtins.removeAttrs args [ "system" "pkgs" "inputs" ] // { + inherit extraModules; + modules = modules ++ nixpkgs.lib.optional (args ? pkgs) ({ lib, ... }: { _module.args.pkgs = lib.mkForce args.pkgs;