mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
feat: distributed builds module
This commit is contained in:
parent
26b3c66d22
commit
6256149a90
5 changed files with 63 additions and 28 deletions
|
|
@ -1,28 +0,0 @@
|
|||
{ lib, config, inputs, ... }: let
|
||||
inherit (lib.attrsets) mapAttrsToList;
|
||||
inherit (lib.lists) optionals;
|
||||
buildMachines = mapAttrsToList (name: config_: let
|
||||
config = config_.config;
|
||||
in {
|
||||
hostName = "${config.networking.hostName}.inskip.me";
|
||||
sshUser = "deploy";
|
||||
systems = [ config.nixpkgs.system ] ++ optionals (config.nix.settings ? extra-platforms) config.nix.settings.extra-platforms;
|
||||
maxJobs = 100;
|
||||
speedFactor = 1; # TODO: provide adjustment factor
|
||||
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
||||
} ) inputs.self.nixosConfigurations;
|
||||
daiyousei = {
|
||||
hostName = "daiyousei.inskip.me";
|
||||
sshUser = "root";
|
||||
system = "aarch64-linux";
|
||||
maxJobs = 100;
|
||||
speedFactor = 1;
|
||||
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
||||
mandatoryFeatures = [];
|
||||
};
|
||||
in {
|
||||
nix = {
|
||||
inherit buildMachines;
|
||||
distributedBuilds = true;
|
||||
};
|
||||
}
|
||||
55
modules/common/distributed.nix
Normal file
55
modules/common/distributed.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{ lib, config, inputs, ... }: let
|
||||
# TODO: convert to nix-std
|
||||
inherit (lib.attrsets) mapAttrsToList mapAttrs;
|
||||
inherit (lib.lists) optionals;
|
||||
inherit (lib.options) mkOption;
|
||||
inherit (lib.types) int attrsOf submodule;
|
||||
buildMachines = mapAttrsToList (name: extern_: let
|
||||
extern = extern_.config;
|
||||
in {
|
||||
hostName = "${name}.inskip.me";
|
||||
sshUser = "deploy";
|
||||
systems = [ extern.nixpkgs.system ] ++ optionals (extern.nix.settings ? extra-platforms) extern.nix.settings.extra-platforms;
|
||||
maxJobs = 100;
|
||||
speedFactor = config.distributed.outputs.${name};
|
||||
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
||||
} ) (inputs.self.nixosConfigurations // inputs.self.darwinConfigurations);
|
||||
daiyousei = {
|
||||
hostName = "daiyousei.inskip.me";
|
||||
sshUser = "root";
|
||||
system = "aarch64-linux";
|
||||
maxJobs = 100;
|
||||
speedFactor = 1;
|
||||
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
||||
mandatoryFeatures = [];
|
||||
};
|
||||
in {
|
||||
options.distributed = let
|
||||
baseOptions = {
|
||||
options.preference = mkOption {
|
||||
type = int;
|
||||
default = 1;
|
||||
};
|
||||
};
|
||||
in baseOptions.options // {
|
||||
systems = mkOption {
|
||||
type = attrsOf (submodule baseOptions);
|
||||
default = {};
|
||||
};
|
||||
outputs = mkOption {
|
||||
type = attrsOf int;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
config = {
|
||||
distributed.outputs = mapAttrs (name: extern: extern.config.distributed.preference +
|
||||
(if config.distributed.systems ? ${name} && config.distributed.systems.${name} ? preference then
|
||||
config.distributed.systems.${name}.preference
|
||||
else 0)
|
||||
) (inputs.self.nixosConfigurations // inputs.self.darwinConfigurations);
|
||||
nix = {
|
||||
inherit buildMachines;
|
||||
distributedBuilds = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -71,6 +71,7 @@
|
|||
.${string.toLower config.type};
|
||||
modules = with tree; [
|
||||
tree.modules.${config.folder}
|
||||
tree.modules.common
|
||||
tree.${config.folder}.common
|
||||
tree.kat.user.${config.folder}
|
||||
common
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ _: let
|
|||
|
||||
security.pam.enableSudoTouchIdAuth = true;
|
||||
|
||||
distributed.systems.renko.preference = 5;
|
||||
|
||||
homebrew = {
|
||||
brewPrefix = "/opt/homebrew/bin";
|
||||
brews = [
|
||||
|
|
|
|||
5
tree.nix
5
tree.nix
|
|
@ -35,6 +35,11 @@
|
|||
"darwin/*".functor.enable = true;
|
||||
"kat/*".functor.enable = true;
|
||||
# Various modules
|
||||
"modules/common" = {
|
||||
functor = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
"modules/nixos" = {
|
||||
functor = {
|
||||
enable = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue