Enable remote builder configuration
Allow easily setting a box up as a remote builder
This commit is contained in:
+20
-19
@@ -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,25 +31,27 @@
|
|||||||
};
|
};
|
||||||
interfaces = {
|
interfaces = {
|
||||||
enp38s0 = {
|
enp38s0 = {
|
||||||
ipv4.addresses = [{
|
ipv4.addresses = [
|
||||||
address = "10.42.1.6";
|
{
|
||||||
prefixLength = 16;
|
address = "10.42.1.6";
|
||||||
}
|
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";
|
{
|
||||||
prefixLength = 24;
|
address = "10.201.1.1";
|
||||||
}];
|
prefixLength = 24;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nameservers = [
|
nameservers = [ "10.42.1.5" ];
|
||||||
"10.42.1.5"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
users = {
|
users = {
|
||||||
users = {
|
users = {
|
||||||
@@ -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"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
+30
-18
@@ -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,17 +60,21 @@ in
|
|||||||
|
|
||||||
programs.xonsh = {
|
programs.xonsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = (x.override {
|
package = (
|
||||||
extraPackages = (ps: with ps; [
|
x.override {
|
||||||
(ps.toPythonModule pkgs.pipenv)
|
extraPackages = (
|
||||||
pyyaml
|
ps: with ps; [
|
||||||
requests
|
(ps.toPythonModule pkgs.pipenv)
|
||||||
ruamel-yaml
|
pyyaml
|
||||||
xonsh-apipenv
|
requests
|
||||||
pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
|
ruamel-yaml
|
||||||
pkgs.nur.repos.xonsh-xontribs.xontrib-vox
|
xonsh-apipenv
|
||||||
]);
|
pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
|
||||||
});
|
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";
|
||||||
|
|||||||
@@ -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 ];
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user