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