about summary refs log tree commit diff
path: root/corepkgs
diff options
context:
space:
mode:
Diffstat (limited to 'corepkgs')
-rw-r--r--corepkgs/Makefile.am2
-rw-r--r--corepkgs/channels/Makefile.am11
-rw-r--r--corepkgs/channels/unpack.nix7
-rw-r--r--corepkgs/channels/unpack.sh.in24
-rw-r--r--corepkgs/fetchurl/default.nix8
5 files changed, 47 insertions, 5 deletions
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;
 }