Commit 317aa20e8958

Vincent Demeester <vincent@sbr.pm>
2026-06-10 14:00:07
fix: use system niri on non-NixOS for swayidle scripts
Check /etc/NIXOS to decide whether to use nix-built niri or the system-installed one. Avoids compiling niri from source on Fedora CSB where it's already installed via dnf.
1 parent e985988
Changed files (1)
home
common
desktop
home/common/desktop/sway/swayidle.nix
@@ -16,17 +16,19 @@ let
   # The lock screen wallpaper effectively blanks external monitors instead.
   # Dynamically detect the eDP output name (eDP-1, eDP-2, etc.) since it
   # varies across laptops.
+  # On NixOS, use the nix-built niri; on non-NixOS (Fedora CSB), use system niri
+  niriCmd = if builtins.pathExists "/etc/NIXOS" then "${pkgs.niri}/bin/niri" else "niri";
   niriPowerOffScript = pkgs.writeShellScript "niri-power-off-monitors" ''
-    edp=$(${pkgs.niri}/bin/niri msg outputs | ${pkgs.gnugrep}/bin/grep -oP 'eDP-\d+')
+    edp=$(${niriCmd} msg outputs | ${pkgs.gnugrep}/bin/grep -oP 'eDP-\d+')
     if [ -n "$edp" ]; then
-      ${pkgs.niri}/bin/niri msg output "$edp" off
+      ${niriCmd} msg output "$edp" off
     fi
   '';
   niriPowerOnScript = pkgs.writeShellScript "niri-power-on-monitors" ''
     # Re-enable all outputs first, then let kanshi apply the correct profile
     # (e.g. disabling eDP when docked)
-    for output in $(${pkgs.niri}/bin/niri msg outputs | ${pkgs.gnugrep}/bin/grep '^Output' | ${pkgs.gnugrep}/bin/grep -oP '\(\K[^)]+(?=\))'); do
-      ${pkgs.niri}/bin/niri msg output "$output" on
+    for output in $(${niriCmd} msg outputs | ${pkgs.gnugrep}/bin/grep '^Output' | ${pkgs.gnugrep}/bin/grep -oP '\(\K[^)]+(?=\))'); do
+      ${niriCmd} msg output "$output" on
     done
     ${pkgs.systemd}/bin/systemctl --user restart kanshi
   '';