diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-04-21 14:54:05 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-04-21 14:54:05 +0000 |
commit | 21655a70f5a6e80b477d8bf758aa24eb0fcbdbfe (patch) | |
tree | 6a322bfa5291ede4d00d5d07c4d2c5a3ae395dac /corepkgs/channels | |
parent | f79e9c2d22345eeb0c721a8cf5375101d33dc4c9 (diff) | |
download | guix-21655a70f5a6e80b477d8bf758aa24eb0fcbdbfe.tar.gz |
* 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.
Diffstat (limited to 'corepkgs/channels')
-rw-r--r-- | corepkgs/channels/Makefile.am | 11 | ||||
-rw-r--r-- | corepkgs/channels/unpack.nix | 7 | ||||
-rw-r--r-- | corepkgs/channels/unpack.sh.in | 24 |
3 files changed, 42 insertions, 0 deletions
diff --git a/corepkgs/channels/Makefile.am b/corepkgs/channels/Makefile.am new file mode 100644 index 0000000000..1bf73f7f4c --- /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 0000000000..80ca4a3710 --- /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 0000000000..f349f3da38 --- /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 |