Enable remote builder configuration

Allow easily setting a box up as a remote builder
This commit is contained in:
Greg Hellings
2024-10-18 16:46:35 -05:00
parent 0e24d39dce
commit d6629c8769
4 changed files with 78 additions and 37 deletions
+16 -15
View File
@@ -8,7 +8,10 @@
./minio.nix ./minio.nix
]; ];
greg.tailscale.enable = true; greg = {
tailscale.enable = true;
remote-builder.enable = true;
};
services = { services = {
openssh.enable = true; openssh.enable = true;
@@ -28,26 +31,28 @@
}; };
interfaces = { interfaces = {
enp38s0 = { enp38s0 = {
ipv4.addresses = [{ ipv4.addresses = [
{
address = "10.42.1.6"; address = "10.42.1.6";
prefixLength = 16; prefixLength = 16;
} }
{ {
address = "10.42.100.1"; address = "10.42.100.1";
prefixLength = 16; prefixLength = 16;
}]; }
];
}; };
san = { san = {
ipv4.addresses = [{ ipv4.addresses = [
{
address = "10.201.1.1"; address = "10.201.1.1";
prefixLength = 24; prefixLength = 24;
}]; }
};
};
nameservers = [
"10.42.1.5"
]; ];
}; };
};
nameservers = [ "10.42.1.5" ];
};
users = { users = {
users = { users = {
greg = { greg = {
@@ -74,14 +79,10 @@
configurationLimit = 10; configurationLimit = 10;
}; };
}; };
binfmt.emulatedSystems = [ binfmt.emulatedSystems = [ "aarch64-linux" ];
"aarch64-linux"
];
}; };
nixpkgs.config = { nixpkgs.config = {
allowUnfree = true; allowUnfree = true;
permittedInsecurePackages = [ permittedInsecurePackages = [ "nodejs-16.20.2" ];
"nodejs-16.20.2"
];
}; };
} }
+4
View File
@@ -15,6 +15,10 @@
keep-derivations = true; keep-derivations = true;
min-free = (toString (1024 * 1024 * 1024)); min-free = (toString (1024 * 1024 * 1024));
max-free = (toString (5 * 1024 * 1024 * 1024)); max-free = (toString (5 * 1024 * 1024 * 1024));
trusted-users = [
"greg"
"gregory.hellings"
]; # For home and for work machines
substituters = [ substituters = [
"https://cache.garnix.io" "https://cache.garnix.io"
"https://ai.cachix.org" "https://ai.cachix.org"
+23 -11
View File
@@ -1,10 +1,12 @@
{ config, pkgs, lib, ... }: {
config,
pkgs,
lib,
...
}:
let let
x = x = if builtins.hasAttr "xonsh-unwrapped" pkgs then pkgs.xonsh else pkgs.xonsh.passthru.wrapper;
if builtins.hasAttr "xonsh-unwrapped" pkgs then
pkgs.xonsh else
pkgs.xonsh.passthru.wrapper;
in in
{ {
imports = [ imports = [
@@ -20,6 +22,7 @@ in
./linode.nix ./linode.nix
./print.nix ./print.nix
./proxy.nix ./proxy.nix
./remote-builder.nix
./router.nix ./router.nix
./rpi4.nix ./rpi4.nix
./sway.nix ./sway.nix
@@ -57,8 +60,10 @@ in
programs.xonsh = { programs.xonsh = {
enable = true; enable = true;
package = (x.override { package = (
extraPackages = (ps: with ps; [ x.override {
extraPackages = (
ps: with ps; [
(ps.toPythonModule pkgs.pipenv) (ps.toPythonModule pkgs.pipenv)
pyyaml pyyaml
requests requests
@@ -66,8 +71,10 @@ in
xonsh-apipenv xonsh-apipenv
pkgs.nur.repos.xonsh-xontribs.xonsh-direnv pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
pkgs.nur.repos.xonsh-xontribs.xontrib-vox pkgs.nur.repos.xonsh-xontribs.xontrib-vox
]); ]
}); );
}
);
}; };
# Enable the OpenSSH daemon for remote control # Enable the OpenSSH daemon for remote control
@@ -82,9 +89,14 @@ in
users.users.greg = { users.users.greg = {
isNormalUser = true; isNormalUser = true;
createHome = true; createHome = true;
extraGroups = [ "wheel" "networkmanager" ]; # Enable sudo for the user. extraGroups = [
"wheel"
"networkmanager"
]; # Enable sudo for the user.
shell = config.programs.xonsh.package; shell = config.programs.xonsh.package;
openssh.authorizedKeys.keys = lib.strings.splitString "\n" (builtins.readFile ../../home/ssh/authorized_keys); openssh.authorizedKeys.keys = lib.strings.splitString "\n" (
builtins.readFile ../../home/ssh/authorized_keys
);
}; };
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
+24
View File
@@ -0,0 +1,24 @@
{ lib, config, ... }:
let
cfg = config.greg.remote-builder;
in
with lib;
{
options.greg.remote-builder = {
enable = mkEnableOption "Enable this as a remote builder for myself";
};
config = mkIf cfg.enable {
greg.tailscale.enable = true;
users.users.remote-builder-user = {
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4fNCnomQEsFKQZp16LXRqkfXHzzZbGAYJWPMvlGGQy root@exodus"
];
homeMode = "500";
isNormalUser = true;
useDefaultShell = true;
};
nix.settings.trusted-users = [ config.users.users.remote-builder-user.name ];
};
}