mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
feat(exports): sshd service
This commit is contained in:
parent
1fed0eb15f
commit
45d41414e6
14 changed files with 78 additions and 0 deletions
41
modules/system/exports/sshd.nix
Normal file
41
modules/system/exports/sshd.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ _: {
|
||||||
];
|
];
|
||||||
exports = {
|
exports = {
|
||||||
services = {
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,9 @@ _: {
|
||||||
address6 = null;
|
address6 = null;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
exports = {
|
||||||
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,10 @@ _: {
|
||||||
};
|
};
|
||||||
exports = {
|
exports = {
|
||||||
services = {
|
services = {
|
||||||
|
sshd = {
|
||||||
|
enable = true;
|
||||||
|
ports.public.enable = false;
|
||||||
|
};
|
||||||
freepbx.enable = true;
|
freepbx.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,9 @@ _: {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
exports = {
|
||||||
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ _: {
|
||||||
];
|
];
|
||||||
exports = {
|
exports = {
|
||||||
services = {
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ _: {
|
||||||
];
|
];
|
||||||
exports = {
|
exports = {
|
||||||
services = {
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
plex.enable = true;
|
plex.enable = true;
|
||||||
invidious.enable = true;
|
invidious.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ _: {
|
||||||
];
|
];
|
||||||
exports = {
|
exports = {
|
||||||
services = {
|
services = {
|
||||||
|
sshd.enable = true;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
nfs.enable = true;
|
nfs.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue