Home

infra @main - refs - log -
-
https://git.jolheiser.com/infra.git
dragonwell flake
tree log patch
dragonwell: extract ports for services Signed-off-by: jolheiser <git@jolheiser.com>
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQDeAuQQb0qG5yUNU63PJIHQo+46fwUptqmcK9ECy1hV/upefYPf3uhDdtTVukJhjYh jah7wHad1fbGTmIzc0Ug0= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
2 hours ago
14 changed files, 79 additions(+), 31 deletions(-)
dragonwell/atproto.nixdragonwell/foundry.nixdragonwell/git-bug.nixdragonwell/git-pr.nixdragonwell/gollum.nixdragonwell/mealie.nixdragonwell/miniserve.nixdragonwell/mint.nixdragonwell/oa2p.nixdragonwell/pocket-id.nixdragonwell/pubserve.nixdragonwell/soju.nixdragonwell/ugit.nixdragonwell/woodpecker.nix
M dragonwell/atproto.nix -> dragonwell/atproto.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/dragonwell/atproto.nix b/dragonwell/atproto.nix
index f94314d3dc48adc856fcd9637881776283db75e6..6e417feeead24caea4be1ccbaff2e4ffb13d8a8c 100644
--- a/dragonwell/atproto.nix
+++ b/dragonwell/atproto.nix
@@ -1,4 +1,7 @@
 { config, ... }:
+let
+  port = 2759;
+in
 {
   age.secrets.pds.file = ../secrets/pds.age;
   services = {
@@ -6,7 +9,7 @@     bluesky-pds = {
       enable = true;
       pdsadmin.enable = true;
       settings = {
-        PDS_PORT = 2759;
+        PDS_PORT = port;
         PDS_HOSTNAME = "pds.jolheiser.com";
       };
       environmentFiles = [
@@ -14,7 +17,7 @@         config.age.secrets.pds.path
       ];
     };
     caddy.virtualHosts."pds.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:2759
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/foundry.nix -> dragonwell/foundry.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/dragonwell/foundry.nix b/dragonwell/foundry.nix
index ef110dd8b1ad98733cdabd7883b8744da8043a26..fce651798f88395091511064d599bc200b9b78f7 100644
--- a/dragonwell/foundry.nix
+++ b/dragonwell/foundry.nix
@@ -1,8 +1,12 @@
 { inputs, pkgs, ... }:
+let
+  port = 30000;
+in
 {
   services = {
     foundryvtt = {
       enable = true;
+      inherit port;
       hostName = "dnd.jolheiser.com";
       minifyStaticFiles = true;
       proxyPort = 443;
@@ -11,7 +15,7 @@       upnp = false;
       package = inputs.foundry.packages.${pkgs.stdenv.hostPlatform.system}.foundryvtt_14;
     };
     caddy.virtualHosts."dnd.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:30000
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/git-bug.nix -> dragonwell/git-bug.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/dragonwell/git-bug.nix b/dragonwell/git-bug.nix
index c7bfe2ae4a07f506a4365622912a742f7b52a215..03021813b6386cf94b1695145150219615a739df 100644
--- a/dragonwell/git-bug.nix
+++ b/dragonwell/git-bug.nix
@@ -1,3 +1,6 @@
+let
+  port = 2847;
+in
 {
   services = {
     git-bug.bugs = {
@@ -7,12 +10,12 @@       authorUser = "jolheiser";
       authorEmail = "bugs@jolheiser.com";
       authorAvatar = "https://www.libravatar.org/avatar/cc498b605dee7b6fb9e6422332691bb4";
       host = "localhost";
-      port = 2847;
+      inherit port;
     };
     tailproxy.bugs = {
       enable = false;
       hostname = "bugs";
-      port = 2847;
+      inherit port;
       authKey = ""; # One-time key
     };
   };
M dragonwell/git-pr.nix -> dragonwell/git-pr.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
diff --git a/dragonwell/git-pr.nix b/dragonwell/git-pr.nix
index f5d249d359e6b7ec3412a8db60e973f7008f1bbd..4f18805427e380469adea6acbec985cde41aea28 100644
--- a/dragonwell/git-pr.nix
+++ b/dragonwell/git-pr.nix
@@ -1,3 +1,6 @@
+let
+  port = 7449;
+in
 {
   services = {
     git-pr = {
@@ -7,7 +10,7 @@       url = "pr.jolheiser.com";
       admins = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXoiWcPkL5kUAqJfMxnPM/ND4qJ4kKShDhXdqnYv2ZB" ];
       sshPort = 7448;
       enableWeb = true;
-      webPort = 7449;
+      webPort = port;
       theme = "catppuccin-mocha";
       timeFormat = "01/02/2006 at 03:04:05PM";
       repos = [
@@ -24,7 +27,7 @@         }
       ];
     };
     caddy.virtualHosts."pr.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:7449
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/gollum.nix -> dragonwell/gollum.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/dragonwell/gollum.nix b/dragonwell/gollum.nix
index a1216f5260060c6d9c164e47ab8c79937891d2c4..0625aadc724edb60e39f7623c0c1ef044815ce69 100644
--- a/dragonwell/gollum.nix
+++ b/dragonwell/gollum.nix
@@ -1,4 +1,7 @@
 { pkgs, config, ... }:
+let
+  port = 9454;
+in
 {
   services = {
     gollum = {
@@ -6,7 +9,7 @@       enable = true;
       stateDir = "/var/lib/ugit/repos/wiki.git";
       emoji = true;
       h1-title = true;
-      port = 9454;
+      inherit port;
       branch = "main";
       user = "ugit";
       group = "ugit";
@@ -31,7 +34,7 @@       				redir * /oauth2/sign_in?rd={scheme}://{host}{uri}
       			}
       		}
 
-      		reverse_proxy localhost:9454
+      		reverse_proxy localhost:${builtins.toString port}
       	}
     '';
   };
M dragonwell/mealie.nix -> dragonwell/mealie.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/dragonwell/mealie.nix b/dragonwell/mealie.nix
index 1f4b0e4ffd930690d0f1972d7243d1fd32e5f177..d397f55d222a19c4506ad493c4bd6f16f704d508 100644
--- a/dragonwell/mealie.nix
+++ b/dragonwell/mealie.nix
@@ -1,4 +1,7 @@
 { pkgs, config, ... }:
+let
+  port = 3663;
+in
 {
   age.secrets.mealie.file = ../secrets/mealie.age;
   services = {
@@ -13,7 +16,7 @@           installCheckPhase = ''echo "Skipping install tests for mealie"'';
         }
       );
       listenAddress = "localhost";
-      port = 3663;
+      inherit port;
       settings = {
         BASE_URL = "https://recipes.jolheiser.com";
         ALLOW_PASSWORD_LOGIN = "false";
@@ -21,7 +24,7 @@       };
       credentialsFile = config.age.secrets.mealie.path;
     };
     caddy.virtualHosts."recipes.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:3663
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/miniserve.nix -> dragonwell/miniserve.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/dragonwell/miniserve.nix b/dragonwell/miniserve.nix
index 8905b1380508bd53125223ee2bf8cd2330961d3e..d4cd4b55b97b71c76e1dcb1e960e29560a88f613 100644
--- a/dragonwell/miniserve.nix
+++ b/dragonwell/miniserve.nix
@@ -1,8 +1,11 @@
+let
+  port = 3453;
+in
 {
   services = {
     miniserve = {
       enable = true;
-      port = 3453;
+      inherit port;
       showHidden = true;
       uploadFiles = "";
       mkdir = true;
@@ -19,7 +22,7 @@     };
     tailproxy.miniserve = {
       enable = true;
       hostname = "files";
-      port = 3453;
+      inherit port;
       authKey = "tskey-auth-kNNZJXfSDb11CNTRL-DsdZPygdA7Lrye5WJjnr6LGNffgzo3PUH"; # One-time key
     };
   };
M dragonwell/mint.nix -> dragonwell/mint.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff --git a/dragonwell/mint.nix b/dragonwell/mint.nix
index 5d430ef2470f9fd74f25dd161ece77ed27c9e45a..679b5ce611e9d53a9d12a2a0084e886557add363 100644
--- a/dragonwell/mint.nix
+++ b/dragonwell/mint.nix
@@ -1,9 +1,18 @@
-{ inputs, pkgs, config, ... }:
+{
+  inputs,
+  pkgs,
+  config,
+  ...
+}:
+let
+  port = 6468;
+in
 {
   age.secrets.mint.file = ../secrets/mint.age;
   services = {
     mint = {
       enable = true;
+      inherit port;
       settings = {
         MINT_LOG_LEVEL = "INFO";
       };
@@ -14,7 +23,7 @@       handle_path /static/* {
         root * ${inputs.mint.packages.${pkgs.stdenv.hostPlatform.system}.default}/lib/mint/static/
         file_server
       }
-      reverse_proxy localhost:6468
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/oa2p.nix -> dragonwell/oa2p.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
diff --git a/dragonwell/oa2p.nix b/dragonwell/oa2p.nix
index 26d5e1f2bbf6446f26798b0854f8bfbccb731837..c3ca8fc5a7c321e6a0f14889df6c976304abf45a 100644
--- a/dragonwell/oa2p.nix
+++ b/dragonwell/oa2p.nix
@@ -1,11 +1,14 @@
 { config, ... }:
+let
+  port = 6227;
+in
 {
   age.secrets.oa2p.file = ../secrets/oa2p.age;
   services = {
     oauth2-proxy = {
       enable = true;
       provider = "oidc";
-      httpAddress = "localhost:6227";
+      httpAddress = "localhost:${builtins.toString port}";
       reverseProxy = true;
       cookie = {
         secure = true;
@@ -17,7 +20,7 @@       redirectURL = "https://wiki.jolheiser.com/oauth2/callback";
       oidcIssuerUrl = "https://id.jolheiser.com";
     };
     caddy.virtualHosts."oa2p.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:6227
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/pocket-id.nix -> dragonwell/pocket-id.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/dragonwell/pocket-id.nix b/dragonwell/pocket-id.nix
index fc920a62fe44a0acd2a742534d9b76aa42631e7d..993f938f133e2f00a3d9620852ecd155e40c4bf3 100644
--- a/dragonwell/pocket-id.nix
+++ b/dragonwell/pocket-id.nix
@@ -1,4 +1,7 @@
 { config, ... }:
+let
+  port = 2884;
+in
 {
   age.secrets.pocket-id.file = ../secrets/pocket-id.age;
   services = {
@@ -6,7 +9,7 @@     pocket-id = {
       enable = true;
       settings = {
         APP_URL = "https://id.jolheiser.com";
-        PORT = 2884;
+        PORT = port;
         APP_NAME = "jolheiser ID";
         EMAILS_VERIFIED = true;
         UI_CONFIG_DISABLED = true;
@@ -16,7 +19,7 @@       };
       environmentFile = config.age.secrets.pocket-id.path;
     };
     caddy.virtualHosts."id.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:2884
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
 }
M dragonwell/pubserve.nix -> dragonwell/pubserve.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff --git a/dragonwell/pubserve.nix b/dragonwell/pubserve.nix
index 10a0ee65af37d433d0b95df34b524ef2964bd46e..38ac37e5c5fc542ebcf381c34395888ddd10981f 100644
--- a/dragonwell/pubserve.nix
+++ b/dragonwell/pubserve.nix
@@ -2,6 +2,8 @@ { pkgs, lib, ... }:
 let
   user = "pubserve";
   path = "/var/lib/pubserve";
+  pubPort = 3454;
+  privPort = 3455;
 in
 {
   users.users.${user} = {
@@ -32,7 +34,7 @@         description = "Miniserve Public File Server";
         after = [ "network.target" ];
         wantedBy = [ "multi-user.target" ];
         serviceConfig = {
-          ExecStart = "${pkgs.miniserve}/bin/miniserve -t 'PubServe' -p 3454 ${lib.concatStringsSep " " commonArgs}";
+          ExecStart = "${pkgs.miniserve}/bin/miniserve -t 'PubServe' -p ${builtins.toString pubPort} ${lib.concatStringsSep " " commonArgs}";
           Restart = "on-failure";
           User = user;
           Group = user;
@@ -43,7 +45,7 @@         description = "Miniserve Public File Server (Admin)";
         after = [ "network.target" ];
         wantedBy = [ "multi-user.target" ];
         serviceConfig = {
-          ExecStart = "${pkgs.miniserve}/bin/miniserve -u -U -o 'overwrite' -t 'PrivServe' -p 3455 ${lib.concatStringsSep " " commonArgs}";
+          ExecStart = "${pkgs.miniserve}/bin/miniserve -u -U -o 'overwrite' -t 'PrivServe' -p ${builtins.toString privPort} ${lib.concatStringsSep " " commonArgs}";
           Restart = "on-failure";
           User = user;
           Group = user;
@@ -55,13 +57,13 @@     pubserve = {
       enable = true;
       hostname = "pubserve";
       funnel = true;
-      port = 3454;
+      port = pubPort;
       authKey = "tskey-auth-kJrnknpMsL11CNTRL-ot1kkasErR2cLZZmfuKYR2b9za7fCzVR"; # One-time key
     };
     privserve = {
       enable = true;
       hostname = "privserve";
-      port = 3455;
+      port = privPort;
       authKey = "tskey-auth-kKFv865ykk11CNTRL-dfmxUREHP5evuuMsfPy55ehXECXrLF1N7"; # One-time key
     };
   };
M dragonwell/soju.nix -> dragonwell/soju.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
diff --git a/dragonwell/soju.nix b/dragonwell/soju.nix
index 516da2fdbab2ecf64ef0fe466a2c37f395a12b25..01f4534190c57cc26a4822da1f6fc62ce862ebd1 100644
--- a/dragonwell/soju.nix
+++ b/dragonwell/soju.nix
@@ -1,13 +1,14 @@
 { lib, ... }:
 let
   baseCertPath = "/var/lib/acme/irc.jolheiser.com";
+  port = 7658;
 in
 {
   security.acme = {
     acceptTerms = true;
     email = "irc@jolheiser.com";
     certs."irc.jolheiser.com" = {
-      listenHTTP = ":7658";
+      listenHTTP = ":${builtins.toString port}";
       postRun = "systemctl reload soju";
       group = "soju";
     };
@@ -19,7 +20,7 @@       tlsCertificate = "${baseCertPath}/fullchain.pem";
       tlsCertificateKey = "${baseCertPath}/key.pem";
     };
     caddy.virtualHosts."irc.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:7658
+      reverse_proxy localhost:${builtins.toString port}
     '';
   };
   systemd.services.soju.serviceConfig = {
M dragonwell/ugit.nix -> dragonwell/ugit.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff --git a/dragonwell/ugit.nix b/dragonwell/ugit.nix
index ab8f48cbf5947271b73ee6b07ba6b7f654807ff5..c985c6e38fe0d2e9ef06a78e13d7fd144cea74d4 100644
--- a/dragonwell/ugit.nix
+++ b/dragonwell/ugit.nix
@@ -1,5 +1,7 @@
 { lib, ... }:
 let
+  pubPort = 8449;
+  privPort = 8447;
   opts =
     let
       homeDir = "/var/lib/ugit";
@@ -16,7 +18,10 @@       user = "ugit";
       group = "ugit";
       config = {
         ssh.clone-url = "ugit@git.jolheiser.com";
-        http.clone-url = "https://git.jolheiser.com";
+        http = {
+          port = pubPort;
+          clone-url = "https://git.jolheiser.com";
+        };
         log.json = true;
         profile = {
           username = "jolheiser";
@@ -37,7 +42,7 @@       public = opts;
       private = lib.recursiveUpdate opts {
         config = {
           ssh.port = 8446;
-          http.port = 8447;
+          http.port = privPort;
           show-private = true;
         };
       };
@@ -45,11 +50,11 @@     };
     tailproxy.ugit = {
       enable = true;
       hostname = "git";
-      port = 8447;
+      port = privPort;
       authKey = "tskey-auth-kyuvaLt8pb11CNTRL-admMYrs6UWb5XaCcdWJAWbriZ6JMo7ksK"; # One-time key
     };
     caddy.virtualHosts."git.jolheiser.com".extraConfig = ''
-      reverse_proxy localhost:8449
+      reverse_proxy localhost:${builtins.toString pubPort}
     '';
   };
 }
M dragonwell/woodpecker.nix -> dragonwell/woodpecker.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
diff --git a/dragonwell/woodpecker.nix b/dragonwell/woodpecker.nix
index 88acd1ca4b738761aff970838cd22d2f87dcca26..492498d7f1c0525eef4903c1c8eb1dc1b00238fb 100644
--- a/dragonwell/woodpecker.nix
+++ b/dragonwell/woodpecker.nix
@@ -4,6 +4,9 @@   pkgs,
   config,
   ...
 }:
+let
+  port = 2423;
+in
 {
   age.secrets.woodpecker.file = ../secrets/woodpecker.age;
   services = {
@@ -16,7 +19,7 @@         WOODPECKER_ADDON_FORGE = "${pkgs.lib.getExe
           inputs.gitpecker.packages.${pkgs.stdenv.hostPlatform.system}.default
         }";
         WOODPECKER_ADMIN = "jolheiser";
-        WOODPECKER_SERVER_ADDR = ":2423";
+        WOODPECKER_SERVER_ADDR = ":${builtins.toString port}";
 
         GITPECKER_REPOS = "/var/lib/ugit/repos";
         GITPECKER_URL = "https://git.jolheiser.com";
@@ -46,7 +49,7 @@     };
     tailproxy.woodpecker = {
       enable = true;
       hostname = "cicd";
-      port = 2423;
+      inherit port;
       authKey = "tskey-auth-kgrGNGArZw11CNTRL-rA3rdahB1dEobvWZraPhcEpHp2BVBcYh"; # One-time key
     };
   };