diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index ccce388..d0a8b92 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -35,7 +35,6 @@ vaapiIntel libvdpau-va-gl vaapiVdpau - intel-ocl intel-media-driver ]; }; @@ -65,10 +64,9 @@ # Additional configuration for XDG Portal. xdg.portal.wlr.enable = true; xdg.portal.xdgOpenUsePortal = true; - xdg.portal.extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - xdg-desktop-portal-kde - ]; + + # Add bibata cursors everywhere because it looks cool. + environment.systemPackages = [pkgs.bibata-cursors]; # Set environment variables for the system. environment.variables = { diff --git a/modules/nixos/desktop/gnome/default.nix b/modules/nixos/desktop/gnome/default.nix new file mode 100644 index 0000000..fb88fd3 --- /dev/null +++ b/modules/nixos/desktop/gnome/default.nix @@ -0,0 +1,86 @@ +{ + config, + lib, + pkgs, + ... +}: { + options.snowflake.desktop.gnome = { + enable = lib.mkEnableOption "Enable the Gnome Desktop Environment"; + }; + + config = lib.mkIf config.snowflake.desktop.gnome.enable { + services.xserver = { + displayManager.gdm = { + enable = true; + wayland = true; + }; + desktopManager.gnome = { + enable = true; + extraGSettingsOverridePackages = [ + pkgs.nautilus-open-any-terminal + ]; + }; + }; + + services.udev.packages = [pkgs.gnome-settings-daemon]; + + # Remove bloatware that we do not require. + environment = { + gnome.excludePackages = with pkgs; [ + atomix # puzzle game + cheese # webcam tool + epiphany # web browser + evince # document viewer + geary # email reader + gedit + gnome-characters + gnome-connections + gnome-console + gnome-contacts + gnome-font-viewer + gnome-initial-setup + gnome-maps + gnome-music + gnome-photos + gnome-shell-extensions + gnome-text-editor + gnome-tour + hitori # sudoku game + iagno # go game + snapshot + tali # poker game + totem # video player + yelp # Help view + ]; + + systemPackages = with pkgs; [ + ffmpegthumbnailer + adwaita-icon-theme + bibata-cursors + dconf-editor + gnome-tweaks + nautilus-python + nautilus-open-any-terminal + wl-clipboard + ]; + }; + + programs.dconf.profiles = { + gdm.databases = [ + { + settings = { + "org/gnome/mutter".experimental-features = ["scale-monitor-framebuffer"]; + "org/gnome/desktop/peripherals/mouse".accel-profile = "flat"; + "org/gnome/desktop/peripherals/touchpad".tap-to-click = true; + }; + } + ]; + }; + + snowflake.user.extraGroups = [ + "audio" + "input" + "video" + ]; + }; +} diff --git a/modules/nixos/desktop/hyprland/default.nix b/modules/nixos/desktop/hyprland/default.nix new file mode 100644 index 0000000..e835571 --- /dev/null +++ b/modules/nixos/desktop/hyprland/default.nix @@ -0,0 +1,39 @@ +{ + config, + inputs, + lib, + pkgs, + ... +}: { + options.snowflake.desktop.hyprland = { + enable = lib.mkEnableOption "Enable the Hyprland Desktop Environment"; + }; + + config = lib.mkIf config.snowflake.desktop.hyprland.enable { + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + xwayland.enable = true; + }; + programs.hyprlock.enable = true; + + environment.sessionVariables.WLR_NO_HARDWARE_CURSORS = "1"; + environment.systemPackages = with pkgs; [ + bibata-cursors + mako + wofi + ]; + + security.polkit.enable = true; + security.pam.services.hyprlock = { + fprintAuth = false; + }; + + snowflake.user.extraGroups = [ + "audio" + "input" + "video" + ]; + }; +} diff --git a/modules/nixos/desktop/kde/default.nix b/modules/nixos/desktop/kde/default.nix index 19cf5f3..f6ffed9 100644 --- a/modules/nixos/desktop/kde/default.nix +++ b/modules/nixos/desktop/kde/default.nix @@ -32,6 +32,7 @@ xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-kde + xdg-desktop-portal-gtk ]; snowflake.user.extraGroups = [