summary refs log tree commit diff
path: root/lib/build-vms.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-02 17:08:11 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-02 17:08:11 +0100
commit97f087cd447ef773cd15c6750df5aa24c633ea25 (patch)
treed54d4d78f1e80d24f728883ea17c7bb399d6ae68 /lib/build-vms.nix
parent93f82dfeefe2d13d83acd4a70f1c7c1f20054931 (diff)
downloadnixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar.gz
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar.bz2
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar.lz
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar.xz
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.tar.zst
nixpkgs-97f087cd447ef773cd15c6750df5aa24c633ea25.zip
Turn networking.interfaces into an attribute set
Thus

  networking.interfaces = [ { name = "eth0"; ipAddress = "192.168.15.1"; } ];

can now be written as

  networking.interfaces.eth0.ipAddress = "192.168.15.1";

The old notation still works though.
Diffstat (limited to 'lib/build-vms.nix')
-rw-r--r--lib/build-vms.nix40
1 files changed, 19 insertions, 21 deletions
diff --git a/lib/build-vms.nix b/lib/build-vms.nix
index aacd0e99cb1..59f05bfd104 100644
--- a/lib/build-vms.nix
+++ b/lib/build-vms.nix
@@ -2,7 +2,7 @@
 
 let pkgs = import <nixpkgs> { config = {}; inherit system; }; in
 
-with pkgs;
+with pkgs.lib;
 with import ../lib/qemu-flags.nix;
 
 rec {
@@ -15,7 +15,7 @@ rec {
   # hostname and `configX' is a NixOS system configuration.  Each
   # machine is given an arbitrary IP address in the virtual network.
   buildVirtualNetwork =
-    nodes: let nodesOut = lib.mapAttrs (n: buildVM nodesOut) (assignIPAddresses nodes); in nodesOut;
+    nodes: let nodesOut = mapAttrs (n: buildVM nodesOut) (assignIPAddresses nodes); in nodesOut;
 
 
   buildVM =
@@ -27,7 +27,7 @@ rec {
         [ ../modules/virtualisation/qemu-vm.nix
           ../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs
           { key = "no-manual"; services.nixosManual.enable = false; }
-        ] ++ lib.optional minimal ../modules/testing/minimal-kernel.nix;
+        ] ++ optional minimal ../modules/testing/minimal-kernel.nix;
       extraArgs = { inherit nodes; };
     };
 
@@ -39,51 +39,49 @@ rec {
 
     let
 
-      machines = lib.attrNames nodes;
+      machines = attrNames nodes;
 
-      machinesNumbered = lib.zipTwoLists machines (lib.range 1 254);
+      machinesNumbered = zipTwoLists machines (range 1 254);
 
-      nodes_ = lib.flip map machinesNumbered (m: lib.nameValuePair m.first
+      nodes_ = flip map machinesNumbered (m: nameValuePair m.first
         [ ( { config, pkgs, nodes, ... }:
             let
-              interfacesNumbered = lib.zipTwoLists config.virtualisation.vlans (lib.range 1 255);
-              interfaces =
-                lib.flip map interfacesNumbered ({ first, second }:
-                  { name = "eth${toString second}";
-                    ipAddress = "192.168.${toString first}.${toString m.second}";
+              interfacesNumbered = zipTwoLists config.virtualisation.vlans (range 1 255);
+              interfaces = flip map interfacesNumbered ({ first, second }:
+                nameValuePair "eth${toString second}"
+                  { ipAddress = "192.168.${toString first}.${toString m.second}";
                     subnetMask = "255.255.255.0";
-                  }
-                );
+                  });
             in
             { key = "ip-address";
               config =
                 { networking.hostName = m.first;
 
-                  networking.interfaces = interfaces;
+                  networking.interfaces = listToAttrs interfaces;
 
                   networking.primaryIPAddress =
-                    lib.optionalString (interfaces != []) (lib.head interfaces).ipAddress;
+                    optionalString (interfaces != []) (head interfaces).value.ipAddress;
 
                   # Put the IP addresses of all VMs in this machine's
                   # /etc/hosts file.  If a machine has multiple
                   # interfaces, use the IP address corresponding to
                   # the first interface (i.e. the first network in its
                   # virtualisation.vlans option).
-                  networking.extraHosts = lib.flip lib.concatMapStrings machines
-                    (m: let config = (lib.getAttr m nodes).config; in
-                      lib.optionalString (config.networking.primaryIPAddress != "")
+                  networking.extraHosts = flip concatMapStrings machines
+                    (m: let config = (getAttr m nodes).config; in
+                      optionalString (config.networking.primaryIPAddress != "")
                         ("${config.networking.primaryIPAddress} " +
                          "${config.networking.hostName}\n"));
 
                   virtualisation.qemu.options =
-                    lib.flip map interfacesNumbered
+                    flip map interfacesNumbered
                       ({ first, second }: qemuNICFlags second first m.second);
                 };
             }
           )
-          (lib.getAttr m.first nodes)
+          (getAttr m.first nodes)
         ] );
 
-    in lib.listToAttrs nodes_;
+    in listToAttrs nodes_;
 
 }