From e1bd332758d5a37308cdabc6dfa9eeffdbd7de72 Mon Sep 17 00:00:00 2001 From: Andrew Morsillo Date: Sun, 9 Jun 2013 23:17:09 +0200 Subject: [PATCH] Added keepass password manager. Updated mono DLLMap to allow mono to run WinForms applications (keepass). --- pkgs/applications/misc/keepass/default.nix | 45 +++++++++++++++++++++ pkgs/development/compilers/mono/default.nix | 17 ++++++-- pkgs/lib/maintainers.nix | 1 + pkgs/top-level/all-packages.nix | 6 ++- 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 pkgs/applications/misc/keepass/default.nix 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 e861203fb159..76d7d0c18edc 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 1d0a0bb3990c..a134ddaa6140 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2645,7 +2645,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 { }; @@ -7161,6 +7163,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.