mirror of
https://github.com/NixOS/nix.git
synced 2025-11-27 20:51:00 +01:00
Nix expressions in that directory are combined into an attribute set
{file1 = import file1; file2 = import file2; ...}, i.e. each Nix
expression is an attribute with the file name as the attribute
name. Also recurses into directories.
* nix-env: removed the "--import" (-I) option which set the
~/.nix-defexpr symlink.
* nix-channel: don't use "nix-env --import", instead symlink
~/.nix-defexpr/channels. So finally nix-channel --update doesn't
override any default Nix expressions but combines with them.
This means that you can have (say) a local Nixpkgs SVN tree and use
it as a default for nix-env:
$ ln -s .../path-to-nixpkgs-tree ~/.nix-defexpr/nixpkgs_svn
and be subscribed to channels (including Nixpkgs) at the same time.
(If there is any ambiguity, the -A flag can be used to
disambiguate, e.g. "nix-env -i -A nixpkgs_svn.pan".)
26 lines
550 B
Bash
26 lines
550 B
Bash
#! @shell@ -e
|
|
|
|
@coreutils@/mkdir $out
|
|
@coreutils@/mkdir $out/tmp
|
|
cd $out/tmp
|
|
|
|
inputs=($inputs)
|
|
for ((n = 0; n < ${#inputs[*]}; n += 2)); do
|
|
channelName=${inputs[n]}
|
|
channelTarball=${inputs[n+1]}
|
|
echo "unpacking channel $channelName"
|
|
@bunzip2@ < $channelTarball | @tar@ xf -
|
|
|
|
nr=1
|
|
attrName=$(echo $channelName | @tr@ -- '- ' '__')
|
|
dirName=$attrName
|
|
while test -e ../$dirName; do
|
|
nr=$((nr+1))
|
|
dirName=$attrName-$nr
|
|
done
|
|
|
|
@coreutils@/mv * ../$dirName # !!! hacky
|
|
done
|
|
|
|
cd ..
|
|
@coreutils@/rmdir tmp
|