{ config, pkgs, lib, ... }: let nomarchyLib = import ../../../lib { inherit lib; }; assetsPath = ../../../themes/palettes; # Use shared wallpaper resolver activeWallpaper = nomarchyLib.resolveWallpaper { wallpaperPath = config.nomarchy.wallpaper; themeName = config.nomarchy.theme; inherit assetsPath; }; hyprlandState = config.nomarchy.hyprland; in { home.sessionVariables = lib.mkDefault { WLR_NO_HARDWARE_CURSORS = "1"; HYPRLAND_LOG_WLR = "1"; }; wayland.windowManager.hyprland = { enable = lib.mkDefault true; systemd.enable = lib.mkDefault false; settings = lib.mkDefault { "debug" = { "disable_logs" = false; "enable_stdout_logs" = true; }; "cursor" = { "no_hardware_cursors" = true; }; "general" = { "gaps_in" = hyprlandState.gaps_in; "gaps_out" = hyprlandState.gaps_out; "border_size" = hyprlandState.border_size; "col.active_border" = "rgb(${config.colorScheme.palette.base0E})"; "col.inactive_border" = "rgb(${config.colorScheme.palette.base03})"; }; }; extraConfig = lib.mkDefault '' source = ~/.config/hypr/nomarchy.conf ''; }; # Deploy Hyprland configuration files xdg.configFile."hypr/nomarchy.conf".source = ./config/nomarchy.conf; xdg.configFile."hypr/monitors.conf".source = lib.mkDefault ./config/monitors.conf; xdg.configFile."hypr/input.conf".source = lib.mkDefault ./config/input.conf; xdg.configFile."hypr/bindings.conf".source = lib.mkDefault ./config/bindings.conf; xdg.configFile."hypr/looknfeel.conf".source = lib.mkDefault ./config/looknfeel.conf; xdg.configFile."hypr/autostart.conf".source = lib.mkDefault ./config/autostart.conf; # Run swaybg as a proper systemd user service rather than a Hyprland exec-once. # exec-once fails silently (black screen with no visible error) when timing # against uwsm's graphical-session target is off; a service surfaces failures # via `systemctl --user status nomarchy-wallpaper` and auto-restarts. systemd.user.services.nomarchy-wallpaper = { Unit = { Description = "Nomarchy desktop wallpaper (swaybg)"; PartOf = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; }; Service = { ExecStart = "${pkgs.swaybg}/bin/swaybg -i %h/.config/nomarchy/current/background -m fill"; Restart = "on-failure"; RestartSec = "2"; }; Install = { WantedBy = [ "graphical-session.target" ]; }; }; }