nixos-config/modules/system/desktop-environments/hyprland.nix

113 lines
3.8 KiB
Nix

{ config, pkgs, lib, ...}:
{
options.speccon18.desktop.hyprland.enable = lib.mkEnableOption "enables specs custom hyprland setup";
config = lib.mkIf config.speccon18.desktop.hyprland.enable {
programs.hyprland = {
enable = true;
nvidiaPatches = true;
xwayland.enable = true;
};
environment = {
systemPackages = with pkgs; [
# libsForQt5.polkit-kde-agent
libsForQt5.qt5.qtwayland
qt6.full
qt6.qtwayland
waybar
swww
pw-volume
rofi-wayland
libnotify
mako
hyprland
font-awesome
brightnessctl
grim
slurp
wl-clipboard
];
sessionVariables = {
#Enable Wayland
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
SDL_VIDEODRIVER = "wayland";
# XDG_Config
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
#Default Applications
BROWSER = "firefox";
TERMINAL = "alacritty";
};
};
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
};
hardware = {
opengl.enable = true;
nvidia.modesetting.enable = true;
};
# wayland.windowManager.hyprland = {
# # systemdIntegration = true;
# enable = true;
# extraConfig = ''
# $mainMod = SUPER
# # Application Lauch Keybinds
# bind = $mainMod, Return, exec, alacritty
# bind = $mainMod, W, exec, firefox
# bind = $mainMod, R, exec, rofi -show drun
# # Switch workspaces with mainMod + [0-9]
# bind = $mainMod, 1, workspace, 1
# bind = $mainMod, 2, workspace, 2
# bind = $mainMod, 3, workspace, 3
# bind = $mainMod, 4, workspace, 4
# bind = $mainMod, 5, workspace, 5
# bind = $mainMod, 6, workspace, 6
# bind = $mainMod, 7, workspace, 7
# bind = $mainMod, 8, workspace, 8
# bind = $mainMod, 9, workspace, 9
# bind = $mainMod, 0, workspace, 10
# # Move active window to a workspace with mainMod + SHIFT + [0-9]
# bind = $mainMod SHIFT, 1, movetoworkspace, 1
# bind = $mainMod SHIFT, 2, movetoworkspace, 2
# bind = $mainMod SHIFT, 3, movetoworkspace, 3
# bind = $mainMod SHIFT, 4, movetoworkspace, 4
# bind = $mainMod SHIFT, 5, movetoworkspace, 5
# bind = $mainMod SHIFT, 6, movetoworkspace, 6
# bind = $mainMod SHIFT, 7, movetoworkspace, 7
# bind = $mainMod SHIFT, 8, movetoworkspace, 8
# bind = $mainMod SHIFT, 9, movetoworkspace, 9
# bind = $mainMod SHIFT, 0, movetoworkspace, 10
# bind = $mainMod, Print, exec, grim -o /home/speccon18/Pictures/$(date +'%s_grim.png') -g "$(slurp)" -t png
# # Startup Runners
# exec-once=systemctl --user start waybar.service
# exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
# exec-once=mako
# exec-once = swww init
# monitor=,highres,auto,1
# '';
# };
# options.speccon18.home_manager.rofi.enable = lib.mkEnableOption "enable specs custom rofi config for hyprland";
# config = lib.mkIf config.speccon18.home_manager.rofi.enable {
# programs.rofi = {
# enable = true;
# theme = "android_notification";
# location = "top-left";
# };
# };
};
}