055608227f
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".)
27 lines
550 B
Bash
27 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
|