# 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, callPackage, 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"; "KF5KDEGames" = "libkdegames"; "Kexiv2" = "libkexiv2"; "Kdcraw" = "libkdcraw"; "Kipi" = "libkipi"; "LibKonq" = "kde-baseapps"; "Marble" = "marble"; }; 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; AccountsQt5 = accounts-qt.override { inherit qt5; }; Akonadi = kde4.akonadi; Alsa = alsaLib; Automoc4 = automoc4; Avahi = avahi; BISON = bison; Baloo = kde4.baloo; Boost = boost156; CFitsio = cfitsio; CUPS = cups; Canberra = libcanberra; Cdparanoia = cdparanoia; 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; Grantlee5 = grantlee5; GSL = gsl; HUNSPELL = hunspell; HUpnp = herqq; INDI = indilib; Intltool = intltool; Jasper = jasper; KActivities = kde4.kactivities; KDEGames = kde4.libkdegames; LCMS2 = lcms2; Ldap = openldap; LibAttica = attica; LibGcrypt = libgcrypt; LibKMahjongg = kde4.libkmahjongg; 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; Qca-qt5 = qca-qt5.override { inherit qt5; }; QImageBlitz = qimageblitz; QJSON = qjson; Qt4 = qt4; Samba = samba; Sasl2 = cyrus_sasl; SharedDesktopOntologies = shared_desktop_ontologies; SignOnQt5 = signon.override { inherit qt5; }; SndFile = libsndfile; Speechd = speechd; TIFF = libtiff; Taglib = taglib; TelepathyQt4 = telepathy_qt; TelepathyQt5 = telepathy_qt5; TunePimp = libtunepimp; UDev = udev; USB = libusb; Xplanet = xplanet; 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]; }; kaccounts-providers = super.kaccounts-providers // { buildInputs = super.kaccounts-providers.buildInputs ++ (with pkgs; [ libaccounts-glib ]); preConfigure = '' ${super.kaccounts-providers.preConfigure or ""} substituteInPlace webkit-options/CMakeLists.txt \ --replace "/etc/signon-ui/webkit-options.d/" "$out/etc/signon-ui/webkit-options.d/" ''; }; kalzium = with pkgs; super.kalzium // { nativeBuildInputs = super.kalzium.nativeBuildInputs ++ [pkgconfig]; }; kate = super.kate // { buildInputs = super.kate.buildInputs ++ (with kf5; [ kconfig kguiaddons kiconthemes ki18n kinit kjobwidgets kio kparts ktexteditor kwindowsystem kxmlgui ]); nativeBuildInputs = super.kate.nativeBuildInputs ++ (with kf5; [ kdoctools ]); }; 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" ]; }; kdenlive = let mlt = pkgs.mlt-qt5.override { inherit qt5; }; in super.kdenlive // { buildInputs = super.kdenlive.buildInputs ++ [ mlt ]; }; 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]; }; khangman = super.khangman // { buildInputs = super.khangman.buildInputs ++ [ kf5.kio ]; }; 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 kdeApps.ktp-common-internals]; }; kstars = super.kstars // { buildInputs = super.kstars.buildInputs ++ (with kf5; [ kparts ]) ++ [ pkgs.cfitsio ]; }; ktp-accounts-kcm = super.ktp-accounts-kcm // { buildInputs = super.ktp-accounts-kcm.buildInputs ++ [ pkgs.libaccounts-glib ]; }; ktp-common-internals = super.ktp-common-internals // { buildInputs = super.ktp-common-internals.buildInputs ++ (with kf5; [ kdelibs4support kparts ]) ++ [ pkgs.libotr ]; # needed for ktp-text-ui }; lokalize = super.lokalize // { buildInputs = super.lokalize.buildInputs ++ [ kf5.kdbusaddons ]; }; 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]; }; libkgeomap = super.libkgeomap // { cmakeFlags = (super.libkgeomap.cmakeFlags or []) ++ [ "-DCMAKE_MODULE_PATH=${kdeApps.marble}/share/apps/cmake/modules" ]; }; libkipi = with pkgs; super.libkipi // { buildInputs = super.libkipi.buildInputs ++ [scope.KDE4]; }; libksane = with pkgs; super.libksane // { buildInputs = super.libksane.buildInputs ++ [scope.KDE4 saneBackends]; }; okular = super.okular // { nativeBuildInputs = super.okular.nativeBuildInputs ++ [ pkgs.pkgconfig ]; }; rocs = super.rocs // { buildInputs = super.rocs.buildInputs ++ (with kf5; [ kdelibs4support ]); }; signon-kwallet-extension = let signon = pkgs.signon.override { inherit qt5; }; in super.signon-kwallet-extension // { buildInputs = super.signon-kwallet-extension.buildInputs ++ [ signon ]; preConfigure = '' ${super.signon-kwallet-extension.preConfigure or ""} sed -e "s,\''${SIGNONEXTENSION_PLUGINDIR},$out/lib/signon/extensions," \ -i src/CMakeLists.txt ''; }; }; 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)