summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew Hess <src@drewhess.com>2021-04-05 14:05:02 +0100
committerDrew Hess <src@drewhess.com>2021-09-08 13:05:18 +0100
commit9f7e95887f62086c3af7362ed2b664c7f181cadf (patch)
treee7d8bde1c6436ca2dce6ced119cbebf85b20b526
parent007d700e644ac588ad6668e6439950a5b6e2ff64 (diff)
Pass system to darwinSystem rather than eval-config.
This allows us to specify what kind of darwinSystem we want to build, rather than determining it at evaluation time.
-rw-r--r--README.md2
-rw-r--r--default.nix3
-rw-r--r--eval-config.nix14
-rw-r--r--flake.nix4
-rw-r--r--modules/examples/flake.nix1
5 files changed, 17 insertions, 7 deletions
diff --git a/README.md b/README.md
index 915d753..ef286ea 100644
--- a/README.md
+++ b/README.md
@@ -79,6 +79,7 @@ A minimal example of using an existing configuration.nix:
outputs = { self, darwin, nixpkgs }: {
darwinConfigurations."Johns-MacBook" = darwin.lib.darwinSystem {
+ system = "x86_64-darwin";
modules = [ ./configuration.nix ];
};
};
@@ -90,6 +91,7 @@ accessible as an argument, similar to pkgs and lib inside the configuration.
```nix
darwin.lib.darwinSystem {
+ system = "x86_64-darwin";
modules = [ ... ];
inputs = { inherit darwin dotfiles nixpkgs; };
}
diff --git a/default.nix b/default.nix
index a475b47..9787e51 100644
--- a/default.nix
+++ b/default.nix
@@ -6,9 +6,10 @@
}:
let
- evalConfig = import ./eval-config.nix { inherit lib system; };
+ evalConfig = import ./eval-config.nix { inherit lib; };
eval = evalConfig {
+ inherit system;
modules = [ configuration ];
inputs = { inherit nixpkgs; };
};
diff --git a/eval-config.nix b/eval-config.nix
index aa19906..e0ce18b 100644
--- a/eval-config.nix
+++ b/eval-config.nix
@@ -1,9 +1,10 @@
-{ lib, system ? builtins.currentSystem or "x86_64-darwin" }:
+{ lib }:
-{ modules
+{ system ? builtins.currentSystem or "x86_64-darwin"
+, modules
, inputs
, baseModules ? import ./modules/module-list.nix
-, specialArgs ? {}
+, specialArgs ? { }
}@args:
let
@@ -18,11 +19,14 @@ let
_file = ./eval-config.nix;
config = {
_module.args.pkgs = import inputs.nixpkgs config.nixpkgs;
- nixpkgs.system = system;
+
+ # This permits the configuration to override the passed-in
+ # system.
+ nixpkgs.system = lib.mkDefault system;
};
};
- eval = lib.evalModules (builtins.removeAttrs args ["inputs"] // {
+ eval = lib.evalModules (builtins.removeAttrs args [ "inputs" "system" ] // {
modules = modules ++ [ inputsModule pkgsModule ] ++ baseModules;
args = { inherit baseModules modules; };
specialArgs = { modulesPath = builtins.toString ./modules; } // specialArgs;
diff --git a/flake.nix b/flake.nix
index 1c3e3c3..a65576f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -7,7 +7,8 @@
# TODO handle multiple architectures.
evalConfig = import ./eval-config.nix { inherit (nixpkgs) lib; };
- darwinSystem = { modules, inputs ? {}, ... }@args: self.lib.evalConfig (args // {
+ darwinSystem = { modules, system, inputs ? { }, ... }@args: self.lib.evalConfig (args // {
+ inherit system;
inputs = { inherit nixpkgs; darwin = self; } // inputs;
modules = modules ++ [ self.darwinModules.flakeOverrides ];
});
@@ -20,6 +21,7 @@
darwinModules.simple = ./modules/examples/simple.nix;
checks.x86_64-darwin.simple = (self.lib.darwinSystem {
+ system = "x86_64-darwin";
modules = [ self.darwinModules.simple ];
}).system;
diff --git a/modules/examples/flake.nix b/modules/examples/flake.nix
index dcce379..9191cd8 100644
--- a/modules/examples/flake.nix
+++ b/modules/examples/flake.nix
@@ -21,6 +21,7 @@
# $ darwin-rebuild build --flake ./modules/examples#darwinConfigurations.simple.system \
# --override-input darwin .
darwinConfigurations."simple" = darwin.lib.darwinSystem {
+ system = "x86_64-darwin";
modules = [ configuration darwin.darwinModules.simple ];
};