428 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			428 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # 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 = libpulseaudio;
 | |
|         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
 | |
|       };
 | |
| 
 | |
|       ktp-text-ui = super.ktp-text-ui // {
 | |
|         buildInputs =
 | |
|           super.ktp-text-ui.buildInputs
 | |
|           ++ (with kf5; [ kdbusaddons ]);
 | |
|       };
 | |
| 
 | |
|       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)
 | 
