Split constants into separate lib file
This commit is contained in:
92
lib/constants.nix
Normal file
92
lib/constants.nix
Normal file
@@ -0,0 +1,92 @@
|
||||
{ lib }: rec {
|
||||
nginx = {
|
||||
proxyHeaders = ''
|
||||
# Setting any proxy_header in a child (e.g. location) will nuke the parents...
|
||||
proxy_set_header X-Origin-URI $request_uri;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Host $http_host;
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Protocol $scheme;
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
'';
|
||||
};
|
||||
|
||||
nix = {
|
||||
cacheKeys = [
|
||||
"nix-cache.nul.ie-1:XofkqdHQSGFoPjB6aRohQbCU2ILKFqhNjWfoOdQgF5Y="
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
];
|
||||
};
|
||||
|
||||
pubDomain = "nul.ie";
|
||||
colony = {
|
||||
domain = "ams1.int.${pubDomain}";
|
||||
prefixes = with lib.my.net.cidr; rec {
|
||||
all = {
|
||||
v4 = "10.100.0.0/16";
|
||||
v6 = "2a0e:97c0:4d2:10::/60";
|
||||
};
|
||||
base = {
|
||||
v4 = subnet 8 0 all.v4;
|
||||
v6 = subnet 4 0 all.v6;
|
||||
};
|
||||
vms = {
|
||||
v4 = subnet 8 1 all.v4;
|
||||
v6 = subnet 4 1 all.v6;
|
||||
};
|
||||
ctrs = {
|
||||
v4 = subnet 8 2 all.v4;
|
||||
v6 = subnet 4 2 all.v6;
|
||||
};
|
||||
oci = {
|
||||
v4 = subnet 8 3 all.v4;
|
||||
v6 = subnet 4 3 all.v6;
|
||||
};
|
||||
|
||||
cust = {
|
||||
v4 = subnet 8 100 all.v4; # single ip for routing only
|
||||
v6 = "2a0e:97c0:4d2:2000::/56";
|
||||
};
|
||||
mail = {
|
||||
v4 = "94.142.241.227/32";
|
||||
v6 = subnet 8 0 cust.v6;
|
||||
};
|
||||
|
||||
vip1 = "94.142.241.224/30";
|
||||
vip2 = "94.142.242.254/31";
|
||||
};
|
||||
fstrimConfig = {
|
||||
enable = true;
|
||||
# backup happens at 05:00
|
||||
interval = "04:45";
|
||||
};
|
||||
};
|
||||
kelder = {
|
||||
groups = {
|
||||
storage = 2000;
|
||||
media = 2010;
|
||||
};
|
||||
|
||||
domain = "hentai.engineer";
|
||||
vpn = {
|
||||
port = 51820;
|
||||
};
|
||||
prefixes = with lib.my.net.cidr; rec {
|
||||
all.v4 = "172.16.64.0/20";
|
||||
ctrs.v4 = subnet 4 0 all.v4;
|
||||
};
|
||||
};
|
||||
sshKeyFiles = {
|
||||
me = ../.keys/me.pub;
|
||||
deploy = ../.keys/deploy.pub;
|
||||
rsyncNet = ../.keys/zh2855.rsync.net.pub;
|
||||
mailcowAcme = ../.keys/mailcow-acme.pub;
|
||||
};
|
||||
sshHostKeys = {
|
||||
mail-vm = ../.keys/mail-vm-host.pub;
|
||||
};
|
||||
}
|
102
lib/default.nix
102
lib/default.nix
@@ -1,9 +1,9 @@
|
||||
{ lib }:
|
||||
let
|
||||
inherit (builtins) length match replaceStrings elemAt mapAttrs head split filter;
|
||||
inherit (builtins) length match elemAt filter;
|
||||
inherit (lib)
|
||||
genAttrs mapAttrs' mapAttrsToList filterAttrsRecursive nameValuePair types
|
||||
mkOption mkOverride mkForce mkIf mergeEqualOption optional hasPrefix
|
||||
genAttrs mapAttrsToList filterAttrsRecursive nameValuePair types
|
||||
mkOption mkOverride mkForce mkIf mergeEqualOption optional
|
||||
showWarnings concatStringsSep flatten unique;
|
||||
inherit (lib.flake) defaultSystems;
|
||||
in
|
||||
@@ -12,6 +12,7 @@ rec {
|
||||
|
||||
inherit (import ./net.nix { inherit lib; }) net;
|
||||
dns = import ./dns.nix { inherit lib; };
|
||||
c = import ./constants.nix { inherit lib; };
|
||||
|
||||
# Yoinked from nixpkgs/nixos/modules/services/networking/nat.nix
|
||||
isIPv6 = ip: length (lib.splitString ":" ip) > 2;
|
||||
@@ -128,6 +129,8 @@ rec {
|
||||
UseDomains = true;
|
||||
};
|
||||
};
|
||||
dockerNetAssignment =
|
||||
assignments: name: with assignments."${name}".internal; "ip=${ipv4.address},ip=${ipv6.address}";
|
||||
|
||||
systemdAwaitPostgres = pkg: host: {
|
||||
after = [ "systemd-networkd-wait-online.service" ];
|
||||
@@ -185,97 +188,4 @@ rec {
|
||||
|
||||
filterOpts = filterAttrsRecursive (_: v: v != null);
|
||||
};
|
||||
|
||||
nginx = {
|
||||
proxyHeaders = ''
|
||||
# Setting any proxy_header in a child (e.g. location) will nuke the parents...
|
||||
proxy_set_header X-Origin-URI $request_uri;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Host $http_host;
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Protocol $scheme;
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
'';
|
||||
};
|
||||
|
||||
nix = {
|
||||
cacheKeys = [
|
||||
"nix-cache.nul.ie-1:XofkqdHQSGFoPjB6aRohQbCU2ILKFqhNjWfoOdQgF5Y="
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
];
|
||||
};
|
||||
|
||||
pubDomain = "nul.ie";
|
||||
dockerNetAssignment =
|
||||
assignments: name: with assignments."${name}".internal; "ip=${ipv4.address},ip=${ipv6.address}";
|
||||
colony = {
|
||||
domain = "ams1.int.${pubDomain}";
|
||||
prefixes = with net.cidr; rec {
|
||||
all = {
|
||||
v4 = "10.100.0.0/16";
|
||||
v6 = "2a0e:97c0:4d2:10::/60";
|
||||
};
|
||||
base = {
|
||||
v4 = subnet 8 0 all.v4;
|
||||
v6 = subnet 4 0 all.v6;
|
||||
};
|
||||
vms = {
|
||||
v4 = subnet 8 1 all.v4;
|
||||
v6 = subnet 4 1 all.v6;
|
||||
};
|
||||
ctrs = {
|
||||
v4 = subnet 8 2 all.v4;
|
||||
v6 = subnet 4 2 all.v6;
|
||||
};
|
||||
oci = {
|
||||
v4 = subnet 8 3 all.v4;
|
||||
v6 = subnet 4 3 all.v6;
|
||||
};
|
||||
|
||||
cust = {
|
||||
v4 = subnet 8 100 all.v4; # single ip for routing only
|
||||
v6 = "2a0e:97c0:4d2:2000::/56";
|
||||
};
|
||||
mail = {
|
||||
v4 = "94.142.241.227/32";
|
||||
v6 = subnet 8 0 cust.v6;
|
||||
};
|
||||
|
||||
vip1 = "94.142.241.224/30";
|
||||
vip2 = "94.142.242.254/31";
|
||||
};
|
||||
fstrimConfig = {
|
||||
enable = true;
|
||||
# backup happens at 05:00
|
||||
interval = "04:45";
|
||||
};
|
||||
};
|
||||
kelder = {
|
||||
groups = {
|
||||
storage = 2000;
|
||||
media = 2010;
|
||||
};
|
||||
|
||||
domain = "hentai.engineer";
|
||||
vpn = {
|
||||
port = 51820;
|
||||
};
|
||||
prefixes = with net.cidr; rec {
|
||||
all.v4 = "172.16.64.0/20";
|
||||
ctrs.v4 = subnet 4 0 all.v4;
|
||||
};
|
||||
};
|
||||
sshKeyFiles = {
|
||||
me = ../.keys/me.pub;
|
||||
deploy = ../.keys/deploy.pub;
|
||||
rsyncNet = ../.keys/zh2855.rsync.net.pub;
|
||||
mailcowAcme = ../.keys/mailcow-acme.pub;
|
||||
};
|
||||
sshHostKeys = {
|
||||
mail-vm = ../.keys/mail-vm-host.pub;
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user