feat: bidirectional remote builders — server ⇄ uConsole #75

Open
Hermes wants to merge 1 commits from feat/remote-builders into master
Collaborator

Changements

Module réutilisable : modules/nixos/services/remote-builder.nix

Configure nix.distributedBuilds, nix.buildMachines, et le SSH config pour le port. Options : hostName, port, sshUser, sshKey, systems, maxJobs, supportedFeatures.

Config serveur → uConsole

Le serveur dispatche les builds aarch64-linux vers le uConsole (4 jobs, clé /etc/ssh/builder_key).

Config uConsole → serveur

Le uConsole dispatche les builds x86_64-linux vers lazyworkhorse.net:2424 (36 jobs, même clé).

Utilisateur builder

Compte système builder (shell nologin, home /var/empty) avec la clé publique de lib/keys.nix. Présent sur les deux hosts.

Setup requis (après merge)

  1. Sur les deux hosts : générer la paire de clés SSH
    ssh-keygen -t ed25519 -f /etc/ssh/builder_key -N ""
    
  2. Copier /etc/ssh/builder_key.pub dans lib/keys.nix (remplacer PLACEHOLDER_ADD_BUILDER_PUBKEY_HERE)
  3. nixos-rebuild switch sur le serveur
  4. nixos-rebuild switch sur le uConsole
  5. Tester : nix store ping --store ssh://builder@192.168.1.120
## Changements ### Module réutilisable : `modules/nixos/services/remote-builder.nix` Configure `nix.distributedBuilds`, `nix.buildMachines`, et le SSH config pour le port. Options : hostName, port, sshUser, sshKey, systems, maxJobs, supportedFeatures. ### Config serveur → uConsole Le serveur dispatche les builds `aarch64-linux` vers le uConsole (4 jobs, clé `/etc/ssh/builder_key`). ### Config uConsole → serveur Le uConsole dispatche les builds `x86_64-linux` vers `lazyworkhorse.net:2424` (36 jobs, même clé). ### Utilisateur builder Compte système `builder` (shell nologin, home /var/empty) avec la clé publique de `lib/keys.nix`. Présent sur les deux hosts. ## Setup requis (après merge) 1. Sur **les deux hosts** : générer la paire de clés SSH ```bash ssh-keygen -t ed25519 -f /etc/ssh/builder_key -N "" ``` 2. Copier `/etc/ssh/builder_key.pub` dans `lib/keys.nix` (remplacer `PLACEHOLDER_ADD_BUILDER_PUBKEY_HERE`) 3. `nixos-rebuild switch` sur le serveur 4. `nixos-rebuild switch` sur le uConsole 5. Tester : `nix store ping --store ssh://builder@192.168.1.120`
Hermes added 1 commit 2026-06-21 00:59:50 +00:00
Add reusable remote-builder NixOS module and builder system user.

Server (lazyworkhorse): dispatches aarch64-linux builds to uConsole
uConsole: dispatches x86_64-linux builds to server

The builder user uses the same SSH keypair on both hosts for
symmetric remote building. Generate the key with:
  ssh-keygen -t ed25519 -f /etc/ssh/builder_key -N ""
Add the public key to lib/keys.nix (replace PLACEHOLDER).
Hermes force-pushed feat/remote-builders from 84c6a7af6a to db2d540b3c 2026-06-21 20:22:57 +00:00 Compare
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/remote-builders:feat/remote-builders
git checkout feat/remote-builders
Sign in to join this conversation.
No description provided.