diff --git a/modules/k3s/default.nix b/modules/k3s/default.nix index b5d62d9..dd8a7b9 100644 --- a/modules/k3s/default.nix +++ b/modules/k3s/default.nix @@ -40,5 +40,27 @@ in "ubuntu" ]; }; + + system.activationScripts.cleanK3sManifests = { + text = '' + MANIFESTS_DIR="/var/lib/rancher/k3s/server/manifests" + NIX_MANIFESTS="${builtins.concatStringsSep " " (builtins.attrNames config.services.k3s.manifests)}" + DEFAULT_MANIFESTS="ccm coredns local-storage rolebindings runtimes traefik" + + echo "Cleaning up K3s manifests" + + for file in $MANIFESTS_DIR/*.yaml; do + [ -f "$file" ] || echo "not a file"; continue + name=$(basename "$file" .yaml) + if ! (echo "$NIX_MANIFESTS $DEFAULT_MANIFESTS" | grep -qw $name); then + echo "Stale manifest found, deleting $name.yaml" + k3s kubectl delete -f "$file" --ignore-not-found=true 2>/dev/null || true + rm -f "$file" + fi + done + + echo "Done" + ''; + }; }; } \ No newline at end of file