---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "networkExpr",
    default: None,
   },
   FunctionArgument {
    identifier: "config",
    default: Some(
     Map {
      bindings: [],
      recursive: false,
      position: (2, 12),
     },
    ),
   },
   FunctionArgument {
    identifier: "system",
    default: Some(
     PropertyAccess {
      expression: Variable {
       identifier: "builtins",
       position: (1, 12),
      },
      attribute_path: AttributePath {
       attributes: [
        Raw {
         content: "currentSystem",
         position: (1, 21),
        },
       ],
      },
      default: None,
     },
    ),
   },
  ],
  ellipsis: false,
 },
 definition: LetIn {
  bindings: [
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "nodes",
       position: (7, 3),
      },
     ],
    },
    FunctionApplication {
     function: PropertyAccess {
      expression: Variable {
       identifier: "builtins",
       position: (7, 11),
      },
      attribute_path: AttributePath {
       attributes: [
        Raw {
         content: "mapAttrs",
         position: (7, 20),
        },
       ],
      },
      default: None,
     },
     arguments: [
      Function {
       argument: Some(
        "vm",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: Function {
        argument: Some(
         "module",
        ),
        arguments: FunctionArguments {
         arguments: [],
         ellipsis: false,
        },
        definition: Map {
         bindings: [
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "_file",
              position: (8, 5),
             },
            ],
           },
           String {
            parts: [
             Expression {
              expression: Variable {
               identifier: "networkExpr",
               position: (8, 16),
              },
             },
             Raw {
              content: "@node-",
              position: (8, 28),
             },
             Expression {
              expression: Variable {
               identifier: "vm",
               position: (8, 36),
              },
             },
            ],
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "imports",
              position: (9, 5),
             },
            ],
           },
           List {
            elements: [
             Variable {
              identifier: "module",
              position: (9, 17),
             },
            ],
            position: (9, 15),
           },
          ),
         ],
         recursive: false,
         position: (7, 42),
        },
        position: (7, 34),
       },
       position: (7, 30),
      },
      FunctionApplication {
       function: Variable {
        identifier: "import",
        position: (10, 7),
       },
       arguments: [
        Variable {
         identifier: "networkExpr",
         position: (10, 14),
        },
       ],
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "pkgs",
       position: (12, 3),
      },
     ],
    },
    FunctionApplication {
     function: Variable {
      identifier: "import",
      position: (12, 10),
     },
     arguments: [
      Path {
       parts: [
        Raw {
         content: "../../../../..",
         position: (12, 17),
        },
       ],
      },
      Map {
       bindings: [
        Inherit(
         None,
         [
          Raw {
           content: "system",
           position: (12, 42),
          },
          Raw {
           content: "config",
           position: (12, 49),
          },
         ],
        ),
       ],
       recursive: false,
       position: (12, 32),
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "testing",
       position: (14, 3),
      },
     ],
    },
    FunctionApplication {
     function: Variable {
      identifier: "import",
      position: (14, 13),
     },
     arguments: [
      Path {
       parts: [
        Raw {
         content: "../../../../lib/testing-python.nix",
         position: (14, 20),
        },
       ],
      },
      Map {
       bindings: [
        Inherit(
         None,
         [
          Raw {
           content: "system",
           position: (15, 13),
          },
          Raw {
           content: "pkgs",
           position: (15, 20),
          },
         ],
        ),
       ],
       recursive: false,
       position: (14, 55),
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "interactiveDriver",
       position: (18, 3),
      },
     ],
    },
    PropertyAccess {
     expression: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "testing",
        position: (18, 24),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "makeTest",
          position: (18, 32),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         Inherit(
          None,
          [
           Raw {
            content: "nodes",
            position: (18, 51),
           },
          ],
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "testScript",
             position: (18, 58),
            },
           ],
          },
          String {
           parts: [
            Raw {
             content: "start_all(); join_all();",
             position: (18, 72),
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (18, 41),
       },
      ],
     },
     attribute_path: AttributePath {
      attributes: [
       Raw {
        content: "driverInteractive",
        position: (18, 102),
       },
      ],
     },
     default: None,
    },
   ),
  ],
  target: FunctionApplication {
   function: PropertyAccess {
    expression: Variable {
     identifier: "pkgs",
     position: (22, 1),
    },
    attribute_path: AttributePath {
     attributes: [
      Raw {
       content: "runCommand",
       position: (22, 6),
      },
     ],
    },
    default: None,
   },
   arguments: [
    String {
     parts: [
      Raw {
       content: "nixos-build-vms",
       position: (22, 18),
      },
     ],
    },
    Map {
     bindings: [
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "nativeBuildInputs",
          position: (22, 37),
         },
        ],
       },
       List {
        elements: [
         PropertyAccess {
          expression: Variable {
           identifier: "pkgs",
           position: (22, 59),
          },
          attribute_path: AttributePath {
           attributes: [
            Raw {
             content: "makeWrapper",
             position: (22, 64),
            },
           ],
          },
          default: None,
         },
        ],
        position: (22, 57),
       },
      ),
     ],
     recursive: false,
     position: (22, 35),
    },
    String {
     parts: [
      Raw {
       content: "mkdir -p $out/bin\nln -s ",
       position: (23, 1),
      },
      Expression {
       expression: Variable {
        identifier: "interactiveDriver",
        position: (24, 11),
       },
      },
      Raw {
       content: "/bin/nixos-test-driver $out/bin/nixos-test-driver\nln -s ",
       position: (24, 29),
      },
      Expression {
       expression: Variable {
        identifier: "interactiveDriver",
        position: (25, 11),
       },
      },
      Raw {
       content: "/bin/nixos-test-driver $out/bin/nixos-run-vms\nwrapProgram $out/bin/nixos-test-driver \\\n  --add-flags \"--interactive\"\nwrapProgram $out/bin/nixos-run-vms \\\n   --set testScript \"",
       position: (25, 29),
      },
      Expression {
       expression: FunctionApplication {
        function: PropertyAccess {
         expression: Variable {
          identifier: "pkgs",
          position: (29, 26),
         },
         attribute_path: AttributePath {
          attributes: [
           Raw {
            content: "writeText",
            position: (29, 31),
           },
          ],
         },
         default: None,
        },
        arguments: [
         String {
          parts: [
           Raw {
            content: "start-all",
            position: (29, 42),
           },
          ],
         },
         String {
          parts: [
           Raw {
            content: "start_all(); join_all();",
            position: (29, 54),
           },
          ],
         },
        ],
       },
      },
      Raw {
       content: "\" \\\n   --add-flags \"--no-interactive\"\n",
       position: (29, 80),
      },
     ],
    },
   ],
  },
  position: (6, 1),
 },
 position: (1, 1),
}