{inputs, pkgs, ...}: 
{

  home.packages = [
    pkgs.hyprshot
    pkgs.nautilus
    pkgs.gnome-control-center
    pkgs.brightnessctl
    pkgs.cliphist
  ];


  wayland.windowManager.hyprland = {
    enable = true;
    systemd.enable = true;
    settings = {
      "$mod" = "SUPER";
      "$browser" = "firefox";
      "$launcher-cmd" = "wofi --show drun -n";
      "$ide" = "code";

      # Global bindings
      bind = [
        # Launch applications
        "$mod, space, exec, $launcher-cmd"
        "$mod, return, exec, kitty"
        "$mod, b, exec, $browser"
        "$mod, s, exec, $ide"
        "$mod, e, exec, nautilus"
        # Overview
        # "$mod, , overview:toggle"
        
        # Lock screen
        "$mod+Shift, l, exec, hyprlock"

        # Clipboard management
        "$mod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"

        "$mod+Shift, Q, killactive," # Close window
        "$mod, f, togglefloating," # Toggle Floating

        # Move the focus
        "$mod, left, movefocus, l"
        "$mod, right, movefocus, r"
        "$mod, up, movefocus, u"
        "$mod, down, movefocus, d"
        # Alt-tab alternative
        "$mod, Tab, cyclenext,"
        "$mod, Tab, bringactivetotop,"

        # Move the window
        "$mod+Shift, left, movewindow, l"
        "$mod+Shift, right, movewindow, r"
        "$mod+Shift, up, movewindow, u"
        "$mod+Shift, down, movewindow, d"

        "$mod+Ctrl, left, movetoworkspace, -1"
        "$mod+Ctrl, right, movetoworkspace, +1"

        # # Switch workspace
        # "$mod+Ctrl, left, workspace, -1"
        # "$mod+Ctrl, right, workspace, +1"

        # Screenshot
        "$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
        "$mod+Shift, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots"

      ];

      binde = [
        # Fn keys
        ", code:232, exec, brightnessctl set +5%"
        ", code:233, exec, brightnessctl set -5%"
        ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
        ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%-"
        ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
      ];
      # bindl = [
      #   ", switch:on:Lid Switch, exec, hyprctl dispatch dpms off"
      #   ", switch:off:Lid Switch, exec, hyprctl dispatch dpms on"
      # ];

      exec-once = [
        # "${pkgs.hyprpaper}/bin/hyprpaper"
        # hyprpaper is handled as its own service
        "${pkgs.waybar}/bin/waybar"
        # listen to clipboard events and send them to cliphist
        "wl-paste --watch cliphist stores"
        "${pkgs.waybar}/bin/hypridle"
        # # Fixes cursor themes in gnome apps under hyprland
        # "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
        # "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
      ];

      general = {
        resize_on_border = true;
        gaps_in = 5;
        gaps_out = 5;
        border_size = 1;
        "col.active_border" = "rgb(98971A) rgb(CC241D) 45deg";
        layout = "master";
      };

      misc = {
        disable_hyprland_logo = true;
      };

      input = {
        kb_layout = "de";
        # remap caps lock to ctrl
        kb_options = "ctrl:nocaps";
        numlock_by_default = true;
        # mouse input should be unchanged
        natural_scroll = false;
        sensitivity = 0.3;
        touchpad = {
          disable_while_typing = false;
          natural_scroll = true;
        };
      };

      gestures = {
        workspace_swipe = true;
        workspace_swipe_fingers = 4;
        workspace_swipe_touch = true;
      };

      decoration = {
        rounding = 5;
        # active_opacity = 0.95;
        inactive_opacity = 0.9;

        shadow = {
          enabled = true;
          range = 6;
          render_power = 6;
          # color = "#000000";
        };

        # blur is set on a per-program basis
        layerrule = [
          "blur, wofi"
          "ignorezero, wofi"
          "ignorealpha 0.5, wofi"
          "blur, kitty"
          "ignorezero, kitty"
          "ignorealpha 0.5, kitty"
        ];
      };

      monitor = [
        "eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor
        "DP-2, 3840x2160, 0x-1440, 1.5"
        ", preferred, auto, 1" # automatically add any newly detected monitor
      ];

      xwayland = {
        enabled = false;
      };

      env = [
        # force apps to use wayland
        "NIXOS_OZONE_WL,1"
        "ELECTRON_OZONE_PLATFORM_HINT,wayland"
        # set the scale factor for GDK apps
        "GDK_SCALE,1.5"
        "XCURSOR_SIZE,32"
        # set the scale factor for QT apps
        "QT_SCALE_FACTOR,1.5"
        # set the scale factor for GTK apps
      ];
    };

    # TODO - plugins are broken for now
    # plugins = [
    #   # Global overview
    #   inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
    #   # Touch gestures: https://github.com/horriblename/hyprgrass
    #   inputs.hyprgrass.packages.${pkgs.system}.default
    # ];

    # plugin = {
    #   touch_gestures = {
    #     sensitivity = 4.0;
    #     # must be >= 3
    #     workspace_swipe_fingers = 3;
    #   };
    # };
  };



  # services.network-manager-applet = {
  #   enable = true;
  # };

  services.swaync.enable = true;
}