Ayo the pizza here (restructuring)
This commit is contained in:
		
							
								
								
									
										14
									
								
								hosts/remilia/boot.nix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								hosts/remilia/boot.nix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
{config, ...}:
 | 
			
		||||
{
 | 
			
		||||
  boot = {
 | 
			
		||||
    kernel.sysctl."net.ipv4.ip_forward" = 1;
 | 
			
		||||
    initrd.kernelModules = [ "bochs_drm" ];
 | 
			
		||||
    initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" ];
 | 
			
		||||
    kernelModules = [ "kvm-amd" ];
 | 
			
		||||
    kernelParams = [ "console=ttyS0" "console=tty1" "nvme.shutdown_timeout=10" "libiscsi.debug_libiscsi_eh=1" ];
 | 
			
		||||
    loader = {
 | 
			
		||||
      systemd-boot.enable = true;
 | 
			
		||||
      efi.canTouchEfiVariables = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								hosts/remilia/default.nix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								hosts/remilia/default.nix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
{lib, config, ...}:
 | 
			
		||||
{
 | 
			
		||||
  imports = 
 | 
			
		||||
  [
 | 
			
		||||
    ./networking.nix
 | 
			
		||||
    ./hardware.nix
 | 
			
		||||
    ./boot.nix
 | 
			
		||||
    ./services.nix
 | 
			
		||||
    ./mailserver.nix
 | 
			
		||||
  ];
 | 
			
		||||
  system.stateVersion = "21.11";
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								hosts/remilia/hardware.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								hosts/remilia/hardware.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
{ config, lib, pkgs, modulesPath, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  imports =
 | 
			
		||||
    [ (modulesPath + "/profiles/qemu-guest.nix")
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  fileSystems."/" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/d91adce2-9059-4a8a-86e7-dee6ecc85b2b";
 | 
			
		||||
      fsType = "ext4";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  swapDevices = [
 | 
			
		||||
    { 
 | 
			
		||||
      device="/swapfile";
 | 
			
		||||
      size = 7168;
 | 
			
		||||
      priority = 0;
 | 
			
		||||
    }
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								hosts/remilia/mailserver.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								hosts/remilia/mailserver.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
{ config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  mailserver = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    fqdn = "mail.weirdnatto.in";
 | 
			
		||||
    domains = [ "weirdnatto.in" ];
 | 
			
		||||
    loginAccounts = {
 | 
			
		||||
      "natto@weirdnatto.in" = {
 | 
			
		||||
        hashedPasswordFile = "/var/secrets/natto@weirdnatto.in.key";
 | 
			
		||||
        aliases = ["@weirdnatto.in"];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    enablePop3 = false;
 | 
			
		||||
    enablePop3Ssl = false;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										55
									
								
								hosts/remilia/networking.nix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										55
									
								
								hosts/remilia/networking.nix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
{config, pkgs, ...}:
 | 
			
		||||
{
 | 
			
		||||
  networking = {
 | 
			
		||||
    useDHCP = false;
 | 
			
		||||
    hostName = "Remilia";
 | 
			
		||||
    firewall = {
 | 
			
		||||
      interfaces = {
 | 
			
		||||
        ens3 = {
 | 
			
		||||
          allowedTCPPorts = [ 
 | 
			
		||||
            22
 | 
			
		||||
            80 81
 | 
			
		||||
            443 444
 | 
			
		||||
            993 465 143 25 
 | 
			
		||||
          ];
 | 
			
		||||
          allowedUDPPorts = [ 17840 ];
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    interfaces = {
 | 
			
		||||
      ens3 = {
 | 
			
		||||
        useDHCP = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    nat = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      externalInterface = "ens3";
 | 
			
		||||
      internalInterfaces = [ "wg0" ];
 | 
			
		||||
    };
 | 
			
		||||
    wireguard.interfaces = {
 | 
			
		||||
      wg0 = {
 | 
			
		||||
        ips = [ "10.55.0.1/24" ];
 | 
			
		||||
        listenPort = 17840;
 | 
			
		||||
        postSetup = ''
 | 
			
		||||
          ${pkgs.iptables}/bin/iptables -A FORWARD -i wg0 -j ACCEPT
 | 
			
		||||
          ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.55.0.0/24 -o ${config.networking.nat.externalInterface} -j MASQUERADE
 | 
			
		||||
        '';
 | 
			
		||||
        postShutdown = ''
 | 
			
		||||
          ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT
 | 
			
		||||
          ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.55.0.0/24 -o ${config.networking.nat.externalInterface} -j MASQUERADE
 | 
			
		||||
        '';
 | 
			
		||||
        privateKeyFile = "/var/secrets/wg.key";
 | 
			
		||||
        peers = [
 | 
			
		||||
          {
 | 
			
		||||
            publicKey = "m9SSpkj+r2QY4YEUMEoTkbOI/L7C39Kh6m45QZ5mkw4=";
 | 
			
		||||
            allowedIPs = [ "10.55.0.2/32" ];
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            publicKey = "SqskEH7hz7Gv9ZS+FYLRFgKZyJCFbBFCyuvzBYnbfVU=";
 | 
			
		||||
            allowedIPs = [ "10.55.0.3/32" ];
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								hosts/remilia/services.nix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								hosts/remilia/services.nix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
{config, pkgs, ...}:
 | 
			
		||||
{
 | 
			
		||||
  services = {
 | 
			
		||||
    openssh = { enable = true;
 | 
			
		||||
      permitRootLogin = "yes";
 | 
			
		||||
    };
 | 
			
		||||
    nginx = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      package = (pkgs.nginx.overrideAttrs(oa: {
 | 
			
		||||
        configureFlags = oa.configureFlags ++ [ "--with-mail" "--with-mail_ssl_module" ];
 | 
			
		||||
      }));
 | 
			
		||||
      virtualHosts = {
 | 
			
		||||
        "weirdnatto.in" = {
 | 
			
		||||
          addSSL = true;
 | 
			
		||||
          enableACME = true;
 | 
			
		||||
          locations."/".proxyPass = "http://10.55.0.2:80";
 | 
			
		||||
          serverAliases = [ "www.weirdnatto.in" ];
 | 
			
		||||
        };
 | 
			
		||||
        "git.weirdnatto.in" = {
 | 
			
		||||
          addSSL = true;
 | 
			
		||||
          enableACME = true;
 | 
			
		||||
          locations."/" = {
 | 
			
		||||
            proxyPass = "http://10.55.0.2:5001";
 | 
			
		||||
            extraConfig = ''
 | 
			
		||||
              proxy_set_header Host $host;
 | 
			
		||||
            '';
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    vault-agent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        vault = {
 | 
			
		||||
          address = "https://10.55.0.2:8800";
 | 
			
		||||
          client_cert = "/var/vault/cert.pem";
 | 
			
		||||
          client_key = "/var/vault/key.pem";
 | 
			
		||||
        };
 | 
			
		||||
        auto_auth = {
 | 
			
		||||
          method = [
 | 
			
		||||
            {
 | 
			
		||||
              "cert" = {
 | 
			
		||||
                name = "Remilia";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        };
 | 
			
		||||
        template = [
 | 
			
		||||
          {
 | 
			
		||||
            source = pkgs.writeText "wg.tpl" ''
 | 
			
		||||
              {{ with secret "kv/systems/Remilia/wg" }}{{ .Data.data.private }}{{ end }}
 | 
			
		||||
            '';
 | 
			
		||||
            destination = "/var/secrets/wg.key";
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            source = pkgs.writeText "natto@weirdnatto.in.tpl" ''
 | 
			
		||||
              {{ with secret "kv/systems/Remilia" }}{{ .Data.data.nattomail }}{{ end }}
 | 
			
		||||
            '';
 | 
			
		||||
            destination = "/var/secrets/natto@weirdnatto.in.key";
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.root.openssh.authorizedKeys.keys = [
 | 
			
		||||
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHingN2Aho+KGgEvBMjtoez+W1svl9uVoa4vG0d646j"
 | 
			
		||||
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCH975XCps+VCzo8Fpp5BkbtiFmj9y3//FBVYlQ7/yo"
 | 
			
		||||
  ];
 | 
			
		||||
  security.acme = {
 | 
			
		||||
    acceptTerms = true;
 | 
			
		||||
    certs = {
 | 
			
		||||
      "weirdnatto.in".email = "natto+acme@weirdnatto.in";    
 | 
			
		||||
      "git.weirdnatto.in".email = "git+acme@weirdnatto.in";    
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  security.pki.certificateFiles = [ ../../cert.pem ];
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user