nixpkgs/nixos/modules/services/x11/desktop-managers/kde5.nix

235 lines
6.2 KiB
Nix
Raw Normal View History

2015-01-19 17:39:23 +00:00
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
2015-01-24 16:34:25 +00:00
cfg = xcfg.desktopManager.kde5;
2015-01-19 17:39:23 +00:00
xorg = pkgs.xorg;
kde5 = pkgs.kde5;
2015-01-19 17:39:23 +00:00
in
{
options = {
2015-01-24 16:34:25 +00:00
services.xserver.desktopManager.kde5 = {
2015-01-19 17:39:23 +00:00
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
};
2016-11-14 15:59:22 +00:00
enableQt4Support = mkOption {
type = types.bool;
default = true;
description = ''
Enable support for Qt 4-based applications. Particularly, install the
Qt 4 version of the Breeze theme and a default backend for Phonon.
'';
};
2015-01-19 17:39:23 +00:00
};
};
config = mkIf (xcfg.enable && cfg.enable) {
2015-01-24 16:34:37 +00:00
warnings = optional config.services.xserver.desktopManager.kde4.enable
"KDE 4 should not be enabled at the same time as KDE 5";
2015-01-19 17:39:23 +00:00
services.xserver.desktopManager.session = singleton {
2015-01-24 16:34:25 +00:00
name = "kde5";
2015-01-19 17:39:23 +00:00
bgSupport = true;
start = ''
# Load PulseAudio module for routing support.
# See http://colin.guthr.ie/2009/10/so-how-does-the-kde-pulseaudio-support-work-anyway/
${optionalString config.hardware.pulseaudio.enable ''
${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1"
''}
2016-04-14 21:34:45 +00:00
exec "${kde5.startkde}"
'';
2015-01-19 17:39:23 +00:00
};
2016-04-14 21:34:45 +00:00
security.setuidOwners = [
{
program = "kcheckpass";
source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
2016-04-14 21:34:45 +00:00
owner = "root";
setuid = true;
}
{
program = "start_kdeinit";
source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
2016-04-14 21:34:45 +00:00
owner = "root";
setuid = true;
}
];
2015-01-19 17:39:23 +00:00
environment.systemPackages =
[
kde5.frameworkintegration
2016-07-15 22:59:17 +00:00
kde5.kactivities
kde5.kauth
kde5.kcmutils
kde5.kconfig
kde5.kconfigwidgets
kde5.kcoreaddons
kde5.kdbusaddons
kde5.kdeclarative
kde5.kded
kde5.kdesu
kde5.kdnssd
kde5.kemoticons
kde5.kfilemetadata
kde5.kglobalaccel
kde5.kguiaddons
kde5.kiconthemes
kde5.kidletime
kde5.kimageformats
kde5.kinit
2016-07-15 22:59:17 +00:00
kde5.kio
kde5.kjobwidgets
kde5.knewstuff
kde5.knotifications
kde5.knotifyconfig
kde5.kpackage
kde5.kparts
kde5.kpeople
kde5.krunner
kde5.kservice
kde5.ktextwidgets
kde5.kwallet
kde5.kwayland
kde5.kwidgetsaddons
kde5.kxmlgui
kde5.kxmlrpcclient
kde5.plasma-framework
kde5.solid
kde5.sonnet
kde5.threadweaver
2016-11-14 15:59:22 +00:00
kde5.breeze-qt5
kde5.kactivitymanagerd
kde5.kde-cli-tools
kde5.kdecoration
kde5.kdeplasma-addons
kde5.kgamma5
kde5.khelpcenter
kde5.khotkeys
kde5.kinfocenter
kde5.kmenuedit
kde5.kscreen
kde5.kscreenlocker
kde5.ksysguard
kde5.kwayland
kde5.kwin
kde5.kwrited
kde5.libkscreen
kde5.libksysguard
kde5.milou
kde5.oxygen
kde5.plasma-integration
kde5.polkit-kde-agent
kde5.systemsettings
kde5.plasma-desktop
kde5.plasma-workspace
kde5.plasma-workspace-wallpapers
kde5.dolphin
kde5.dolphin-plugins
kde5.ffmpegthumbs
kde5.kdegraphics-thumbnailers
2016-01-08 19:12:43 +00:00
kde5.kio-extras
kde5.konsole
kde5.print-manager
# Install Breeze icons if available
(kde5.breeze-icons or kde5.oxygen-icons5 or kde5.oxygen-icons)
2015-01-19 17:39:23 +00:00
pkgs.hicolor_icon_theme
kde5.kde-gtk-config kde5.breeze-gtk
2016-07-29 15:29:15 +00:00
pkgs.qt5.phonon-backend-gstreamer
]
# Plasma 5.5 and later has a Breeze GTK theme.
# If it is not available, Orion is very similar to Breeze.
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
2016-04-21 20:59:20 +00:00
# Install activity manager if available
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
# frameworkintegration was split with plasma-integration in Plasma 5.6
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
2016-11-14 15:59:22 +00:00
++ lib.optionals cfg.enableQt4Support [ kde5.breeze-qt4 pkgs.phonon-backend-gstreamer ]
# Optional hardware support features
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
++ lib.optional config.hardware.pulseaudio.enable kde5.plasma-pa
++ lib.optional config.powerManagement.enable kde5.powerdevil
2016-08-22 23:49:00 +00:00
++ lib.optional config.services.colord.enable pkgs.colord-kde
++ lib.optionals config.services.samba.enable [ kde5.kdenetwork-filesharing pkgs.samba ];
2015-01-19 17:39:23 +00:00
environment.pathsToLink = [ "/share" ];
environment.etc = singleton {
source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
# Enable GTK applications to load SVG icons
environment.variables =
{
GST_PLUGIN_SYSTEM_PATH_1_0 =
lib.makeSearchPath "/lib/gstreamer-1.0"
(builtins.map (pkg: pkg.out) (with pkgs.gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-plugins-bad
gst-libav # for mp3 playback
]));
}
// (if (lib.hasAttr "breeze-icons" kde5)
then { GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; }
else { });
fonts.fonts = [ (kde5.oxygen-fonts or pkgs.noto-fonts) ];
2015-01-19 17:39:23 +00:00
2016-01-31 23:03:42 +00:00
programs.ssh.askPassword = "${kde5.ksshaskpass.out}/bin/ksshaskpass";
2015-03-11 16:00:22 +00:00
2015-01-19 17:39:23 +00:00
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
# Extra UDEV rules used by Solid
2016-04-07 12:44:26 +00:00
services.udev.packages = [
pkgs.libmtp
pkgs.media-player-info
];
2015-12-11 12:58:28 +00:00
services.xserver.displayManager.sddm = {
theme = "breeze";
themes = [
kde5.ecm # for the setup-hook
kde5.plasma-workspace
kde5.breeze-icons
2015-12-11 12:58:28 +00:00
];
};
2015-01-19 17:39:23 +00:00
security.pam.services.kde = { allowNullPassword = true; };
};
}