{ config, lib, pkgs, ... }:

let cfg = config.modules.desktop;
in {
  imports = [ ./polybar.nix ];

  config = lib.mkIf (cfg.name == "bspwm") {
    services = {
      xserver = {
        enable = true;
        layout = "de";

        displayManager = {
          defaultSession = "none+bspwm";

          autoLogin = {
            enable = true;
            user = "moritz";
          };
          lightdm.enable = true;
        };
        windowManager.bspwm.enable = true;
      };
    };

    console.keyMap = "de";

    home-manager.users.moritz = {
      xsession.windowManager.bspwm = {
        enable = true;
        rules = {
          "Zathura" = { state = "tiled"; };
          "Emacs" = { state = "tiled"; };
          "feh" = { state = "floating"; };
          "Vampire_Survivors" = { state = "fullscreen"; };
        };
        settings = {
          border_width = 2;
          window_gap = 5;
          borderless_monocle = true;
          gapless_monocle = true;
          focus_follows_pointer = true;

          # Dracula theme #
          focused_border_color = "#bd93f9";
          normal_border_color = "#44475a";
          active_border_color = "#6272a4";
        };
        startupPrograms = [
          "${pkgs.systemd}/bin/systemctl --user start polybar.service"
          "randomWallpaper"
          "synology-drive"
        ];
        extraConfig = ''
          # MONITORS #
          monitors=($(bspc query -M --names | sort -r))
          desktops=$(expr 10 / ''${#monitors[@]})
          start=1
          end=$desktops
          for monitor in ''${monitors[@]}; do
              bspc monitor $monitor -d $(seq -s ' ' $start $end)
              start=$(expr $start + $desktops)
              end=$(expr $end + $desktops)
          done
        '';

      };
      services.sxhkd = {
        enable = true;
        extraConfig = builtins.readFile ./sxhkdrc;
      };

      home.packages = with pkgs; [ feh playerctl pamixer brightnessctl ];
    };
  };
}