Files
dotfiles/modules/builder/nixos.nix
2025-12-30 16:35:44 +00:00

63 lines
1.8 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.remoteBuild;
remoteBuilder = lib.mkIf cfg.become-remote-builder {
users.users.remotebuild = {
isSystemUser = true;
shell = pkgs.bashInteractive;
group = "remotebuild";
# useDefaultShell = true;
# ssh-keygen -f /root/.ssh/remotebuild
openssh.authorizedKeys.keyFiles = [ ./remotebuild.pub ];
openssh.authorizedKeys.keys = [
# Laptop-system
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ doloroo@proton.me"
# Laptop-user-doloro
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOuNlm8vq6MvWsVU/RW4oq7npQngjIxNFpjEWbAS/8H2 root@doloro-nixos-laptop"
];
initialPassword = "remotebuilder";
};
users.groups.remotebuild = { };
nix.settings.trusted-users = [ "remotebuild" ];
};
useBulders = lib.mkIf cfg.use-remote-builders {
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
# Define every build machine here..
# also define in home manager (TODO make a single file with all builders)
nix.buildMachines = [
{
# Main desktop pc
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqsFEgtcTDw89GaZJg8P/FE1xngIXmiUZl8j0b+V7n+ root@doloroo-main
hostName = "doloroo-main";
sshUser = "remotebuild";
sshKey = "/root/.ssh/remotebuild";
system = "x86_64-linux";
maxJobs = 8;
speedFactor = 2;
supportedFeatures = [
"nixos-test"
"big-parallel"
"kvm"
];
}
];
};
in
{
options.modules.remoteBuild = {
use-remote-builders = lib.mkEnableOption "remoteBuild";
become-remote-builder = lib.mkEnableOption "remoteBuild";
};
config = lib.attrsets.recursiveUpdate useBulders remoteBuilder;
}