Function(
 Function {
  head: Destructured(
   FunctionHeadDestructured {
    ellipsis: false,
    identifier: None,
    arguments: [
     FunctionHeadDestructuredArgument {
      identifier: "pkgs",
      default: Some(
       FunctionApplication(
        FunctionApplication {
         function: Identifier(
          Identifier {
           id: "import",
           span: Span {
            start: Position {
             line: 5,
             column: 10,
            },
            end: Position {
             line: 5,
             column: 16,
            },
           },
          },
         ),
         arguments: [
          Path(
           Path {
            parts: [
             Raw(
              PartRaw {
               content: "./..",
               span: Span {
                start: Position {
                 line: 5,
                 column: 17,
                },
                end: Position {
                 line: 5,
                 column: 21,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 5,
              column: 17,
             },
             end: Position {
              line: 5,
              column: 21,
             },
            },
           },
          ),
          Map(
           Map {
            recursive: false,
            bindings: [],
            span: Span {
             start: Position {
              line: 5,
              column: 22,
             },
             end: Position {
              line: 5,
              column: 24,
             },
            },
           },
          ),
         ],
        },
       ),
      ),
     },
     FunctionHeadDestructuredArgument {
      identifier: "locationsXml",
      default: None,
     },
    ],
   },
  ),
  body: With(
   With {
    expression: Identifier(
     Identifier {
      id: "pkgs",
      span: Span {
       start: Position {
        line: 7,
        column: 6,
       },
       end: Position {
        line: 7,
        column: 10,
       },
      },
     },
    ),
    target: FunctionApplication(
     FunctionApplication {
      function: PropertyAccess(
       PropertyAccess {
        expression: Identifier(
         Identifier {
          id: "stdenv",
          span: Span {
           start: Position {
            line: 7,
            column: 12,
           },
           end: Position {
            line: 7,
            column: 18,
           },
          },
         },
        ),
        attribute_path: [
         Raw(
          PartRaw {
           content: "mkDerivation",
           span: Span {
            start: Position {
             line: 7,
             column: 19,
            },
            end: Position {
             line: 7,
             column: 31,
            },
           },
          },
         ),
        ],
        default: None,
       },
      ),
      arguments: [
       Map(
        Map {
         recursive: false,
         bindings: [
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "name",
               span: Span {
                start: Position {
                 line: 8,
                 column: 3,
                },
                end: Position {
                 line: 8,
                 column: 7,
                },
               },
              },
             ),
            ],
            to: String(
             String_ {
              parts: [
               Raw(
                PartRaw {
                 content: "nixpkgs-lib-docs",
                 span: Span {
                  start: Position {
                   line: 8,
                   column: 11,
                  },
                  end: Position {
                   line: 8,
                   column: 27,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 8,
                column: 10,
               },
               end: Position {
                line: 8,
                column: 28,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "src",
               span: Span {
                start: Position {
                 line: 9,
                 column: 3,
                },
                end: Position {
                 line: 9,
                 column: 6,
                },
               },
              },
             ),
            ],
            to: Path(
             Path {
              parts: [
               Raw(
                PartRaw {
                 content: "./../../lib",
                 span: Span {
                  start: Position {
                   line: 9,
                   column: 9,
                  },
                  end: Position {
                   line: 9,
                   column: 20,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 9,
                column: 9,
               },
               end: Position {
                line: 9,
                column: 20,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "buildInputs",
               span: Span {
                start: Position {
                 line: 11,
                 column: 3,
                },
                end: Position {
                 line: 11,
                 column: 14,
                },
               },
              },
             ),
            ],
            to: List(
             List {
              elements: [
               Identifier(
                Identifier {
                 id: "nixdoc",
                 span: Span {
                  start: Position {
                   line: 11,
                   column: 19,
                  },
                  end: Position {
                   line: 11,
                   column: 25,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 11,
                column: 17,
               },
               end: Position {
                line: 11,
                column: 27,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "installPhase",
               span: Span {
                start: Position {
                 line: 12,
                 column: 3,
                },
                end: Position {
                 line: 12,
                 column: 15,
                },
               },
              },
             ),
            ],
            to: IndentedString(
             IndentedString {
              parts: [
               Raw(
                PartRaw {
                 content: "function docgen {\n  nixdoc -c \"$1\" -d \"$2\" -f \"../lib/$1.nix\"  > \"$out/$1.xml\"\n}\n\nmkdir -p $out\nln -s ",
                 span: Span {
                  start: Position {
                   line: 13,
                   column: 1,
                  },
                  end: Position {
                   line: 18,
                   column: 11,
                  },
                 },
                },
               ),
               Interpolation(
                PartInterpolation {
                 expression: Identifier(
                  Identifier {
                   id: "locationsXml",
                   span: Span {
                    start: Position {
                     line: 18,
                     column: 13,
                    },
                    end: Position {
                     line: 18,
                     column: 25,
                    },
                   },
                  },
                 ),
                },
               ),
               Raw(
                PartRaw {
                 content: " $out/locations.xml\n\ndocgen strings 'String manipulation functions'\ndocgen trivial 'Miscellaneous functions'\ndocgen lists 'List manipulation functions'\ndocgen debug 'Debugging functions'\ndocgen options 'NixOS / nixpkgs option handling'\ndocgen filesystem 'Filesystem functions'\ndocgen sources 'Source filtering functions'\n",
                 span: Span {
                  start: Position {
                   line: 13,
                   column: 1,
                  },
                  end: Position {
                   line: 27,
                   column: 3,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 12,
                column: 18,
               },
               end: Position {
                line: 27,
                column: 5,
               },
              },
             },
            ),
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 7,
           column: 32,
          },
          end: Position {
           line: 28,
           column: 2,
          },
         },
        },
       ),
      ],
     },
    ),
    span: Span {
     start: Position {
      line: 7,
      column: 1,
     },
     end: Position {
      line: 28,
      column: 2,
     },
    },
   },
  ),
  span: Span {
   start: Position {
    line: 5,
    column: 1,
   },
   end: Position {
    line: 28,
    column: 2,
   },
  },
 },
)