{ config, lib, pkgs, ... }: let cfg = config.modules.remoteBuild; remoteBuilder = lib.mkIf cfg.become-remote-builder { users.users.remotebuild = { isSystemUser = true; group = "remotebuild"; useDefaultShell = true; # ssh-keygen -f /root/.ssh/remotebuild openssh.authorizedKeys.keyFiles = [ ./remotebuild.pub ]; openssh.authorizedKeys.keys = [ # Laptop "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ doloroo@proton.me" ]; }; 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.. 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"; 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; }