mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
feat: distributed builder work
This commit is contained in:
parent
08fbb97b5a
commit
b01c6222f8
7 changed files with 63 additions and 79 deletions
28
common/distributed.nix
Normal file
28
common/distributed.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{ 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
3
common/network.nix
Normal file
3
common/network.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{ machine, ... }: {
|
||||||
|
networking.hostName = machine;
|
||||||
|
}
|
||||||
5
darwin/distributed.nix
Normal file
5
darwin/distributed.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
_: {
|
||||||
|
nix.envVars = {
|
||||||
|
"SSH_AUTH_SOCK" = "/Users/kat/.gnupg/S.gpg-agent.ssh";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{ machine, ... }: {
|
_: {
|
||||||
networking = {
|
networking.nftables.enable = true;
|
||||||
hostName = machine;
|
|
||||||
nftables.enable = true;
|
|
||||||
};
|
|
||||||
services.tailscale.enable = true;
|
services.tailscale.enable = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
18
nixos/rosetta.nix
Normal file
18
nixos/rosetta.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
_: {
|
||||||
|
boot = {
|
||||||
|
initrd.availableKernelModules = [ "virtiofs"];
|
||||||
|
binfmt.registrations."rosetta" = {
|
||||||
|
interpreter = "/run/rosetta/rosetta";
|
||||||
|
fixBinary = true;
|
||||||
|
wrapInterpreterInShell = false;
|
||||||
|
matchCredentials = true;
|
||||||
|
magicOrExtension = ''\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00'';
|
||||||
|
mask = ''\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
extra-platforms = [ "x86_64-linux" ];
|
||||||
|
extra-sandbox-paths = [ "/run/rosetta" "/run/binfmt" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,27 +1,14 @@
|
||||||
_: let
|
_: let
|
||||||
hostConfig = { lib, ... }: let
|
hostConfig = { lib, tree, ... }: let
|
||||||
inherit (lib.modules) mkDefault;
|
inherit (lib.modules) mkDefault;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = with tree; [
|
||||||
|
nixos.rosetta
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
initrd = {
|
initrd.availableKernelModules = ["virtio_pci" "xhci_pci" "usb_storage" "usbhid" ];
|
||||||
availableKernelModules = ["virtio_pci" "xhci_pci" "usb_storage" "usbhid" "virtiofs"];
|
|
||||||
};
|
|
||||||
nix.settings = {
|
|
||||||
extra-platforms = [ "x86_64-linux" ];
|
|
||||||
extra-sandbox-paths = [ "/run/rosetta" "/run/binfmt" ];
|
|
||||||
};
|
|
||||||
binfmt.registrations."rosetta" = {
|
|
||||||
interpreter = "/run/rosetta/rosetta";
|
|
||||||
fixBinary = true;
|
|
||||||
wrapInterpreterInShell = false;
|
|
||||||
matchCredentials = true;
|
|
||||||
magicOrExtension = ''\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00'';
|
|
||||||
mask = ''\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
|
|
@ -51,7 +38,7 @@ _: let
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
arch = "aarch64-linux";
|
arch = "aarch64";
|
||||||
type = "NixOS";
|
type = "NixOS";
|
||||||
modules = [
|
modules = [
|
||||||
hostConfig
|
hostConfig
|
||||||
|
|
|
||||||
|
|
@ -2,65 +2,11 @@ _: let
|
||||||
hostConfig = {tree, pkgs, ...}: {
|
hostConfig = {tree, pkgs, ...}: {
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
kat.work
|
kat.work
|
||||||
|
darwin.distributed
|
||||||
];
|
];
|
||||||
|
|
||||||
security.pam.enableSudoTouchIdAuth = true;
|
security.pam.enableSudoTouchIdAuth = true;
|
||||||
|
|
||||||
home-manager.users = let
|
|
||||||
commonUser = {
|
|
||||||
programs.ssh = {
|
|
||||||
enable = true;
|
|
||||||
matchBlocks = {
|
|
||||||
"koishi.inskip.me" = {
|
|
||||||
hostname = "koishi.inskip.me";
|
|
||||||
port = 22;
|
|
||||||
user = "root";
|
|
||||||
};
|
|
||||||
"daiyousei.inskip.me" = {
|
|
||||||
hostname = "daiyousei.inskip.me";
|
|
||||||
port = 62954;
|
|
||||||
user = "root";
|
|
||||||
};
|
|
||||||
"renko-build" = {
|
|
||||||
hostname = "192.168.64.3";
|
|
||||||
port = 62954;
|
|
||||||
user = "root";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
kat = commonUser;
|
|
||||||
root = commonUser;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
envVars = {
|
|
||||||
"SSH_AUTH_SOCK" = "/Users/kat/.gnupg/S.gpg-agent.ssh";
|
|
||||||
};
|
|
||||||
buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "koishi.inskip.me";
|
|
||||||
sshUser = "deploy";
|
|
||||||
system = "x86_64-linux";
|
|
||||||
maxJobs = 100;
|
|
||||||
speedFactor = 1;
|
|
||||||
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
|
||||||
mandatoryFeatures = [];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
hostName = "daiyousei-build";
|
|
||||||
sshUser = "root";
|
|
||||||
system = "aarch64-linux";
|
|
||||||
maxJobs = 100;
|
|
||||||
speedFactor = 1;
|
|
||||||
supportedFeatures = ["benchmark" "big-parallel" "kvm"];
|
|
||||||
mandatoryFeatures = [];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
distributedBuilds = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
homebrew = {
|
homebrew = {
|
||||||
brewPrefix = "/opt/homebrew/bin";
|
brewPrefix = "/opt/homebrew/bin";
|
||||||
brews = [
|
brews = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue