nix: move the remaining service containers onto the swarm-container module
hive-ci, hive-forge, hive-matrix, swarm-authelia, swarm-bao, swarm-grafana, swarm-nats, swarm-otel and swarm-victorialogs now import ./swarm-container.nix and drop their own copies of the stateVersion, firewall and resolvconf lines. Each binds privateNetwork once in its top-level let and passes it to both the host attr and the in-container option, as swarm-victoriametrics already does. hive-forge (25.11) and swarm-otel (the host's value) keep their own stateVersion over the module's mkDefault. hive-ci sets privateNetwork = true and writesOwnResolvConf = false, which leaves its firewall and resolvconf on, as before. hive-matrix keeps its useHostResolvConf override and static resolv.conf; its resolvconf mkForce now comes from the module default. Every container's system.build.toplevel drvPath and host-side attrs evaluate identical to the parent commit. module-eval-swarm-services-switch gains a fixture with all ten service containers and checks that each one's in-container privateNetwork equals its host-side value, that the nine on the host netns run no firewall or resolvconf, that hive-ci keeps both, and that hive-forge keeps its pinned stateVersion. Refs #3773
This commit is contained in:
parent
53d9ebdede
commit
10d579ecaf
10 changed files with 133 additions and 135 deletions
|
|
@ -378,6 +378,9 @@ let
|
|||
install -m 644 ${fluffychat-web-imaging}/Imaging.wasm $out/Imaging.wasm
|
||||
'';
|
||||
});
|
||||
|
||||
# Shared host netns — agents reach tuwunel at localhost:<port>.
|
||||
privateNetwork = false;
|
||||
in
|
||||
{
|
||||
# Private matrix-tuwunel homeserver wrapped in a nixos-container,
|
||||
|
|
@ -1196,8 +1199,7 @@ in
|
|||
# Journal files on the host, not inside the container: nixpkgs hardcodes
|
||||
# --link-journal=try-guest, and EXTRA_NSPAWN_FLAGS expands after it.
|
||||
extraFlags = [ "--link-journal=host" ];
|
||||
# Shared host netns — agents reach tuwunel at localhost:<port>.
|
||||
privateNetwork = false;
|
||||
inherit privateNetwork;
|
||||
# Read-only bind of the host-managed appservice registration; tuwunel
|
||||
# reads it via systemd LoadCredential below (not directly).
|
||||
#
|
||||
|
|
@ -1219,6 +1221,7 @@ in
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
../container-modules/swarm-container.nix
|
||||
# tuwunel's rustls verifier resolves through `rustls-native-certs`
|
||||
# → `openssl-probe`, which reads `SSL_CERT_FILE` — so the
|
||||
# openssl-shaped variable is the lever despite tuwunel linking no
|
||||
|
|
@ -1239,14 +1242,7 @@ in
|
|||
})
|
||||
];
|
||||
|
||||
system.stateVersion = "26.05";
|
||||
|
||||
# Shared host netns: this container's own firewall.service
|
||||
# would rewrite the HOST ruleset (flush nixos-fw, drop the
|
||||
# host's nixos-nat-* chains) at every boot — killing the
|
||||
# bridge DHCP/DNS holes and agent NAT. The host firewall owns
|
||||
# all filtering; never run one in here.
|
||||
networking.firewall.enable = false;
|
||||
services.hyperhive.swarmContainer = { inherit privateNetwork; };
|
||||
|
||||
# Swarm-internal trust reaches tuwunel at RUNTIME, not via
|
||||
# `security.pki.certificateFiles`. That option is read when the
|
||||
|
|
@ -1275,13 +1271,11 @@ in
|
|||
# This container always shares the host netns
|
||||
# (`privateNetwork = false`), so it reaches `bridgeIp` regardless
|
||||
# of agent-container isolation. See `docs/networking/network.md`.
|
||||
networking = {
|
||||
# resolvconf is taken out of the loop entirely; the static
|
||||
# `environment.etc."resolv.conf"` below is the sole source of
|
||||
# the resolver file (no `nameservers` — nothing would read it).
|
||||
useHostResolvConf = lib.mkForce false;
|
||||
resolvconf.enable = lib.mkForce false;
|
||||
};
|
||||
# resolvconf is off through `writesOwnResolvConf` (its default);
|
||||
# the static `environment.etc."resolv.conf"` below is the sole
|
||||
# source of the resolver file (no `nameservers` — nothing would
|
||||
# read it).
|
||||
networking.useHostResolvConf = lib.mkForce false;
|
||||
|
||||
# resolvconf is disabled above, so write the static resolver file
|
||||
# explicitly — NixOS won't synthesise one from `nameservers` once
|
||||
|
|
|
|||
Loading…
Reference in a new issue