{ config, lib, pkgs, inputs, ... }: let nc = config.nathan.config; in with lib; { config = mkIf nc.hyprland.enable { # Turn on GDM for login services.xserver = { enable = true; autorun = false; # Enable plasma for the applications desktopManager.plasma5.enable = true; }; # Greetd for login programs.regreet = { enable = true; settings = { GTK = { font_name = "Roboto 16"; }; }; }; services.greetd = { enable = true; settings = { default_session.command = "cage -s -- regreet"; }; }; # Setup drivers hardware.opengl = { # Enable vulkan driSupport = true; # Same as above, but enable 32 bit legacy support (for games) driSupport32Bit = true; }; # Basic packages that are effectively required for a graphical system environment.systemPackages = with pkgs; [ # Greeter packages cage config.programs.regreet.package gnome.adwaita-icon-theme # GTK Theming gtk-engine-murrine gtk_engines gsettings-desktop-schemas lxappearance kde-gtk-config (stdenv.mkDerivation rec { pname = "sddm-sugar-dark-theme"; version = "1.2"; dontBuild = true; installPhase = '' mkdir -p $out/share/sddm/themes cp -aR $src $out/share/sddm/themes/sugar-dark ''; src = fetchFromGitHub { owner = "MarianArlt"; repo = "sddm-sugar-dark"; rev = "v${version}"; sha256 = "0gx0am7vq1ywaw2rm1p015x90b75ccqxnb1sz3wy8yjl27v82yhb"; }; }) ]; qt.platformTheme = "qt5ct"; # Enable and configure hyperland programs.hyprland = { enable = true; xwayland = { enable = true; hidpi = false; }; }; # Make swaylock work # https://github.com/NixOS/nixpkgs/issues/158025 security.pam.services.swaylock = { }; environment.sessionVariables = { MOZ_ENABLE_WAYLAND = "1"; }; }; }