diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix
new file mode 100644
index 000000000000..0098e626b424
--- /dev/null
+++ b/pkgs/applications/misc/keepass/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, unzip, makeDesktopItem, mono }:
+
+stdenv.mkDerivation rec {
+ name = "keepass-${version}";
+ version = "2.22";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/keepass/KeePass-${version}.zip";
+ sha256 = "0mman7r1jmirfwzix5qww0yn4rrgzcg7546basxjvvfc8flp43j0";
+ };
+
+ sourceRoot = ".";
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ desktopItem = makeDesktopItem {
+ name = "keepass";
+ exec = "keepass";
+ comment = "Password manager";
+ desktopName = "Keepass";
+ genericName = "Password manager";
+ categories = "Application;Other;";
+ };
+
+
+ installPhase = ''
+ ensureDir "$out/bin"
+ echo "${mono}/bin/mono $out/KeePass.exe" > $out/bin/keepass
+ chmod +x $out/bin/keepass
+ echo $out
+ cp -r ./* $out/
+ ensureDir "$out/share/applications"
+ cp ${desktopItem}/share/applications/* $out/share/applications
+ '';
+
+ buildInputs = [ unzip ];
+
+ meta = {
+ description = "GUI password manager with strong cryptography";
+ homepage = http://www.keepass.info/;
+ maintainers = with stdenv.lib.maintainers; [amorsillo];
+ platforms = with stdenv.lib.platforms; all;
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/pkgs/development/compilers/mono/default.nix b/pkgs/development/compilers/mono/default.nix
index 47b13700b8ac..88bef618f743 100644
--- a/pkgs/development/compilers/mono/default.nix
+++ b/pkgs/development/compilers/mono/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus}:
+{stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11}:
stdenv.mkDerivation rec {
name = "mono-2.11.4";
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
sha256 = "0wv8pnj02mq012sihx2scx0avyw51b5wb976wn7x86zda0vfcsnr";
};
- buildInputs = [bison pkgconfig glib gettext perl libgdiplus];
+ buildInputs = [bison pkgconfig glib gettext perl libgdiplus libX11];
propagatedBuildInputs = [glib];
NIX_LDFLAGS = "-lgcc_s" ;
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
# In fact I think this line does not help at all to what I
# wanted to achieve: have mono to find libgdiplus automatically
- configureFlags = "--with-libgdiplus=${libgdiplus}/lib/libgdiplus.so";
+ configureFlags = "--x-includes=${libX11}/include --x-libraries=${libX11}/lib --with-libgdiplus=${libgdiplus}/lib/libgdiplus.so";
# Attempt to fix this error when running "mcs --version":
# The file /nix/store/xxx-mono-2.4.2.1/lib/mscorlib.dll is an invalid CIL image
@@ -31,6 +31,17 @@ stdenv.mkDerivation rec {
patchShebangs ./
";
+ #Fix mono DLLMap so it can find libX11 and gdiplus to run winforms apps
+ #Other items in the DLLMap may need to be pointed to their store locations, I don't think this is exhaustive
+ #http://www.mono-project.com/Config_DllMap
+ postBuild = ''
+ find . -name 'config' -type f | while read i; do
+ sed -i "s@libMonoPosixHelper.so@$out/lib/libMonoPosixHelper.so@g" $i
+ sed -i "s@libX11.so.6@${libX11}/lib/libX11.so.6@g" $i
+ sed -i '2 i\' $i
+ done
+ '';
+
meta = {
homepage = http://mono-project.com/;
description = "Cross platform, open source .NET development framework";
diff --git a/pkgs/lib/maintainers.nix b/pkgs/lib/maintainers.nix
index fd538069bb60..5e506ce25c2a 100644
--- a/pkgs/lib/maintainers.nix
+++ b/pkgs/lib/maintainers.nix
@@ -8,6 +8,7 @@
all = "Nix Committers ";
amiddelk = "Arie Middelkoop ";
andres = "Andres Loeh ";
+ amorsillo = "Andrew Morsillo ";
antono = "Antono Vasiljev ";
astsmtl = "Alexander Tsamutali ";
aszlig = "aszlig ";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 802183732958..48e36712b4ff 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2650,7 +2650,9 @@ let
mlton = callPackage ../development/compilers/mlton { };
- mono = callPackage ../development/compilers/mono { };
+ mono = callPackage ../development/compilers/mono {
+ inherit (xlibs) libX11;
+ };
monoDLLFixer = callPackage ../build-support/mono-dll-fixer { };
@@ -7191,6 +7193,8 @@ let
keepassx = callPackage ../applications/misc/keepassx { };
+ keepass = callPackage ../applications/misc/keepass { };
+
# FIXME: Evince and other GNOME/GTK+ apps (e.g., Viking) provide
# `share/icons/hicolor/icon-theme.cache'. Arbitrarily give this one a
# higher priority.