about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorMarc Weber <marco-oweber@gmx.de>2008-12-20 01:20:35 +0000
committerMarc Weber <marco-oweber@gmx.de>2008-12-20 01:20:35 +0000
commite996113be7f41f067aaefac881c540b5ceb8d2d4 (patch)
tree177f16552ca2d05020c3d45a0b45502556a09502 /pkgs/development
parent5ab6464edb9bbc2a9aa15122ffc02b57ad236bb7 (diff)
removed mkDerivationByConfiguration, using composableDerivation instead
qgis, vim_configurable both work now

svn path=/nixpkgs/trunk/; revision=13661
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/bigloo/default.nix4
-rw-r--r--pkgs/development/compilers/hugs/default.nix101
-rw-r--r--pkgs/development/compilers/roadsend/default.nix54
-rw-r--r--pkgs/development/interpreters/php_configurable/default.nix199
-rw-r--r--pkgs/development/libraries/fltk/default.nix60
-rw-r--r--pkgs/development/libraries/geos/default.nix66
-rw-r--r--pkgs/development/libraries/libdv/default.nix37
-rw-r--r--pkgs/development/libraries/libsamplerate/default.nix54
-rw-r--r--pkgs/development/tools/misc/avrdude/default.nix48
9 files changed, 316 insertions, 307 deletions
diff --git a/pkgs/development/compilers/bigloo/default.nix b/pkgs/development/compilers/bigloo/default.nix
index 53e1099a069e7..efb762b20185d 100644
--- a/pkgs/development/compilers/bigloo/default.nix
+++ b/pkgs/development/compilers/bigloo/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv }:
 
 stdenv.mkDerivation rec {
-  name = "bigloo3.1b";
+  name = "bigloo3.2a-alpha04Dec08";
 
   src = fetchurl {
     url = "ftp://ftp-sop.inria.fr/mimosa/fp/Bigloo/${name}.tar.gz";
-    sha256 = "1m7mrrrqm6668j6x834mclzc9am63wlf0knm4xiwrhv3zcky8vnv";
+    sha256 = "1sqzqlg6zrmh9980qk5w7rm9jnb85zsf3nqy0741ibx30wvbrki9";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/compilers/hugs/default.nix b/pkgs/development/compilers/hugs/default.nix
index 1918f8f372b2f..c910d88ccb19f 100644
--- a/pkgs/development/compilers/hugs/default.nix
+++ b/pkgs/development/compilers/hugs/default.nix
@@ -1,57 +1,56 @@
-args: with args.lib; with args;
-let
-  co = chooseOptionsByFlags {
-    inherit args;
-    flagDescr = {
-      # does without X make sense? We can try
-      mandatory ={ cfgOption = [ "--prefix=\$out" ]; implies = "pthreads"; };
-      pathcanonicalization = { cfgOption = "--enable-path-canonicalization"; }; # enable canonicalization of filenames
-      timer = { cfgOption = "--enable-timer"; };#          enable evaluation timing (for benchmarking Hugs)
-      profiling = { cfgOption = "--enable-profiling"; };#      enable heap profiler
-      stack = { cfgOption = "--enable-stack-dumps"; };#-dumps    enable stack dump on stack overflow
-      large = { cfgOption = "--disable-large-banner"; };#-banner  disable multiline startup banner
-      internal = { cfgOption = "--enable-internal-prims"; };#-prims experimental primitives to access Hugs's innards
-      debug = { cfgOption = "--enable-debug"; };#          include C debugging information (for debugging Hugs)
-      tag = { cfgOption = "--enable-tag-checks"; };#-checks     runtime tag checking (for debugging Hugs)
-      lint = { cfgOption = "--enable-lint"; };#           enable "lint" flags (for debugging Hugs)
-      only98 = { cfgOption = "--enable-only98"; };#         build Hugs to understand Haskell 98 only
-      ffi = { cfgOption = "--enable-ffi"; };#            include modules that use the FFI [default=autodetect]
-      char = { cfgOption = "--enable-char-encoding"; blocks = "utf8"; };
-                                                        #-encoding  encode all character I/O using the byte encoding
-                                                        #determined by the locale in effect at that time. To
-                                                        #require that the UTF-8 encoding is always used, give
-                                                        #the --enable-char-encoding=utf8 option.
-                                                        #[default=autodetect]
-      utf8 = { cfgOption = "--enable-char-encoding=utf8"; blocks="char"; };
-
-
-      #--with-nmake            produce a Makefile compatible with nmake
-      #--with-gui              build Hugs for Windows GUI (Borland C++ only)
-      pthreads = { cfgOption = "--with-pthreads"; }; #   build Hugs using POSIX threads C library
-                                                   # I think we need this as long as not using nptl ?
+args: with args;
+let edf = composableDerivation.edf;
+    wwf = composableDerivation.wwf; in
+composableDerivation.composableDerivation {
+  initial = {
 
-    };
-    optionals = [];
-    defaultFlags = ["ffi"];
-  };
-
-in args.stdenv.mkDerivation {
-
-  # passing the flags in case a library using this want's to check them (*) .. 
-  inherit (co) /* flags */ buildInputs;
+    name="hugs98";
 
-  configurePhase="./configure --prefix=\$out";
-
-  src = fetchurl {
-      url = http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-Sep2006.tar.gz;
-      sha256 = "3cf4d27673564cffe691bd14032369f646233f14daf2bc37c6c6df9f062b46b6";
+    src = fetchurl {
+        url = http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-Sep2006.tar.gz;
+        sha256 = "3cf4d27673564cffe691bd14032369f646233f14daf2bc37c6c6df9f062b46b6";
     };
 
-  name="hugs98";
-
-  meta = {
-    license = "as-is"; # gentoo is calling it this way..
-    description = "The HUGS98 Haskell <interpreter";
-    homepage = http://www.haskell.org/hugs;
+        #encode all character I/O using the byte encoding
+        #determined by the locale in effect at that time. To
+        #require that the UTF-8 encoding is always used, give
+        #the --enable-char-encoding=utf8 option.
+        #[default=autodetect]
+    postUnpack = ''
+      find -type f | xargs sed -i 's@/bin/cp@cp@';
+    '';
+    configurePhase="./configure --prefix=\$out --enable-char-encoding=utf8 $configureFlags";
+
+    flags =
+         edf { name = "pathCanonicalization"; feat="path-canonicalization"; }
+      // edf { name="timer"; }   # enable evaluation timing (for benchmarking Hugs)
+      // edf { name="profiling"; }# enable heap profiler
+      // edf { name="stackDumps"; feat="stack-dummps"; } # enable stack dump on stack overflow
+      // edf { name="largeBanner"; feat="large-banner"; } # disable multiline startup banner
+      // edf { name="internal-prims"; } # experimental primitives to access Hugs's innards
+      // edf { name="debug"; } # include C debugging information (for debugging Hugs)
+      // edf { name="tag"; } # runtime tag checking (for debugging Hugs)
+      // edf { name="lint"; } # enable "lint" flags (for debugging Hugs)
+      // edf { name="only98"; } # build Hugs to understand Haskell 98 only
+      // edf { name="ffi"; }
+        #--with-nmake            produce a Makefile compatible with nmake
+        #--with-gui              build Hugs for Windows GUI (Borland C++ only)
+      // wwf { name="pthreads"; } #   build Hugs using POSIX threads C library
+      ;
+
+    cfg = {
+      largeBannerSupport = true; # seems to be default
+
+
+        char = { cfgOption = "--enable-char-encoding"; blocks = "utf8"; };
+        utf8 = { cfgOption = "--enable-char-encoding=utf8"; blocks="char"; };
+
+      };
+
+    meta = {
+      license = "as-is"; # gentoo is calling it this way..
+      description = "The HUGS98 Haskell <interpreter";
+      homepage = http://www.haskell.org/hugs;
+    };
   };
 }
diff --git a/pkgs/development/compilers/roadsend/default.nix b/pkgs/development/compilers/roadsend/default.nix
index c7b04f8710908..c6d2249c8947d 100644
--- a/pkgs/development/compilers/roadsend/default.nix
+++ b/pkgs/development/compilers/roadsend/default.nix
@@ -1,31 +1,33 @@
-args:
-let edf = args.lib.enableDisableFeature; in
-( args.mkDerivationByConfiguration {
-    flagConfig = {
-      mandatory = { buildInputs = ["bigloo" "curl"]; };
-    } // edf "pcre" "pcre" { } #support pcre extension [default=check]
-      // edf "fcgi" "fcgi" { pass = "fcgi"; } #support FastCGI web backend [default=check]
-      // edf "xml" "xml" { pass ="libxml2"; } #support xml extension [default=check]
-      // edf "mysql" "mysql" { pass = "mysql"; } #support mysql extension [default=check]
-      #// edf "sqlite3=[ARG]" "sqlite3=[ARG]" { } [>use SQLite 3 library [default=yes], optionally
-                                #specify the prefix for sqlite3 library
-      // edf "odbc" "odbc" { } #support ODBC extension [default=check]
-      // edf "gtk" "gtk" { } #support PHP-GTK extension [default=no]
-      // edf "gtk2" "gtk2" { }; #support PHP-GTK 2 extension [default=no]
-
-    optionals = [ "libxml2" "gettext" "fcgi" ];
-    extraAttrs = co : {
-      name = "roadsend-2.9.3";
+args: with args;
+let edf = composableDerivation.edf; in
+composableDerivation.composableDerivation {
+  initial = {
+    name = "roadsend-2.9.3";
+    buildInputs = [bigloo curl];
+    flags = edf { name = "pcre"; }
+         // edf { name = "fcgi"; enable = { inherit fcgi; }; }
+         // edf { name = "xml"; enable = { buildInputs = [ libxml2 ]; }; }
+         // edf { name = "mysql"; enable = { buildInputs = [ mysql ]; }; }
+         // edf { name = "odbc"; };
+         # // edf { name = "gtk"} }
+         # // edf { name = "gtk2", enable = { buildInputs = [ mysql ]; } }
+    cfg = {
+      pcreSupport = true;
+      fcgiSupport = true;
+      xmlSupport = true;
+      mysqlSupport = true;
+    };
+    src = args.fetchurl {
+      url = "http://code.roadsend.com/snaps/roadsend-php-20081210.tar.bz2";
+      sha256 = "0yhpiik0dyayd964wvn2k0cq7b1gihx1k3qx343r2l7lla4mapsx";
+    };
 
-      src = args.fetchurl {
-        url = "http://code.roadsend.com/snaps/roadsend-php-2.9.4.tar.bz2";
-        sha256 = "0nw7rvrrwkss5cp6ws0m3q63q1mcyy27s8yjhy7kn508db1rgl9x";
-      };
+#    http://code.roadsend.com/snaps/roadsend-php-testsuite-2.9.7.tar.bz2";
+#   sha256 = "0rf0g9r0prla7daq3aif24d7dx0j01i35hcm8h5bbg3gvpfim463";
 
     # tell pcc where to find the fastcgi library 
-      postInstall = " sed -e \"s=(ldflags fastcgi.*=(ldflags -l fastcgi -L \$fcgi)=\" -i \$out/etc/pcc.conf ";
-
-    meta = { 
+    postInstall = " sed -e \"s=(ldflags fastcgi.*=(ldflags -l fastcgi -L \$fcgi)=\" -i \$out/etc/pcc.conf ";
+    meta = {
       description = "roadsend PHP -> C compiler";
       homepage = http://www.roadsend.com;
       # you can choose one of the following licenses: 
@@ -33,4 +35,4 @@ let edf = args.lib.enableDisableFeature; in
       license = ["GPL2"];
     };
   };
-} ) args
+}
diff --git a/pkgs/development/interpreters/php_configurable/default.nix b/pkgs/development/interpreters/php_configurable/default.nix
index d10efcec80211..d079c83f364b6 100644
--- a/pkgs/development/interpreters/php_configurable/default.nix
+++ b/pkgs/development/interpreters/php_configurable/default.nix
@@ -1,122 +1,126 @@
 let version = "5.2.6"; in
 
-args:
+args: with args;
 
-(args.mkDerivationByConfiguration {
+let inherit (args.composableDerivation) composableDerivation edf wwf; in
 
-  flagConfig = {
+composableDerivation {
+  initial = fixed : {
 
-# much left to do here... 
+    name = "php_configurable-${version}";
 
-    mandatory = { buildInputs = ["flex" "bison" "pkgconfig"]; };
+    buildInputs = ["flex" "bison" "pkgconfig"];
 
-    # SAPI modules:
-    
-    apxs2 = {
-      cfgOption = "--with-apxs2=\$apacheHttpd/bin/apxs";
-      pass = "apacheHttpd";
-    };
+    flags = {
 
-    # Extensions 
+# much left to do here...
 
-    curl = {
-      cfgOption = "--with-curl=${args.curl} --with-curlwrappers";
-      pass = "curl";
-    };
+      # SAPI modules:
       
-    zlib = {
-      cfgOption = "--with-zlib=${args.zlib}";
-      pass = "zlib";
-    };
+        apxs2 = {
+          configureFlags = ["--with-apxs2=${apacheHttpd}/bin/apxs"];
+          buildInputs = [apacheHttpd];
+        };
 
-    libxml2 = {
-      cfgOption = "--with-libxml-dir=\$libxml2";
-      pass = { inherit (args) libxml2; }; 
-    };
-    
-    no_libxml2 = {
-      cfgOption = "--disable-libxml";
-    };
+        # Extensions
 
-    postgresql = {
-      cfgOption = "--with-pgsql=\$postgresql";
-      pass = { inherit (args) postgresql; };
-    };
-    
-    mysql = {
-      cfgOption = "--with-mysql=\$mysql";
-      pass = { inherit (args) mysql; };
-    };
+        curl = {
+          configureFlags = ["--with-curl=${args.curl}" "--with-curlwrappers"];
+          buildInputs = [curl];
+        };
+        
+        zlib = {
+          configureFlags = ["--with-zlib=${args.zlib}"];
+          buildInputs = [zlib];
+        };
 
-    mysqli = {
-      cfgOption = "--with-mysqli=\$mysql/bin/mysql_config";
-      pass = { inherit (args) mysql; }; 
-    };
+        libxml2 = {
+          configureFlags = ["--with-libxml-dir=${libxml2}"];
+          buildInputs = [ libxml2 ];
+        };
+      
+        postgresql = {
+          configureFlags = ["--with-pgsql=${postgresql}"];
+          buildInputs = [ postgresql ];
+        };
+      
+        mysql = {
+          configureFlags = ["--with-mysql=${mysql}"];
+          buildInputs = [ mysql ];
+        };
 
-    mysqli_embedded = {
-      cfgOption = "--enable-embedded-mysqli";
-      depends = "mysqli";
-    };
+        mysqli = {
+          configureFlags = ["--with-mysqli=${mysql}/bin/mysql_config"];
+          buildInputs = [ mysql];
+        };
 
-    pdo_mysql = {
-      cfgOption = "--with-pdo-mysql=\$mysql";
-      pass = { inherit (args) mysql; }; 
-    };
-    
-    no_pdo_mysql = { };
+        mysqli_embedded = {
+          configureFlags = ["--enable-embedded-mysqli"];
+          depends = "mysqli";
+          assertion = fixed.mysqliSupport;
+        };
 
-    bcmath = {
-      cfgOption = "--enable-bcmath";
-    };
+        pdo_mysql = {
+          configureFlags = ["--with-pdo-mysql=${mysql}"];
+          buildInputs = [ mysql ];
+        };
+      
+        bcmath = {
+          configureFlags = ["--enable-bcmath"];
+        };
 
-    gd = {
-      cfgOption = "--with-gd=${args.gd}";
-      buildInputs = ["gd"]; # <-- urgh, these strings are ugly
-    };
+        gd = {
+          configureFlags = ["--with-gd=${args.gd}"];
+          buildInputs = [gd];
+        };
 
-    sockets = {
-      cfgOption = "--enable-sockets";
-    };
+        sockets = {
+          configureFlags = ["--enable-sockets"];
+        };
 
-    openssl = {
-      cfgOption = "--with-openssl=${args.openssl}";
-      buildInputs = ["openssl"];
-    };
+        openssl = {
+          configureFlags = ["--with-openssl=${args.openssl}"];
+          buildInputs = ["openssl"];
+        };
 
-    /*
-       Building xdebug withing php to be able to add the parameters to the ini file.. Ther should be a better way
-      meta = { 
-              description = "debugging support for PHP";
-              homepage = http://xdebug.org;
-              license = "based on the PHP license - as is";
-              };
-    */
-    xdebug = {
-      buildInputs = [ "automake" "autoconf" ];
-      pass = {
-        xdebug_src = args.fetchurl {
-          name = "xdebug-2.0.2.tar.gz";
-          url = "http://xdebug.org/link.php?url=xdebug202";
-          sha256 = "1h0bxvf8krr203fmk1k7izrrr81gz537xmd3pqh4vslwdlbhrvic";
+        /*
+           Building xdebug withing php to be able to add the parameters to the ini file.. Ther should be a better way
+          meta = {
+                  description = "debugging support for PHP";
+                  homepage = http://xdebug.org;
+                  license = "based on the PHP license - as is";
+                  };
+        */
+        xdebug = {
+          buildInputs = [ automake autoconf ];
+          xdebug_src = args.fetchurl {
+            name = "xdebug-2.0.2.tar.gz";
+            url = "http://xdebug.org/link.php?url=xdebug202";
+            sha256 = "1h0bxvf8krr203fmk1k7izrrr81gz537xmd3pqh4vslwdlbhrvic";
+          };
         };
       };
-    };
-
-  };
-
-  defaults = [ "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" "bcmath" ];
-  
-  optionals = [ "libxml2" "gettext" "postgresql" "zlib" "openssl" ];
 
-  extraAttrs = co: {
-    name = "php_configurable-${version}";
-
-    buildInputs = args.lib.getAttr ["phpIncludes"] [] args ++ co.buildInputs;
+    cfg = {
+      mysqlSupport = true;
+      mysqliSupport = true;
+      pdo_mysqlSupport = true;
+      libxml2Support = true;
+      apxs2Support = true;
+      bcmathSupport = true;
+      socketsSupport = true;
+      curlSupport = true;
+      gettextSupport = true;
+      postgresqlSupport = true;
+      zlibSupport = true;
+      opnesslSupport = true;
+      xdebugSupport = true;
+    };
 
     configurePhase = ''
       iniFile=$out/etc/$name.ini
       [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
-      ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out ${co.configureFlags}
+      ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out  $configureFlags
       echo configurePhase end
     '';
 
@@ -124,11 +128,11 @@ args:
       unset installPhase; installPhase;
       cp php.ini-recommended $iniFile
 
-      # Now Let's build xdebug if flag has been given 
+      # Now Let's build xdebug if flag has been given
       # TODO I think there are better paths than the given below
       if [ -n $flag_set_xdebug ]; then
         PATH=$PATH:$out/bin
-        tar xfz $xdebug_src; 
+        tar xfz $xdebug_src;
         cd xdebug*
         phpize
         ./configure --prefix=$out
@@ -157,13 +161,14 @@ args:
       name = "php-${version}.tar.bz2";
     };
 
-    meta = { 
+    meta = {
       description = "The PHP language runtime engine";
       homepage = http://www.php.net/;
       license = "PHP-3";
     };
 
     patches = [./fix.patch];
+
   };
-  
-}) args
+
+}
diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix
index 10034035ef1c6..6632088ade7a6 100644
--- a/pkgs/development/libraries/fltk/default.nix
+++ b/pkgs/development/libraries/fltk/default.nix
@@ -1,35 +1,47 @@
-args:
-( args.mkDerivationByConfiguration {
-    flagConfig = {
-      mandatory = { propagatedBuildInputs=["x11" "inputproto" "libXi"]; 
-                    blocks = ["cygwin" "quartz"]; }; # cgywin quartz and much more not yet tested
-      cygwin = { cfgOption = "--enable-cygwin"; }; #         use the CygWin libraries default=no
-      debug = { cfgOption = "--enable-debug"; }; #          turn on debugging default=no
-      gl = { cfgOption = "--enable-gl"; buildInputs = [ "mesa" ]; }; #             turn on OpenGL support default=yes
-      shared = { cfgOption = "--enable-shared"; }; #         turn on shared libraries default=no
-      threads = { cfgOption = "--enable-threads"; }; #        enable multi-threading support
-      quartz = { cfgOption = "--enable-quartz"; buildInputs = "quartz"; }; # don't konw yet what quartz is #         use Quartz instead of Quickdraw (default=no)
-      largefile = { cfgOption = "--disable-largefile"; }; #     omit support for large files
-      useNixLibs = { implies = [ "nixjpeg" "nixpng" "nixzlib" ]; }; # use nix libraries only
-      nixjpeg = { cfgOption = "--disable-localjpeg"; buildInputs = "libjpeg"; }; #      use local JPEG library, default=auto
-      nixzlib = { cfgOption = "--disable-localzlib"; buildInputs = "zlib"; }; #      use local ZLIB library, default=auto
-      nixpng = { cfgOption = "--disable-localpng"; buildInputs = "libpng"; }; #       use local PNG library, default=auto
-      xinerama = { cfgOption = "--enable-xinerama"; buildInputs = "xinerama"; }; #       turn on Xinerama support default=no
-      xft = { cfgOption = "--enable-xft"; buildInputs="xft"; }; #            turn on Xft support default=no
-      xdbe = { cfgOption = "--enable-xdbe"; }; #           turn on Xdbe support default=no
-    }; 
+args: with args;
+let inherit (args.composableDerivation) composableDerivation edf; in
+composableDerivation {
+  initial = {
 
-    extraAttrs = co : {
-      name = "fltk-2.0.x-r6483";
+    name = "fltk-2.0.x-r6483";
 
     src = args.fetchurl {
       url = ftp://ftp.easysw.com/pub/fltk/snapshots/fltk-2.0.x-r6483.tar.bz2;
       sha256 = "1n8b53r5p0zb4sbvr6pj8aasls4zjwksv1sdc3r3pzb20fikp5jb";
     };
 
-    meta = { 
+    propagatedBuildInputs=[x11 inputproto libXi freeglut];
+
+    buildInputs = [ args.pkgconfig ];
+
+    flags =
+      # this could be tidied up (?).. eg why does it require freeglut without glSupport?
+      edf { name = "cygwin"; }  #         use the CygWin libraries default=no
+      // edf { name = "debug"; }  #          turn on debugging default=no
+      // edf { name = "gl"; enable = { buildInputs = [ mesa ]; }; }  #             turn on OpenGL support default=yes
+      // edf { name = "shared"; }  #         turn on shared libraries default=no
+      // edf { name = "threads"; }  #        enable multi-threading support
+      // edf { name = "quartz"; enable = { buildInputs = "quartz"; }; }  # don't konw yet what quartz is #         use Quartz instead of Quickdraw (default=no)
+      // edf { name = "largefile"; } #     omit support for large files
+      // edf { name = "localjpeg"; disable = { buildInputs = [libjpeg]; }; } #       use local JPEG library, default=auto
+      // edf { name = "localzlib"; disable = { buildInputs = [zlib]; }; } #       use local ZLIB library, default=auto
+      // edf { name = "localpng"; disable = { buildInputs = [libpng]; }; } #       use local PNG library, default=auto
+      // edf { name = "xinerama"; enable = { buildInputs = [libXinerama]; }; } #       turn on Xinerama support default=no
+      // edf { name = "xft"; enable = { buildInputs=[libXft]; }; } #            turn on Xft support default=no
+      // edf { name = "xdbe"; };  #           turn on Xdbe support default=no
+    cfg = {
+        largefileSupport = true; # is default
+        glSupport = true; # doesn't build without it. Why?
+        localjpegSupport = false;
+        localzlibSupport = false;
+        localpngSupport = false;
+        sharedSupport = true;
+        threadsSupport = true;
+    };
+
+    meta = {
         description = "a C++ cross platform lightweight gui library binding";
         homepage = http://www.fltk.org;
     };
   };
-} ) args
+}
diff --git a/pkgs/development/libraries/geos/default.nix b/pkgs/development/libraries/geos/default.nix
index bcfe8f757a24b..10cc4d94d4042 100644
--- a/pkgs/development/libraries/geos/default.nix
+++ b/pkgs/development/libraries/geos/default.nix
@@ -1,42 +1,38 @@
-args:
-( args.mkDerivationByConfiguration {
+args: with args;
+let inherit (args.composableDerivation) composableDerivation edf; in
+composableDerivation {
 
-    flagConfig = {
-      mandatory = { implies = "python"; 
-                    buildInputs = [ "which" ]; # which is needed for the autogen.sh
-                  };
+  initial = {
+
+    buildInputs = [ "which" ]; # which is needed for the autogen.sh
+
+    flags =
     # python and ruby untested 
-      python =            { cfgOption = "--enable-python"; #Enable build of python module
-                            buildInputs=["python"] ++ (if args.use_svn then ["libtool" "autoconf" "automake" "swig"] else []); 
-                          };
-      ruby =              { cfgOption = "--enable-ruby"; };  #Enable build of ruby module
-    }; 
+      edf { name = "python"; enable = { buildInputs = [ python ]; }; };
+      # (if args.use_svn then ["libtool" "autoconf" "automake" "swig"] else [])
+      # // edf { name = "ruby"; enable = { buildInputs = [ ruby ]; };}
 
-    extraAttrs = co : {
-      name = "geos-3.0.0rc4";
+    name = "geos-3.0.3";
 
-      src = if (args.use_svn) then
-        args.fetchsvn { 
-            url = http://svn.osgeo.org/geos/trunk; 
-            md5 = "b46f5ea517a337064006bab92f3090d4";
-        } else args.fetchurl {
-          url = http://geos.refractions.net/geos-3.0.0rc4.tar.bz2;
-          sha256 = "0pgwwv8q4p234r2jwdkaxcf68z2fwgmkc74c6dnmms2sdwkb5lbw";
-        };
+    src = fetchurl {
+        url = http://download.osgeo.org/geos/geos-3.0.3.tar.bz2;
+        sha256 = "1pxk20jcbyidp3bvip1vdf8wfw2wvh8pcn810qkf1y3zfnki0c7k";
+    };
 
-      configurePhase = "
-        [ -f configure ] || \\
-        LIBTOOLIZE=libtoolize ./autogen.sh
-        #{ automake --add-missing; autoconf; }
-        unset configurePhase; configurePhase
-        ";
+    # for development version. can be removed ?
+    #configurePhase = "
+    #  [ -f configure ] || \\
+    #  LIBTOOLIZE=libtoolize ./autogen.sh
+    #  [>{ automake --add-missing; autoconf; }
+    #  unset configurePhase; configurePhase
+    #";
 
-      meta = {
-          description = "C++ port of the Java Topology Suite (JTS)"
-            + "- all the OpenGIS \"Simple Features for SQL\" spatial predicate functions and spatial operators,"
-            + " as well as specific JTS topology functions such as IsValid";
-          homepage = http://geos.refractions.net/;
-          license = "GPL";
-      };
+    meta = {
+        description = "C++ port of the Java Topology Suite (JTS)"
+          + "- all the OpenGIS \"Simple Features for SQL\" spatial predicate functions and spatial operators,"
+          + " as well as specific JTS topology functions such as IsValid";
+        homepage = http://geos.refractions.net/;
+        license = "GPL";
+    };
   };
-} ) args
+}
diff --git a/pkgs/development/libraries/libdv/default.nix b/pkgs/development/libraries/libdv/default.nix
index 4b0e05acf98d1..70211e928ee8a 100644
--- a/pkgs/development/libraries/libdv/default.nix
+++ b/pkgs/development/libraries/libdv/default.nix
@@ -1,30 +1,29 @@
-args:
-let edf = args.lib.enableDisableFeature; in
-( args.mkDerivationByConfiguration {
-    flagConfig = { }
+args: with args;
+let inherit (args.composableDerivation) composableDerivation edf; in
+composableDerivation {
+  initial = {
+    flags = { }
       # TODO! implement flags
       # I want to get kino and cinelerra working. That's why I don't spend more time on this now
-      // edf "libtool_lock" "libtool_lock" { } #avoid locking (might break parallel builds)
-      // edf "asm" "asm" { } #disable use of architecture specific assembly code
-      // edf "sdl" "sdl" { } #enable use of SDL for display
-      // edf "gtk" "gtk" { } #disable use of gtk for display
-      // edf "xv" "xv" { } #disable use of XVideo extension for display
-      // edf "gprof" "gprof" { } #enable compiler options for gprof profiling
-    ;
+      // edf { name = "libtool_lock"; } #avoid locking (might break parallel builds)
+      // edf { name ="asm"; } #disable use of architecture specific assembly code
+      // edf { name ="sdl"; } #enable use of SDL for display
+      // edf { name ="gtk"; } #disable use of gtk for display
+      // edf { name ="xv"; } #disable use of XVideo extension for display
+      // edf { name ="gprof"; }; #enable compiler options for gprof profiling
 
-    extraAttrs = co : {
-      name = "libdv-1.0.0";
+    name = "libdv-1.0.0";
 
-      src = args.fetchurl {
-        url = mirror://sourceforge/libdv/libdv-1.0.0.tar.gz;
-        sha256 = "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3";
-      };
+    src = args.fetchurl {
+      url = mirror://sourceforge/libdv/libdv-1.0.0.tar.gz;
+      sha256 = "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3";
+    };
 
-    meta = { 
+    meta = {
       description = "software decoder for DV format video, as defined by the IEC 61834 and SMPTE 314M standards";
       homepage = http://sourceforge.net/projects/libdv/;
       # you can choose one of the following licenses: 
       license = [];
     };
   };
-} ) args
+}
diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix
index 2ea959528a873..aa218f102cdc7 100644
--- a/pkgs/development/libraries/libsamplerate/default.nix
+++ b/pkgs/development/libraries/libsamplerate/default.nix
@@ -1,35 +1,31 @@
-args:
-( args.mkDerivationByConfiguration {
-    flagConfig = {
-      mandatory = { buildInputs = ["pkgconfig"];};
-    # are these options of interest? We'll see
-    #--disable-fftw          disable usage of FFTW
-    #--enable-debug          enable debugging
-    #--disable-cpu-clip      disable tricky cpu specific clipper
+args: with args;
+stdenv.mkDerivation {
 
-    }; 
+  name = "libsamplerate-0.1.2";
+
+  src = args.fetchurl {
+    url = http://www.mega-nerd.com/SRC/libsamplerate-0.1.2.tar.gz;
+    sha256 = "1m1iwzpcny42kcqv5as2nyb0ggrb56wzckpximqpp2y74dipdf4q";
+  };
 
-    extraAttrs = co : {
-      name = "libsamplerate-0.1.2";
 
-      src = args.fetchurl {
-        url = http://www.mega-nerd.com/SRC/libsamplerate-0.1.2.tar.gz;
-        sha256 = "1m1iwzpcny42kcqv5as2nyb0ggrb56wzckpximqpp2y74dipdf4q";
-      };
+  buildInputs = ["pkgconfig"];
+  # maybe interesting configure flags:
+  #--disable-fftw          disable usage of FFTW
+  #--disable-cpu-clip      disable tricky cpu specific clipper
 
-    configurePhase = "
-     export LIBSAMPLERATE_CFLAGS=\"-I \$libsamplerate/include\"
-     export LIBSAMPLERATE_LIBS=\"-L \$libsamplerate/libs\"
-     ./configure --prefix=\$out"+co.configureFlags;
+  configurePhase = "
+   export LIBSAMPLERATE_CFLAGS=\"-I \$libsamplerate/include\"
+   export LIBSAMPLERATE_LIBS=\"-L \$libsamplerate/libs\"
+   ./configure --prefix=\$out";
 
-    meta = { 
-      description = "Sample Rate Converter for audio";
-      homepage = http://www.mega-nerd.com/SRC/index.html;
-      # you can choose one of the following licenses: 
-      license = [ "GPL" 
-                  { url=http://www.mega-nerd.com/SRC/libsamplerate-cul.pdf; 
-                    name="libsamplerate Commercial Use License";
-                  } ];
-    };
+  meta = {
+    description = "Sample Rate Converter for audio";
+    homepage = http://www.mega-nerd.com/SRC/index.html;
+    # you can choose one of the following licenses:
+    license = [ "GPL"
+                { url=http://www.mega-nerd.com/SRC/libsamplerate-cul.pdf;
+                  name="libsamplerate Commercial Use License";
+                } ];
   };
-} ) args
+}
diff --git a/pkgs/development/tools/misc/avrdude/default.nix b/pkgs/development/tools/misc/avrdude/default.nix
index f87d305dfb2cf..38871c8fd4c56 100644
--- a/pkgs/development/tools/misc/avrdude/default.nix
+++ b/pkgs/development/tools/misc/avrdude/default.nix
@@ -1,32 +1,32 @@
-args:
-with args.lib; with args;
-let
-  co = chooseOptionsByFlags {
-    inherit args;
-    flagDescr = {
-      mandatory ={ cfgOption = [ "--disable-dependency-tracking" ]; 
-                   buildInputs=["yacc" "flex"]; };
-      doc = { cfgOption = "--enable-doc"; buildInputs=["tetex"]; blocks=["doc" "because untested"]; }; #Enable building documents
-      no_parport = { cfgOption = "--disable-parport"; }; #Enable accessing parallel ports(default)
+args: with args;
+let edf = composableDerivation.edf; in
+composableDerivation.composableDerivation {
+  initial = {
+    name="avrdude-5.4";
+
+    src = fetchurl {
+        url = http://mirror.switch.ch/mirror/gentoo/distfiles/avrdude-5.4.tar.gz;
+        sha256 = "bee4148c51ec95999d803cb9f68f12ac2e9128b06f07afe307d38966c0833b30";
     };
-    #defaultFlags = ["doc"];
-  };
 
-in stdenv.mkDerivation {
+    configureFlags = [ "--disable-dependency-tracking" ];
 
-  # passing the flags in case a library using this want's to check them (*) .. 
-  inherit (co) /* flags */ buildInputs configureFlags;
+    buildInputs = [yacc flex];
 
-  src = fetchurl {
-      url = http://mirror.switch.ch/mirror/gentoo/distfiles/avrdude-5.4.tar.gz;
-      sha256 = "bee4148c51ec95999d803cb9f68f12ac2e9128b06f07afe307d38966c0833b30";
-    };
+    flags =
+           edf { name = "doc"; enable = { buildInputs = texLive;  configureFlags = ["--enable-doc"]; }; }
+        // edf { name = "parport"; }
+        ;
 
-  name="avrdude-5.4";
+    cfg = {
+      docSupport = false; # untested
+      parportSupport = true;
+    };
 
-  meta = {
-    license = "GPL-2";
-    description = "AVR Downloader/UploaDEr";
-    homepage = http://savannah.nongnu.org/projects/avrdude;
+    meta = {
+      license = "GPL-2";
+      description = "AVR Downloader/UploaDEr";
+      homepage = http://savannah.nongnu.org/projects/avrdude;
+    };
   };
 }