{ lib, config, pkgs, ... }:
let
  SCRIPTS = "$XDG_CONFIG_HOME/desktop-utils/scripts";
in
lib.mkIf config.desktop.enable {

  programs.niri.enable = true;

  home-manager.users.willifan = {

    home.packages = [
      pkgs.xwayland-satellite
    ];

    programs.niri.settings = {
      outputs."eDP-1".scale = 1.6;

      spawn-at-startup = [
        {
          command = [ "xwayland-satellite" ":0" ];
        }
      ];

      hotkey-overlay.skip-at-startup = true;
      prefer-no-csd = true;

      environment = {
        DISPLAY = ":0";
      };

      input = {
        keyboard.xkb = {
          layout = "us(euro)";
          options = "compose:menu";
        };
      };
      
      window-rules = [
        {
          geometry-corner-radius = {
            top-right = 12.0;
            top-left = 12.0;
            bottom-right = 12.0;
            bottom-left = 12.0;
          };
          clip-to-geometry = true;

          open-maximized = true;
        }
      ];

      binds = {

        "Mod+H".action.focus-column-or-monitor-left = { };
        "Mod+J".action.focus-window-or-monitor-down = { };
        "Mod+K".action.focus-window-or-monitor-up = { };
        "Mod+L".action.focus-column-or-monitor-right = { };

        "Mod+Q".action.spawn = [ "kitty" ];
        "Mod+C".action.close-window = { };
        "Mod+M".action.quit = { };
        "Mod+E".action.spawn = [ "thunar" ];
        "Mod+R".action.spawn = [ "fuzzel" ];
        "Mod+P".action.spawn = [ "Enpass" ];
        "Mod+F".action.fullscreen-window = { };

        "XF86AudioMute".action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" ];
        "XF86AudioLowerVolume".action.spawn = [ "sh" "-c" "${SCRIPTS}/volume.sh -5" ];
        "XF86AudioRaiseVolume".action.spawn = [ "sh" "-c" "${SCRIPTS}/volume.sh 5" ];
        "XF86AudioPrev".action.spawn = [ "playerctl" "previous" ];
        "XF86AudioPlay".action.spawn = [ "playerctl" "play-pause" ];
        "XF86AudioNext".action.spawn = [ "playerctl" "next" ];
        "XF86MonBrightnessDown".action.spawn = [ "sh" "-c" "${SCRIPTS}/brightness.sh -4800" ];
        "XF86MonBrightnessUp".action.spawn = [ "sh" "-c" "${SCRIPTS}/brightness.sh 4800" ];
        "Print".action.screenshot = { };
      };

    };
  };
}