nixos: Add Gitea VM
This commit is contained in:
@@ -261,6 +261,11 @@ in
|
||||
Destination = allAssignments.whale2.internal.ipv4.address;
|
||||
Gateway = allAssignments.whale2.routing.ipv4.address;
|
||||
}
|
||||
|
||||
{
|
||||
Destination = allAssignments.git.internal.ipv4.address;
|
||||
Gateway = allAssignments.git.routing.ipv4.address;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
@@ -372,6 +377,7 @@ in
|
||||
"vm-estuary-persist"
|
||||
"vm-whale2-persist"
|
||||
"vm-mail-data"
|
||||
"vm-git-persist"
|
||||
"git"
|
||||
];
|
||||
compression = "zstd,5";
|
||||
|
@@ -3,6 +3,7 @@
|
||||
./estuary
|
||||
./shill
|
||||
./whale2
|
||||
./git
|
||||
];
|
||||
|
||||
nixos.systems.colony.configuration = { lib, pkgs, config, systems, ... }:
|
||||
@@ -31,9 +32,9 @@
|
||||
backend = {
|
||||
driver = "file";
|
||||
#filename = "${systems.installer.configuration.config.my.buildAs.iso}/iso/nixos-installer-devplayer0.iso";
|
||||
#filename = "/persist/home/dev/nixos-installer-devplayer0.iso";
|
||||
filename = "/persist/home/dev/nixos-installer-devplayer0-b4d0d9a.iso";
|
||||
#filename = "/persist/home/dev/debian-12.1.0-amd64-netinst.iso";
|
||||
filename = "/persist/home/dev/ubuntu-22.04.3-live-server-amd64.iso";
|
||||
# filename = "/persist/home/dev/ubuntu-22.04.3-live-server-amd64.iso";
|
||||
read-only = "on";
|
||||
};
|
||||
format.driver = "raw";
|
||||
@@ -135,7 +136,7 @@
|
||||
cpus = 12;
|
||||
threads = 2;
|
||||
};
|
||||
memory = 65536;
|
||||
memory = 49152;
|
||||
networks.vms.mac = "52:54:00:27:3d:5c";
|
||||
cleanShutdown.timeout = 120;
|
||||
drives = [ ] ++ (optionals (!config.my.build.isDevVM) [
|
||||
@@ -146,7 +147,6 @@
|
||||
(lvmDisk "media")
|
||||
(lvmDisk "minio")
|
||||
(lvmDisk "nix-atticd")
|
||||
(lvmDisk "git")
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
cpus = 8;
|
||||
threads = 2;
|
||||
};
|
||||
memory = 32768;
|
||||
memory = 16384;
|
||||
networks.vms.mac = "52:54:00:d5:d9:c6";
|
||||
cleanShutdown.timeout = 120;
|
||||
drives = [ ] ++ (optionals (!config.my.build.isDevVM) [
|
||||
@@ -166,10 +166,30 @@
|
||||
(vmLVM "whale2" "persist")
|
||||
|
||||
(lvmDisk "oci")
|
||||
(lvmDisk "gitea-actions-cache")
|
||||
]);
|
||||
};
|
||||
|
||||
git = {
|
||||
uuid = "c0659fdc-3356-4717-a6a1-5f289ef03c4a";
|
||||
cpu = "host,topoext";
|
||||
smp = {
|
||||
cpus = 12;
|
||||
threads = 2;
|
||||
};
|
||||
memory = 32768;
|
||||
networks.vms.mac = "52:54:00:75:78:a8";
|
||||
cleanShutdown.timeout = 120;
|
||||
drives = [
|
||||
(mkMerge [ (vmLVM "git" "esp") { frontendOpts.bootindex = 0; } ])
|
||||
(vmLVM "git" "nix")
|
||||
(vmLVM "git" "persist")
|
||||
(vmLVM "git" "oci")
|
||||
|
||||
(lvmDisk "git")
|
||||
(lvmDisk "gitea-actions-cache")
|
||||
];
|
||||
};
|
||||
|
||||
mail = {
|
||||
uuid = "fd95fe0f-c204-4dd5-b16f-2b808e14a43a";
|
||||
cpu = "host,topoext";
|
||||
|
@@ -16,10 +16,11 @@ in
|
||||
|
||||
define CCVIP1 = ${lib.my.c.colony.prefixes.vip1};
|
||||
define CCVIP2 = ${lib.my.c.colony.prefixes.vip2};
|
||||
define CCVIP3 = ${lib.my.c.colony.prefixes.vip3};
|
||||
|
||||
define OWNIP4 = ${assignments.internal.ipv4.address};
|
||||
define OWNNETSET4 = [ ${assignments.internal.ipv4.address}/32 ];
|
||||
define CCNETSET4 = [ ${lib.my.c.colony.prefixes.vip1}, ${lib.my.c.colony.prefixes.vip2} ];
|
||||
define CCNETSET4 = [ ${lib.my.c.colony.prefixes.vip1}, ${lib.my.c.colony.prefixes.vip2}, ${lib.my.c.colony.prefixes.vip3} ];
|
||||
|
||||
define INTNET6 = ${intnet6};
|
||||
define AMSNET6 = ${amsnet6};
|
||||
@@ -55,6 +56,7 @@ in
|
||||
protocol static static4 {
|
||||
route CCVIP1 via "base";
|
||||
route CCVIP2 via "base";
|
||||
route CCVIP3 via "base";
|
||||
|
||||
ipv4 {
|
||||
import all;
|
||||
|
@@ -290,6 +290,10 @@ in
|
||||
Destination = prefixes.vip1;
|
||||
Gateway = allAssignments.colony.routing.ipv4.address;
|
||||
}
|
||||
{
|
||||
Destination = prefixes.vip3;
|
||||
Gateway = allAssignments.colony.routing.ipv4.address;
|
||||
}
|
||||
{
|
||||
Destination = prefixes.darts.v4;
|
||||
Gateway = allAssignments.colony.routing.ipv4.address;
|
||||
@@ -439,8 +443,8 @@ in
|
||||
table inet nat {
|
||||
chain prerouting {
|
||||
${matchInet "meta l4proto { udp, tcp } th dport domain redirect to :5353" "estuary"}
|
||||
ip daddr ${allAssignments.shill.internal.ipv4.address} tcp dport { http, https } dnat to ${allAssignments.middleman.internal.ipv4.address}
|
||||
ip6 daddr ${allAssignments.shill.internal.ipv6.address} tcp dport { http, https } dnat to ${allAssignments.middleman.internal.ipv6.address}
|
||||
ip daddr ${aa.git.internal.ipv4.address} tcp dport { http, https } dnat to ${aa.middleman.internal.ipv4.address}
|
||||
ip6 daddr ${aa.git.internal.ipv6.address} tcp dport { http, https } dnat to ${aa.middleman.internal.ipv6.address}
|
||||
}
|
||||
chain postrouting {
|
||||
ip saddr ${prefixes.all.v4} snat to ${assignments.internal.ipv4.address}
|
||||
|
117
nixos/boxes/colony/vms/git/default.nix
Normal file
117
nixos/boxes/colony/vms/git/default.nix
Normal file
@@ -0,0 +1,117 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib.my) net;
|
||||
inherit (lib.my.c.colony) domain prefixes;
|
||||
in
|
||||
{
|
||||
nixos.systems.git = {
|
||||
system = "x86_64-linux";
|
||||
nixpkgs = "mine";
|
||||
|
||||
assignments = {
|
||||
routing = {
|
||||
name = "git-vm-routing";
|
||||
inherit domain;
|
||||
ipv4.address = net.cidr.host 4 prefixes.vms.v4;
|
||||
};
|
||||
internal = {
|
||||
name = "git-vm";
|
||||
inherit domain;
|
||||
ipv4 = {
|
||||
address = net.cidr.host 0 prefixes.vip3;
|
||||
mask = 32;
|
||||
gateway = null;
|
||||
genPTR = false;
|
||||
};
|
||||
ipv6 = {
|
||||
iid = "::4";
|
||||
address = net.cidr.host 4 prefixes.vms.v6;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
configuration = { lib, pkgs, modulesPath, config, assignments, allAssignments, ... }:
|
||||
let
|
||||
inherit (lib) mkMerge;
|
||||
inherit (lib.my) networkdAssignment;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
"${modulesPath}/profiles/qemu-guest.nix"
|
||||
|
||||
./gitea.nix
|
||||
./gitea-actions.nix
|
||||
];
|
||||
|
||||
config = mkMerge [
|
||||
{
|
||||
boot = {
|
||||
kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/ESP";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/nix" = {
|
||||
device = "/dev/disk/by-label/nix";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/persist" = {
|
||||
device = "/dev/disk/by-label/persist";
|
||||
fsType = "ext4";
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/var/lib/containers" = {
|
||||
device = "/dev/disk/by-label/oci";
|
||||
fsType = "xfs";
|
||||
options = [ "pquota" ];
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
fstrim = lib.my.c.colony.fstrimConfig;
|
||||
netdata.enable = true;
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
podman = {
|
||||
enable = true;
|
||||
};
|
||||
oci-containers = {
|
||||
backend = "podman";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
links = {
|
||||
"10-vms" = {
|
||||
matchConfig.MACAddress = "52:54:00:75:78:a8";
|
||||
linkConfig.Name = "vms";
|
||||
};
|
||||
};
|
||||
|
||||
networks = {
|
||||
"80-vms" = mkMerge [
|
||||
(networkdAssignment "vms" assignments.routing)
|
||||
(networkdAssignment "vms" assignments.internal)
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
my = {
|
||||
secrets.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP+KINpHLMduBuW96JzfSRDLUzkI+XaCBghu5/wHiW5R";
|
||||
server.enable = true;
|
||||
|
||||
firewall = {
|
||||
tcp.allowed = [ 19999 ];
|
||||
trustedInterfaces = [ "oci" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@@ -6,7 +6,7 @@ let
|
||||
|
||||
cfgFile = pkgs.writeText "gitea-actions-runner.yaml" (toJSON {
|
||||
container = {
|
||||
network = "colony";
|
||||
# network = "colony";
|
||||
privileged = true;
|
||||
};
|
||||
cache = {
|
@@ -349,7 +349,7 @@ in
|
||||
};
|
||||
|
||||
"git.${pubDomain}" = {
|
||||
locations."/".proxyPass = "http://shill-vm.${domain}:3000";
|
||||
locations."/".proxyPass = "http://git-vm.${domain}:3000";
|
||||
useACMEHost = pubDomain;
|
||||
};
|
||||
};
|
||||
|
@@ -49,7 +49,7 @@ in
|
||||
inherit (lib.my) networkdAssignment;
|
||||
in
|
||||
{
|
||||
imports = [ "${modulesPath}/profiles/qemu-guest.nix" ./gitea.nix ];
|
||||
imports = [ "${modulesPath}/profiles/qemu-guest.nix" ];
|
||||
|
||||
config = mkMerge [
|
||||
{
|
||||
|
@@ -63,7 +63,6 @@ in
|
||||
"${modulesPath}/profiles/qemu-guest.nix"
|
||||
|
||||
./valheim.nix
|
||||
./gitea-actions.nix
|
||||
];
|
||||
|
||||
config = mkMerge [
|
||||
|
@@ -184,6 +184,11 @@ in
|
||||
secretsPath = mkOpt' path null "Path to encrypted secret files.";
|
||||
modules = mkOpt' (attrsOf commonOpts.moduleType) { } "NixOS modules to be exported by nixfiles.";
|
||||
systems = mkOpt' (attrsOf (submodule systemOpts)) { } "NixOS systems to be exported by nixfiles.";
|
||||
allAssignments = mkOption {
|
||||
type = attrsOf (attrsOf (submodule assignmentOpts));
|
||||
description = "All network assignments.";
|
||||
readOnly = true;
|
||||
};
|
||||
vpns = {
|
||||
l2 = mkOpt' (attrsOf (submodule l2MeshOpts)) { } "Layer 2 meshes.";
|
||||
};
|
||||
@@ -209,5 +214,9 @@ in
|
||||
message = "Duplicate assignments: ${toString dupIPs}";
|
||||
}
|
||||
];
|
||||
|
||||
nixos = {
|
||||
inherit allAssignments;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user