{ flake.nixosModules.hyprland = { config, lib, pkgs, ... }: let cfg = config.hive.displayManager; in { options.hive.displayManager = with lib; { autologin = mkOption { type = types.nullOr types.str; default = null; description = "The autologin username or null for no autologin."; }; }; config = { services.xserver.enable = true; services.xserver = { xkb.layout = "de"; xkb.variant = ""; xkb.options = "caps:ctrl_modifier"; }; services.displayManager.autoLogin.enable = cfg.autologin != null; services.displayManager.autoLogin.user = cfg.autologin; services.libinput.enable = true; services.dbus.enable = true; services.displayManager.sddm = { enable = true; wayland.enable = true; }; xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-wlr xdg-desktop-portal-hyprland kdePackages.xdg-desktop-portal-kde ]; }; environment.systemPackages = with pkgs; [spaceFM]; services.udisks2.enable = true; programs.hyprland = { enable = true; withUWSM = true; xwayland.enable = true; }; programs.hyprlock.enable = true; security.pam.services.hyprlock = {}; }; }; }