From 9bc753e0921a4c723f3e3f995446a92fe7a0d9aa Mon Sep 17 00:00:00 2001 From: nevaforget Date: Sat, 11 Apr 2026 21:03:42 +0200 Subject: [PATCH] fix: use niri include instead of copying system config to user dir transform.sh was hard-copying /etc/xdg/niri/config.kdl to ~/.config/niri/, causing the user config to go stale after system updates. Now seeds a minimal user config with `include "/etc/xdg/niri/config.kdl"` so system defaults always stay current and users can add overrides below the include. --- README.md | 2 +- scripts/transform.sh | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 37369e8..fa604f2 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ All system configs live in `/etc/xdg/` and can be overridden per-user in `~/.con | Component | System Default | User Override | |-----------|---------------|---------------| -| Niri | `/etc/xdg/niri/config.kdl` | `~/.config/niri/config.kdl` | +| Niri | `/etc/xdg/niri/config.kdl` | `~/.config/niri/config.kdl` (includes system config) | | Waybar | `/etc/xdg/waybar/` | `~/.config/waybar/` | | Walker | `/etc/xdg/walker/` | `~/.config/walker/` | | Foot | `/etc/xdg/foot/foot.ini` | `~/.config/foot/foot.ini` | diff --git a/scripts/transform.sh b/scripts/transform.sh index f5493e0..bc06636 100755 --- a/scripts/transform.sh +++ b/scripts/transform.sh @@ -303,12 +303,29 @@ for src_dir in /etc/xdg/*/; do [[ "$app_name" == "gtk-4.0" ]] && continue # kanshi profiles are user-specific (display setup) — only seed, never overwrite [[ "$app_name" == "kanshi" ]] && [[ -d "$HOME/.config/kanshi" ]] && continue + # niri user config includes system config — never overwrite (handled below) + [[ "$app_name" == "niri" ]] && continue dest_dir="$HOME/.config/$app_name" rm -rf "$dest_dir" 2>/dev/null || sudo rm -rf "$dest_dir" cp -r --no-preserve=ownership "$src_dir" "$dest_dir" log " + $app_name/" done +# Niri: seed user config with include of system config (preserves user overrides) +niri_user_config="$HOME/.config/niri/config.kdl" +if [[ ! -f "$niri_user_config" ]]; then + mkdir -p "$HOME/.config/niri" + cat > "$niri_user_config" << 'NIRI_EOF' +// ABOUTME: Moonarch user niri config — includes system defaults. +// ABOUTME: Add personal overrides below the include statement. + +include "/etc/xdg/niri/config.kdl" +NIRI_EOF + log " + niri/ (seeded with include)" +else + log " ~ niri/ (user config exists, skipped)" +fi + # Overwrite configs owned by other packages with moonarch versions log "Deploying moonarch config overrides..." cp /usr/share/moonarch/walker-config.toml "$HOME/.config/walker/config.toml"