{ pkgs, lib, config, ... }: let inherit (lib.strings) concatStringsSep; inherit (lib.lists) forEach; inherit (builtins) attrNames; inherit (pkgs) writeShellScriptBin; containerNames = attrNames config.containers; vaccumSize = "50M"; in { environment.systemPackages = [ (writeShellScriptBin "journalctl-vaccum-all" '' journalctl --vacuum-size=${vaccumSize} ${concatStringsSep "\n" (forEach containerNames (name: '' journalctl --vacuum-size=${vaccumSize} --root /var/lib/nixos-containers/${name} ''))} '') (writeShellScriptBin "systemctl-list-failed-all" '' echo "Host: " systemctl --failed ${concatStringsSep "\n" (forEach containerNames (name: '' echo "Container: ${name}" systemctl -M ${name} --failed ''))} '') ] ++ forEach containerNames (name: (writeShellScriptBin "journalctl-vaccum-${name}" '' journalctl --vacuum-size=${vaccumSize} --root /var/lib/nixos-containers/${name} '')) ++ forEach containerNames (name: (writeShellScriptBin "systemctl-container-${name}" '' systemctl -M ${name} "$@" '')) ++ forEach containerNames (name: (writeShellScriptBin "journalctl-container-${name}" '' journalctl -M ${name} "$@" '')) ++ forEach containerNames (name: (writeShellScriptBin "shell-enter-${name}" '' machinectl shell ${name} '')); }