cluster/nix: integrate with readtree

This unifies nixpkgs with the one defined in //default.nix and makes it
possible to use readTree to build the provisioners:

   nix-build -A cluster.nix.provision

   result/bin/provision

Change-Id: I68dd70b9c8869c7c0b59f5007981eac03667b862
diff --git a/cluster/nix/provision.nix b/cluster/nix/provision.nix
index 20ed0a0..7ab7e71 100644
--- a/cluster/nix/provision.nix
+++ b/cluster/nix/provision.nix
@@ -1,10 +1,12 @@
-self: super:
+{ hscloud, pkgs, ... }:
+
+with builtins;
 
 let 
   machines = (import ./defs-machines.nix);
   configurations = builtins.listToAttrs (map (machine: {
     name = machine.fqdn;
-    value = super.nixos ({ config, pkgs, ... }: {
+    value = pkgs.nixos ({ config, pkgs, ... }: {
       networking.hostName = machine.name;
       imports = [
         ./modules/base.nix
@@ -32,18 +34,16 @@
    fi
   '';
 
-  machineProvisioners = builtins.listToAttrs (map (machine: {
-      name = "provision-${machine.name}";
-      value = super.writeScriptBin "provision-${machine.name}" (scriptForMachine machine);
-    }) machines);
+  provisioners = (map (machine:
+    pkgs.writeScriptBin "provision-${machine.name}" (scriptForMachine machine)
+  ) machines);
+
+  provision = pkgs.writeScriptBin "provision" (
+    ''
+      echo "Available provisioniers:"
+    '' + (concatStringsSep "\n" (map (machine: "echo '  provision-${machine.name}'") machines)));
 in
-{
-  provision = ({
-    provision = super.writeScriptBin "provision"
-      (
-        ''
-          echo "Available provisioniers:"
-        '' + (builtins.concatStringsSep "\n" (map (machine: "echo '  provision-${machine.name}'") machines))
-      );
-  }) // machineProvisioners;
+pkgs.symlinkJoin {
+  name = "provision";
+  paths = [ provision ] ++ provisioners;
 }