aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/x11/desktop-managers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/x11/desktop-managers')
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix35
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix16
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix111
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix152
5 files changed, 115 insertions, 201 deletions
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
index dfb84113e13..671a959cdde 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
@@ -18,7 +18,7 @@ in
# determines the default: later modules (if enabled) are preferred.
# E.g., if Plasma 5 is enabled, it supersedes xterm.
imports = [
- ./none.nix ./xterm.nix ./xfce.nix ./xfce4-14.nix ./plasma5.nix ./lumina.nix
+ ./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix ./maxx.nix
./mate.nix ./pantheon.nix ./surf-display.nix
];
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 5ad31e5b9d0..6725595e1cf 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -184,6 +184,13 @@ in
enableGnomeKeyring = true;
};
+ systemd.packages = with pkgs.gnome3; [
+ gnome-flashback
+ ] ++ (map
+ (wm: gnome-flashback.mkSystemdTargetForWm {
+ inherit (wm) wmName;
+ }) cfg.flashback.customSessions);
+
services.dbus.packages = [
pkgs.gnome3.gnome-screensaver
];
@@ -217,6 +224,12 @@ in
services.xserver.updateDbusEnvironment = true;
+ # gnome has a custom alert theme but it still
+ # inherits from the freedesktop theme.
+ environment.systemPackages = with pkgs; [
+ sound-theme-freedesktop
+ ];
+
# Needed for themes and backgrounds
environment.pathsToLink = [
"/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
@@ -265,6 +278,26 @@ in
source-sans-pro
];
+ ## Enable soft realtime scheduling, only supported on wayland ##
+
+ security.wrappers.".gnome-shell-wrapped" = {
+ source = "${pkgs.gnome3.gnome-shell}/bin/.gnome-shell-wrapped";
+ capabilities = "cap_sys_nice=ep";
+ };
+
+ systemd.user.services.gnome-shell-wayland = let
+ gnomeShellRT = with pkgs.gnome3; pkgs.runCommand "gnome-shell-rt" {} ''
+ mkdir -p $out/bin/
+ cp ${gnome-shell}/bin/gnome-shell $out/bin
+ sed -i "s@${gnome-shell}/bin/@${config.security.wrapperDir}/@" $out/bin/gnome-shell
+ '';
+ in {
+ # Note we need to clear ExecStart before overriding it
+ serviceConfig.ExecStart = ["" "${gnomeShellRT}/bin/gnome-shell"];
+ # Do not use the default environment, it provides a broken PATH
+ environment = mkForce {};
+ };
+
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-32/elements/core/meta-gnome-core-shell.bst
environment.systemPackages = with pkgs.gnome3; [
adwaita-icon-theme
@@ -276,7 +309,7 @@ in
gnome-shell
gnome-shell-extensions
gnome-themes-extra
- gnome-user-docs
+ pkgs.gnome-user-docs
pkgs.orca
pkgs.glib # for gsettings
pkgs.gnome-menus
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
index b6fb7218da6..da8bdcb78c4 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -27,20 +27,13 @@ in
example = "vlc";
description = "Phonon audio backend to install.";
};
-
- enableQt4Support = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Enable support for Qt 4-based applications. Particularly, install a
- default backend for Phonon.
- '';
- };
-
};
};
+ imports = [
+ (mkRemovedOptionModule [ "services" "xserver" "desktopManager" "plasma5" "enableQt4Support" ] "Phonon no longer supports Qt 4.")
+ ];
config = mkMerge [
(mkIf cfg.enable {
@@ -173,9 +166,7 @@ in
# Phonon audio backend
++ lib.optional (cfg.phononBackend == "gstreamer") libsForQt5.phonon-backend-gstreamer
- ++ lib.optional (cfg.phononBackend == "gstreamer" && cfg.enableQt4Support) pkgs.phonon-backend-gstreamer
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
- ++ lib.optional (cfg.phononBackend == "vlc" && cfg.enableQt4Support) pkgs.phonon-backend-vlc
# Optional hardware support features
++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt ]
@@ -232,7 +223,6 @@ in
security.pam.services.kdm.enableKwallet = true;
security.pam.services.lightdm.enableKwallet = true;
security.pam.services.sddm.enableKwallet = true;
- security.pam.services.slim.enableKwallet = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-kde ];
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix
index 6965c6d2646..0b70ad5f29c 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -7,6 +7,32 @@ let
in
{
+
+ imports = [
+ # added 2019-08-18
+ # needed to preserve some semblance of UI familarity
+ # with original XFCE module
+ (mkRenamedOptionModule
+ [ "services" "xserver" "desktopManager" "xfce4-14" "extraSessionCommands" ]
+ [ "services" "xserver" "displayManager" "sessionCommands" ])
+
+ # added 2019-11-04
+ # xfce4-14 module removed and promoted to xfce.
+ # Needed for configs that used xfce4-14 module to migrate to this one.
+ (mkRenamedOptionModule
+ [ "services" "xserver" "desktopManager" "xfce4-14" "enable" ]
+ [ "services" "xserver" "desktopManager" "xfce" "enable" ])
+ (mkRenamedOptionModule
+ [ "services" "xserver" "desktopManager" "xfce4-14" "noDesktop" ]
+ [ "services" "xserver" "desktopManager" "xfce" "noDesktop" ])
+ (mkRenamedOptionModule
+ [ "services" "xserver" "desktopManager" "xfce4-14" "enableXfwm" ]
+ [ "services" "xserver" "desktopManager" "xfce" "enableXfwm" ])
+ (mkRenamedOptionModule
+ [ "services" "xserver" "desktopManager" "xfce" "extraSessionCommands" ]
+ [ "services" "xserver" "displayManager" "sessionCommands" ])
+ ];
+
options = {
services.xserver.desktopManager.xfce = {
enable = mkOption {
@@ -30,14 +56,6 @@ in
description = "Don't install XFCE desktop components (xfdesktop, panel and notification daemon).";
};
- extraSessionCommands = mkOption {
- default = "";
- type = types.lines;
- description = ''
- Shell commands executed just before XFCE is started.
- '';
- };
-
enableXfwm = mkOption {
type = types.bool;
default = true;
@@ -48,76 +66,101 @@ in
config = mkIf cfg.enable {
environment.systemPackages = with pkgs.xfce // pkgs; [
- # Get GTK themes and gtk-update-icon-cache
- gtk2.out
+ glib # for gsettings
+ gtk3.out # gtk-update-icon-cache
- # Supplies some abstract icons such as:
- # utilities-terminal, accessories-text-editor
+ gnome3.gnome-themes-extra
gnome3.adwaita-icon-theme
-
hicolor-icon-theme
tango-icon-theme
xfce4-icon-theme
+ desktop-file-utils
+ shared-mime-info # for update-mime-database
+
+ # For a polkit authentication agent
+ polkit_gnome
+
# Needed by Xfce's xinitrc script
- # TODO: replace with command -v
- which
+ xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
exo
garcon
- gtk-xfce-engine
libxfce4ui
- tumbler
xfconf
mousepad
+ parole
ristretto
xfce4-appfinder
xfce4-screenshooter
xfce4-session
xfce4-settings
+ xfce4-taskmanager
xfce4-terminal
(thunar.override { thunarPlugins = cfg.thunarPlugins; })
- thunar-volman # TODO: drop
- ] ++ (if config.hardware.pulseaudio.enable
- then [ xfce4-mixer-pulse xfce4-volumed-pulse ]
- else [ xfce4-mixer xfce4-volumed ])
- # TODO: NetworkManager doesn't belong here
- ++ optionals config.networking.networkmanager.enable [ networkmanagerapplet ]
- ++ optionals config.powerManagement.enable [ xfce4-power-manager ]
- ++ optionals cfg.enableXfwm [ xfwm4 ]
- ++ optionals (!cfg.noDesktop) [
- xfce4-panel
+ ] # TODO: NetworkManager doesn't belong here
+ ++ optional config.networking.networkmanager.enable networkmanagerapplet
+ ++ optional config.powerManagement.enable xfce4-power-manager
+ ++ optionals config.hardware.pulseaudio.enable [
+ pavucontrol
+ # volume up/down keys support:
+ # xfce4-pulseaudio-plugin includes all the functionalities of xfce4-volumed-pulse
+ # but can only be used with xfce4-panel, so for no-desktop usage we still include
+ # xfce4-volumed-pulse
+ (if cfg.noDesktop then xfce4-volumed-pulse else xfce4-pulseaudio-plugin)
+ ] ++ optionals cfg.enableXfwm [
+ xfwm4
+ xfwm4-themes
+ ] ++ optionals (!cfg.noDesktop) [
xfce4-notifyd
+ xfce4-panel
xfdesktop
];
environment.pathsToLink = [
"/share/xfce4"
- "/share/themes"
- "/share/gtksourceview-2.0"
+ "/lib/xfce4"
+ "/share/gtksourceview-3.0"
+ "/share/gtksourceview-4.0"
];
- services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
-
services.xserver.desktopManager.session = [{
name = "xfce";
bgSupport = true;
start = ''
- ${cfg.extraSessionCommands}
-
- ${pkgs.runtimeShell} ${pkgs.xfce.xinitrc} &
+ ${pkgs.runtimeShell} ${pkgs.xfce.xfce4-session.xinitrc} &
waitPID=$!
'';
}];
services.xserver.updateDbusEnvironment = true;
+ services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
# Enable helpful DBus services.
services.udisks2.enable = true;
+ security.polkit.enable = true;
+ services.accounts-daemon.enable = true;
services.upower.enable = config.powerManagement.enable;
+ services.gnome3.glib-networking.enable = true;
services.gvfs.enable = true;
services.gvfs.package = pkgs.xfce.gvfs;
+ services.tumbler.enable = true;
+ services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
+ services.xserver.libinput.enable = mkDefault true; # used in xfce4-settings-manager
+
+ # Enable default programs
+ programs.dconf.enable = true;
+
+ # Shell integration for VTE terminals
+ programs.bash.vteIntegration = mkDefault true;
+ programs.zsh.vteIntegration = mkDefault true;
+
+ # Systemd services
+ systemd.packages = with pkgs.xfce; [
+ (thunar.override { thunarPlugins = cfg.thunarPlugins; })
+ ] ++ optional (!cfg.noDesktop) xfce4-notifyd;
+
};
}
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix
deleted file mode 100644
index ffc99172e79..00000000000
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix
+++ /dev/null
@@ -1,152 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
- cfg = config.services.xserver.desktopManager.xfce4-14;
-in
-
-{
- # added 2019-08-18
- # needed to preserve some semblance of UI familarity
- # with original XFCE module
- imports = [
- (mkRenamedOptionModule
- [ "services" "xserver" "desktopManager" "xfce4-14" "extraSessionCommands" ]
- [ "services" "xserver" "displayManager" "sessionCommands" ])
- ];
-
- options = {
- services.xserver.desktopManager.xfce4-14 = {
- enable = mkOption {
- type = types.bool;
- default = false;
- description = "Enable the Xfce desktop environment.";
- };
-
- # TODO: support thunar plugins
- # thunarPlugins = mkOption {
- # default = [];
- # type = types.listOf types.package;
- # example = literalExample "[ pkgs.xfce4-14.thunar-archive-plugin ]";
- # description = ''
- # A list of plugin that should be installed with Thunar.
- # '';
- # };
-
- noDesktop = mkOption {
- type = types.bool;
- default = false;
- description = "Don't install XFCE desktop components (xfdesktop, panel and notification daemon).";
- };
-
- enableXfwm = mkOption {
- type = types.bool;
- default = true;
- description = "Enable the XFWM (default) window manager.";
- };
- };
- };
-
- config = mkIf cfg.enable {
- environment.systemPackages = with pkgs.xfce4-14 // pkgs; [
- glib # for gsettings
- gtk3.out # gtk-update-icon-cache
-
- gnome3.gnome-themes-extra
- gnome3.adwaita-icon-theme
- hicolor-icon-theme
- tango-icon-theme
- xfce4-icon-theme
-
- desktop-file-utils
- shared-mime-info # for update-mime-database
-
- # For a polkit authentication agent
- polkit_gnome
-
- # Needed by Xfce's xinitrc script
- xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-
- exo
- garcon
- libxfce4ui
- xfconf
-
- mousepad
- parole
- ristretto
- xfce4-appfinder
- xfce4-screenshooter
- xfce4-session
- xfce4-settings
- xfce4-taskmanager
- xfce4-terminal
-
- # TODO: resync patch for plugins
- #(thunar.override { thunarPlugins = cfg.thunarPlugins; })
- thunar
- ] # TODO: NetworkManager doesn't belong here
- ++ optional config.networking.networkmanager.enable networkmanagerapplet
- ++ optional config.powerManagement.enable xfce4-power-manager
- ++ optionals config.hardware.pulseaudio.enable [
- pavucontrol
- # volume up/down keys support:
- # xfce4-pulseaudio-plugin includes all the functionalities of xfce4-volumed-pulse
- # but can only be used with xfce4-panel, so for no-desktop usage we still include
- # xfce4-volumed-pulse
- (if cfg.noDesktop then xfce4-volumed-pulse else xfce4-pulseaudio-plugin)
- ] ++ optionals cfg.enableXfwm [
- xfwm4
- xfwm4-themes
- ] ++ optionals (!cfg.noDesktop) [
- xfce4-notifyd
- xfce4-panel
- xfdesktop
- ];
-
- environment.pathsToLink = [
- "/share/xfce4"
- "/lib/xfce4"
- "/share/gtksourceview-3.0"
- "/share/gtksourceview-4.0"
- ];
-
- services.xserver.desktopManager.session = [{
- name = "xfce4-14";
- bgSupport = true;
- start = ''
- ${pkgs.runtimeShell} ${pkgs.xfce4-14.xinitrc} &
- waitPID=$!
- '';
- }];
-
- services.xserver.updateDbusEnvironment = true;
- services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
-
- # Enable helpful DBus services.
- services.udisks2.enable = true;
- security.polkit.enable = true;
- services.accounts-daemon.enable = true;
- services.upower.enable = config.powerManagement.enable;
- services.gnome3.glib-networking.enable = true;
- services.gvfs.enable = true;
- services.gvfs.package = pkgs.xfce.gvfs;
- services.tumbler.enable = true;
- services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
- services.xserver.libinput.enable = mkDefault true; # used in xfce4-settings-manager
-
- # Enable default programs
- programs.dconf.enable = true;
-
- # Shell integration for VTE terminals
- programs.bash.vteIntegration = mkDefault true;
- programs.zsh.vteIntegration = mkDefault true;
-
- # Systemd services
- systemd.packages = with pkgs.xfce4-14; [
- thunar
- ] ++ optional (!cfg.noDesktop) xfce4-notifyd;
-
- };
-}