From 21655a70f5a6e80b477d8bf758aa24eb0fcbdbfe Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 21 Apr 2004 14:54:05 +0000 Subject: * Channels. These allow you to stay current with an evolving set of Nix expressions. To subscribe to a channel (needs to be done only once): nix-channel --add \ http://catamaran.labs.cs.uu.nl/dist/nix/channels/nixpkgs-unstable This just adds the given URL to ~/.nix-channels (which can also be edited manually). To update from all channels: nix-channel --update This fetches the latest expressions and pulls cache manifests. The default Nix expression (~/.nix-defexpr) is made to point to the conjunction of the expressions downloaded from all channels. So to update all installed derivations in the current user environment: nix-channel --update nix-env --upgrade '*' If you are really courageous, you can put this in a cronjob or something. You can subscribe to multiple channels. It is not entirely clear what happens when there are name clashes between derivations from different channels. From nix-env/main.cc it appears that the one with the lowest (highest?) hash will be used, which is pretty meaningless. --- corepkgs/Makefile.am | 2 +- corepkgs/channels/Makefile.am | 11 +++++++++++ corepkgs/channels/unpack.nix | 7 +++++++ corepkgs/channels/unpack.sh.in | 24 ++++++++++++++++++++++++ corepkgs/fetchurl/default.nix | 8 ++++---- 5 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 corepkgs/channels/Makefile.am create mode 100644 corepkgs/channels/unpack.nix create mode 100644 corepkgs/channels/unpack.sh.in (limited to 'corepkgs') diff --git a/corepkgs/Makefile.am b/corepkgs/Makefile.am index 2fb23f1c043a..c9ea11cefca7 100644 --- a/corepkgs/Makefile.am +++ b/corepkgs/Makefile.am @@ -1 +1 @@ -SUBDIRS = fetchurl nar buildenv +SUBDIRS = fetchurl nar buildenv channels diff --git a/corepkgs/channels/Makefile.am b/corepkgs/channels/Makefile.am new file mode 100644 index 000000000000..1bf73f7f4cb8 --- /dev/null +++ b/corepkgs/channels/Makefile.am @@ -0,0 +1,11 @@ +all-local: unpack.sh + +install-exec-local: + $(INSTALL) -d $(DESTDIR)$(datadir)/nix/corepkgs + $(INSTALL) -d $(DESTDIR)$(datadir)/nix/corepkgs/channels + $(INSTALL_DATA) unpack.nix $(DESTDIR)$(datadir)/nix/corepkgs/channels + $(INSTALL_PROGRAM) unpack.sh $(DESTDIR)$(datadir)/nix/corepkgs/channels + +include ../../substitute.mk + +EXTRA_DIST = default.nix unpack.sh.in diff --git a/corepkgs/channels/unpack.nix b/corepkgs/channels/unpack.nix new file mode 100644 index 000000000000..80ca4a371034 --- /dev/null +++ b/corepkgs/channels/unpack.nix @@ -0,0 +1,7 @@ +{system, inputs}: + +derivation { + name = "channels"; + builder = ./unpack.sh; + inherit system inputs; +} \ No newline at end of file diff --git a/corepkgs/channels/unpack.sh.in b/corepkgs/channels/unpack.sh.in new file mode 100644 index 000000000000..f349f3da3862 --- /dev/null +++ b/corepkgs/channels/unpack.sh.in @@ -0,0 +1,24 @@ +#! @shell@ -e + +export PATH=/bin:/usr/bin # !!! impure + +mkdir $out +mkdir $out/tmp +cd $out/tmp + +expr=$out/default.nix +echo '[' > $expr + +nr=0 +for i in $inputs; do + echo "unpacking $i" + @bunzip2@ < $i | tar xvf - + mv * ../$nr # !!! hacky + echo "(import ./$nr)" >> $expr + nr=$(($nr + 1)) +done + +echo ']' >> $expr + +cd .. +rmdir tmp \ No newline at end of file diff --git a/corepkgs/fetchurl/default.nix b/corepkgs/fetchurl/default.nix index 663bba4a3800..8957662eccab 100644 --- a/corepkgs/fetchurl/default.nix +++ b/corepkgs/fetchurl/default.nix @@ -1,8 +1,8 @@ -{system, url, md5}: derivation { +{system, url, md5}: + +derivation { name = baseNameOf (toString url); - system = system; builder = ./builder.sh; - url = url; - md5 = md5; id = md5; + inherit system url md5; } -- cgit 1.4.1