# 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, symlinkJoin, kde4, kf5, pkgs, qt4, 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"]) // { "KDE4" = "kdelibs"; "Kexiv2" = "libkexiv2"; "Kdcraw" = "libkdcraw"; "Kipi" = "libkipi"; "LibKMahjongg" = "libkmahjongg"; "LibKonq" = "kde-baseapps"; }; mkDerivation = drv: kf5.mkDerivation (drv // { preHook = (drv.preHook or "") + '' addQt4Plugins() { if [[ -d "$1/lib/qt4/plugins" ]]; then propagatedUserEnvPkgs+=" $1" fi if [[ -d "$1/lib/kde4/plugins" ]]; then propagatedUserEnvPkgs+=" $1" fi } envHooks+=(addQt4Plugins) ''; }); scope = # packages in this collection (mapAttrs (dep: name: kdeApps."${name}") renames) // # packages from KDE Frameworks 5 kf5.scope // # packages from nixpkgs (with pkgs; { ACL = acl; Akonadi = kde4.akonadi; Alsa = alsaLib; Automoc4 = automoc4; Avahi = avahi; BISON = bison; Baloo = kde4.baloo; Boost = boost156; Canberra = libcanberra; Cdparanoia = cdparanoia; CUPS = cups; DBusMenuQt = libdbusmenu_qt; DjVuLibre = djvulibre; ENCHANT = enchant; EPub = ebook_tools; Eigen2 = eigen2; Eigen3 = eigen; Exiv2 = exiv2; FAM = fam; FFmpeg = ffmpeg; Flac = flac; FLEX = flex; Freetype = freetype; GMP = gmp; Gettext = gettext; Gpgme = gpgme; Gphoto2 = libgphoto2; Grantlee = grantlee; GSL = gsl; HUNSPELL = hunspell; HUpnp = herqq; Jasper = jasper; KActivities = kde4.kactivities; LCMS2 = lcms2; Ldap = openldap; LibAttica = attica; LibGcrypt = libgcrypt; LibSSH = libssh; LibSpectre = libspectre; LibVNCServer = libvncserver; Libical = libical; MusicBrainz3 = libmusicbrainz; NetworkManager = networkmanager; OggVorbis = libvorbis; OpenAL = openal; OpenEXR = openexr; Poppler = poppler_qt4; Prison = prison; PulseAudio = pulseaudio; PythonLibrary = python; Qalculate = libqalculate; QCA2 = qca2; QImageBlitz = qimageblitz; QJSON = qjson; Qt4 = qt4; Samba = samba; Sasl2 = cyrus_sasl; SharedDesktopOntologies = shared_desktop_ontologies; SndFile = libsndfile; Speechd = speechd; TIFF = libtiff; Taglib = taglib; TelepathyQt4 = telepathy_qt; TunePimp = libtunepimp; UDev = udev; USB = libusb; Xscreensaver = xscreensaver; Xsltproc = libxslt; } ); qt5Only = tgt: let qt4Deps = [ "KDE4" "Phonon" ]; in mapAttrs (name: if name == tgt then removePkgDeps qt4Deps else id); preResolve = super: fold (f: x: f x) super [ (qt5Only "kmix") (userEnvPkg "SharedMimeInfo") (userEnvPkg "SharedDesktopOntologies") (blacklist ["artikulate"]) # build failure, wrong boost? (blacklist ["kde-dev-scripts" "kde-dev-utils"]) # docbook errors (blacklist ["kdewebdev"]) # unknown build failure ]; l10nPkgQt4 = orig: let drvName = builtins.parseDrvName orig.name; in mkDerivation { name = "${drvName.name}-qt4-${drvName.version}"; inherit (orig) src; buildInputs = [ kdeApps.kdelibs ]; nativeBuildInputs = with pkgs; [ cmake gettext perl ]; preConfigure = '' cd 4/ ''; }; l10nPkgQt5 = orig: let drvName = builtins.parseDrvName orig.name; in mkDerivation { name = "${drvName.name}-qt5-${drvName.version}"; inherit (orig) src; buildInputs = with kf5; [ kdoctools ki18n ]; nativeBuildInputs = with pkgs; [ cmake kf5.extra-cmake-modules gettext perl ]; preConfigure = '' cd 5/ ''; }; l10nPkg = name: orig: symlinkJoin orig.name [(l10nPkgQt4 orig) (l10nPkgQt5 orig)]; removeL10nPkgs = filterAttrs (n: v: !(hasPrefix "kde-l10n") n); postResolve = super: (removeL10nPkgs super) // { ark = with pkgs; super.ark // { buildInputs = (super.ark.buildInputs or []) ++ [ makeWrapper ]; postInstall = '' wrapProgram $out/bin/ark --prefix PATH : "${unzipNLS}/bin" ''; }; ffmpegthumbs = with pkgs; super.ffmpegthumbs // { nativeBuildInputs = super.ffmpegthumbs.nativeBuildInputs ++ [pkgconfig]; }; kalzium = with pkgs; super.kalzium // { nativeBuildInputs = super.kalzium.nativeBuildInputs ++ [pkgconfig]; }; kde-runtime = with pkgs; super.kde-runtime // { buildInputs = super.kde-runtime.buildInputs ++ [libcanberra]; nativeBuildInputs = super.kde-runtime.nativeBuildInputs ++ [pkgconfig]; NIX_CFLAGS_COMPILE = (super.kde-runtime.NIX_CFLAGS_COMPILE or "") + " -I${ilmbase}/include/OpenEXR"; meta = { priority = 10; }; }; kde-workspace = with pkgs; super.kde-workspace // { buildInputs = with xlibs; super.kde-workspace.buildInputs ++ [ libxkbfile libXcomposite xcbutilimage xcbutilkeysyms xcbutilrenderutil ]; nativeBuildInputs = super.kde-workspace.nativeBuildInputs ++ [ pkgconfig ]; meta = { priority = 10; }; }; kdelibs = with pkgs; super.kdelibs // { buildInputs = super.kdelibs.buildInputs ++ [ attr libxslt polkit_qt4 xz ]; nativeBuildInputs = super.kdelibs.nativeBuildInputs ++ [ pkgconfig ]; NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR"; propagatedBuildInputs = super.kdelibs.propagatedBuildInputs ++ [ qt4 soprano phonon strigi ]; propagatedNativeBuildInputs = super.kdelibs.propagatedNativeBuildInputs ++ [ automoc4 cmake perl shared_mime_info ]; patches = [ ./kdelibs/polkit-install.patch ]; cmakeFlags = [ "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook" "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook" "-DHUPNP_ENABLED=ON" "-DWITH_SOLID_UDISKS2=ON" "-DKDE_DEFAULT_HOME=.kde" ]; }; kdepim = with pkgs; super.kdepim // { buildInputs = super.kdepim.buildInputs ++ [ gpgme libassuan ]; nativeBuildInputs = super.kdepim.nativeBuildInputs ++ [ pkgconfig ]; }; kdepimlibs = with pkgs; super.kdepimlibs // { nativeBuildInputs = super.kdepimlibs.nativeBuildInputs ++ [ pkgconfig ]; }; kdesdk-thumbnailers = with pkgs; super.kdesdk-thumbnailers // { nativeBuildInputs = super.kdesdk-thumbnailers.nativeBuildInputs ++ [gettext]; }; kgpg = with pkgs; super.kgpg // { buildInputs = super.kgpg.buildInputs ++ [boost]; }; kmix = with pkgs; super.kmix // { nativeBuildInputs = super.kmix.nativeBuildInputs ++ [pkgconfig]; cmakeFlags = [ "-DKMIX_KF5_BUILD=ON" ]; }; kmousetool = with pkgs; super.kmousetool // { buildInputs = with xlibs; super.kmousetool.buildInputs ++ [libXtst libXt]; }; kremotecontrol = with pkgs; super.kremotecontrol // { buildInputs = super.kremotecontrol.buildInputs ++ [xlibs.libXtst]; }; krfb = super.krfb // { buildInputs = super.krfb.buildInputs ++ [pkgs.xlibs.libXtst kde4.telepathy.common_internals]; }; libkdcraw = with pkgs; super.libkdcraw // { buildInputs = super.libkdcraw.buildInputs ++ [scope.KDE4 libraw]; nativeBuildInputs = super.libkdcraw.nativeBuildInputs ++ [pkgconfig]; }; libkexiv2 = with pkgs; super.libkexiv2 // { buildInputs = super.libkexiv2.buildInputs ++ [exiv2 scope.KDE4]; }; libkface = with pkgs; super.libkface // { buildInputs = super.libkface.buildInputs ++ [scope.KDE4 opencv]; }; libkipi = with pkgs; super.libkipi // { buildInputs = super.libkipi.buildInputs ++ [scope.KDE4]; }; libksane = with pkgs; super.libksane // { buildInputs = super.libksane.buildInputs ++ [scope.KDE4 saneBackends]; }; }; l10nManifest = filterAttrs (n: v: hasPrefix "kde-l10n" n) (importManifest ./manifest.nix { inherit mirror; }); kdeApps = generateCollection ./. { inherit mkDerivation; inherit mirror preResolve postResolve renames scope; }; in kdeApps // (mapAttrs l10nPkg l10nManifest)