nix machine / user configurations

refactor(wolumonde): put extra domain names in the service files instead of nginx.nix

ptr.pet 9cdd7993 6d8adf7c

verified
Changed files
+138 -156
hosts
+7 -2
hosts/wolumonde/modules/atproto.nix
···
forceSSL = true;
});
};
in
{
services.nginx.virtualHosts = {
# "gaze.systems" = mkWellKnownCfg {
# "atproto-did" = pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
···
# "atproto-did" = pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
# };
}
-
// (mkDidWebCfg "dawn.gaze.systems")
-
// (mkDidWebCfg "guestbook.gaze.systems");
# // (mkDidWebCfg "9.0.0.0.8.e.f.1.5.0.7.4.0.1.0.0.2.ip6.arpa");
}
···
forceSSL = true;
});
};
+
dawnDid = "dawn.gaze.systems";
+
guestbookDid = "guestbook.gaze.systems";
in
{
+
security.acme.certs."gaze.systems".extraDomainNames = [
+
dawnDid guestbookDid
+
];
services.nginx.virtualHosts = {
# "gaze.systems" = mkWellKnownCfg {
# "atproto-did" = pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
···
# "atproto-did" = pkgs.writeText "server" "did:plc:dfl62fgb7wtjj3fcbb72naae";
# };
}
+
// (mkDidWebCfg dawnDid)
+
// (mkDidWebCfg guestbookDid);
# // (mkDidWebCfg "9.0.0.0.8.e.f.1.5.0.7.4.0.1.0.0.2.ip6.arpa");
}
+2 -1
hosts/wolumonde/modules/forgejo.nix/default.nix
···
"public"
];
-
services.nginx.virtualHosts."git.gaze.systems" = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
···
"public"
];
+
security.acme.certs."gaze.systems".extraDomainNames = [forgejoCfg.server.DOMAIN];
+
services.nginx.virtualHosts.${forgejoCfg.server.DOMAIN} = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
-36
hosts/wolumonde/modules/headscale.nix/acl.hujson
···
-
{
-
"groups": {
-
"group:admin": ["90008@gaze.systems"],
-
},
-
"tagOwners": {
-
"tag:private-infra": ["group:admin"],
-
"tag:other-infra": ["group:admin"],
-
},
-
"acls": [
-
{
-
"action": "accept",
-
"src": ["group:admin"],
-
"dst": ["tag:private-infra:*", "tag:other-infra:*"],
-
},
-
{
-
"action": "accept",
-
"src": ["tag:private-infra"],
-
"dst": ["tag:other-infra:*"],
-
},
-
{
-
"action": "accept",
-
"src": ["tag:private-infra"],
-
"dst": ["tag:private-infra:*"],
-
},
-
{
-
"action": "accept",
-
"src": ["90008@gaze.systems"],
-
"dst": ["90008@gaze.systems:*"],
-
},
-
{
-
"action": "accept",
-
"src": ["90008@gaze.systems", "tag:private-infra"],
-
"dst": ["autogroup:internet:*"],
-
},
-
],
-
}
···
+1
hosts/wolumonde/modules/headscale.nix/default.nix
···
};
};
services.nginx.virtualHosts.${domain} = {
useACMEHost = rootDomain;
forceSSL = true;
···
};
};
+
security.acme.certs."gaze.systems".extraDomainNames = [domain];
services.nginx.virtualHosts.${domain} = {
useACMEHost = rootDomain;
forceSSL = true;
+6 -3
hosts/wolumonde/modules/hedgedoc.nix
···
-
{ config, ... }:
{
services.hedgedoc = {
enable = true;
···
};
};
-
services.nginx.virtualHosts."doc.gaze.systems" = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
kTLS = true;
locations."/".proxyPass =
-
"http://${config.services.hedgedoc.settings.host}:${toString config.services.hedgedoc.settings.port}";
};
}
···
+
{ config, ... }: let
+
cfg = config.services.hedgedoc.settings;
+
in
{
services.hedgedoc = {
enable = true;
···
};
};
+
security.acme.certs."gaze.systems".extraDomainNames = [cfg.domain];
+
services.nginx.virtualHosts.${cfg.domain} = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
kTLS = true;
locations."/".proxyPass =
+
"http://${cfg.host}:${toString cfg.port}";
};
}
+9 -3
hosts/wolumonde/modules/limbusart.nix
···
}:
let
pkg = pkgs.callPackage "${inputs.limbusart}/package.nix" { };
in
{
systemd.services.limbusart = {
···
};
users.groups.limbusart = { };
-
services.nginx.virtualHosts."pmart.gaze.systems" = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
···
locations."/".proxyPass = "http://localhost:3000";
};
# redirects
-
services.nginx.virtualHosts."limbus.gaze.systems" = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
kTLS = true;
-
globalRedirect = "pmart.gaze.systems";
};
}
···
}:
let
pkg = pkgs.callPackage "${inputs.limbusart}/package.nix" { };
+
domain = "pmart.gaze.systems";
+
oldDomain = "limbus.gaze.systems";
in
{
systemd.services.limbusart = {
···
};
users.groups.limbusart = { };
+
security.acme.certs."gaze.systems".extraDomainNames = [
+
domain
+
oldDomain
+
];
+
services.nginx.virtualHosts.${domain} = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
···
locations."/".proxyPass = "http://localhost:3000";
};
# redirects
+
services.nginx.virtualHosts.${oldDomain} = {
useACMEHost = "gaze.systems";
forceSSL = true;
quic = true;
kTLS = true;
+
globalRedirect = domain;
};
}
+1 -20
hosts/wolumonde/modules/nginx.nix
···
defaults.email = (import "${inputs.self}/personal.nix").emails.primary;
defaults.webroot = "/var/lib/acme/acme-challenge";
certs."poor.dog" = { };
-
certs."gaze.systems" = {
-
extraDomainNames = [
-
"git.gaze.systems"
-
# "test.gaze.systems"
-
# "ms.gaze.systems"
-
# "mq.gaze.systems"
-
# "couchdb.gaze.systems"
-
"doc.gaze.systems"
-
"pmart.gaze.systems"
-
"limbus.gaze.systems"
-
# "bsky.gaze.systems"
-
"dawn.gaze.systems"
-
"guestbook.gaze.systems"
-
"dash.gaze.systems"
-
"knot.gaze.systems"
-
"spindle.gaze.systems"
-
"id.gaze.systems"
-
"vpn.gaze.systems"
-
];
-
};
};
services.nginx.virtualHosts."gaze.systems" = {
quic = true;
···
defaults.email = (import "${inputs.self}/personal.nix").emails.primary;
defaults.webroot = "/var/lib/acme/acme-challenge";
certs."poor.dog" = { };
+
certs."gaze.systems" = { };
};
services.nginx.virtualHosts."gaze.systems" = {
quic = true;
+4 -5
hosts/wolumonde/modules/nsid-tracker.nix
···
ExecStart = "${pkgs.curl}/bin/curl http://dusk-devel-mobi:${toString port}/events";
};
};
-
systemd.timers.nsid-tracker-keep-alive = {
-
timerConfig = {
-
OnCalendar = "*-*-* *:00/5:05";
-
Unit = "nsid-tracker-keep-alive.service";
-
};
};
services.nginx.virtualHosts."gaze.systems" = {
···
ExecStart = "${pkgs.curl}/bin/curl http://dusk-devel-mobi:${toString port}/events";
};
};
+
systemd.timers.nsid-tracker-keep-alive.timerConfig = {
+
OnBootSec = "5 min";
+
OnUnitActiveSec = "5 min";
+
Unit = "nsid-tracker-keep-alive.service";
};
services.nginx.virtualHosts."gaze.systems" = {
+1
hosts/wolumonde/modules/perses.nix/default.nix
···
cp -f ${./provision}/* ${provisioningFolder}
'';
services.nginx.virtualHosts.${domain} = {
useACMEHost = "gaze.systems"; # TODO: write a module to define vhosts for subdomains
quic = true;
···
cp -f ${./provision}/* ${provisioningFolder}
'';
+
security.acme.certs."gaze.systems".extraDomainNames = [domain];
services.nginx.virtualHosts.${domain} = {
useACMEHost = "gaze.systems"; # TODO: write a module to define vhosts for subdomains
quic = true;
+2
hosts/wolumonde/modules/pocket-id.nix
···
};
};
services.nginx.virtualHosts.${domain} = {
useACMEHost = "gaze.systems";
forceSSL = true;
···
};
};
+
security.acme.certs."gaze.systems".extraDomainNames = [domain];
+
services.nginx.virtualHosts.${domain} = {
useACMEHost = "gaze.systems";
forceSSL = true;
+1 -86
hosts/wolumonde/modules/tangled.nix/default.nix
···
{
-
lib,
-
config,
-
inputs,
-
terra,
-
...
-
}:
-
let
-
knotCfg = config.services.tangled-knot;
-
spindleCfg = config.services.tangled-spindle;
-
in
-
{
-
imports = [
-
"${inputs.tangled}/nix/modules/knot.nix"
-
"${inputs.tangled}/nix/modules/spindle.nix"
-
];
-
-
age.secrets.tangledKnot.file = ../../../../secrets/tangledKnot.age;
-
-
services.tangled-knot = {
-
enable = true;
-
package = terra.tangled-knot;
-
gitUser = "git";
-
motdFile = ./motd;
-
server = {
-
listenAddr = "0.0.0.0:7777";
-
secretFile = config.age.secrets.tangledKnot.path;
-
hostname = "knot.gaze.systems";
-
};
-
};
-
-
services.nginx.virtualHosts.${knotCfg.server.hostname} = {
-
useACMEHost = "gaze.systems";
-
forceSSL = true;
-
quic = true;
-
kTLS = true;
-
locations."/" = {
-
proxyPass = "http://${knotCfg.server.listenAddr}";
-
proxyWebsockets = true;
-
};
-
};
-
-
services.tangled-spindle = {
-
enable = true;
-
package = terra.tangled-spindle;
-
server = {
-
listenAddr = "0.0.0.0:7391";
-
hostname = "spindle.gaze.systems";
-
owner = "did:plc:dfl62fgb7wtjj3fcbb72naae";
-
secrets = {
-
provider = "openbao";
-
openbao.proxyAddr = "http://spindle.bao.lan.gaze.systems";
-
};
-
};
-
};
-
users.users.spindle = {
-
group = "spindle";
-
isSystemUser = true;
-
};
-
users.groups.spindle = { };
-
users.groups.podman.members = [ "spindle" ];
-
systemd.services.spindle = {
-
after = lib.mkForce [ "network.target" "openbao-proxy-spindle.service" ];
-
serviceConfig = {
-
User = "spindle";
-
Group = "spindle";
-
};
-
};
-
-
services.nginx.virtualHosts.${spindleCfg.server.hostname} = {
-
useACMEHost = "gaze.systems";
-
forceSSL = true;
-
quic = true;
-
kTLS = true;
-
locations."/" = {
-
proxyPass = "http://${spindleCfg.server.listenAddr}";
-
proxyWebsockets = true;
-
};
-
};
-
-
virtualisation.docker.enable = lib.mkForce false;
-
virtualisation.podman = {
-
enable = true;
-
autoPrune.enable = true;
-
dockerCompat = true;
-
dockerSocket.enable = true;
-
};
}
···
{
+
imports = [./knot.nix ./spindle.nix];
}
+41
hosts/wolumonde/modules/tangled.nix/knot.nix
···
···
+
{
+
config,
+
inputs,
+
terra,
+
...
+
}:
+
let
+
knotCfg = config.services.tangled-knot;
+
in
+
{
+
imports = [
+
"${inputs.tangled}/nix/modules/knot.nix"
+
];
+
+
age.secrets.tangledKnot.file = ../../../../secrets/tangledKnot.age;
+
+
services.tangled-knot = {
+
enable = true;
+
package = terra.tangled-knot;
+
gitUser = "git";
+
motdFile = ./motd;
+
server = {
+
listenAddr = "0.0.0.0:7777";
+
secretFile = config.age.secrets.tangledKnot.path;
+
hostname = "knot.gaze.systems";
+
};
+
};
+
+
security.acme.certs."gaze.systems".extraDomainNames = [knotCfg.server.hostname];
+
+
services.nginx.virtualHosts.${knotCfg.server.hostname} = {
+
useACMEHost = "gaze.systems";
+
forceSSL = true;
+
quic = true;
+
kTLS = true;
+
locations."/" = {
+
proxyPass = "http://${knotCfg.server.listenAddr}";
+
proxyWebsockets = true;
+
};
+
};
+
}
+63
hosts/wolumonde/modules/tangled.nix/spindle.nix
···
···
+
{
+
lib,
+
config,
+
inputs,
+
terra,
+
...
+
}:
+
let
+
spindleCfg = config.services.tangled-spindle;
+
in
+
{
+
imports = [
+
"${inputs.tangled}/nix/modules/spindle.nix"
+
];
+
+
services.tangled-spindle = {
+
enable = true;
+
package = terra.tangled-spindle;
+
server = {
+
listenAddr = "0.0.0.0:7391";
+
hostname = "spindle.gaze.systems";
+
owner = "did:plc:dfl62fgb7wtjj3fcbb72naae";
+
secrets = {
+
provider = "openbao";
+
openbao.proxyAddr = "http://spindle.bao.lan.gaze.systems";
+
};
+
};
+
};
+
users.users.spindle = {
+
group = "spindle";
+
isSystemUser = true;
+
};
+
users.groups.spindle = { };
+
users.groups.podman.members = [ "spindle" ];
+
systemd.services.spindle = {
+
after = lib.mkForce [ "network.target" "openbao-proxy-spindle.service" ];
+
serviceConfig = {
+
User = "spindle";
+
Group = "spindle";
+
};
+
};
+
+
security.acme.certs."gaze.systems".extraDomainNames = [spindleCfg.server.hostname];
+
+
services.nginx.virtualHosts.${spindleCfg.server.hostname} = {
+
useACMEHost = "gaze.systems";
+
forceSSL = true;
+
quic = true;
+
kTLS = true;
+
locations."/" = {
+
proxyPass = "http://${spindleCfg.server.listenAddr}";
+
proxyWebsockets = true;
+
};
+
};
+
+
virtualisation.docker.enable = lib.mkForce false;
+
virtualisation.podman = {
+
enable = true;
+
autoPrune.enable = true;
+
dockerCompat = true;
+
dockerSocket.enable = true;
+
};
+
}