[Nix-dev] nix-env --arg
raffalli at univ-savoie.fr
raffalli at univ-savoie.fr
Fri Jun 14 10:12:25 CEST 2013
Hello,
> >If I first to "nix-env -i openssh --arg withKerberos false"
> >
> >and then "nix-env -i openssh --arg withKerberos true"
> >
> >Then openssh is not replaced. It seems that the hash do not depends on argument ?
> >How can I fix this ?
>
> I think that "nix-env -iA openssh --arg withKerberos false" should
> be the way. IMO --arg only makes sense with attribute paths.
I failed to do that too. I think I am doing something wrong. I attach
my modify version of openssh/default.nix.
Note: I made the name depend on the value of withKerberos to see what I am doing.
If I create a specific entry for openssh with kerberos in all_packages.nix, it works.
(i.e. nix-env -iA openssKrb5 works)
If I try to install via nix-env -iA openssh --arg withKerberos false, the variable withKerberos
is not transmitted.
Here is also the piece of definition I have in all_packages.nix:
> >Another related question: how should we make this kind of options visible from the end user ?
> >Adding something in all-packages.nix ?
>
> One could add the other version to all-packages.nix, but that's
> probably redundant. Most people will be satisfied by a well-chosen
> default, and the rest can override it in ~/.nixpkgs/config.nix or
> similar.
I did not bind how to do that. The examples I found via google were all about
compilation environment, not configuration of package, so I failed to guess what to add
in ~/.nixpkgs/config.nix
And by the way, I prefer a systeme wide installation of openssh, so I would prefer to add
something in /etc/nixos ?
Thanks for the help,
Christophe
-------------- next part --------------
{ stdenv, fetchurl, zlib, openssl, perl, libedit, pkgconfig, pam
, etcDir ? null
, hpnSupport ? false
, withKerberos ? false
, kerberos
}:
assert withKerberos -> kerberos != null;
let
hpnSrc = fetchurl {
url = http://nixos.org/tarballs/openssh-6.1p1-hpn13v14.diff.gz;
sha256 = "14das6lim6fxxnx887ssw76ywsbvx3s4q3n43afgh5rgvs4xmnnq";
};
in
stdenv.mkDerivation rec {
basename = "openssh-6.2p1";
# just temporary, to see what I am doing
name = basename + (if withKerberos then "-krb5" else "");
src = fetchurl {
url = "ftp://ftp.nl.uu.net/pub/OpenBSD/OpenSSH/portable/${basename}.tar.gz";
sha1 = "8824708c617cc781b2bb29fa20bd905fd3d2a43d";
};
prePatch = stdenv.lib.optionalString hpnSupport
''
gunzip -c ${hpnSrc} | patch -p1
export NIX_LDFLAGS="$NIX_LDFLAGS -lgcc_s"
'';
patches =
[ ./locale_archive.patch
# Upstream fix for gratuitous "no such identity" warnings.
./fix-identity-warnings.patch
];
buildInputs = [ zlib openssl libedit pkgconfig pam ] ++
(if withKerberos then [ kerberos ] else [])
;
# I set --disable-strip because later we strip anyway. And it fails to strip
# properly when cross building.
configureFlags =
''
--with-mantype=man
--with-libedit=yes
--disable-strip
${if pam != null then "--with-pam" else "--without-pam"}
${if etcDir != null then "--sysconfdir=${etcDir}" else ""}
${if withKerberos then "--with-kerberos5=${kerberos}" else ""}
'';
preConfigure =
''
configureFlags="$configureFlags --with-privsep-path=$out/empty"
mkdir -p $out/empty
'';
postInstall =
''
# Install ssh-copy-id, it's very useful.
cp contrib/ssh-copy-id $out/bin/
chmod +x $out/bin/ssh-copy-id
cp contrib/ssh-copy-id.1 $out/share/man/man1/
mkdir -p $out/etc/ssh
cp moduli $out/etc/ssh/
'';
installTargets = "install-nosysconf";
meta = {
homepage = http://www.openssh.org/;
description = "An implementation of the SSH protocol";
license = "bsd";
platforms = stdenv.lib.platforms.linux;
maintainers = stdenv.lib.maintainers.eelco;
};
}
More information about the nix-dev
mailing list