3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/nixos/modules/services/x11/desktop-managers/kde5.nix

229 lines
6 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.";
};
};
};
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 22:34:45 +01:00
exec "${kde5.startkde}"
'';
2015-01-19 17:39:23 +00:00
};
2016-04-14 22:34:45 +01:00
security.setuidOwners = [
{
program = "kcheckpass";
source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
2016-04-14 22:34:45 +01:00
owner = "root";
setuid = true;
}
{
program = "start_kdeinit";
source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
2016-04-14 22:34:45 +01:00
owner = "root";
setuid = true;
}
];
2015-01-19 17:39:23 +00:00
environment.systemPackages =
[
kde5.frameworkintegration
2016-07-15 23:59:17 +01: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 23:59:17 +01: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
kde5.breeze
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
# Oxygen icons moved to KDE Frameworks 5.16 and later.
(kde5.oxygen-icons or kde5.oxygen-icons5)
2015-01-19 17:39:23 +00:00
pkgs.hicolor_icon_theme
kde5.kde-gtk-config
pkgs.phonon-backend-gstreamer
2016-07-29 16:29:15 +01: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
# Install Breeze icons if available
++ lib.optional (lib.hasAttr "breeze-icons" kde5) kde5.breeze-icons
2016-04-21 21:59:20 +01: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
# 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
++ lib.optional config.services.colord.enable kde5.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 13:44:26 +01: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.extra-cmake-modules # for the setup-hook
kde5.plasma-workspace
kde5.breeze-icons
(kde5.oxygen-icons or kde5.oxygen-icons5)
2015-12-11 12:58:28 +00:00
];
};
2015-01-19 17:39:23 +00:00
security.pam.services.kde = { allowNullPassword = true; };
};
}