---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "systemdUtils",
    default: None,
   },
   FunctionArgument {
    identifier: "lib",
    default: None,
   },
  ],
  ellipsis: false,
 },
 definition: With {
  expression: PropertyAccess {
   expression: Variable {
    identifier: "systemdUtils",
    position: (3, 6),
   },
   attribute_path: AttributePath {
    attributes: [
     Raw {
      content: "lib",
      position: (3, 19),
     },
    ],
   },
   default: None,
  },
  target: With {
   expression: PropertyAccess {
    expression: Variable {
     identifier: "systemdUtils",
     position: (4, 6),
    },
    attribute_path: AttributePath {
     attributes: [
      Raw {
       content: "unitOptions",
       position: (4, 19),
      },
     ],
    },
    default: None,
   },
   target: With {
    expression: Variable {
     identifier: "lib",
     position: (5, 6),
    },
    target: Map {
     bindings: [
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "units",
          position: (8, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (8, 16),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (9, 5),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (9, 14),
           },
           arguments: [
            Function {
             argument: None,
             arguments: FunctionArguments {
              arguments: [
               FunctionArgument {
                identifier: "config",
                default: None,
               },
               FunctionArgument {
                identifier: "name",
                default: None,
               },
              ],
              ellipsis: true,
             },
             definition: Map {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "options",
                   position: (10, 7),
                  },
                 ],
                },
                Variable {
                 identifier: "concreteUnitOptions",
                 position: (10, 17),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "config",
                   position: (11, 7),
                  },
                 ],
                },
                Map {
                 bindings: [
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "unit",
                      position: (11, 18),
                     },
                    ],
                   },
                   FunctionApplication {
                    function: Variable {
                     identifier: "mkDefault",
                     position: (11, 25),
                    },
                    arguments: [
                     FunctionApplication {
                      function: PropertyAccess {
                       expression: Variable {
                        identifier: "systemdUtils",
                        position: (11, 36),
                       },
                       attribute_path: AttributePath {
                        attributes: [
                         Raw {
                          content: "lib",
                          position: (11, 49),
                         },
                         Raw {
                          content: "makeUnit",
                          position: (11, 53),
                         },
                        ],
                       },
                       default: None,
                      },
                      arguments: [
                       Variable {
                        identifier: "name",
                        position: (11, 62),
                       },
                       Variable {
                        identifier: "config",
                        position: (11, 67),
                       },
                      ],
                     },
                    ],
                   },
                  ),
                 ],
                 recursive: false,
                 position: (11, 16),
                },
               ),
              ],
              recursive: false,
              position: (9, 48),
             },
             position: (9, 25),
            },
           ],
          },
         ],
        },
        position: (8, 11),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "services",
          position: (14, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (14, 19),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (14, 26),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (14, 35),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2ServiceOptions",
               position: (14, 47),
              },
              Variable {
               identifier: "unitConfig",
               position: (14, 68),
              },
              Variable {
               identifier: "stage2ServiceConfig",
               position: (14, 79),
              },
             ],
             position: (14, 45),
            },
           ],
          },
         ],
        },
        position: (14, 14),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdServices",
          position: (15, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (15, 25),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (15, 32),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (15, 41),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1ServiceOptions",
               position: (15, 53),
              },
              Variable {
               identifier: "unitConfig",
               position: (15, 74),
              },
              Variable {
               identifier: "stage1ServiceConfig",
               position: (15, 85),
              },
             ],
             position: (15, 51),
            },
           ],
          },
         ],
        },
        position: (15, 20),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "targets",
          position: (17, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (17, 18),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (17, 25),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (17, 34),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2CommonUnitOptions",
               position: (17, 46),
              },
              Variable {
               identifier: "unitConfig",
               position: (17, 70),
              },
             ],
             position: (17, 44),
            },
           ],
          },
         ],
        },
        position: (17, 13),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdTargets",
          position: (18, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (18, 24),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (18, 31),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (18, 40),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1CommonUnitOptions",
               position: (18, 52),
              },
              Variable {
               identifier: "unitConfig",
               position: (18, 76),
              },
             ],
             position: (18, 50),
            },
           ],
          },
         ],
        },
        position: (18, 19),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "sockets",
          position: (20, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (20, 18),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (20, 25),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (20, 34),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2SocketOptions",
               position: (20, 46),
              },
              Variable {
               identifier: "unitConfig",
               position: (20, 66),
              },
             ],
             position: (20, 44),
            },
           ],
          },
         ],
        },
        position: (20, 13),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdSockets",
          position: (21, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (21, 24),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (21, 31),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (21, 40),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1SocketOptions",
               position: (21, 52),
              },
              Variable {
               identifier: "unitConfig",
               position: (21, 72),
              },
             ],
             position: (21, 50),
            },
           ],
          },
         ],
        },
        position: (21, 19),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "timers",
          position: (23, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (23, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (23, 24),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (23, 33),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2TimerOptions",
               position: (23, 45),
              },
              Variable {
               identifier: "unitConfig",
               position: (23, 64),
              },
             ],
             position: (23, 43),
            },
           ],
          },
         ],
        },
        position: (23, 12),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdTimers",
          position: (24, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (24, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (24, 30),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (24, 39),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1TimerOptions",
               position: (24, 51),
              },
              Variable {
               identifier: "unitConfig",
               position: (24, 70),
              },
             ],
             position: (24, 49),
            },
           ],
          },
         ],
        },
        position: (24, 18),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "paths",
          position: (26, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (26, 16),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (26, 23),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (26, 32),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2PathOptions",
               position: (26, 44),
              },
              Variable {
               identifier: "unitConfig",
               position: (26, 62),
              },
             ],
             position: (26, 42),
            },
           ],
          },
         ],
        },
        position: (26, 11),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdPaths",
          position: (27, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (27, 22),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (27, 29),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (27, 38),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1PathOptions",
               position: (27, 50),
              },
              Variable {
               identifier: "unitConfig",
               position: (27, 68),
              },
             ],
             position: (27, 48),
            },
           ],
          },
         ],
        },
        position: (27, 17),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "slices",
          position: (29, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (29, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (29, 24),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (29, 33),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2SliceOptions",
               position: (29, 45),
              },
              Variable {
               identifier: "unitConfig",
               position: (29, 64),
              },
             ],
             position: (29, 43),
            },
           ],
          },
         ],
        },
        position: (29, 12),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdSlices",
          position: (30, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (30, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (30, 30),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (30, 39),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1SliceOptions",
               position: (30, 51),
              },
              Variable {
               identifier: "unitConfig",
               position: (30, 70),
              },
             ],
             position: (30, 49),
            },
           ],
          },
         ],
        },
        position: (30, 18),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "mounts",
          position: (32, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (32, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (32, 24),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (32, 32),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2MountOptions",
               position: (32, 44),
              },
              Variable {
               identifier: "unitConfig",
               position: (32, 63),
              },
              Variable {
               identifier: "mountConfig",
               position: (32, 74),
              },
             ],
             position: (32, 42),
            },
           ],
          },
         ],
        },
        position: (32, 12),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdMounts",
          position: (33, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (33, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (33, 30),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (33, 38),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1MountOptions",
               position: (33, 50),
              },
              Variable {
               identifier: "unitConfig",
               position: (33, 69),
              },
              Variable {
               identifier: "mountConfig",
               position: (33, 80),
              },
             ],
             position: (33, 48),
            },
           ],
          },
         ],
        },
        position: (33, 18),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "automounts",
          position: (35, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (35, 21),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (35, 28),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (35, 36),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage2AutomountOptions",
               position: (35, 48),
              },
              Variable {
               identifier: "unitConfig",
               position: (35, 71),
              },
              Variable {
               identifier: "automountConfig",
               position: (35, 82),
              },
             ],
             position: (35, 46),
            },
           ],
          },
         ],
        },
        position: (35, 16),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "initrdAutomounts",
          position: (36, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "types",
         position: (36, 27),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (36, 34),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "submodule",
            position: (36, 43),
           },
           arguments: [
            List {
             elements: [
              Variable {
               identifier: "stage1AutomountOptions",
               position: (36, 55),
              },
              Variable {
               identifier: "unitConfig",
               position: (36, 78),
              },
              Variable {
               identifier: "automountConfig",
               position: (36, 89),
              },
             ],
             position: (36, 53),
            },
           ],
          },
         ],
        },
        position: (36, 22),
       },
      ),
     ],
     recursive: true,
     position: (7, 1),
    },
    position: (5, 1),
   },
   position: (4, 1),
  },
  position: (3, 1),
 },
 position: (1, 1),
}