Files
Nomarchy/AGENT.md

2.9 KiB

🤖 Prompt for the AI Agent: Final Systemic Refactor System Context: We are finalizing the architectural migration of "Nomarchy" to NixOS 25.11. We need to address systemic issues regarding non-FHS pathing, orphaned Systemd services, script interpreter paths, and UWSM integration.

Please implement the following fixes across the system and home manager modules.

Task 1: Fix the FHS Trap (Polkit Agent) The Hyprland autostart config relies on a hardcoded /usr/lib/ path, which breaks GUI authentication in NixOS.

Action 1: Instead of relying on autostart.conf to launch Polkit, create a native Home Manager systemd user service in a relevant module (e.g., modules/home/hyprland.nix or a new modules/home/security.nix).

Action 2: Define the service to execute ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1. Ensure it belongs to the graphical-session.target.

Action 3: Remove the broken /usr/lib/... line from the legacy config/nomarchy/default/hypr/autostart.conf.

Task 2: Native Systemd Migration (Battery Monitor) The battery monitor relies on static .service and .timer files that Home Manager does not automatically enable.

Action 1: Create a new module modules/home/battery-monitor.nix.

Action 2: Translate the logic from config/systemd/user/nomarchy-battery-monitor.service into systemd.user.services.nomarchy-battery-monitor = { ... };. Ensure the ExecStart path points correctly to the packaged nomarchy-battery-monitor script.

Action 3: Translate the timer into systemd.user.timers.nomarchy-battery-monitor = { ... }; and set WantedBy = [ "timers.target" ];.

Action 4: Delete the legacy config/systemd/user/ folder to prevent confusion. Ensure battery-monitor.nix is imported into modules/home/default.nix.

Task 3: Harden Custom Scripts (modules/home/scripts.nix) The custom scripts in the bin/ directory will fail due to invalid #!/bin/bash shebangs and missing PATH dependencies.

Action 1: Audit modules/home/scripts.nix. If it currently uses a standard copy or symlink approach, rewrite the packaging logic.

Action 2: Use pkgs.stdenv.mkDerivation. In the installPhase, copy the bin/ folder, and crucially, run patchShebangs $out/bin to fix all interpreters natively.

Action 3: (Optional but recommended) If specific scripts heavily rely on external tools (like jq), consider using wrapProgram in a postFixup phase to prepend the required package binaries to the script's PATH.

Task 4: Enable Native UWSM (modules/system/sddm.nix or Hyprland config) UWSM must be deeply integrated into the NixOS system layer to function correctly, not just mapped via dotfiles.

Action 1: In the system-level configuration where Hyprland is enabled (likely modules/system/default.nix or similar), ensure programs.hyprland.withUWSM = true; is set.

Action 2: Ensure any SDDM configurations are compatible with launching the UWSM wrapped session rather than standard Hyprland.

Please provide the updated code blocks for the affected Nix modules.