Archived
One file (variables.nix) holding every value that was previously hardcoded and repeated across modules: LAN domain/CIDR, home/tailnet domains, cross-host references (nix-cache substituter hostname, NFS server hostname, remote-builder user), PXE/PBS IPs, timezone, and the primary username. Wired in via flake.nix's specialArgs (and home-manager's extraSpecialArgs for the two home.nix files), so any module picks it up by just adding `vars` to its function arguments — no explicit import needed. Two hosts (nix-cache, server) now derive their own networking.hostName from the same variable other hosts use to reach them, so there's exactly one place to change either identifier. Purely mechanical: every substituted value matches what was already there, confirmed by identical toplevel .drv paths for all 17 targets before and after. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
748 B
Nix
27 lines
748 B
Nix
{ pkgs, vars, ... }:
|
|
|
|
{
|
|
# Install the remote builder key on each client host (do not commit private keys):
|
|
# sudo install -d -m 0700 /root/.ssh
|
|
# sudo install -m 0600 ./nixremote /root/.ssh/nixremote
|
|
# sudo ssh -i /root/.ssh/nixremote nixremote@nix-cache nix-store --version
|
|
nix.distributedBuilds = true;
|
|
|
|
nix.buildMachines = [
|
|
{
|
|
hostName = vars.nixCacheHost;
|
|
sshUser = vars.remoteBuilderUser;
|
|
sshKey = "/root/.ssh/${vars.remoteBuilderUser}";
|
|
system = pkgs.stdenv.hostPlatform.system;
|
|
maxJobs = 4;
|
|
speedFactor = 2;
|
|
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
|
}
|
|
];
|
|
|
|
nix.settings = {
|
|
builders-use-substitutes = true;
|
|
max-jobs = "auto";
|
|
};
|
|
}
|