feat(exports): sshd service

This commit is contained in:
arcnmx 2024-04-16 03:05:36 -07:00
parent 1fed0eb15f
commit 45d41414e6
14 changed files with 78 additions and 0 deletions

View file

@ -0,0 +1,41 @@
{lib, gensokyo-zone, ...}: let
inherit (gensokyo-zone.lib) mapAlmostOptionDefaults mkAlmostOptionDefault;
inherit (lib.modules) mkIf;
inherit (lib.attrsets) mapAttrs filterAttrs mapAttrsToList;
inherit (lib.lists) sort;
in {
config.exports.services.sshd = { config, ... }: let
mkAssertion = f: nixosConfig: let
cfg = nixosConfig.services.openssh;
in f nixosConfig cfg;
sorted = sort (a: b: a > b);
assertPorts = nixosConfig: cfg: let
nixosPorts = cfg.ports;
enabledPorts = filterAttrs (_: port: port.enable) config.ports;
servicePorts = mapAttrsToList (_: port: port.port) enabledPorts;
in {
assertion = sorted nixosPorts == sorted servicePorts;
message = "port mismatch: ${toString nixosPorts} != ${toString servicePorts}";
};
in {
id = mkAlmostOptionDefault "ssh";
nixos = {
serviceAttr = "openssh";
assertions = mkIf config.enable [
(mkAssertion assertPorts)
];
};
defaults.port.listen = mkAlmostOptionDefault "wan";
ports = mapAttrs (_: mapAlmostOptionDefaults) {
public = {
port = 62954;
transport = "tcp";
};
standard = {
port = 22;
transport = "tcp";
listen = "lan";
};
};
};
}

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
}; };
}; };

View file

@ -11,4 +11,9 @@ _: {
address6 = null; address6 = null;
}; };
}; };
exports = {
services = {
sshd.enable = true;
};
};
} }

View file

@ -32,6 +32,10 @@ _: {
}; };
exports = { exports = {
services = { services = {
sshd = {
enable = true;
ports.public.enable = false;
};
freeipa.enable = true; freeipa.enable = true;
ldap.enable = true; ldap.enable = true;
kerberos.enable = true; kerberos.enable = true;

View file

@ -16,6 +16,10 @@ _: {
}; };
exports = { exports = {
services = { services = {
sshd = {
enable = true;
ports.public.enable = false;
};
freepbx.enable = true; freepbx.enable = true;
}; };
}; };

View file

@ -24,6 +24,14 @@ _: {
enable = true; enable = true;
id = "login.local"; id = "login.local";
}; };
sshd = {
enable = true;
ports.global = {
port = 41022;
transport = "tcp";
listen = "wan";
};
};
}; };
exports = { exports = {
plex.enable = true; plex.enable = true;

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
keycloak.enable = true; keycloak.enable = true;
vouch-proxy.enable = true; vouch-proxy.enable = true;
}; };

View file

@ -17,6 +17,10 @@ _: {
}; };
exports = { exports = {
services = { services = {
sshd = {
enable = true;
ports.public.enable = false;
};
motion = { motion = {
id = "kitchen"; id = "kitchen";
enable = true; enable = true;

View file

@ -19,4 +19,9 @@ _: {
}; };
}; };
}; };
exports = {
services = {
sshd.enable = true;
};
};
} }

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
}; };
}; };

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
plex.enable = true; plex.enable = true;
invidious.enable = true; invidious.enable = true;
}; };

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
nfs.enable = true; nfs.enable = true;
}; };

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
home-assistant.enable = true; home-assistant.enable = true;
zigbee2mqtt.enable = true; zigbee2mqtt.enable = true;

View file

@ -9,6 +9,7 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
unifi.enable = true; unifi.enable = true;
mosquitto.enable = true; mosquitto.enable = true;
dnsmasq.enable = true; dnsmasq.enable = true;