summary refs log tree commit diff
path: root/pkgs/desktops
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops')
-rw-r--r--pkgs/desktops/kde-4.7/admin.nix50
-rw-r--r--pkgs/desktops/kde-4.7/admin/builder.sh13
-rw-r--r--pkgs/desktops/kde-4.7/admin/default.nix23
-rw-r--r--pkgs/desktops/kde-4.7/default.nix2
-rw-r--r--pkgs/desktops/kde-4.7/games.nix5
-rw-r--r--pkgs/desktops/kde-4.7/pykde4.nix10
6 files changed, 61 insertions, 42 deletions
diff --git a/pkgs/desktops/kde-4.7/admin.nix b/pkgs/desktops/kde-4.7/admin.nix
new file mode 100644
index 00000000000..60a4d3e65c8
--- /dev/null
+++ b/pkgs/desktops/kde-4.7/admin.nix
@@ -0,0 +1,50 @@
+{ kde, cmake, qt4, pkgconfig, perl, pythonPackages
+, sip, pycups, pygobject, system_config_printer
+, kdelibs, automoc4, phonon, kdepimlibs, pykde4
+, cups, nettools } @ args:
+
+let
+
+  system_config_printer = args.system_config_printer.override { withGUI = false; };
+
+in
+
+kde.package rec {
+
+  buildInputs =
+    [ cmake kdelibs qt4 automoc4 phonon kdepimlibs
+      pythonPackages.python
+      pycups pykde4 sip pygobject system_config_printer
+    ];
+
+  passthru = { inherit system_config_printer; };
+
+  preConfigure =
+    ''
+      for i in system-config-printer-kde/cmake-modules/FindSystemConfigPrinter.py system-config-printer-kde/system-config-printer-kde.py; do
+        substituteInPlace $i \
+          --replace /usr/share/system-config-printer ${system_config_printer}/share/system-config-printer \
+          --replace /usr/bin/cupstestppd ${cups}/bin/cupstestppd \
+          --replace /bin/hostname ${nettools}/bin/hostname
+      done
+    '';
+
+  postInstall =
+    ''
+      # Bake the required Python path into the printer configuration program.
+      res=
+      for i in $(IFS=:; echo $PYTHONPATH); do res="$res''${res:+,} '$i'"; done
+      
+      sed -i $out/share/apps/system-config-printer-kde/system-config-printer-kde.py \
+          -e "1 a import sys\nsys.path = [$res] + sys.path"
+      
+      mkdir -p $out/nix-support
+      echo ${pykde4} > $out/nix-support/propagated-user-env-packages
+    '';
+    
+  meta = {
+    description = "KDE Administration Utilities";
+    license = "GPL";
+    kde.name = "kdeadmin";
+  };
+}
diff --git a/pkgs/desktops/kde-4.7/admin/builder.sh b/pkgs/desktops/kde-4.7/admin/builder.sh
deleted file mode 100644
index 78e29543c1f..00000000000
--- a/pkgs/desktops/kde-4.7/admin/builder.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-source $stdenv/setup
-
-myPatchPhase()
-{
-    for i in system-config-printer-kde/cmake-modules/FindSystemConfigPrinter.py system-config-printer-kde/system-config-printer-kde.py
-    do
-	sed -i -e "s|/usr/share/system-config-printer|$system_config_printer/share/system-config-printer|" $i
-    done
-
-	sed -i -e "s|import cupshelpers.ppds, cupshelpers.cupshelpers|import ppds, cupshelpers|" system-config-printer-kde/cmake-modules/FindSystemConfigPrinter.py
-}
-patchPhase=myPatchPhase
-genericBuild
diff --git a/pkgs/desktops/kde-4.7/admin/default.nix b/pkgs/desktops/kde-4.7/admin/default.nix
deleted file mode 100644
index c3b5a70b1dc..00000000000
--- a/pkgs/desktops/kde-4.7/admin/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ kde, cmake, qt4, pkgconfig, perl, python
-, sip, pyqt4, pycups, rhpl, system_config_printer
-, kdelibs, kdepimlibs, kdebindings, automoc4}:
-
-kde.package {
-
-  builder = ./builder.sh;
-
-  inherit system_config_printer;
-
-  # TODO: split, check which packages work on nixos
-
-  PYTHONPATH = "${pycups}/lib/python${python.majorVersion}/site-packages";
-
-  buildInputs = [ cmake qt4 pkgconfig perl python sip pyqt4 pycups rhpl system_config_printer
-                  kdelibs kdepimlibs kdebindings automoc4 ];
-
-  meta = {
-    description = "KDE Administration Utilities";
-    license = "GPL";
-    kde.name = "kdeadmin";
-  };
-}
diff --git a/pkgs/desktops/kde-4.7/default.nix b/pkgs/desktops/kde-4.7/default.nix
index 373b3ee7819..83af1eaeb4d 100644
--- a/pkgs/desktops/kde-4.7/default.nix
+++ b/pkgs/desktops/kde-4.7/default.nix
@@ -83,6 +83,8 @@ recurseIntoAttrs rec {
 
   kde_wallpapers = callPackage ./wallpapers.nix { };
 
+  kdeadmin = callPackage ./admin.nix { };
+
   kdegames = callPackage ./games.nix { };
 
   /*
diff --git a/pkgs/desktops/kde-4.7/games.nix b/pkgs/desktops/kde-4.7/games.nix
index 93a262452e5..c005e508868 100644
--- a/pkgs/desktops/kde-4.7/games.nix
+++ b/pkgs/desktops/kde-4.7/games.nix
@@ -13,10 +13,7 @@ kde.package rec {
     
   # TODO: ggz
 
-  postInstall =
-    ''
-      wrapPythonPrograms
-    '';
+  postInstall = "wrapPythonPrograms";
 
   meta = {
     description = "KDE Games";
diff --git a/pkgs/desktops/kde-4.7/pykde4.nix b/pkgs/desktops/kde-4.7/pykde4.nix
index cca4e89279f..2b5420f552a 100644
--- a/pkgs/desktops/kde-4.7/pykde4.nix
+++ b/pkgs/desktops/kde-4.7/pykde4.nix
@@ -1,11 +1,11 @@
 { kde, cmake, qt4, automoc4, kdelibs, phonon, python, sip, pyqt4
-, soprano, kdepimlibs, shared_desktop_ontologies, boost }:
+, soprano, kdepimlibs, shared_desktop_ontologies, boost, lndir }:
 
 kde.package {
 
   buildInputs =
     [ cmake kdelibs qt4 automoc4 phonon python sip pyqt4 soprano
-      kdepimlibs shared_desktop_ontologies boost
+      kdepimlibs shared_desktop_ontologies boost lndir
     ];
 
   NIX_CFLAGS_COMPILE = "-I${phonon}/include/phonon";
@@ -14,6 +14,12 @@ kde.package {
     ''
       substituteInPlace CMakeLists.txt \
         --replace '{SIP_DEFAULT_SIP_DIR}' '{CMAKE_INSTALL_PREFIX}/share/sip'
+
+      # Symlink PyQt into PyKDE.  This is necessary because PyQt looks
+      # in its PyQt4/uic/widget-plugins directory for plugins, and KDE
+      # needs to install a plugin.
+      mkdir -p $out/lib/python2.7
+      lndir ${pyqt4}/lib/python2.7 $out/lib/python2.7
     '';
 
   meta = {