Move big 3 to run both Runners
This commit is contained in:
@@ -42,6 +42,7 @@
|
|||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
|
runner.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
@@ -84,16 +85,4 @@
|
|||||||
settings.PermitRootLogin = "yes";
|
settings.PermitRootLogin = "yes";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
allowedBridges = [
|
|
||||||
"br0"
|
|
||||||
"virbr0"
|
|
||||||
];
|
|
||||||
onBoot = "ignore"; # only restart VMs labeled 'autostart'
|
|
||||||
qemu.ovmf.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ in
|
|||||||
};
|
};
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
|
runner = {
|
||||||
|
enable = true;
|
||||||
|
threads = 3;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
@@ -113,21 +117,6 @@ in
|
|||||||
age.secrets.runner-reg.file = ../../secrets/gitlab/nixos-qemu-shell.age;
|
age.secrets.runner-reg.file = ../../secrets/gitlab/nixos-qemu-shell.age;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
gitlab-runner = {
|
|
||||||
enable = true;
|
|
||||||
settings.concurrent = 3;
|
|
||||||
services = {
|
|
||||||
shell = {
|
|
||||||
executor = "shell";
|
|
||||||
limit = 7;
|
|
||||||
authenticationTokenConfigFile = config.age.secrets.runner-reg.path;
|
|
||||||
environmentVariables = {
|
|
||||||
EFI_DIR = "${pkgs.OVMF.fd}/FV/";
|
|
||||||
STORAGE_URL = "s3.thehellings.lan:9000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
proxmox-ve = {
|
proxmox-ve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ipAddress = (builtins.elemAt config.networking.interfaces.br0.ipv4.addresses 0).address;
|
ipAddress = (builtins.elemAt config.networking.interfaces.br0.ipv4.addresses 0).address;
|
||||||
|
|||||||
@@ -16,13 +16,14 @@
|
|||||||
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
|
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
|
||||||
|
|
||||||
greg = {
|
greg = {
|
||||||
tailscale.enable = true;
|
|
||||||
kubernetes = {
|
kubernetes = {
|
||||||
enable = true;
|
enable = true;
|
||||||
vipInterface = "enp12s0";
|
vipInterface = "enp12s0";
|
||||||
priority = 253;
|
priority = 253;
|
||||||
};
|
};
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
|
runner.enable = true;
|
||||||
|
tailscale.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
+1
-59
@@ -1,15 +1,10 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
environmentVariables = {
|
|
||||||
EFI_DIR = "${pkgs.OVMF.fd}/FV/";
|
|
||||||
STORAGE_URL = "s3.thehellings.lan:9000";
|
|
||||||
};
|
|
||||||
passthru = [
|
passthru = [
|
||||||
"1002:164e" # Raphael - embedded GPU
|
"1002:164e" # Raphael - embedded GPU
|
||||||
"1002:1640" # Rembrandt - Audio
|
"1002:1640" # Rembrandt - Audio
|
||||||
@@ -18,41 +13,7 @@ let
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
specialisation = {
|
greg.runner.enable = true;
|
||||||
vbox.configuration = {
|
|
||||||
users.extraGroups.vboxusers.members = [ "greg" ];
|
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
virtualbox.host = {
|
|
||||||
enable = true;
|
|
||||||
enableExtensionPack = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gitlab-runner.services = lib.mkForce {
|
|
||||||
vbox = {
|
|
||||||
inherit environmentVariables;
|
|
||||||
authenticationTokenConfigFile = config.age.secrets.vbox.path;
|
|
||||||
executor = "shell";
|
|
||||||
limit = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitlab-runner = {
|
|
||||||
serviceConfig = {
|
|
||||||
DevicePolicy = lib.mkForce "auto";
|
|
||||||
User = "root";
|
|
||||||
DynamicUser = lib.mkForce false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
age.secrets = {
|
|
||||||
qemu.file = ../../secrets/gitlab/nixos-qemu-shell.age;
|
|
||||||
vbox.file = ../../secrets/gitlab/nixos-vbox-shell.age;
|
|
||||||
};
|
|
||||||
|
|
||||||
# These options enable sharing of the GPU with the VM
|
# These options enable sharing of the GPU with the VM
|
||||||
boot = {
|
boot = {
|
||||||
# Order matters here, to prevent the AMD driver from getting to the driver before
|
# Order matters here, to prevent the AMD driver from getting to the driver before
|
||||||
@@ -77,17 +38,6 @@ in
|
|||||||
|
|
||||||
hardware.graphics.enable = true;
|
hardware.graphics.enable = true;
|
||||||
|
|
||||||
services.gitlab-runner = {
|
|
||||||
enable = true;
|
|
||||||
settings.concurrent = 5;
|
|
||||||
services.qemu = {
|
|
||||||
inherit environmentVariables;
|
|
||||||
executor = "shell";
|
|
||||||
limit = 5;
|
|
||||||
authenticationTokenConfigFile = config.age.secrets.qemu.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
"libvirt-nosleep@" = {
|
"libvirt-nosleep@" = {
|
||||||
description = "Prevent sleep while %i is running";
|
description = "Prevent sleep while %i is running";
|
||||||
@@ -98,14 +48,6 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gitlab-runner = {
|
|
||||||
serviceConfig = {
|
|
||||||
DevicePolicy = lib.mkForce "auto";
|
|
||||||
User = "root";
|
|
||||||
DynamicUser = lib.mkForce false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
./ceph.nix
|
./ceph.nix
|
||||||
./container.nix
|
./container.nix
|
||||||
./db.nix
|
./db.nix
|
||||||
|
./gitlab-runner.nix
|
||||||
./gnome.nix
|
./gnome.nix
|
||||||
./home.nix
|
./home.nix
|
||||||
./kde.nix
|
./kde.nix
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.greg.runner;
|
||||||
|
environmentVariables = {
|
||||||
|
EFI_DIR = "${pkgs.OVMF.fd}/FV/";
|
||||||
|
STORAGE_URL = "s3.thehellings.lan:9000";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.greg.runner = {
|
||||||
|
enable = lib.mkEnableOption "Enable as a gitlab-runner with both libvirt and virtualbox";
|
||||||
|
|
||||||
|
threads = lib.mkOption {
|
||||||
|
default = 5;
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "The maximum number of concurrent jobs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Shared configurations
|
||||||
|
age.secrets = {
|
||||||
|
qemu.file = ../../secrets/gitlab/nixos-qemu-shell.age;
|
||||||
|
vbox.file = ../../secrets/gitlab/nixos-vbox-shell.age;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Defaults to running libvirt support
|
||||||
|
services.gitlab-runner = {
|
||||||
|
enable = true;
|
||||||
|
settings.concurrent = cfg.threads;
|
||||||
|
services.qemu = {
|
||||||
|
inherit environmentVariables;
|
||||||
|
executor = "shell";
|
||||||
|
limit = cfg.threads;
|
||||||
|
authenticationTokenConfigFile = config.age.secrets.qemu.path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.gitlab-runner = {
|
||||||
|
serviceConfig = {
|
||||||
|
DevicePolicy = lib.mkForce "auto";
|
||||||
|
User = "root";
|
||||||
|
DynamicUser = lib.mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation = {
|
||||||
|
libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
allowedBridges = [
|
||||||
|
"br0"
|
||||||
|
"virbr0"
|
||||||
|
];
|
||||||
|
onBoot = "ignore"; # only restart VMs labeled 'autostart'
|
||||||
|
qemu.ovmf.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Boot into this specialisation if you want to build vbox hosts
|
||||||
|
# with this box at that time
|
||||||
|
specialisation = {
|
||||||
|
vbox.configuration = {
|
||||||
|
users.extraGroups.vboxusers.members = [ "greg" ];
|
||||||
|
|
||||||
|
virtualisation = {
|
||||||
|
virtualbox.host = {
|
||||||
|
enable = true;
|
||||||
|
enableExtensionPack = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitlab-runner.services = lib.mkForce {
|
||||||
|
vbox = {
|
||||||
|
inherit environmentVariables;
|
||||||
|
authenticationTokenConfigFile = config.age.secrets.vbox.path;
|
||||||
|
executor = "shell";
|
||||||
|
limit = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.gitlab-runner = {
|
||||||
|
serviceConfig = {
|
||||||
|
DevicePolicy = lib.mkForce "auto";
|
||||||
|
User = "root";
|
||||||
|
DynamicUser = lib.mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user