{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";

      # Global bindings
      bind = [
        "$mod, return, exec, walker"
        "$mod+Shift, return, exec, kitty"
        "$mod, F, exec, firefox"
        "$mod, s, exec, code"
        "$mod, e, exec, nautilus"
        "$mod+Shift, Q, killactive," # Close window
        "$mod+Shift, T, 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"
      ];

      general = {
        resize_on_border = true;
        gaps_in = 5;
        gaps_out = 5;
        border_size = 1;
        layout = "master";
      };

      misc = {
        disable_hyprland_logo = true;
      };

      input = {
        kb_layout = "de";
        kb_options = "caps:control";
        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 = {
          enabled = true;
          size = 4;
          passes = 2;
          new_optimizations = on;
          ignore_opacity = true;
        };
      };

      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
    ];
  };

  imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
  # the overlay makes this available as a home manager module
  programs.hyprpanel = {
    enable = true;
    # autostart after hyprland
    hyprland.enable = true;
    overwrite.enable = true;
    overlay.enable = true;
    
    theme = "monochrome";

    settings = {
      bar = {
        clock.format = "%H:%M";
        clock.showIcon = false;
        launcher.icon = "🚀";
        launcher.autoDetectIcon = true;
        workspaces.show_icons = true;
      };
    };

    layout = {
      "bar.layouts" = {
        "*" = {
          left = ["workspaces"];
          middle = ["clock"];
          right = ["volume" "systray" "nm-applet" "notifications" ];
        };
      };
    };
  };


  programs.walker = {
    enable = true;
    runAsService = true;

    # All options from the config.json can be used here.
    config = {
      search.placeholder = "Search";
      ui.fullscreen = true;
      list = {
        height = 200;
      };
      websearch.prefix = "?";
      switcher.prefix = "/";
    };
  };


  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;
  };

}