Author: eelco
Date: Thu Oct 14 16:49:41 2010
New Revision: 24294
URL: https://svn.nixos.org/websvn/nix/?rev=24294&sc=1

Log:
* Some hackery to make the split KDE packages available both
  individually and combined.  For instance, you can say

    environment.systemPackages = [ pkgs.kde4.kdesdk.kcachegrind ];

  for just kcachegrind, or 

    environment.systemPackages = [ pkgs.kde4.kdesdk ];

  to get all of kdesdk.  Everything can also be installed by name
  through nix-env.  (There is a name clash between the ColorSchemes
  packages in kdeaccessibility and kdeartwork, though.)

Modified:
   nixpkgs/trunk/pkgs/desktops/kde-4.5/default.nix
   nixpkgs/trunk/pkgs/top-level/all-packages.nix

Modified: nixpkgs/trunk/pkgs/desktops/kde-4.5/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/desktops/kde-4.5/default.nix     Thu Oct 14 15:55:51 
2010        (r24293)
+++ nixpkgs/trunk/pkgs/desktops/kde-4.5/default.nix     Thu Oct 14 16:49:41 
2010        (r24294)
@@ -1,6 +1,23 @@
-{ callPackage, stdenv, fetchurl, qt47 } :
+{ callPackage, recurseIntoAttrs, runCommand, stdenv, fetchurl, qt47 } :
 
-{
+let
+
+  version = "4.5.1";
+
+  # Various packages (e.g. kdesdk) have been split up into many
+  # smaller packages.  Some people may want to install the entire
+  # package, so provide a wrapper package that recombines them.
+  combinePkgs = name: pkgs:
+    let pkgs' = stdenv.lib.attrValues pkgs; in
+    runCommand "${name}-${version}" ({ passthru = pkgs // { inherit pkgs; }; })
+      ''
+        mkdir -p $out/nix-support
+        echo ${toString pkgs'} > $out/nix-support/propagated-user-env-packages
+      '';
+
+in
+
+recurseIntoAttrs rec {
   recurseForRelease = true;
 
   inherit callPackage stdenv;
@@ -47,8 +64,8 @@
   kdebase_runtime = callPackage ./base-runtime { };
 
 ### OTHER MODULES
-  kdeaccessibility = {
-    recurseForDerivations = true;
+
+  kdeaccessibility = combinePkgs "kdeaccessibility" {
     colorSchemes = callPackage ./accessibility/color-schemes.nix { };
     iconThemes = callPackage ./accessibility/icon-themes.nix { };
     jovie = callPackage ./accessibility/jovie.nix { };
@@ -58,8 +75,8 @@
   };
 
   kdeadmin = callPackage ./admin { };
-  kdeartwork = {
-    recurseForDerivations = true;
+  
+  kdeartwork = combinePkgs "kdeartwork" {
     aurorae = callPackage ./artwork/aurorae.nix { };
     colorSchemes = callPackage ./artwork/color-schemes.nix { };
     desktop_themes = callPackage ./artwork/desktop-themes.nix { };
@@ -72,14 +89,15 @@
     phase_style = callPackage ./artwork/phase-style.nix { };
     kscreensaver = callPackage ./artwork/kscreensaver.nix { };
   };
+  
   kdeedu = callPackage ./edu { };
   kdegames = callPackage ./games { };
   kdegraphics = callPackage ./graphics { };
   kdemultimedia = callPackage ./multimedia { };
   kdenetwork = callPackage ./network { };
   kdeplasma_addons = callPackage ./plasma-addons { };
-  kdesdk = {
-    recurseForDerivations = true;
+  
+  kdesdk = combinePkgs "kdesdk" {
     cervisia = callPackage ./sdk/cervisia.nix { };
     kapptemplate = callPackage ./sdk/kapptemplate.nix { };
     kate = callPackage ./sdk/kate.nix { };
@@ -101,14 +119,14 @@
     scripts = callPackage ./sdk/scripts.nix { };
     umbrello = callPackage ./sdk/umbrello.nix { };
   };
-  kdetoys = {
-    recurseForDerivations = true;
+  
+  kdetoys = combinePkgs "kdetoys" {
     amor = callPackage ./toys/amor.nix { };
     kteatime = callPackage ./toys/kteatime.nix { };
     ktux = callPackage ./toys/ktux.nix { };
   };
 
-  kdeutils = {
+  kdeutils = combinePkgs "kdeutils" {
     ark = callPackage ./utils/ark.nix { };
     kcalc = callPackage ./utils/kcalc.nix { };
     kcharselect = callPackage ./utils/kcharselect.nix { };
@@ -122,11 +140,9 @@
     printer_applet = callPackage ./utils/printer-applet.nix { };
     superkaramba = callPackage ./utils/superkaramba.nix { };
     sweeper = callPackage ./utils/sweeper.nix { };
-    recurseForRelease = true;
   };
 
-  kdewebdev = {
-    recurseForDerivations = true;
+  kdewebdev = combinePkgs "kdewebdev" {
     klinkstatus = callPackage ./webdev/klinkstatus.nix { };
     kommander = callPackage ./webdev/kommander.nix { };
     kfilereplace = callPackage ./webdev/kfilereplace.nix { };
@@ -139,9 +155,15 @@
   # Experimental 4.5 versions
   kdepim_runtime45 = callPackage ./pim-runtime45 { };
   kdepim45 = callPackage ./pim45 { };
+  
 ### DEVELOPMENT
 
   kdebindings = callPackage ./bindings { };
 
   l10n = callPackage ./l10n { };
+
+  # Make the split packages visible to `nix-env -q'.
+  misc = recurseIntoAttrs
+    (kdeaccessibility.pkgs // kdeartwork.pkgs // kdesdk.pkgs // kdetoys.pkgs 
// kdeutils.pkgs // kdewebdev.pkgs);
+
 }

Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix       Thu Oct 14 15:55:51 
2010        (r24293)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix       Thu Oct 14 16:49:41 
2010        (r24294)
@@ -2103,7 +2103,7 @@
 
   pythonWrapper = callPackage ../development/interpreters/python/wrapper.nix { 
};
 
-  python24 = lowPrio (callPackage ../development/interpreters/python/2.4 { });
+  python24 = callPackage ../development/interpreters/python/2.4 { };
 
   python26Base = lowPrio (makeOverridable (import 
../development/interpreters/python/2.6) {
     inherit (pkgs) fetchurl stdenv zlib bzip2 gdbm;
@@ -6700,6 +6700,7 @@
   kde45 = callPackage ../desktops/kde-4.5 {
     callPackage =
       let
+        # !!! Ugly, inefficient.
         pkgs_for_45 = (applyGlobalOverrides (p: { kde4 = p.kde45; }));
       in
         pkgs_for_45.newScope pkgs_for_45.kde45;
@@ -6964,7 +6965,6 @@
     stateDir = getPkgConfig "nix" "stateDir" "/nix/var";
   };
 
-
   # The SQLite branch.
   nixSqlite = lowPrio (makeOverridable (import 
../tools/package-management/nix/sqlite.nix) {
     inherit fetchurl stdenv perl curl bzip2 openssl sqlite;
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to