nixos/shill: Add jam container
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				CI / Check, build and cache Nix flake (push) Successful in 33m30s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	CI / Check, build and cache Nix flake (push) Successful in 33m30s
				
			This commit is contained in:
		@@ -131,6 +131,7 @@
 | 
			
		||||
              (vm.lvmDisk "media")
 | 
			
		||||
              (vm.lvmDisk "minio")
 | 
			
		||||
              (vm.lvmDisk "nix-atticd")
 | 
			
		||||
              (vm.lvmDisk "jam")
 | 
			
		||||
            ]);
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -394,6 +394,9 @@ in
 | 
			
		||||
                      # Safe enough to allow all SSH
 | 
			
		||||
                      tcp dport ssh accept
 | 
			
		||||
 | 
			
		||||
                      # jam-ctr forwards
 | 
			
		||||
                      ip daddr ${aa.shill.internal.ipv4.address} tcp dport 60022 accept
 | 
			
		||||
 | 
			
		||||
                      ip6 daddr ${aa.middleman.internal.ipv6.address} tcp dport { http, https, 8448 } accept
 | 
			
		||||
                      ${matchInet "tcp dport { http, https } accept" "git"}
 | 
			
		||||
                      ip6 daddr ${aa.simpcraft-oci.internal.ipv6.address} tcp dport { 25565, 25575 } accept
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
let
 | 
			
		||||
  inherit (builtins) attrNames;
 | 
			
		||||
  inherit (lib.my) net;
 | 
			
		||||
  inherit (lib.my.c.colony) prefixes;
 | 
			
		||||
  inherit (lib.my.c.colony) prefixes custRouting;
 | 
			
		||||
 | 
			
		||||
  authZones = attrNames config.my.pdns.auth.bind.zones;
 | 
			
		||||
in
 | 
			
		||||
@@ -162,6 +162,10 @@ in
 | 
			
		||||
 | 
			
		||||
            andrey-cust IN A ${allAssignments.kelder.estuary.ipv4.address}
 | 
			
		||||
 | 
			
		||||
            jam-cust IN A ${net.cidr.host 0 prefixes.jam.v4}
 | 
			
		||||
            jam-fwd IN A ${allAssignments.shill.internal.ipv4.address}
 | 
			
		||||
            jam-cust IN AAAA ${net.cidr.host 1 prefixes.jam.v6}
 | 
			
		||||
 | 
			
		||||
            $TTL 3
 | 
			
		||||
            _acme-challenge IN LUA TXT @@FILE@@
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								nixos/boxes/colony/vms/shill/containers-ext.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								nixos/boxes/colony/vms/shill/containers-ext.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
{ lib, pkgs, assignments, ... }:
 | 
			
		||||
let
 | 
			
		||||
  inherit (lib.my) net;
 | 
			
		||||
  inherit (lib.my.c.colony) prefixes custRouting;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  fileSystems = {
 | 
			
		||||
    "/mnt/jam" = {
 | 
			
		||||
      device = "/dev/disk/by-label/jam";
 | 
			
		||||
      fsType = "ext4";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "/var/lib/machines/jam" = {
 | 
			
		||||
      device = "/mnt/jam";
 | 
			
		||||
      options = [ "bind" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  systemd = {
 | 
			
		||||
    nspawn = {
 | 
			
		||||
      jam = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        execConfig = {
 | 
			
		||||
          Boot = true;
 | 
			
		||||
          PrivateUsers = "pick";
 | 
			
		||||
          LinkJournal = false;
 | 
			
		||||
        };
 | 
			
		||||
        networkConfig = {
 | 
			
		||||
          Private = true;
 | 
			
		||||
          VirtualEthernet = true;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    network.networks = {
 | 
			
		||||
      "50-ve-jam" = {
 | 
			
		||||
        matchConfig = {
 | 
			
		||||
          Kind = "veth";
 | 
			
		||||
          Name = "ve-jam";
 | 
			
		||||
        };
 | 
			
		||||
        address = [
 | 
			
		||||
          custRouting.jam-ctr
 | 
			
		||||
          prefixes.jam.v6
 | 
			
		||||
        ];
 | 
			
		||||
        networkConfig = {
 | 
			
		||||
          IPv6AcceptRA = false;
 | 
			
		||||
          IPv6SendRA = true;
 | 
			
		||||
        };
 | 
			
		||||
        ipv6Prefixes = [
 | 
			
		||||
          {
 | 
			
		||||
            ipv6PrefixConfig.Prefix = prefixes.jam.v6;
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
        routes = map (r: { routeConfig = r; }) [
 | 
			
		||||
          {
 | 
			
		||||
            Destination = prefixes.jam.v4;
 | 
			
		||||
            Scope = "link";
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    services = {
 | 
			
		||||
      "systemd-nspawn@jam" = {
 | 
			
		||||
        overrideStrategy = "asDropin";
 | 
			
		||||
 | 
			
		||||
        serviceConfig = {
 | 
			
		||||
          CPUQuota = "400%";
 | 
			
		||||
          MemoryHigh = "4G";
 | 
			
		||||
          MemoryMax = "4.5G";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        wantedBy = [ "machines.target" ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  my = {
 | 
			
		||||
    firewall =
 | 
			
		||||
    let
 | 
			
		||||
      jamIP = net.cidr.host 0 prefixes.jam.v4;
 | 
			
		||||
    in
 | 
			
		||||
    {
 | 
			
		||||
      nat.forwardPorts."${assignments.internal.ipv4.address}" = [
 | 
			
		||||
        {
 | 
			
		||||
          port = 60022;
 | 
			
		||||
          dst = jamIP;
 | 
			
		||||
          dstPort = "ssh";
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
      extraRules = ''
 | 
			
		||||
        table inet filter {
 | 
			
		||||
          chain forward {
 | 
			
		||||
            iifname { ve-jam } oifname vms accept
 | 
			
		||||
            iifname vms oifname { ve-jam } accept
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        table inet nat {
 | 
			
		||||
          chain postrouting {
 | 
			
		||||
            ip saddr ${jamIP} snat to ${assignments.internal.ipv4.address}
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@@ -49,7 +49,11 @@ in
 | 
			
		||||
        inherit (lib.my) networkdAssignment;
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
        imports = [ "${modulesPath}/profiles/qemu-guest.nix" ];
 | 
			
		||||
        imports = [
 | 
			
		||||
          "${modulesPath}/profiles/qemu-guest.nix"
 | 
			
		||||
 | 
			
		||||
          ./containers-ext.nix
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        config = mkMerge [
 | 
			
		||||
          {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user