diff --git a/pkgs-ng/applications/networking/browsers/firebird/builder.sh b/pkgs-ng/applications/networking/browsers/firebird/builder.sh
new file mode 100755
index 000000000000..36225b5760db
--- /dev/null
+++ b/pkgs-ng/applications/networking/browsers/firebird/builder.sh
@@ -0,0 +1,30 @@
+#! /bin/sh
+
+buildinputs="$pkgconfig $gtk $perl $zip $libIDL"
+. $stdenv/setup || exit 1
+
+tar xvfz $src || exit 1
+cd mozilla || exit 1
+
+cat > .mozconfig <<EOF
+export MOZ_PHOENIX=1
+mk_add_options MOZ_PHOENIX=1
+ac_add_options --enable-crypto
+ac_add_options --disable-tests
+ac_add_options --disable-debug
+ac_add_options --disable-mailnews
+ac_add_options --disable-composer
+ac_add_options --enable-optimize=-O2
+ac_add_options --disable-ldap
+ac_add_options --disable-mailnews
+ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
+ac_add_options --enable-xft
+ac_add_options --enable-swg
+ac_add_options --enable-strip
+ac_add_options --enable-default-toolkit=gtk2
+EOF
+echo "ac_add_options --prefix=$out" >> .mozconfig
+
+./configure || exit 1
+make -f client.mk build || exit 1
+make install || exit 1
diff --git a/pkgs-ng/applications/networking/browsers/firebird/default.fix b/pkgs-ng/applications/networking/browsers/firebird/default.fix
new file mode 100644
index 000000000000..b17b4a0e4731
--- /dev/null
+++ b/pkgs-ng/applications/networking/browsers/firebird/default.fix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, gtk, perl, zip, libIDL
+}:
+
+assert !isNull pkgconfig && !isNull gtk && !isNull perl
+  && !isNull zip && !isNull libIDL;
+
+assert libIDL.glib == gtk.glib;
+
+derivation {
+  name = "MozillaFirebird-0.7";
+  system = stdenv.system;
+
+  builder = ./builder.sh;
+  src = fetchurl {
+    url = ftp://ftp.mozilla.org/pub/mozilla.org/firebird/releases/0.7/MozillaFirebird-source-0.7.tar.gz;
+    md5 = "35112566a3dca5bdf363972056afc462";
+  };
+
+  stdenv = stdenv;
+  pkgconfig = pkgconfig;
+  gtk = gtk;
+  perl = perl;
+  zip = zip;
+  libIDL = libIDL;
+}
diff --git a/pkgs-ng/development/libraries/libIDL/builder.sh b/pkgs-ng/development/libraries/libIDL/builder.sh
new file mode 100755
index 000000000000..113dfef5a64f
--- /dev/null
+++ b/pkgs-ng/development/libraries/libIDL/builder.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+buildinputs="$pkgconfig $glib $lex $yacc"
+. $stdenv/setup || exit 1
+
+tar xvfj $src || exit 1
+cd libIDL-* || exit 1
+./configure --prefix=$out || exit 1
+make || exit 1
+make install || exit 1
+strip -S $out/lib/*.a || exit 1
diff --git a/pkgs-ng/development/libraries/libIDL/default.fix b/pkgs-ng/development/libraries/libIDL/default.fix
new file mode 100644
index 000000000000..79ef17dd6b84
--- /dev/null
+++ b/pkgs-ng/development/libraries/libIDL/default.fix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, pkgconfig, glib, lex, yacc}:
+
+assert !isNull pkgconfig && !isNull gtk && !isNull lex && !isNull yacc;
+
+derivation {
+  name = "libIDL-0.8.2";
+  system = stdenv.system;
+  builder = ./builder.sh;
+  src = fetchurl {
+    url = ftp://ftp.gnome.org/pub/gnome/sources/libIDL/0.8/libIDL-0.8.2.tar.bz2;
+    md5 = "a75d2dbf3a3c66b567047c94245f8b82";
+  };
+  stdenv = stdenv;
+  pkgconfig = pkgconfig;
+  glib = glib;
+  lex = lex;
+  yacc = yacc;
+}
diff --git a/pkgs-ng/system/all-packages-generic.fix b/pkgs-ng/system/all-packages-generic.fix
index be52870b0f8b..6f411aa5d9a6 100644
--- a/pkgs-ng/system/all-packages-generic.fix
+++ b/pkgs-ng/system/all-packages-generic.fix
@@ -54,6 +54,11 @@
     stdenv = stdenv;
   };
 
+  zip = (import ../tools/archivers/zip) {
+    fetchurl = fetchurl;
+    stdenv = stdenv;
+  };
+
   gzip = (import ../tools/compression/gzip) {
     fetchurl = fetchurl;
     stdenv = stdenv;
@@ -278,6 +283,14 @@
     glib = glib;
   };
 
+  libIDL = (import ../development/libraries/libIDL) {
+    fetchurl = fetchurl;
+    stdenv = stdenv;
+    pkgconfig = pkgconfig;
+    glib = glib;
+    lex = flex;
+    yacc = bison;
+  };
 
 
   ### SERVERS
@@ -347,4 +360,14 @@
     gdkpixbuf = gdkpixbuf;
   };
 
+  firebird = (import ../applications/networking/browsers/firebird) {
+    fetchurl = fetchurl;
+    stdenv = stdenv;
+    pkgconfig = pkgconfig;
+    gtk = gtk;
+    perl = perl;
+    zip = zip;
+    libIDL = libIDL;
+  };
+
 }
diff --git a/pkgs-ng/system/user-environment.fix b/pkgs-ng/system/user-environment.fix
index 87605c47a70b..a63c8ae29f7d 100644
--- a/pkgs-ng/system/user-environment.fix
+++ b/pkgs-ng/system/user-environment.fix
@@ -14,6 +14,7 @@
     pkgs.subversion
     pkgs.pan
     pkgs.sylpheed
+    pkgs.firebird
   ];
 
   # Create a user environment.
diff --git a/pkgs-ng/tools/archivers/zip/builder.sh b/pkgs-ng/tools/archivers/zip/builder.sh
new file mode 100755
index 000000000000..b68fdfe32b83
--- /dev/null
+++ b/pkgs-ng/tools/archivers/zip/builder.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+. $stdenv/setup || exit 1
+
+tar xvfz $src || exit 1
+cd zip-* || exit 1
+make -f unix/Makefile generic || exit 1
+make -f unix/Makefile prefix=$out install || exit 1
diff --git a/pkgs-ng/tools/archivers/zip/default.fix b/pkgs-ng/tools/archivers/zip/default.fix
new file mode 100644
index 000000000000..7b4ea02fb405
--- /dev/null
+++ b/pkgs-ng/tools/archivers/zip/default.fix
@@ -0,0 +1,10 @@
+{stdenv, fetchurl}: derivation {
+  name = "zip-2.3";
+  system = stdenv.system;
+  builder = ./builder.sh;
+  src = fetchurl {
+    url = ftp://ftp.info-zip.org/pub/infozip/src/zip23.tar.gz;
+    md5 = "5206a99541f3b0ab90f1baa167392c4f";
+  };
+  stdenv = stdenv;
+}