about summary refs log tree commit diff
path: root/overrides
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2013-01-14 09:43:31 +0100
committeraszlig <aszlig@redmoonstudios.org>2013-01-14 09:43:31 +0100
commit4ec725cd35674ce24856c921cb2a7c72894cbdfe (patch)
tree517977bd13729b26c3d73c3425e81d1c39f13651 /overrides
parentcb128deec77fe48e8aa2c6321e6de8de418e7022 (diff)
overrides: Refactor into different override types.
We now have arg overrides and derivation overrides. Both are implemented using
mapOverride, which allows to specify overrides in batches using dotted attrset
nesting.

In addition new packages are now clearly separated away and alphabetically
ordered, so that it's easy to add another new package to the list.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'overrides')
-rw-r--r--overrides/default.nix88
1 files changed, 47 insertions, 41 deletions
diff --git a/overrides/default.nix b/overrides/default.nix
index c398babe..5687547e 100644
--- a/overrides/default.nix
+++ b/overrides/default.nix
@@ -1,59 +1,71 @@
 pkgs:
 
-with {
-  tkabberRev = 2009;
-};
-with pkgs;
+with pkgs.lib;
 
 let
-  callPackage = lib.callPackageWith (pkgs // self);
-  self = rec {
-    pulseaudio = pkgs.pulseaudio.override {
-      useSystemd = true;
-    };
+  allPackages = newPackages // misc;
+  everything = pkgs // allPackages // drvOverrides // argOverrides;
 
-    kernelSourceAszlig = {
-      version = "3.8.0-rc3";
-      src = pkgs.fetchgit {
-        url = /home/aszlig/linux;
-        rev = "ecf02a607bd801e742d7bb35c6e40f7ca15edf03";
-        sha256 = "19ad666ms61s55730sh2n2lp9dsn439lnr7cypdma978mx27aj7v";
-      };
-    };
+  callPackage = callPackageWith everything;
 
-    blop = callPackage ./blop { };
+  mapOverride = overrideFun: includePackages: let
+    packages = pkgs // allPackages // includePackages;
+    overrideName = name: overrideFun (getAttr name packages);
+  in mapAttrs overrideName;
 
-    libCMT = callPackage ./libcmt { };
+  # input attrset overrides using pkg.override
+  argOverrides = mapOverride (getAttr "override") drvOverrides {
+    netrw.checksumType = "mhash";
+    pulseaudio.useSystemd = true;
+    w3m.graphicsSupport = true;
+  };
 
-    tkabber = lib.overrideDerivation pkgs.tkabber (o: {
+  # derivation overrides
+  drvOverrides = let
+    tkabberRev = 2009;
+  in mapOverride overrideDerivation argOverrides {
+    tkabber = o: {
       name = "tkabber-1.0pre";
-      src = fetchsvn {
+      src = everything.fetchsvn {
         url = "http://svn.xmpp.ru/repos/tkabber/trunk/tkabber";
         rev = tkabberRev;
         sha256 = "0lfh3bapqsfw142bndp11x7cs9crrcccw242lgwlh103r9gs123s";
       };
-    });
+    };
 
-    tkabber_plugins = lib.overrideDerivation pkgs.tkabber_plugins (o: {
+    tkabber_plugins = o: {
       name = "tkabber-plugins-1.0pre";
-      src = fetchsvn {
+      src = everything.fetchsvn {
         url = "http://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins";
         rev = tkabberRev;
         sha256 = "181jxd7iwpcl7wllwciqshzznahdw69fy7r604gj4m2kq6qmynqf";
       };
-    });
-
-    w3m = pkgs.w3m.override {
-      graphicsSupport = true;
     };
+  };
 
-    netrw = pkgs.netrw.override {
-      checksumType = "mhash";
+  # new packages
+  newPackages = {
+    axbo = callPackage ./axbo { };
+    blop = callPackage ./blop { };
+    libCMT = callPackage ./libcmt { };
+    librxtx_java = callPackage ./librxtx-java { };
+    pvolctrl = callPackage ./pvolctrl { };
+  };
+
+  # misc
+  misc = {
+    kernelSourceAszlig = {
+      version = "3.8.0-rc3";
+      src = everything.fetchgit {
+        url = /home/aszlig/linux;
+        rev = "ecf02a607bd801e742d7bb35c6e40f7ca15edf03";
+        sha256 = "19ad666ms61s55730sh2n2lp9dsn439lnr7cypdma978mx27aj7v";
+      };
     };
 
     testChromiumBuild = let
       buildChannels = [ "stable" "beta" "dev" ];
-      buildChromium = chan: chromium.override {
+      buildChromium = chan: everything.chromium.override {
         channel = chan;
         gnomeSupport = true;
         gnomeKeyringSupport = true;
@@ -61,24 +73,18 @@ let
         cupsSupport = true;
         pulseSupport = true;
       };
-    in stdenv.mkDerivation {
+    in everything.stdenv.mkDerivation {
       name = "test-chromium-build";
 
       buildCommand = let
-        chanResults = lib.flip map buildChannels (chan: ''
+        chanResults = flip map buildChannels (chan: ''
           echo "Build result for ${chan}: ${buildChromium chan}"
         '');
       in ''
         echo "Builds finished, the following derivations have been built:"
-        ${lib.concatStrings chanResults}
+        ${concatStrings chanResults}
         false
       '';
     };
-
-    pvolctrl = callPackage ./pvolctrl { };
-
-    librxtx_java = callPackage ./librxtx-java { };
-
-    axbo = callPackage ./axbo { };
   };
-in self
+in allPackages // drvOverrides // argOverrides