diff options
| author | seth <[email protected]> | 2024-11-14 07:57:56 -0500 |
|---|---|---|
| committer | seth <[email protected]> | 2024-11-14 07:57:56 -0500 |
| commit | 32b9a9178fad29369ad6088b36c6e2bb06fb5d37 (patch) | |
| tree | 1cd01599fbe55f05012f85d5179bbef0d862da90 /modules | |
| parent | 8d07a53c2c461e54d001db89a75542e236725a2f (diff) | |
nixos/mac-builder: init
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/nixos/traits/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/traits/mac-builder.nix | 65 |
2 files changed, 66 insertions, 0 deletions
diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix index 1bb92b2..b6febf3 100644 --- a/modules/nixos/traits/default.nix +++ b/modules/nixos/traits/default.nix @@ -6,6 +6,7 @@ ./containers.nix ./home-manager.nix ./locale.nix + ./mac-builder.nix ./nvd-diff.nix ./nvidia.nix ./resolved.nix diff --git a/modules/nixos/traits/mac-builder.nix b/modules/nixos/traits/mac-builder.nix new file mode 100644 index 0000000..ebed4a7 --- /dev/null +++ b/modules/nixos/traits/mac-builder.nix @@ -0,0 +1,65 @@ +{ + config, + lib, + secretsDir, + ... +}: +let + cfg = config.traits.mac-builder; +in +{ + options.traits.mac-builder = { + enable = lib.mkEnableOption "macOS remote builders"; + manageSecrets = lib.mkEnableOption "managing SSH keys for builders" // { + default = config.traits.secrets.enable; + defaultText = "traits.secrets.enable"; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + nix = { + buildMachines = [ + (lib.mkMerge [ + { + hostName = "mini.scrumplex.net"; + maxJobs = 8; + sshUser = "bob-the-builder"; + supportedFeatures = [ + "nixos-test" + "benchmark" + "big-parallel" + "apple-virt" + ]; + systems = [ + "aarch64-darwin" + "x86_64-darwin" + ]; + } + + (lib.mkIf cfg.manageSecrets { + sshKey = config.age.secrets.macstadium.path; + }) + ]) + ]; + + distributedBuilds = true; + + settings = { + builders-use-substitutes = true; + }; + }; + } + + (lib.mkIf cfg.manageSecrets { + age.secrets = { + macstadium = { + file = secretsDir + "/macstadium.age"; + mode = "600"; + }; + }; + }) + ] + ); +} |
