about summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
authorMarc Weber <marco-oweber@gmx.de>2010-01-15 19:35:06 +0000
committerMarc Weber <marco-oweber@gmx.de>2010-01-15 19:35:06 +0000
commit92a0256e8e3a1f01502582826ce3872923781859 (patch)
tree74e695233103f5e25824f43f4e1bed3555e900f9 /pkgs/development/interpreters
parent11f8b98cccc72900f31f95ad0c671c543dfc7d96 (diff)
downloadnixlib-92a0256e8e3a1f01502582826ce3872923781859.tar
nixlib-92a0256e8e3a1f01502582826ce3872923781859.tar.gz
nixlib-92a0256e8e3a1f01502582826ce3872923781859.tar.bz2
nixlib-92a0256e8e3a1f01502582826ce3872923781859.tar.lz
nixlib-92a0256e8e3a1f01502582826ce3872923781859.tar.xz
nixlib-92a0256e8e3a1f01502582826ce3872923781859.tar.zst
nixlib-92a0256e8e3a1f01502582826ce3872923781859.zip
ruby update:
* xrefresh server on Linux (only paths config option is honored)
* sup can be started without hacks now :)
* rubygems update 1.3.5
* fix handling of /bin/* ruby scripts
* only recognize runtime dependencies when creating nix derivations.
  Some development dependencies are no longer available.
* make ruby lib ffy compile by using NIX_POST_EXTRACT_FILES_HOOK
* update rubygems patch: Even if there is a missing dep create attr
  item. Maybe this missing source can be fixed manually.

svn path=/nixpkgs/trunk/; revision=19470
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/ruby/gem_nix_command.patch49
-rw-r--r--pkgs/development/interpreters/ruby/gems.nix10
-rw-r--r--pkgs/development/interpreters/ruby/libs.nix1014
3 files changed, 602 insertions, 471 deletions
diff --git a/pkgs/development/interpreters/ruby/gem_nix_command.patch b/pkgs/development/interpreters/ruby/gem_nix_command.patch
index 79b6fe024c4a..4a751ab9828a 100644
--- a/pkgs/development/interpreters/ruby/gem_nix_command.patch
+++ b/pkgs/development/interpreters/ruby/gem_nix_command.patch
@@ -1,5 +1,5 @@
 diff --git a/lib/rubygems/command_manager.rb b/lib/rubygems/command_manager.rb
-index 0a19016..ef66d30 100644
+index 0a19016..ef66d30 100755
 --- a/lib/rubygems/command_manager.rb
 +++ b/lib/rubygems/command_manager.rb
 @@ -70,6 +70,7 @@ class Gem::CommandManager
@@ -10,12 +10,13 @@ index 0a19016..ef66d30 100644
    end
  
    ##
+
 diff --git a/lib/rubygems/commands/nix_command.rb b/lib/rubygems/commands/nix_command.rb
 new file mode 100644
-index 0000000..005d5a9
+index 0000000..24f3479
 --- /dev/null
 +++ b/lib/rubygems/commands/nix_command.rb
-@@ -0,0 +1,226 @@
+@@ -0,0 +1,229 @@
 +require 'net/http'
 +require 'rubygems/command'
 +require 'rubygems/doc_manager'
@@ -102,7 +103,7 @@ index 0000000..005d5a9
 +          raise Gem::CommandLineError, "could'nt parse arg. expected: name or name-version"
 +        end
 +
-+        print "adding gem_name\n"
++        puts "adding #{gem_name}\n"
 +
 +        adddep(Gem::Dependency.new gem_name, version)
 +      }
@@ -183,8 +184,8 @@ index 0000000..005d5a9
 +    return if @seen[full_name]
 +    @seen[full_name] = true # there maybe circular dependencies. thus mark this gem seen as early as possible
 +
-+    # distinguish runtime / buildtime deps? (TODO)
-+    deps = gem[0].dependencies
++    # development deps can't be found. Some are old. Thus only add rutime dependencies
++    deps = gem[0].dependencies.find_all { |d| d.type == :runtime }
 +
 +    print " total deps of #{full_name}: #{deps.length}\n"
 +
@@ -227,13 +228,16 @@ index 0000000..005d5a9
 +
 +    if cash[src].nil? then
 +      tmp="/tmp/ruby-gems-nix-tmp-file"
-+      raise Gem::DependencyError("could'nt nix-prefetch  #{src}") \
-+	if (not system("nix-prefetch-url #{src.gsub(/([:= `$;])/,'\\\\\1')} > #{tmp} 2>/dev/null")) || $? != 0
-+      file = File.new(tmp)
-+      hash = file.readlines().first().split("\n")[0] # remove trailing \n
-+      file.close()
-+      File.delete(tmp)
-+      cash[src] = hash
++      system("nix-prefetch-url #{src.gsub(/([:= `$;])/,'\\\\\1')} > #{tmp} 2>/dev/null")
++      if $? == 0
++        file = File.new(tmp)
++        hash = file.readlines().first().split("\n")[0] # remove trailing \n
++        file.close()
++        File.delete(tmp)
++        cash[src] = hash
++      else
++        cash[src] = "no hash"
++      end
 +
 +      File.open(cashfile, "w+") do |f| Marshal.dump(cash, f) end
 +    end
@@ -242,3 +246,22 @@ index 0000000..005d5a9
 +  end
 +
 +end
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index d1ef3cb..bf15652 100755
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -545,6 +545,13 @@ Results logged to #{File.join(Dir.pwd, 'gem_make.out')}
+ 
+       say path if Gem.configuration.really_verbose
+     end
++
++    if !ENV['NIX_POST_EXTRACT_FILES_HOOK'].nil?
++      print "\nrunning NIX_POST_EXTRACT_FILES_HOOK #{ENV['NIX_POST_EXTRACT_FILES_HOOK']} #{@gem_dir}\n"
++      print `#{ENV['NIX_POST_EXTRACT_FILES_HOOK']} #{@gem_dir}`
++      print "\nrunning NIX_POST_EXTRACT_FILES_HOOK done\n"
++    end
++
+   end
+ 
+   ##
diff --git a/pkgs/development/interpreters/ruby/gems.nix b/pkgs/development/interpreters/ruby/gems.nix
index b2a2eb3062aa..cf8232d5ffe2 100644
--- a/pkgs/development/interpreters/ruby/gems.nix
+++ b/pkgs/development/interpreters/ruby/gems.nix
@@ -4,22 +4,24 @@ rec {
   # some packages (eg ruby-debug) still require 1.8. So let's stick to that for
   # now if nobody has different requirements
 
-  version = "1.3.4";
+  version = "1.3.5";
   src = fetchurl {
-    url = "http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz";
-    sha256 = "1z5vvwdf7cwiq669amfxzqd88bn576yq6d9c5c6c92fm9sib1d0y";
+    url = "http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz";
+    sha256 = "1b26fn9kmyd6394m1gqppi10xyf1hac85lvsynsxzpjlmv0qr4n0";
   };
 
+
   buildInputs = [ruby makeWrapper];
   configureFlags = [];
 
   doInstall = fullDepEntry (''
     ruby setup.rb --prefix=$out/
     wrapProgram $out/bin/gem --prefix RUBYLIB : $out/lib:$out/lib
+    find $out -type f -name "*.rb" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
   '') ["minInit" "addInputs" "doUnpack" "defEnsureDir"];
 
   /* doConfigure should be specified separately */
-  phaseNames = ["doInstall"];
+  phaseNames = ["doPatch" "doInstall"];
       
   name = "rubygems-" + version;
   meta = {
diff --git a/pkgs/development/interpreters/ruby/libs.nix b/pkgs/development/interpreters/ruby/libs.nix
index ecab59176bf7..1b135b2b747b 100644
--- a/pkgs/development/interpreters/ruby/libs.nix
+++ b/pkgs/development/interpreters/ruby/libs.nix
@@ -15,26 +15,69 @@
 {pkgs, stdenv}:
 let libs =
   let 
-    inherit (pkgs) fetchurl;
+    inherit (pkgs) fetchurl sourceFromHead writeScript makeWrapper;
     ruby = pkgs.ruby; # select ruby version here
     rubygems = pkgs.rubygemsFun ruby; # for bootstrapping
     inherit (pkgs.lib) mergeAttrsByFuncDefaults optional;
     inherit (builtins) hasAttr getAttr;
 
+    patchUsrBinEnv = writeScript "path-usr-bin-env" ''
+      #!/bin/sh
+      set -x
+      echo "==================="
+      find "$1" -type f -name "*.rb" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
+      find "$1" -type f -name "*.mk" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
+    '';
+
     # these settings are merged into the automatically generated settings
     # either the nameNoVersion or name must match
     patches = {
       sup = {
-        buildInputs = [ pkgs.ncurses libs.rubygems_update ];
+        buildInputs = [ pkgs.ncurses pkgs.xapianBindings ];
       };
       ncurses = { buildInputs = [ pkgs.ncurses ]; };
       nokogiri = {
-      
         buildFlags=["--with-xml2-dir=${pkgs.libxml2} --with-xml2-include=${pkgs.libxml2}/include/libxml2"
-                    "--with-xslt-dir=${pkgs.libxslt}" ]; };
+                    "--with-xslt-dir=${pkgs.libxslt}" ];
+      };
+
+      gemcutter = {
+        propagatedBuildInputs = [ libs.rubygems_update ];
+      };
+
+      ffi = {
+        postUnpack = "onetuh";
+        propagatedBuildInputs = [ libs.rake  libs.rubygems_update ];
+        buildFlags=["--with-ffi-dir=${pkgs.libffi}"];
+        NIX_POST_EXTRACT_FILES_HOOK = patchUsrBinEnv;
+      };
+
+      rake = {
+        propagatedBuildInputs = [ libs.rubygems_update ];
+      };
+ 
       rubygems_update = {
+        # gems is using --env-shebang by default
+        # replace env lines by $out/../bin/env
         postInstall = ''
-          cd $out/gems/*; patch -p 1 < ${./gem_nix_command.patch}; echo
+          cd $out/gems/*;
+          patch -p 1 < ${./gem_nix_command.patch}; echo
+          find $out -type f -name "*.rb" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
+        '';
+      };
+
+      xrefresh_server =
+      let patch = fetchurl {
+          url = "http://mawercer.de/~nix/xrefresh.diff.gz";
+          sha256 = "1f7bnmn1pgkmkml0ms15m5lx880hq2sxy7vsddb3sbzm7n1yyicq";
+        };
+      in {
+        propagatedBuildInputs = [ libs.rb_inotify libs.rubygems_update ];
+
+        # monitor implementation for Linux
+        postInstall = ''
+          cd $out/gems/*;
+          cat ${patch} | gunzip | patch -p 1;
         '';
       };
     };
@@ -42,19 +85,20 @@ let libs =
     rubyDerivation = args :
       let completeArgs = (mergeAttrsByFuncDefaults 
           ([{
-            buildInputs = [rubygems pkgs.makeWrapper];
+            buildInputs = [rubygems ruby pkgs.makeWrapper];
             unpackPhase = ":";
             configurePhase=":";
             bulidPhase=":";
+
             # TODO add some abstraction for this kind of env path concatenation. It's used multiple times
             installPhase = ''
               ensureDir "$out/nix-support"
               export HOME=$TMP/home; mkdir "$HOME"
 
-              gem install -E -i "$out" "$src" -- $buildFlags
+              gem install --ignore-dependencies --env-shebang -E -i "$out" "$src" -- $buildFlags
               rm -fr $out/cache # don't keep the .gem file here
 
-              THIS_RUBY_LIB=$out/gems/$name/lib
+              THIS_RUBY_LIB=$(echo $out/gems/*/lib)
               THIS_GEM_PATH=$out
 
               cat >> $out/nix-support/setup-hook << EOF 
@@ -67,24 +111,36 @@ let libs =
                 done
                 GEM_PATH_HASH["$THIS_GEM_PATH"]=
                 for path in \''${!GEM_PATH_HASH[@]}; do
-                  export GEM_PATH=\''${GEM_PATH_HASH}\''${GEM_PATH:+:}\$path
+                  export GEM_PATH=\''${GEM_PATH}\''${GEM_PATH:+:}\$path
                 done
               EOF
               . $out/nix-support/setup-hook
+
+              for prog in $out/bin/*; do
+                wrapProgram "$prog" \
+                  --prefix RUBYLIB : "$RUBYLIB" \
+                  --prefix GEM_PATH : "$GEM_PATH" \
+                  --set RUBYOPT 'rubygems'
+              done
+
               for prog in $out/gems/*/bin/*; do
+                [ -e "$out/bin/$(basename $prog)" ] && continue || true
                 sed -i '1s@.*@#!  ${ruby}/bin/ruby@' "$prog"
                 t="$out/bin/$(basename "$prog")"
                 cat >> "$t" << EOF
               #!/bin/sh
               export GEM_PATH=$GEM_PATH:\$GEM_PATH
               #export RUBYLIB=$RUBYLIB:\$RUBYLIB
-              exec ruby $prog "\$@"
+              exec $(type -p ruby) $prog "\$@"
               EOF
                 chmod +x "$t"
               done
 
+
               runHook postInstall
             '';
+
+
           } args ]
             ++ optional (hasAttr args.name patches) (getAttr args.name patches)
             ++ optional (hasAttr args.nameNoVersion patches) (getAttr args.nameNoVersion patches)
@@ -93,452 +149,502 @@ let libs =
   rec {
 
   # ================ START automatically generated code ================
-
-           # WARNING: automatically generated CODE
-           # This section has been generated by
-           # $ gem nix sup chronic rubygems-update
-           # both rubygems (all-packages.nix) and rubygems_update are patched
-           # adding the nix command
-        
-    rubygems_update_1_3_4 = rubyDerivation {
-       name = "ruby-rubygems-update-1.3.4"; # full_name
-       nameNoVersion = "rubygems_update";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rubygems-update-1.3.4.gem";
-         sha256 = "1y7svhxpr1bfzdpwlaqymm71sbvbhyf3yyifnxadkwd0zqp3chqp";
-       };
-       meta = {
-         homepage = "http://rubygems.rubyforge.org";
-         license = []; # one of ?
-         description = "RubyGems is a package management framework for Ruby  This gem is an update for the RubyGems software.  You must have an i"; # cut to 120 chars
-         longDescription = "RubyGems is a package management framework for Ruby.
-
-  This gem is an update for the RubyGems software.  You must have an
-  installation of RubyGems before this update can be applied.
-  ";
-       };
-    };
-
-    rexical_1_0_4 = rubyDerivation {
-       name = "ruby-rexical-1.0.4"; # full_name
-       nameNoVersion = "rexical";
-       propagatedBuildInputs = [ hoe_2_3_2 ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rexical-1.0.4.gem";
-         sha256 = "1jfhrlnilb422jvhlbc6dqs25ba45hb2wz5yxdpk27yb0dn9ihid";
-       };
-       meta = {
-         homepage = "http://github.com/tenderlove/rexical/tree/master";
-         license = []; # one of ?
-         description = "Rexical is a lexical scanner generator It is written in Ruby itself, and generates Ruby program. It is designed for use w"; # cut to 120 chars
-         longDescription = "Rexical is a lexical scanner generator.
-  It is written in Ruby itself, and generates Ruby program.
-  It is designed for use with Racc.";
-       };
-    };
-
-    ferret_0_11_6 = rubyDerivation {
-       name = "ruby-ferret-0.11.6"; # full_name
-       nameNoVersion = "ferret";
-       propagatedBuildInputs = [ rake_0_8_7 ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/ferret-0.11.6.gem";
-         sha256 = "0q0zdrmfm41ijf1n19s85vg34b1a558x5cnwmbb8fc8kzxklzbih";
-       };
-       meta = {
-         homepage = "http://ferret.davebalmain.com/trac";
-         license = []; # one of ?
-         description = "Ferret is a port of the Java Lucene project[...]";
-         longDescription = "Ferret is a port of the Java Lucene project. It is a powerful indexing and search library.";
-       };
-    };
-
-    rake_0_8_7 = rubyDerivation {
-       name = "ruby-rake-0.8.7"; # full_name
-       nameNoVersion = "rake";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rake-0.8.7.gem";
-         sha256 = "03z1zm7xwl2r9v945ambwbd9sn2smbi34xldmac7qjcmsvd7pcqh";
-       };
-       meta = {
-         homepage = "http://rake.rubyforge.org";
-         license = []; # one of ?
-         description = "Rake is a Make-like program implemented in Ruby[...]";
-         longDescription = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.";
-       };
-    };
-
-    racc_1_4_6 = rubyDerivation {
-       name = "ruby-racc-1.4.6"; # full_name
-       nameNoVersion = "racc";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/racc-1.4.6.gem";
-         sha256 = "0y43s36bbn96pksf7dbpgjyyd9qsyyn77cl7hnfjwldhfvbfcxsq";
-       };
-       meta = {
-         homepage = "http://racc.rubyforge.org/";
-         license = []; # one of ?
-         description = "Racc is a LALR(1) parser generator[...]";
-         longDescription = "Racc is a LALR(1) parser generator. It is written in Ruby itself, and generates Ruby program.";
-       };
-    };
-
-    chronic_0_2_3 = rubyDerivation {
-       name = "ruby-chronic-0.2.3"; # full_name
-       nameNoVersion = "chronic";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/chronic-0.2.3.gem";
-         sha256 = "0gm4i9iwpvsk07nzvy8fmyad4y7i284vvdrxrlbgb23lr17qpl17";
-       };
-       meta = {
-         homepage = "	http://chronic.rubyforge.org/";
-         license = []; # one of ?
-         description = "Chronic is a natural language date/time parser written in pure Ruby[...]";
-         longDescription = "Chronic is a natural language date/time parser written in pure Ruby. See below for the wide variety of formats Chronic will parse.";
-       };
-    };
-
-    nokogiri_1_3_2 = rubyDerivation {
-       name = "ruby-nokogiri-1.3.2"; # full_name
-       nameNoVersion = "nokogiri";
-       propagatedBuildInputs = [ racc_1_4_6 rexical_1_0_4 rake_compiler_0_5_0  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/nokogiri-1.3.2.gem";
-         sha256 = "1j5w39nriyw8ly1pzn7giw6wd9r5wclj4r1933z5ximss7l7ih15";
-       };
-       meta = {
-         homepage = "http://nokogiri.org/";
-         license = []; # one of ?
-         description = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser many features is the ability to search documents via XPath or"; # cut to 120 chars
-         longDescription = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser.  Among Nokogiri's
-  many features is the ability to search documents via XPath or CSS3 selectors.
-
-  XML is like violence - if it doesn&#8217;t solve your problems, you are not using
-  enough of it.";
-       };
-    };
-
-    archive_tar_minitar_0_5_2 = rubyDerivation {
-       name = "ruby-archive-tar-minitar-0.5.2"; # full_name
-       nameNoVersion = "archive_tar_minitar";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/archive-tar-minitar-0.5.2.gem";
-         sha256 = "1j666713r3cc3wb0042x0wcmq2v11vwwy5pcaayy5f0lnd26iqig";
-       };
-       meta = {
-         homepage = "http://rubyforge.org/projects/ruwiki/";
-         license = []; # one of ?
-         description = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1)"; # cut to 120 chars
-         longDescription = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1) archive files. The implementation is based heavily on Mauricio Ferna'ndez's implementation in rpa-base, but has been reorganised to promote reuse in other projects.";
-       };
-    };
-
-    rubyforge_1_0_3 = rubyDerivation {
-       name = "ruby-rubyforge-1.0.3"; # full_name
-       nameNoVersion = "rubyforge";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rubyforge-1.0.3.gem";
-         sha256 = "0pwhb8mrnmcr5yybh13csfn658s1r1y978wj5m3mn85cbvwrrkyz";
-       };
-       meta = {
-         homepage = "http://codeforpeople.rubyforge.org/rubyforge/";
-         license = []; # one of ?
-         description = "A script which automates a limited set of rubyforge operations[...]";
-         longDescription = "A script which automates a limited set of rubyforge operations.  * Run 'rubyforge help' for complete usage. * Setup: For first time users AND upgrades to 0.4.0: * rubyforge setup (deletes your username and password, so run sparingly!) * edit ~/.rubyforge/user-config.yml * rubyforge config * For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest. * Don't forget to login!  logging in will store a cookie in your .rubyforge directory which expires after a time.  always run the login command before any operation that requires authentication, such as uploading a package.";
-       };
-    };
-
-    ncurses_0_9_1 = rubyDerivation {
-       name = "ruby-ncurses-0.9.1"; # full_name
-       nameNoVersion = "ncurses";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/ncurses-0.9.1.gem";
-         sha256 = "18qxp33imgrp337p7zrk0c008ydw08g73x1gxiqclhgvyqxa42v3";
-       };
-       meta = {
-         homepage = "http://ncurses-ruby.berlios.de/";
-         license = []; # one of ?
-         description = "[...]";
-         longDescription = "";
-       };
-    };
-
-    fastthread_1_0_7 = rubyDerivation {
-       name = "ruby-fastthread-1.0.7"; # full_name
-       nameNoVersion = "fastthread";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/fastthread-1.0.7.gem";
-         sha256 = "003ngap8rmwsl4bvf44hz8q4ajm9d0sbn38pm28dajng3pm8q6mx";
-       };
-       meta = {
-         homepage = "";
-         license = []; # one of ?
-         description = "Optimized replacement for thread[...]";
-         longDescription = "Optimized replacement for thread.rb primitives";
-       };
-    };
-
-    hoe_2_3_2 = rubyDerivation {
-       name = "ruby-hoe-2.3.2"; # full_name
-       nameNoVersion = "hoe";
-       propagatedBuildInputs = [   ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/hoe-2.3.2.gem";
-         sha256 = "1asip0l73cp6xxn5dx4vxzsq3qlw5asdnj6jr0cs00nf8a5k341s";
-       };
-       meta = {
-         homepage = "http://rubyforge.org/projects/seattlerb/";
-         license = []; # one of ?
-         description = "Hoe is a rake/rubygems helper for project Rakefiles rubygems and includes a dynamic plug-in system allowing for easy exte"; # cut to 120 chars
-         longDescription = "Hoe is a rake/rubygems helper for project Rakefiles. It helps generate
-  rubygems and includes a dynamic plug-in system allowing for easy
-  extensibility. Hoe ships with plug-ins for all your usual project
-  tasks including rdoc generation, testing, packaging, and deployment.
-
-  Plug-ins Provided:
-
-  * Hoe::Clean
-  * Hoe::Debug
-  * Hoe::Deps
-  * Hoe::Flay
-  * Hoe::Flog
-  * Hoe::Inline
-  * Hoe::Package
-  * Hoe::Publish
-  * Hoe::RCov
-  * Hoe::Signing
-  * Hoe::Test
-
-  See class rdoc for help. Hint: ri Hoe";
-       };
-    };
-
-    rake_compiler_0_5_0 = rubyDerivation {
-       name = "ruby-rake-compiler-0.5.0"; # full_name
-       nameNoVersion = "rake_compiler";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rake-compiler-0.5.0.gem";
-         sha256 = "03l6hgyv9z2bc1p16c2mai5n1ylhzcnw053x0x0nc94p4297m2jv";
-       };
-       meta = {
-         homepage = "http://github.com/luislavena/rake-compiler";
-         license = []; # one of ?
-         description = "Provide a standard and simplified way to build and package Ruby C extensions using Rake as glue[...]";
-         longDescription = "Provide a standard and simplified way to build and package
-  Ruby C extensions using Rake as glue.";
-       };
-    };
-
-    lockfile_1_4_3 = rubyDerivation {
-       name = "ruby-lockfile-1.4.3"; # full_name
-       nameNoVersion = "lockfile";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/lockfile-1.4.3.gem";
-         sha256 = "0cxbyvxr3s5xsx85yghcs69d4lwwj0pg5la5cz2fp12hkk2szab3";
-       };
-       meta = {
-         homepage = "http://codeforpeople.com/lib/ruby/lockfile/";
-         license = []; # one of ?
-         description = "[...]";
-         longDescription = "";
-       };
-    };
-
-    locale_2_0_4 = rubyDerivation {
-       name = "ruby-locale-2.0.4"; # full_name
-       nameNoVersion = "locale";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/locale-2.0.4.gem";
-         sha256 = "1fy0bsrxmskmsw3wrl2dis57rgs1jr1dmlp3xm9z8w1phaqh3c8v";
-       };
-       meta = {
-         homepage = "http://locale.rubyforge.org/";
-         license = []; # one of ?
-         description = "Ruby-Locale is the pure ruby library which provides basic APIs for localization[...]";
-         longDescription = "Ruby-Locale is the pure ruby library which provides basic APIs for localization.";
-       };
-    };
-
-    rcov_0_8_1_2_0 = rubyDerivation {
-       name = "ruby-rcov-0.8.1.2.0"; # full_name
-       nameNoVersion = "rcov";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rcov-0.8.1.2.0.gem";
-         sha256 = "0mbm0n48yvgiibyvdc3gn4h70c82pn7z3hns9jinak7hyfmb5q5p";
-       };
-       meta = {
-         homepage = "http://eigenclass.org/hiki.rb?rcov";
-         license = []; # one of ?
-         description = "rcov is a code coverage tool for Ruby[...]";
-         longDescription = "rcov is a code coverage tool for Ruby. It is commonly used for viewing overall test unit coverage of target code.  It features fast execution (20-300 times faster than previous tools), multiple analysis modes, XHTML and several kinds of text reports, easy automation with Rake via a RcovTask, fairly accurate coverage information through code linkage inference using simple heuristics, colorblind-friendliness...";
-       };
-    };
-
-    echoe_3_1_1 = rubyDerivation {
-       name = "ruby-echoe-3.1.1"; # full_name
-       nameNoVersion = "echoe";
-       propagatedBuildInputs = [ rubyforge_1_0_3  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/echoe-3.1.1.gem";
-         sha256 = "1vy4jc8j8fq89r7fg2x37ybagghpw82qbqivc9pjk5fwyrxcvqha";
-       };
-       meta = {
-         homepage = "http://blog.evanweaver.com/files/doc/fauna/echoe/";
-         license = []; # one of ?
-         description = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment[...]";
-         longDescription = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.";
-       };
-    };
-
-    mime_types_1_16 = rubyDerivation {
-       name = "ruby-mime-types-1.16"; # full_name
-       nameNoVersion = "mime_types";
-       propagatedBuildInputs = [ archive_tar_minitar_0_5_2 nokogiri_1_3_2 rcov_0_8_1_2_0  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/mime-types-1.16.gem";
-         sha256 = "1slp7g2xv9ygcapqv13qgh3g6ipx5k5c3imb5sdyh0b9ip5s34y3";
-       };
-       meta = {
-         homepage = "http://mime-types.rubyforge.org/";
-         license = []; # one of ?
-         description = "MIME::Types for Ruby originally based on and synchronized with MIME::Types for Perl by Mark Overmeer, copyright 2001 - 20"; # cut to 120 chars
-         longDescription = "MIME::Types for Ruby originally based on and synchronized with MIME::Types for Perl by Mark Overmeer, copyright 2001 - 2009. As of version 1.15, the data format for the MIME::Type list has changed and the synchronization will no longer happen.";
-       };
-    };
-
-    net_ssh_2_0_11 = rubyDerivation {
-       name = "ruby-net-ssh-2.0.11"; # full_name
-       nameNoVersion = "net_ssh";
-       propagatedBuildInputs = [ echoe_3_1_1 ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/net-ssh-2.0.11.gem";
-         sha256 = "1j1mpnhpnb0d9l3jfk7g02syqjanc51lm076llzmjydy30x2n2f7";
-       };
-       meta = {
-         homepage = "http://net-ssh.rubyforge.org/ssh";
-         license = []; # one of ?
-         description = "a pure-Ruby implementation of the SSH2 client protocol[...]";
-         longDescription = "a pure-Ruby implementation of the SSH2 client protocol";
-       };
-    };
-
-    highline_1_5_1 = rubyDerivation {
-       name = "ruby-highline-1.5.1"; # full_name
-       nameNoVersion = "highline";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/highline-1.5.1.gem";
-         sha256 = "0sawb011sc1i5glr80a4iflr0vvn3s5c97a4jmrhj3palv4df19i";
-       };
-       meta = {
-         homepage = "http://highline.rubyforge.org";
-         license = []; # one of ?
-         description = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces[...]";
-         longDescription = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.";
-       };
-    };
-
-    gettext_2_0_4 = rubyDerivation {
-       name = "ruby-gettext-2.0.4"; # full_name
-       nameNoVersion = "gettext";
-       propagatedBuildInputs = [ locale_2_0_4 ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/gettext-2.0.4.gem";
-         sha256 = "1hdj91qg5858ss3wsdjbi4yxmwixqin5vv550fkvf4514yyc9gk0";
-       };
-       meta = {
-         homepage = "http://gettext.rubyforge.org/";
-         license = []; # one of ?
-         description = "Ruby-GetText-Package is a GNU GetText-like program for Ruby[...]";
-         longDescription = "Ruby-GetText-Package is a GNU GetText-like program for Ruby. The catalog file(po-file) is same format with GNU GetText. So you can use GNU GetText tools for maintaining.";
-       };
-    };
-
-    sup_0_8_1 = rubyDerivation {
-       name = "ruby-sup-0.8.1"; # full_name
-       nameNoVersion = "sup";
-       propagatedBuildInputs = [ ferret_0_11_6 ncurses_0_9_1 rmail_1_0_0 highline_1_5_1 net_ssh_2_0_11 trollop_1_14 lockfile_1_4_3 mime_types_1_16 gettext_2_0_4 fastthread_1_0_7 ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/sup-0.8.1.gem";
-         sha256 = "0q7s63s43mf35j0372g3qpfhsnsys4fbsb8xkshpwrjsd4lb90l2";
-       };
-       meta = {
-         homepage = "http://sup.rubyforge.org/";
-         license = []; # one of ?
-         description = "Sup is a console-based email client for people with a lot of email[...]";
-         longDescription = "Sup is a console-based email client for people with a lot of email. It supports tagging, very fast full-text search, automatic contact-list management, and more. If you're the type of person who treats email as an extension of your long-term memory, Sup is for you.  Sup makes it easy to: - Handle massive amounts of email.  - Mix email from different sources: mbox files (even across different machines), Maildir directories, IMAP folders, POP accounts, and GMail accounts.  - Instantaneously search over your entire email collection. Search over body text, or use a query language to combine search predicates in any way.  - Handle multiple accounts. Replying to email sent to a particular account will use the correct SMTP server, signature, and from address.  - Add custom code to handle certain types of messages or to handle certain types of text within messages.  - Organize email with user-defined labels, automatically track recent contacts, and much more!  The goal of Sup is to become the email client of choice for nerds everywhere.";
-       };
-    };
-
-    trollop_1_14 = rubyDerivation {
-       name = "ruby-trollop-1.14"; # full_name
-       nameNoVersion = "trollop";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/trollop-1.14.gem";
-         sha256 = "15jsdlnq6fj3q3g47qswi73gx91rw1yvssi8zkwf6svkd55ri3f7";
-       };
-       meta = {
-         homepage = "http://trollop.rubyforge.org";
-         license = []; # one of ?
-         description = "Documentation quickstart: See Trollop::options (for some reason rdoc isn't linking that; it's in the top right of the scr"; # cut to 120 chars
-         longDescription = "Documentation quickstart: See Trollop::options (for some reason rdoc isn't linking that; it's in the top right of the screen if you're browsing online) and then Trollop::Parser#opt. Also see the examples at http://trollop.rubyforge.org/.  == DESCRIPTION  == REQUIREMENTS  * A burning desire to write less code.  == INSTALL  * gem install trollop  == LICENSE  Copyright (c) 2008 William Morgan. Trollop is distributed under the same terms as Ruby.";
-       };
-    };
-
-    rmail_1_0_0 = rubyDerivation {
-       name = "ruby-rmail-1.0.0"; # full_name
-       nameNoVersion = "rmail";
-       propagatedBuildInputs = [  ];
-       src = fetchurl {
-         url = "http://gems.rubyforge.org/gems/rmail-1.0.0.gem";
-         sha256 = "0nsg7yda1gdwa96j4hlrp2s0m06vrhcc4zy5mbq7gxmlmwf9yixp";
-       };
-       meta = {
-         homepage = "http://www.rfc20.org/rubymail";
-         license = []; # one of ?
-         description = "RMail is a lightweight mail library containing various utility classes and modules that allow ruby scripts to parse, modi"; # cut to 120 chars
-         longDescription = "RMail is a lightweight mail library containing various utility classes and modules that allow ruby scripts to parse, modify, and generate MIME mail messages.";
-       };
-    };
+         # WARNING: automatically generated CODE
+         # This section has been generated by gem nix sup chronic rubygems-update xrefresh-server rb-inotify jeweler
+         # the gem nix command has been added by a nix patch to ruby gems
+      
+  rake_0_8_7 = rubyDerivation {
+     name = "ruby-rake-0.8.7"; # full_name
+     nameNoVersion = "rake";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/rake-0.8.7.gem";
+       sha256 = "03z1zm7xwl2r9v945ambwbd9sn2smbi34xldmac7qjcmsvd7pcqh";
+     };
+     meta = {
+       homepage = "http://rake.rubyforge.org";
+       license = []; # one of ?
+       description = "Rake is a Make-like program implemented in Ruby[...]";
+       longDescription = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.";
+     };
+  };
+
+  ferret_0_11_6 = rubyDerivation {
+     name = "ruby-ferret-0.11.6"; # full_name
+     nameNoVersion = "ferret";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/ferret-0.11.6.gem";
+       sha256 = "0q0zdrmfm41ijf1n19s85vg34b1a558x5cnwmbb8fc8kzxklzbih";
+     };
+     meta = {
+       homepage = "http://ferret.davebalmain.com/trac";
+       license = []; # one of ?
+       description = "Ferret is a port of the Java Lucene project[...]";
+       longDescription = "Ferret is a port of the Java Lucene project. It is a powerful indexing and search library.";
+     };
+  };
+
+  git_1_2_5 = rubyDerivation {
+     name = "ruby-git-1.2.5"; # full_name
+     nameNoVersion = "git";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/git-1.2.5.gem";
+       sha256 = "19dy8sakv4x7pnvjddqjyd4j74cji14wikhz95iaqqrc9n4z43hk";
+     };
+     meta = {
+       homepage = "http://github.com/schacon/ruby-git";
+       license = []; # one of ?
+       description = "[...]";
+       longDescription = "";
+     };
+  };
+
+  rubygems_update_1_3_5 = rubyDerivation {
+     name = "ruby-rubygems-update-1.3.5"; # full_name
+     nameNoVersion = "rubygems_update";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/rubygems-update-1.3.5.gem";
+       sha256 = "1idzrbnl24ldxz8dmn8lz466avsn1w0rbc35lyp92fd3ar2b23qj";
+     };
+     meta = {
+       homepage = "http://rubygems.rubyforge.org/";
+       license = []; # one of ?
+       description = "RubyGems is a package management framework for Ruby  This gem is an update for the RubyGems software. You must have an in"; # cut to 120 chars
+       longDescription = "RubyGems is a package management framework for Ruby.
+
+This gem is an update for the RubyGems software. You must have an
+installation of RubyGems before this update can be applied.
+
+See Gem for information on RubyGems (or `ri Gem`)
+
+To upgrade to the latest RubyGems, run:
+
+  $ gem install --system  # you might need to be an administrator or root
+
+NOTE:  RubyGems 1.1 and 1.2 have problems upgrading when there is no
+rubygems-update installed.  You will need to use the following instructions
+if you see &quot;Nothing to update&quot;.
+
+If you have an older version of RubyGems installed, then you can still
+do it in two steps:
+
+  $ gem install rubygems-update  # again, might need to be admin/root
+  $ update_rubygems              # ... here too
+
+If you don't have any RubyGems install, there is still the pre-gem approach to
+getting software, doing it manually:
+
+1. Download from: http://rubyforge.org/frs/?group_id=126
+2. Unpack into a directory and cd there
+3. Install with: ruby setup.rb  # you may need admin/root privilege
+
+For more details and other options, see:
+
+  ruby setup.rb --help";
+     };
+  };
+
+  net_ssh_2_0_17 = rubyDerivation {
+     name = "ruby-net-ssh-2.0.17"; # full_name
+     nameNoVersion = "net_ssh";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/net-ssh-2.0.17.gem";
+       sha256 = "0qswvcmq91sfii3cfr6myws2ncch9l4yzd09070yn5a3wsx4i6r5";
+     };
+     meta = {
+       homepage = "http://rubyforge.org/projects/net-ssh/";
+       license = []; # one of ?
+       description = "Net::SSH: a pure-Ruby implementation of the SSH2 client protocol[...]";
+       longDescription = "Net::SSH: a pure-Ruby implementation of the SSH2 client protocol.";
+     };
+  };
+
+  rb_inotify_0_4_0 = rubyDerivation {
+     name = "ruby-rb-inotify-0.4.0"; # full_name
+     nameNoVersion = "rb_inotify";
+     propagatedBuildInputs = [ ffi_0_5_4 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/rb-inotify-0.4.0.gem";
+       sha256 = "17wanfs4jmp8c3sslb7a947ay9k78fhm1nls87cgpssmynpsmbvl";
+     };
+     meta = {
+       homepage = "http://github.com/nex3/rb-notify";
+       license = []; # one of ?
+       description = "A Ruby wrapper for Linux's inotify, using FFI[...]";
+       longDescription = "A Ruby wrapper for Linux's inotify, using FFI";
+     };
+  };
+
+  term_ansicolor_1_0_4 = rubyDerivation {
+     name = "ruby-term-ansicolor-1.0.4"; # full_name
+     nameNoVersion = "term_ansicolor";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/term-ansicolor-1.0.4.gem";
+       sha256 = "0pvyr3f0kk17nap1bm0myziskd8wn3kwba7zmp3zxks8icn0sa5j";
+     };
+     meta = {
+       homepage = "http://term-ansicolor.rubyforge.org";
+       license = []; # one of ?
+       description = "[...]";
+       longDescription = "";
+     };
+  };
+
+  chronic_0_2_3 = rubyDerivation {
+     name = "ruby-chronic-0.2.3"; # full_name
+     nameNoVersion = "chronic";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/chronic-0.2.3.gem";
+       sha256 = "0gm4i9iwpvsk07nzvy8fmyad4y7i284vvdrxrlbgb23lr17qpl17";
+     };
+     meta = {
+       homepage = "	http://chronic.rubyforge.org/";
+       license = []; # one of ?
+       description = "Chronic is a natural language date/time parser written in pure Ruby[...]";
+       longDescription = "Chronic is a natural language date/time parser written in pure Ruby. See below for the wide variety of formats Chronic will parse.";
+     };
+  };
+
+  ncurses_0_9_1 = rubyDerivation {
+     name = "ruby-ncurses-0.9.1"; # full_name
+     nameNoVersion = "ncurses";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/ncurses-0.9.1.gem";
+       sha256 = "0j9k3rfxglkivwnpdkbfk4acfnivfisyj8f0msf3zkid4hnj4r2h";
+     };
+     meta = {
+       homepage = "http://ncurses-ruby.berlios.de/";
+       license = []; # one of ?
+       description = "[...]";
+       longDescription = "";
+     };
+  };
+
+  ffi_0_5_4 = rubyDerivation {
+     name = "ruby-ffi-0.5.4"; # full_name
+     nameNoVersion = "ffi";
+     propagatedBuildInputs = [ rake_0_8_7 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/ffi-0.5.4.gem";
+       sha256 = "1kxa1ljcl1907kav400w43n9fdw535qr7klj06wx1bnyaq7bfnik";
+     };
+     meta = {
+       homepage = "http://wiki.github.com/ffi/ffi";
+       license = []; # one of ?
+       description = "Ruby-FFI is a ruby extension for programmatically loading dynamic libraries, binding functions within them, and calling t"; # cut to 120 chars
+       longDescription = "Ruby-FFI is a ruby extension for programmatically loading dynamic
+libraries, binding functions within them, and calling those functions
+from Ruby code. Moreover, a Ruby-FFI extension works without changes
+on Ruby and JRuby. Discover why should you write your next extension
+using Ruby-FFI here[http://wiki.github.com/ffi/ffi/why-use-ffi].";
+     };
+  };
+
+  fastthread_1_0_7 = rubyDerivation {
+     name = "ruby-fastthread-1.0.7"; # full_name
+     nameNoVersion = "fastthread";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/fastthread-1.0.7.gem";
+       sha256 = "003ngap8rmwsl4bvf44hz8q4ajm9d0sbn38pm28dajng3pm8q6mx";
+     };
+     meta = {
+       homepage = "";
+       license = []; # one of ?
+       description = "Optimized replacement for thread[...]";
+       longDescription = "Optimized replacement for thread.rb primitives";
+     };
+  };
+
+  gemcutter_0_3_0 = rubyDerivation {
+     name = "ruby-gemcutter-0.3.0"; # full_name
+     nameNoVersion = "gemcutter";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/gemcutter-0.3.0.gem";
+       sha256 = "07rm04lj5rb093gf1w87rzkj9gr1pkyd5frs716wn5gd4c1silik";
+     };
+     meta = {
+       homepage = "http://gemcutter.org";
+       license = []; # one of ?
+       description = "Adds several commands to RubyGems for managing gems and more on Gemcutter[...]";
+       longDescription = "Adds several commands to RubyGems for managing gems and more on Gemcutter.org.";
+     };
+  };
+
+  gettext_2_1_0 = rubyDerivation {
+     name = "ruby-gettext-2.1.0"; # full_name
+     nameNoVersion = "gettext";
+     propagatedBuildInputs = [ locale_2_0_5 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/gettext-2.1.0.gem";
+       sha256 = "17g048gp7gh3c311l5jw2sbanma2havj4yqhaaa50b3rx72y4xwz";
+     };
+     meta = {
+       homepage = "http://gettext.rubyforge.org/";
+       license = []; # one of ?
+       description = "        Ruby-GetText-Package is a GNU GetText-like program for Ruby         The catalog file(po-file) is same format with"; # cut to 120 chars
+       longDescription = "        Ruby-GetText-Package is a GNU GetText-like program for Ruby.
+        The catalog file(po-file) is same format with GNU GetText.
+        So you can use GNU GetText tools for maintaining.
+";
+     };
+  };
+
+  lockfile_1_4_3 = rubyDerivation {
+     name = "ruby-lockfile-1.4.3"; # full_name
+     nameNoVersion = "lockfile";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/lockfile-1.4.3.gem";
+       sha256 = "0cxbyvxr3s5xsx85yghcs69d4lwwj0pg5la5cz2fp12hkk2szab3";
+     };
+     meta = {
+       homepage = "http://codeforpeople.com/lib/ruby/lockfile/";
+       license = []; # one of ?
+       description = "[...]";
+       longDescription = "";
+     };
+  };
+
+  rubyforge_2_0_3 = rubyDerivation {
+     name = "ruby-rubyforge-2.0.3"; # full_name
+     nameNoVersion = "rubyforge";
+     propagatedBuildInputs = [ json_pure_1_2_0 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/rubyforge-2.0.3.gem";
+       sha256 = "1ck9hkad55dy25819v4gd1nmnpvcrb3i4np3hc03h1j6q8qpxg5p";
+     };
+     meta = {
+       homepage = "http://codeforpeople.rubyforge.org/rubyforge/";
+       license = []; # one of ?
+       description = "A script which automates a limited set of rubyforge operations  * Run 'rubyforge help' for complete usage. * Setup: For f"; # cut to 120 chars
+       longDescription = "A script which automates a limited set of rubyforge operations.
+
+* Run 'rubyforge help' for complete usage.
+* Setup: For first time users AND upgrades to 0.4.0:
+  * rubyforge setup (deletes your username and password, so run sparingly!)
+  * edit ~/.rubyforge/user-config.yml
+  * rubyforge config
+* For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest.";
+     };
+  };
+
+  xrefresh_server_0_3_0 = rubyDerivation {
+     name = "ruby-xrefresh-server-0.3.0"; # full_name
+     nameNoVersion = "xrefresh_server";
+     propagatedBuildInputs = [ json_1_2_0 term_ansicolor_1_0_4 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/xrefresh-server-0.3.0.gem";
+       sha256 = "1k80hadnmaxi8q8fw879xaj0ragy4bmqjqm7zjkv9bq8njb3i0c5";
+     };
+     meta = {
+       homepage = "http://github.com/darwin/xrefresh-server";
+       license = []; # one of ?
+       description = "XRefresh is browser refresh automation for web developers[...]";
+       longDescription = "XRefresh is browser refresh automation for web developers";
+     };
+  };
+
+  locale_2_0_5 = rubyDerivation {
+     name = "ruby-locale-2.0.5"; # full_name
+     nameNoVersion = "locale";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/locale-2.0.5.gem";
+       sha256 = "007yx9rx52as4ykkcm1aw29vgm6rk5xz8012814ynhlp1i0z1fi8";
+     };
+     meta = {
+       homepage = "http://locale.rubyforge.org/";
+       license = []; # one of ?
+       description = "    Ruby-Locale is the pure ruby library which provides basic APIs for localization [...]";
+       longDescription = "    Ruby-Locale is the pure ruby library which provides basic APIs for localization.
+";
+     };
+  };
+
+  mime_types_1_16 = rubyDerivation {
+     name = "ruby-mime-types-1.16"; # full_name
+     nameNoVersion = "mime_types";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/mime-types-1.16.gem";
+       sha256 = "1slp7g2xv9ygcapqv13qgh3g6ipx5k5c3imb5sdyh0b9ip5s34y3";
+     };
+     meta = {
+       homepage = "http://mime-types.rubyforge.org/";
+       license = []; # one of ?
+       description = "MIME::Types for Ruby originally based on and synchronized with MIME::Types for Perl by Mark Overmeer, copyright 2001 - 20"; # cut to 120 chars
+       longDescription = "MIME::Types for Ruby originally based on and synchronized with MIME::Types for Perl by Mark Overmeer, copyright 2001 - 2009. As of version 1.15, the data format for the MIME::Type list has changed and the synchronization will no longer happen.";
+     };
+  };
+
+  highline_1_5_1 = rubyDerivation {
+     name = "ruby-highline-1.5.1"; # full_name
+     nameNoVersion = "highline";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/highline-1.5.1.gem";
+       sha256 = "0sawb011sc1i5glr80a4iflr0vvn3s5c97a4jmrhj3palv4df19i";
+     };
+     meta = {
+       homepage = "http://highline.rubyforge.org";
+       license = []; # one of ?
+       description = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces[...]";
+       longDescription = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.";
+     };
+  };
+
+  json_pure_1_2_0 = rubyDerivation {
+     name = "ruby-json_pure-1.2.0"; # full_name
+     nameNoVersion = "json_pure";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/json_pure-1.2.0.gem";
+       sha256 = "162lzzbadp62q1fjf5zyg45qly9pryjh7f6xhnf04zbjiq815pc5";
+     };
+     meta = {
+       homepage = "http://json.rubyforge.org";
+       license = []; # one of ?
+       description = "This is a JSON implementation in pure Ruby[...]";
+       longDescription = "This is a JSON implementation in pure Ruby.";
+     };
+  };
+
+  jeweler_1_4_0 = rubyDerivation {
+     name = "ruby-jeweler-1.4.0"; # full_name
+     nameNoVersion = "jeweler";
+     propagatedBuildInputs = [ git_1_2_5 rubyforge_2_0_3 gemcutter_0_3_0 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/jeweler-1.4.0.gem";
+       sha256 = "0hsz38wc37k1zzmy1jjvsqj6am14n410bbxk1dhq55cgapnwm3kb";
+     };
+     meta = {
+       homepage = "http://github.com/technicalpickles/jeweler";
+       license = []; # one of ?
+       description = "Simple and opinionated helper for creating Rubygem projects on GitHub[...]";
+       longDescription = "Simple and opinionated helper for creating Rubygem projects on GitHub";
+     };
+  };
+
+  json_1_2_0 = rubyDerivation {
+     name = "ruby-json-1.2.0"; # full_name
+     nameNoVersion = "json";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/json-1.2.0.gem";
+       sha256 = "0srfhr38g322l4lcnzsa6kzp64i9p24ai2bmh5wl0xx2g925b7n7";
+     };
+     meta = {
+       homepage = "http://json.rubyforge.org";
+       license = []; # one of ?
+       description = "This is a JSON implementation as a Ruby extension in C[...]";
+       longDescription = "This is a JSON implementation as a Ruby extension in C.";
+     };
+  };
+
+  sup_0_9_1 = rubyDerivation {
+     name = "ruby-sup-0.9.1"; # full_name
+     nameNoVersion = "sup";
+     propagatedBuildInputs = [ ferret_0_11_6 ncurses_0_9_1 rmail_1_0_0 highline_1_5_1 net_ssh_2_0_17 trollop_1_15 lockfile_1_4_3 mime_types_1_16 gettext_2_1_0 fastthread_1_0_7 ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/sup-0.9.1.gem";
+       sha256 = "0hifzcvfsbcyjszyyryfi60qiysn0i47f8jlwj3p7v7agxy5hm5a";
+     };
+     meta = {
+       homepage = "http://sup.rubyforge.org/";
+       license = []; # one of ?
+       description = "Sup is a console-based email client for people with a lot of email[...]";
+       longDescription = "Sup is a console-based email client for people with a lot of email. It supports tagging, very fast full-text search, automatic contact-list management, and more. If you're the type of person who treats email as an extension of your long-term memory, Sup is for you.  Sup makes it easy to: - Handle massive amounts of email.  - Mix email from different sources: mbox files (even across different machines), Maildir directories, IMAP folders, POP accounts, and GMail accounts.  - Instantaneously search over your entire email collection. Search over body text, or use a query language to combine search predicates in any way.  - Handle multiple accounts. Replying to email sent to a particular account will use the correct SMTP server, signature, and from address.  - Add custom code to handle certain types of messages or to handle certain types of text within messages.  - Organize email with user-defined labels, automatically track recent contacts, and much more!  The goal of Sup is to become the email client of choice for nerds everywhere.";
+     };
+  };
+
+  trollop_1_15 = rubyDerivation {
+     name = "ruby-trollop-1.15"; # full_name
+     nameNoVersion = "trollop";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/trollop-1.15.gem";
+       sha256 = "0xxd96xpnxmm4195qwawpjqgnsbzw4s70jf0wz32ynmya7flgdhk";
+     };
+     meta = {
+       homepage = "http://trollop.rubyforge.org";
+       license = []; # one of ?
+       description = "Documentation quickstart: See Trollop::options (for some reason rdoc isn't linking that; it's in the top right of the scr"; # cut to 120 chars
+       longDescription = "Documentation quickstart: See Trollop::options (for some reason rdoc isn't
+linking that; it's in the top right of the screen if you're browsing online)
+and then Trollop::Parser#opt. Also see the examples at
+http://trollop.rubyforge.org/.
+
+== DESCRIPTION
+
+== REQUIREMENTS
+
+* A burning desire to write less code.
+
+== INSTALL
+
+* gem install trollop
+
+== LICENSE
+
+Copyright (c) 2008--2009 William Morgan. Trollop is distributed under the same
+terms as Ruby.
+
+
+";
+     };
+  };
+
+  rmail_1_0_0 = rubyDerivation {
+     name = "ruby-rmail-1.0.0"; # full_name
+     nameNoVersion = "rmail";
+     propagatedBuildInputs = [  ];
+     src = fetchurl {
+       url = "http://gems.rubyforge.org/gems/rmail-1.0.0.gem";
+       sha256 = "0nsg7yda1gdwa96j4hlrp2s0m06vrhcc4zy5mbq7gxmlmwf9yixp";
+     };
+     meta = {
+       homepage = "http://www.rfc20.org/rubymail";
+       license = []; # one of ?
+       description = "RMail is a lightweight mail library containing various utility classes and modules that allow ruby scripts to parse, modi"; # cut to 120 chars
+       longDescription = "RMail is a lightweight mail library containing various utility classes and modules that allow ruby scripts to parse, modify, and generate MIME mail messages.";
+     };
+  };
 
 # aliases
-  rmail=rmail_1_0_0;
-  fastthread=fastthread_1_0_7;
-  highline=highline_1_5_1;
-  rake=rake_0_8_7;
-  rubygems_update=rubygems_update_1_3_4;
-  sup=sup_0_8_1;
-  mime_types=mime_types_1_16;
-  echoe=echoe_3_1_1;
-  rubyforge=rubyforge_1_0_3;
-  rake_compiler=rake_compiler_0_5_0;
-  ferret=ferret_0_11_6;
-  net_ssh=net_ssh_2_0_11;
-  rcov=rcov_0_8_1_2_0;
-  ncurses=ncurses_0_9_1;
-  trollop=trollop_1_14;
-  gettext=gettext_2_0_4;
-  archive_tar_minitar=archive_tar_minitar_0_5_2;
-  locale=locale_2_0_4;
-  hoe=hoe_2_3_2;
-  chronic=chronic_0_2_3;
-  racc=racc_1_4_6;
-  lockfile=lockfile_1_4_3;
-  nokogiri=nokogiri_1_3_2;
-  rexical=rexical_1_0_4;
+rmail=rmail_1_0_0;
+term_ansicolor=term_ansicolor_1_0_4;
+fastthread=fastthread_1_0_7;
+rb_inotify=rb_inotify_0_4_0;
+highline=highline_1_5_1;
+rubygems_update=rubygems_update_1_3_5;
+rake=rake_0_8_7;
+sup=sup_0_9_1;
+mime_types=mime_types_1_16;
+rubyforge=rubyforge_2_0_3;
+gemcutter=gemcutter_0_3_0;
+ferret=ferret_0_11_6;
+json=json_1_2_0;
+xrefresh_server=xrefresh_server_0_3_0;
+ncurses=ncurses_0_9_1;
+net_ssh=net_ssh_2_0_17;
+trollop=trollop_1_15;
+jeweler=jeweler_1_4_0;
+gettext=gettext_2_1_0;
+git=git_1_2_5;
+json_pure=json_pure_1_2_0;
+locale=locale_2_0_5;
+chronic=chronic_0_2_3;
+lockfile=lockfile_1_4_3;
+ffi=ffi_0_5_4;
 
   # ================ END automatically generated code ================
   }; in libs