diff options
Diffstat (limited to 'pkgs/desktops/plasma-5.3/default.nix')
-rw-r--r-- | pkgs/desktops/plasma-5.3/default.nix | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/pkgs/desktops/plasma-5.3/default.nix b/pkgs/desktops/plasma-5.3/default.nix new file mode 100644 index 00000000000..20818a5c846 --- /dev/null +++ b/pkgs/desktops/plasma-5.3/default.nix @@ -0,0 +1,183 @@ +# Maintainer's Notes: +# +# Minor updates: +# 1. Edit ./manifest.sh to point to the updated URL. Upstream sometimes +# releases updates that include only the changed packages; in this case, +# multiple URLs can be provided and the results will be merged. +# 2. Run ./manifest.sh and ./dependencies.sh. +# 3. Build and enjoy. +# +# Major updates: +# We prefer not to immediately overwrite older versions with major updates, so +# make a copy of this directory first. After copying, be sure to delete ./tmp +# if it exists. Then follow the minor update instructions. + +{ autonix, kf5, pkgs, qt5, stdenv, debug ? false }: + +with stdenv.lib; with autonix; + +let kf5Orig = kf5; in + +let + + kf5 = kf5Orig.override { inherit debug qt5; }; + + mirror = "mirror://kde"; + + renames = + builtins.removeAttrs + (import ./renames.nix {}) + ["Backend" "CTest"]; + + scope = + # packages in this collection + (mapAttrs (dep: name: plasma5."${name}") renames) // + # packages from KDE Frameworks 5 + kf5.scope // + # packages pinned to this version of Qt 5 + { + LibBlueDevil = pkgs.libbluedevil; + PolkitQt5-1 = pkgs.polkit_qt5.override { inherit qt5; }; + PopplerQt5 = pkgs.poppler_qt5.override { inherit qt5; }; + } // + # packages from nixpkgs + (with pkgs; + { + inherit epoxy; + Epub = ebook_tools; + Exiv2 = exiv2; + FFmpeg = ffmpeg; + FONTFORGE_EXECUTABLE = fontforge; + Freetype = freetype; + GTK2 = gtk2; + GTK3 = gtk3; + Libinput = libinput; + LibSSH = libssh; + PulseAudio = pulseaudio; + Taglib = taglib; + USB = libusb; + Wayland = wayland; + Xapian = xapian; + } + ); + + preResolve = super: + fold (f: x: f x) super + [ + (userEnvPkg "SharedMimeInfo") + (userEnvPkg "SharedDesktopOntologies") + (blacklist ["bluedevil"]) + ]; + + postResolve = super: + (builtins.removeAttrs super ["breeze"]) // { + + bluez-qt = super.bluez-qt // { + preConfigure = '' + substituteInPlace CMakeLists.txt \ + --replace /lib/udev/rules.d "$out/lib/udev/rules.d" + ''; + }; + + breeze-qt4 = with pkgs; super.breeze // { + name = "breeze-qt4-" + (builtins.parseDrvName super.breeze.name).version; + buildInputs = [ xlibs.xproto kde4.kdelibs qt4 ]; + nativeBuildInputs = [ cmake pkgconfig ]; + cmakeFlags = + [ + "-DUSE_KDE4=ON" + "-DQT_QMAKE_EXECUTABLE=${qt4}/bin/qmake" + ]; + }; + + breeze-qt5 = with pkgs; super.breeze // { + name = "breeze-qt5-" + (builtins.parseDrvName super.breeze.name).version; + buildInputs = with kf5; with plasma5; + [ + kcompletion kconfig kconfigwidgets kcoreaddons kdecoration kguiaddons + frameworkintegration ki18n kwindowsystem qt5.base qt5.x11extras + ]; + nativeBuildInputs = [ cmake kf5.extra-cmake-modules pkgconfig ]; + cmakeFlags = [ "-DUSE_KDE4=OFF" ]; + }; + + kde-gtk-config = with pkgs; super.kde-gtk-config // { + NIX_CFLAGS_COMPILE = + (super.kde-gtk-config.NIX_CFLAGS_COMPILE or "") + + " -I${cairo}/include/cairo" + + " -I${gtk2}/include/gtk-2.0 -I${gtk2}/lib/gtk-2.0/include" + + " -I${glib}/include/glib-2.0 -I${glib}/lib/glib-2.0/include" + + " -I${pango}/include/pango-1.0"; + }; + + kfilemetadata = super.kfilemetadata // { + buildInputs = with pkgs; super.kfilemetadata.buildInputs ++ [ attr ]; + }; + + kwin = with pkgs; super.kwin // { + buildInputs = with xlibs; + super.kwin.buildInputs ++ [ libICE libSM libXcursor ]; + patches = [ ./kwin/kwin-import-plugin-follow-symlinks.patch ]; + }; + + libkscreen = with pkgs; super.libkscreen // { + buildInputs = with xlibs; super.libkscreen.buildInputs ++ [libXrandr]; + }; + + plasma-desktop = with pkgs; super.plasma-desktop // { + buildInputs = with xlibs; + super.plasma-desktop.buildInputs ++ + [ pkgs.libcanberra libxkbfile libXcursor libXft ]; + patches = [ + ./plasma-desktop/plasma-desktop-hwclock.patch + ./plasma-desktop/plasma-desktop-zoneinfo.patch + ]; + preConfigure = '' + substituteInPlace kcms/dateandtime/helper.cpp \ + --subst-var-by hwclock "${utillinux}/sbin/hwclock" + ''; + }; + + plasma-workspace = with pkgs; super.plasma-workspace // { + buildInputs = with xlibs; + super.plasma-workspace.buildInputs ++ [ libSM libXcursor pam ]; + postPatch = '' + substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \ + --replace kdostartupconfig5 $out/bin/kdostartupconfig5 + ''; + postInstall = '' + # We use a custom startkde script + rm $out/bin/startkde + ''; + }; + + powerdevil = with pkgs; super.powerdevil // { + buildInputs = with xlibs; super.powerdevil.buildInputs ++ [libXrandr]; + }; + + sddm-kcm = with pkgs; super.sddm-kcm // { + buildInputs = with xlibs; super.sddm-kcm.buildInputs ++ [libXcursor]; + }; + + /* + user-manager = super.user-manager // { + buildInputs = with pkgs; super.user-manager.buildInputs ++ [ libpwquality ]; + }; + */ + + }; + + plasma5 = generateCollection ./. { + inherit (kf5) mkDerivation; + inherit mirror preResolve postResolve renames scope; + }; + +in + plasma5 // { + inherit kf5 scope; + startkde = pkgs.callPackage ./startkde { + inherit (kf5) kconfig kinit kservice; + inherit (plasma5) plasma-desktop plasma-workspace; + inherit qt5; + }; + } |