{inputs, pkgs, ...}: 
{

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


  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"
        
        # Lock screen
        "$mod+Shift, l, exec, hyprlock"


        "$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"

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

        # 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"
      ];

      exec-once = [
        # "${pkgs.hyprpaper}/bin/hyprpaper"
        # hyprpaper is handled as its own service
        "${pkgs.waybar}/bin/waybar"
        # # 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";
        kb_options = "caps:escape";
        numlock_by_default = true;
        # mouse input should be unchanged
        natural_scroll = false;
        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, highres, 0x0, 1.5" # the internal laptop monitor
        ", preferred, auto, 1" # automatically add any newly detected monitor
      ];
    };

    plugins = [
      # Touch gestures: https://github.com/horriblename/hyprgrass
      # inputs.hyprgrass.packages.${pkgs.system}.default
      # Virtual desktops: https://github.com/levnikmyskin/hyprland-virtual-desktops
      # inputs.hyprland-virtual-desktops.packages.${pkgs.system}.virtual-desktops
    ];
  };


  programs.hyprlock = {
    enable = true;
    settings = {
      general = {
        grace = 5;
        no_fade_in = false;
        disable_loading_bar = false;
      };
    };
  # Style the lock screen
  };

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

  services.swaync.enable = true;
}