Files
TheaninovOS/modules/nixos/desktops/hyprland.nix
2025-08-11 17:15:37 +02:00

112 lines
2.8 KiB
Nix

{
config,
lib,
pkgs,
username,
...
}:
let
cfg = config.desktops.hyprland;
in
{
options.desktops.hyprland = {
enable = lib.mkEnableOption "Enable a DE based on Hyprland";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [ glib ];
programs.hyprland = {
enable = true;
withUWSM = true;
};
home-manager.users.${username} = {
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = false;
package = null;
portalPackage = null;
settings.ecosystem = {
no_update_news = true;
no_donation_nag = true;
};
};
home = {
packages = with pkgs; [ grim ];
sessionVariables = {
NIXOS_OZONE_WL = "1";
GDK_BACKEND = "wayland,x11,*";
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
SDL_VIDEODRIVER = "wayland";
CLUTTER_BACKEND = "wayland";
# https://github.com/swaywm/sway/issues/6272
_JAVA_AWT_WM_NONREPARENTING = "1";
};
};
xdg.configFile."uwsm/env".source = pkgs.writeText "env" (
lib.strings.concatLines (
lib.attrsets.mapAttrsToList (
k: v: "export ${builtins.toString k}=${builtins.toString v}"
) config.home-manager.users.${username}.home.sessionVariables
)
);
systemd.user.services = {
"flatpak-managed-install".Unit = {
After = [ "network-online.target" ];
Wants = [ "network-online.target" ];
};
};
services.polkit-gnome.enable = true;
};
systemd.services = {
"flatpak-managed-install" = {
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
};
};
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config.common = {
default = [
"hyprland"
"gtk"
];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
};
services = {
kmscon = {
enable = true;
hwRender = true;
};
greetd = {
enable = true;
greeterManagesPlymouth = false;
settings = {
initial_session = {
command = "uwsm start ${pkgs.hyprland}/share/wayland-sessions/hyprland.desktop";
user = username;
};
default_session = {
command = "${lib.getExe pkgs.greetd.tuigreet} --asterisks --remember --user-menu --cmd 'uwsm start hyprland-uwsm.desktop'";
user = username;
};
};
};
dbus = {
enable = true;
implementation = "broker";
};
pcscd.enable = true;
gvfs.enable = true;
};
programs.dconf.enable = true;
};
}