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 [
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user