Files
nixos/hosts/jeremiah/default.nix
T

235 lines
5.2 KiB
Nix

{
config,
lib,
pkgs,
top,
...
}:
let
ip = "10.42.1.8";
mk = file: {
inherit file;
owner = "buildbot";
group = "buildbot";
};
in
{
imports = [
./hardware-configuration.nix
top.proxmox.nixosModules.proxmox-ve
top.buildbot.nixosModules.buildbot-master
top.buildbot.nixosModules.buildbot-worker
];
age.secrets = {
gitea-buildbotWorkersFile = mk ../../secrets/gitea/buildbotWorkersFile.age;
gitea-oauthToken = mk ../../secrets/gitea/oauthToken.age;
gitea-oauthSecret = mk ../../secrets/gitea/oauthSecret.age;
gitea-webhookSecret = mk ../../secrets/gitea/webhookSecret.age;
gitea-workerPassword = mk ../../secrets/gitea/workerPassword.age;
};
# Bootloader.
boot = {
initrd.kernelModules = [
"amdgpu"
];
kernelParams = [
];
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
environment.systemPackages = with pkgs; [
amdgpu_top
clinfo
curl
gawk
git
mesa-demos
unzip
wget
];
fileSystems = {
"/nix" = {
fsType = "btrfs";
options = [ "subvol=nix" ];
device = "/dev/nvme0n1p1";
};
"/var" = {
fsType = "btrfs";
options = [ "subvol=var" ];
device = "/dev/nvme0n1p1";
};
"/var/pve" = {
fsType = "btrfs";
options = [ "subvol=pve" ];
device = "/dev/nvme0n1p1";
};
"/btrfs" = {
fsType = "btrfs";
device = "/dev/nvme0n1p1";
};
"/media/proxmox" = {
device = "10.42.1.4:/volume1/proxmox";
fsType = "nfs";
options = [ "noatime" ];
};
};
greg = {
home = true;
kubernetes = {
enable = true;
vipInterface = "br0";
vip = ip;
priority = 254;
};
tailscale = {
enable = true;
tags = [ "home" ];
};
remote-builder.enable = true;
runner = {
enable = true;
threads = 3;
qemu = true;
};
};
hardware = {
graphics = {
enable = true;
enable32Bit = true;
};
};
networking = {
hostName = "jeremiah"; # Define your hostname.
useDHCP = false;
bridges.br0 = {
interfaces = [ "enp68s0" ];
};
defaultGateway = {
address = " 10.42.1.2";
interface = "br0";
};
firewall.allowedTCPPorts = [
3389
9989 # buildbot communications port
];
interfaces.br0.ipv4 = {
addresses = [
{
address = ip;
prefixLength = 16;
}
];
};
nameservers = [ "10.42.1.5" ];
};
programs.steam = {
enable = true;
protontricks.enable = true;
};
#####################################################################################
#################### Virtualbox Runner ##############################################
#####################################################################################
age.secrets.runner-reg.file = ../../secrets/gitlab/nixos-qemu-shell.age;
services = {
buildbot-nix = {
master = {
enable = true;
admins = [ "greg" ];
authBackend = "gitea";
# Optional to build non-default branches at a time
branches = {
default = {
matchGlob = "ma*";
registerGCRoots = false;
updateOutputs = false;
};
};
domain = "${config.networking.hostName}.shire-zebra.ts.net:8010";
evalMaxMemorySize = 8192;
evalWorkerCount = 8;
gitea = {
enable = true;
instanceUrl = "https://src.thehellings.com";
oauthId = "97bcda21-49df-4876-87ac-36ae07f340ec";
oauthSecretFile = config.age.secrets.gitea-oauthSecret.path;
tokenFile = config.age.secrets.gitea-oauthToken.path;
#topic = "buildbot-greg";
webhookSecretFile = config.age.secrets.gitea-webhookSecret.path;
};
showTrace = true;
#webhookBaseUrl = "http://${config.networking.hostName}.shire-zebra.ts.net:8010";
workersFile = config.age.secrets.gitea-buildbotWorkersFile.path;
};
worker = {
enable = true;
workerPasswordFile = config.age.secrets.gitea-workerPassword.path;
};
};
displayManager = {
defaultSession = "xfce";
autoLogin = {
enable = true;
user = "greg";
};
};
proxmox-ve = {
enable = true;
ipAddress = ip;
};
sunshine = {
enable = true;
autoStart = true;
#capSysAdmin = true;
openFirewall = true;
};
xserver = {
enable = true;
desktopManager = {
xterm.enable = true;
xfce.enable = true;
};
};
};
systemd = {
services = {
"gitlab-runner" = {
after = [
"network.target"
"network-online.target"
"tailscaled.service"
];
requires = [
"network-online.target"
"tailscaled.service"
];
serviceConfig = {
DevicePolicy = lib.mkForce "auto";
User = "root";
DynamicUser = lib.mkForce false;
};
};
};
targets = {
sleep.enable = false;
suspend.enable = false;
hibernate.enable = false;
hybrid-sleep.enable = false;
};
};
users.extraGroups.video.members = [ "greg" ];
}