2018-09-06 16:09:48 +03:00
|
|
|
{ stdenv, fetchurl, makeWrapper
|
2018-09-07 13:22:56 +03:00
|
|
|
, perl, libassuan, libgcrypt
|
2018-10-19 11:27:36 +03:00
|
|
|
, perlPackages, lockfileProgs, gnupg, coreutils
|
2018-10-17 20:59:15 +03:00
|
|
|
# For the tests:
|
|
|
|
, bash, openssh, which, socat, cpio, hexdump
|
2018-09-06 16:09:48 +03:00
|
|
|
}:
|
2015-08-01 12:03:40 +03:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "monkeysphere-${version}";
|
2018-10-17 20:59:15 +03:00
|
|
|
version = "0.42";
|
2015-08-01 12:03:40 +03:00
|
|
|
|
|
|
|
src = fetchurl {
|
2018-09-06 16:09:48 +03:00
|
|
|
url = "http://archive.monkeysphere.info/debian/pool/monkeysphere/m/monkeysphere/monkeysphere_${version}.orig.tar.gz";
|
2018-10-17 20:59:15 +03:00
|
|
|
sha256 = "1haqgjxm8v2xnhc652lx79p2cqggb9gxgaf19w9l9akar2qmdjf1";
|
2015-08-01 12:03:40 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
patches = [ ./monkeysphere.patch ];
|
|
|
|
|
2018-10-19 11:27:36 +03:00
|
|
|
postPatch = ''
|
|
|
|
sed -i "s,/usr/bin/env,${coreutils}/bin/env," src/share/ma/update_users
|
|
|
|
'';
|
|
|
|
|
2018-09-07 13:22:56 +03:00
|
|
|
nativeBuildInputs = [ makeWrapper ];
|
2018-10-17 20:59:15 +03:00
|
|
|
buildInputs = [ perl libassuan libgcrypt ]
|
|
|
|
++ stdenv.lib.optional doCheck
|
2018-10-19 11:27:36 +03:00
|
|
|
([ gnupg openssh which socat cpio hexdump lockfileProgs ] ++
|
2018-10-17 20:59:15 +03:00
|
|
|
(with perlPackages; [ CryptOpenSSLRSA CryptOpenSSLBignum ]));
|
2018-09-07 13:22:56 +03:00
|
|
|
|
2015-08-01 12:03:40 +03:00
|
|
|
makeFlags = ''
|
|
|
|
PREFIX=/
|
|
|
|
DESTDIR=$(out)
|
|
|
|
'';
|
|
|
|
|
2018-11-30 23:30:11 +03:00
|
|
|
# The tests "drain" entropy (GnuPG still uses /dev/random) and they don't run
|
|
|
|
# inside of the sandbox, because nixbld isn't allowed to login via SSH
|
|
|
|
# (/etc/passwd: "nixbld:x:1000:100:Nix build user:/build:/noshell",
|
|
|
|
# sshd: "User nixbld not allowed because shell /noshell does not exist").
|
2018-10-17 20:59:15 +03:00
|
|
|
doCheck = false;
|
|
|
|
preCheck = ''
|
2018-10-19 11:27:36 +03:00
|
|
|
patchShebangs tests/
|
|
|
|
patchShebangs src/
|
2018-10-17 20:59:15 +03:00
|
|
|
sed -i "s,/usr/sbin/sshd,${openssh}/bin/sshd," tests/basic
|
|
|
|
sed -i "s/<(hd/<(hexdump/" tests/keytrans
|
|
|
|
'';
|
|
|
|
|
2018-09-07 13:22:56 +03:00
|
|
|
postFixup =
|
2018-09-07 14:07:10 +03:00
|
|
|
let wrapperArgs = runtimeDeps:
|
|
|
|
"--prefix PERL5LIB : "
|
|
|
|
+ (with perlPackages; stdenv.lib.makePerlPath [
|
|
|
|
CryptOpenSSLRSA
|
|
|
|
CryptOpenSSLBignum
|
|
|
|
])
|
|
|
|
+ stdenv.lib.optionalString
|
|
|
|
(builtins.length runtimeDeps > 0)
|
|
|
|
" --prefix PATH : ${stdenv.lib.makeBinPath runtimeDeps}";
|
|
|
|
wrapMonkeysphere = runtimeDeps: program:
|
|
|
|
"wrapProgram $out/bin/${program} ${wrapperArgs runtimeDeps}\n";
|
2018-09-07 13:22:56 +03:00
|
|
|
wrapPrograms = runtimeDeps: programs: stdenv.lib.concatMapStrings
|
|
|
|
(wrapMonkeysphere runtimeDeps)
|
|
|
|
programs;
|
|
|
|
in wrapPrograms [ gnupg ] [ "monkeysphere-authentication" "monkeysphere-host" ]
|
2018-09-07 14:07:10 +03:00
|
|
|
+ wrapPrograms [ lockfileProgs ] [ "monkeysphere" ]
|
|
|
|
+ ''
|
|
|
|
# These 4 programs depend on the program name ($0):
|
|
|
|
for program in openpgp2pem openpgp2spki openpgp2ssh pem2openpgp; do
|
|
|
|
rm $out/bin/$program
|
|
|
|
ln -sf keytrans $out/share/monkeysphere/$program
|
|
|
|
makeWrapper $out/share/monkeysphere/$program $out/bin/$program \
|
|
|
|
${wrapperArgs [ ]}
|
|
|
|
done
|
|
|
|
'';
|
2015-08-01 12:03:40 +03:00
|
|
|
|
|
|
|
meta = with stdenv.lib; {
|
|
|
|
homepage = http://web.monkeysphere.info/;
|
2015-08-01 13:28:41 +03:00
|
|
|
description = "Leverage the OpenPGP web of trust for SSH and TLS authentication";
|
|
|
|
longDescription = ''
|
2015-08-01 12:03:40 +03:00
|
|
|
The Monkeysphere project's goal is to extend OpenPGP's web of
|
|
|
|
trust to new areas of the Internet to help us securely identify
|
|
|
|
servers we connect to, as well as each other while we work online.
|
|
|
|
The suite of Monkeysphere utilities provides a framework to
|
|
|
|
transparently leverage the web of trust for authentication of
|
|
|
|
TLS/SSL communications through the normal use of tools you are
|
|
|
|
familiar with, such as your web browser0 or secure shell.
|
|
|
|
'';
|
2018-09-06 16:09:48 +03:00
|
|
|
license = licenses.gpl3Plus;
|
2015-08-01 12:03:40 +03:00
|
|
|
platforms = platforms.all;
|
2018-09-06 16:09:48 +03:00
|
|
|
maintainers = with maintainers; [ primeos ];
|
2015-08-01 12:03:40 +03:00
|
|
|
};
|
|
|
|
}
|