Function(
 Function {
  head: Destructured(
   FunctionHeadDestructured {
    ellipsis: false,
    identifier: None,
    arguments: [
     FunctionHeadDestructuredArgument {
      identifier: "lib",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "python3Packages",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "enableOCR",
      default: Some(
       Identifier(
        Identifier {
         id: "false",
         span: Span {
          start: Position {
           line: 3,
           column: 15,
          },
          end: Position {
           line: 3,
           column: 20,
          },
         },
        },
       ),
      ),
     },
     FunctionHeadDestructuredArgument {
      identifier: "qemu_pkg",
      default: Some(
       Identifier(
        Identifier {
         id: "qemu_test",
         span: Span {
          start: Position {
           line: 4,
           column: 14,
          },
          end: Position {
           line: 4,
           column: 23,
          },
         },
        },
       ),
      ),
     },
     FunctionHeadDestructuredArgument {
      identifier: "coreutils",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "imagemagick_light",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "libtiff",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "netpbm",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "qemu_test",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "socat",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "tesseract4",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "vde2",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "extraPythonPackages",
      default: Some(
       Function(
        Function {
         head: Simple(
          FunctionHeadSimple {
           identifier: "_",
          },
         ),
         body: List(
          List {
           elements: [],
           span: Span {
            start: Position {
             line: 13,
             column: 30,
            },
            end: Position {
             line: 13,
             column: 32,
            },
           },
          },
         ),
         span: Span {
          start: Position {
           line: 13,
           column: 26,
          },
          end: Position {
           line: 13,
           column: 32,
          },
         },
        },
       ),
      ),
     },
    ],
   },
  ),
  body: FunctionApplication(
   FunctionApplication {
    function: PropertyAccess(
     PropertyAccess {
      expression: Identifier(
       Identifier {
        id: "python3Packages",
        span: Span {
         start: Position {
          line: 16,
          column: 1,
         },
         end: Position {
          line: 16,
          column: 16,
         },
        },
       },
      ),
      attribute_path: [
       Raw(
        PartRaw {
         content: "buildPythonApplication",
         span: Span {
          start: Position {
           line: 16,
           column: 17,
          },
          end: Position {
           line: 16,
           column: 39,
          },
         },
        },
       ),
      ],
      default: None,
     },
    ),
    arguments: [
     Map(
      Map {
       recursive: true,
       bindings: [
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "pname",
             span: Span {
              start: Position {
               line: 17,
               column: 3,
              },
              end: Position {
               line: 17,
               column: 8,
              },
             },
            },
           ),
          ],
          to: String(
           String_ {
            parts: [
             Raw(
              PartRaw {
               content: "nixos-test-driver",
               span: Span {
                start: Position {
                 line: 17,
                 column: 12,
                },
                end: Position {
                 line: 17,
                 column: 29,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 17,
              column: 11,
             },
             end: Position {
              line: 17,
              column: 30,
             },
            },
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "version",
             span: Span {
              start: Position {
               line: 18,
               column: 3,
              },
              end: Position {
               line: 18,
               column: 10,
              },
             },
            },
           ),
          ],
          to: String(
           String_ {
            parts: [
             Raw(
              PartRaw {
               content: "1.1",
               span: Span {
                start: Position {
                 line: 18,
                 column: 14,
                },
                end: Position {
                 line: 18,
                 column: 17,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 18,
              column: 13,
             },
             end: Position {
              line: 18,
              column: 18,
             },
            },
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "src",
             span: Span {
              start: Position {
               line: 19,
               column: 3,
              },
              end: Position {
               line: 19,
               column: 6,
              },
             },
            },
           ),
          ],
          to: Path(
           Path {
            parts: [
             Raw(
              PartRaw {
               content: "./.",
               span: Span {
                start: Position {
                 line: 19,
                 column: 9,
                },
                end: Position {
                 line: 19,
                 column: 12,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 19,
              column: 9,
             },
             end: Position {
              line: 19,
              column: 12,
             },
            },
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "propagatedBuildInputs",
             span: Span {
              start: Position {
               line: 21,
               column: 3,
              },
              end: Position {
               line: 21,
               column: 24,
              },
             },
            },
           ),
          ],
          to: BinaryOperation(
           BinaryOperation {
            left: List(
             List {
              elements: [
               Identifier(
                Identifier {
                 id: "coreutils",
                 span: Span {
                  start: Position {
                   line: 22,
                   column: 5,
                  },
                  end: Position {
                   line: 22,
                   column: 14,
                  },
                 },
                },
               ),
               Identifier(
                Identifier {
                 id: "netpbm",
                 span: Span {
                  start: Position {
                   line: 23,
                   column: 5,
                  },
                  end: Position {
                   line: 23,
                   column: 11,
                  },
                 },
                },
               ),
               PropertyAccess(
                PropertyAccess {
                 expression: Identifier(
                  Identifier {
                   id: "python3Packages",
                   span: Span {
                    start: Position {
                     line: 24,
                     column: 5,
                    },
                    end: Position {
                     line: 24,
                     column: 20,
                    },
                   },
                  },
                 ),
                 attribute_path: [
                  Raw(
                   PartRaw {
                    content: "colorama",
                    span: Span {
                     start: Position {
                      line: 24,
                      column: 21,
                     },
                     end: Position {
                      line: 24,
                      column: 29,
                     },
                    },
                   },
                  ),
                 ],
                 default: None,
                },
               ),
               PropertyAccess(
                PropertyAccess {
                 expression: Identifier(
                  Identifier {
                   id: "python3Packages",
                   span: Span {
                    start: Position {
                     line: 25,
                     column: 5,
                    },
                    end: Position {
                     line: 25,
                     column: 20,
                    },
                   },
                  },
                 ),
                 attribute_path: [
                  Raw(
                   PartRaw {
                    content: "ptpython",
                    span: Span {
                     start: Position {
                      line: 25,
                      column: 21,
                     },
                     end: Position {
                      line: 25,
                      column: 29,
                     },
                    },
                   },
                  ),
                 ],
                 default: None,
                },
               ),
               Identifier(
                Identifier {
                 id: "qemu_pkg",
                 span: Span {
                  start: Position {
                   line: 26,
                   column: 5,
                  },
                  end: Position {
                   line: 26,
                   column: 13,
                  },
                 },
                },
               ),
               Identifier(
                Identifier {
                 id: "socat",
                 span: Span {
                  start: Position {
                   line: 27,
                   column: 5,
                  },
                  end: Position {
                   line: 27,
                   column: 10,
                  },
                 },
                },
               ),
               Identifier(
                Identifier {
                 id: "vde2",
                 span: Span {
                  start: Position {
                   line: 28,
                   column: 5,
                  },
                  end: Position {
                   line: 28,
                   column: 9,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 21,
                column: 27,
               },
               end: Position {
                line: 29,
                column: 4,
               },
              },
             },
            ),
            operator: Concatenation,
            right: BinaryOperation(
             BinaryOperation {
              left: FunctionApplication(
               FunctionApplication {
                function: PropertyAccess(
                 PropertyAccess {
                  expression: Identifier(
                   Identifier {
                    id: "lib",
                    span: Span {
                     start: Position {
                      line: 30,
                      column: 9,
                     },
                     end: Position {
                      line: 30,
                      column: 12,
                     },
                    },
                   },
                  ),
                  attribute_path: [
                   Raw(
                    PartRaw {
                     content: "optionals",
                     span: Span {
                      start: Position {
                       line: 30,
                       column: 13,
                      },
                      end: Position {
                       line: 30,
                       column: 22,
                      },
                     },
                    },
                   ),
                  ],
                  default: None,
                 },
                ),
                arguments: [
                 Identifier(
                  Identifier {
                   id: "enableOCR",
                   span: Span {
                    start: Position {
                     line: 30,
                     column: 23,
                    },
                    end: Position {
                     line: 30,
                     column: 32,
                    },
                   },
                  },
                 ),
                 List(
                  List {
                   elements: [
                    Identifier(
                     Identifier {
                      id: "imagemagick_light",
                      span: Span {
                       start: Position {
                        line: 30,
                        column: 35,
                       },
                       end: Position {
                        line: 30,
                        column: 52,
                       },
                      },
                     },
                    ),
                    Identifier(
                     Identifier {
                      id: "tesseract4",
                      span: Span {
                       start: Position {
                        line: 30,
                        column: 53,
                       },
                       end: Position {
                        line: 30,
                        column: 63,
                       },
                      },
                     },
                    ),
                   ],
                   span: Span {
                    start: Position {
                     line: 30,
                     column: 33,
                    },
                    end: Position {
                     line: 30,
                     column: 65,
                    },
                   },
                  },
                 ),
                ],
               },
              ),
              operator: Concatenation,
              right: FunctionApplication(
               FunctionApplication {
                function: Identifier(
                 Identifier {
                  id: "extraPythonPackages",
                  span: Span {
                   start: Position {
                    line: 31,
                    column: 8,
                   },
                   end: Position {
                    line: 31,
                    column: 27,
                   },
                  },
                 },
                ),
                arguments: [
                 Identifier(
                  Identifier {
                   id: "python3Packages",
                   span: Span {
                    start: Position {
                     line: 31,
                     column: 28,
                    },
                    end: Position {
                     line: 31,
                     column: 43,
                    },
                   },
                  },
                 ),
                ],
               },
              ),
             },
            ),
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "doCheck",
             span: Span {
              start: Position {
               line: 33,
               column: 3,
              },
              end: Position {
               line: 33,
               column: 10,
              },
             },
            },
           ),
          ],
          to: Identifier(
           Identifier {
            id: "true",
            span: Span {
             start: Position {
              line: 33,
              column: 13,
             },
             end: Position {
              line: 33,
              column: 17,
             },
            },
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "checkInputs",
             span: Span {
              start: Position {
               line: 34,
               column: 3,
              },
              end: Position {
               line: 34,
               column: 14,
              },
             },
            },
           ),
          ],
          to: With(
           With {
            expression: Identifier(
             Identifier {
              id: "python3Packages",
              span: Span {
               start: Position {
                line: 34,
                column: 22,
               },
               end: Position {
                line: 34,
                column: 37,
               },
              },
             },
            ),
            target: List(
             List {
              elements: [
               Identifier(
                Identifier {
                 id: "mypy",
                 span: Span {
                  start: Position {
                   line: 34,
                   column: 41,
                  },
                  end: Position {
                   line: 34,
                   column: 45,
                  },
                 },
                },
               ),
               Identifier(
                Identifier {
                 id: "pylint",
                 span: Span {
                  start: Position {
                   line: 34,
                   column: 46,
                  },
                  end: Position {
                   line: 34,
                   column: 52,
                  },
                 },
                },
               ),
               Identifier(
                Identifier {
                 id: "black",
                 span: Span {
                  start: Position {
                   line: 34,
                   column: 53,
                  },
                  end: Position {
                   line: 34,
                   column: 58,
                  },
                 },
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 34,
                column: 39,
               },
               end: Position {
                line: 34,
                column: 60,
               },
              },
             },
            ),
            span: Span {
             start: Position {
              line: 34,
              column: 17,
             },
             end: Position {
              line: 34,
              column: 60,
             },
            },
           },
          ),
         },
        ),
        KeyValue(
         BindingKeyValue {
          from: [
           Raw(
            PartRaw {
             content: "checkPhase",
             span: Span {
              start: Position {
               line: 35,
               column: 3,
              },
              end: Position {
               line: 35,
               column: 13,
              },
             },
            },
           ),
          ],
          to: IndentedString(
           IndentedString {
            parts: [
             Raw(
              PartRaw {
               content: "mypy --disallow-untyped-defs \\\n      --no-implicit-optional \\\n      --pretty \\\n      --no-color-output \\\n      --ignore-missing-imports ",
               span: Span {
                start: Position {
                 line: 36,
                 column: 1,
                },
                end: Position {
                 line: 40,
                 column: 36,
                },
               },
              },
             ),
             Interpolation(
              PartInterpolation {
               expression: Identifier(
                Identifier {
                 id: "src",
                 span: Span {
                  start: Position {
                   line: 40,
                   column: 38,
                  },
                  end: Position {
                   line: 40,
                   column: 41,
                  },
                 },
                },
               ),
              },
             ),
             Raw(
              PartRaw {
               content: "/test_driver\npylint --errors-only --enable=unused-import ",
               span: Span {
                start: Position {
                 line: 36,
                 column: 1,
                },
                end: Position {
                 line: 41,
                 column: 49,
                },
               },
              },
             ),
             Interpolation(
              PartInterpolation {
               expression: Identifier(
                Identifier {
                 id: "src",
                 span: Span {
                  start: Position {
                   line: 41,
                   column: 51,
                  },
                  end: Position {
                   line: 41,
                   column: 54,
                  },
                 },
                },
               ),
              },
             ),
             Raw(
              PartRaw {
               content: "/test_driver\nblack --check --diff ",
               span: Span {
                start: Position {
                 line: 36,
                 column: 1,
                },
                end: Position {
                 line: 42,
                 column: 26,
                },
               },
              },
             ),
             Interpolation(
              PartInterpolation {
               expression: Identifier(
                Identifier {
                 id: "src",
                 span: Span {
                  start: Position {
                   line: 42,
                   column: 28,
                  },
                  end: Position {
                   line: 42,
                   column: 31,
                  },
                 },
                },
               ),
              },
             ),
             Raw(
              PartRaw {
               content: "/test_driver\n",
               span: Span {
                start: Position {
                 line: 36,
                 column: 1,
                },
                end: Position {
                 line: 43,
                 column: 3,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 35,
              column: 16,
             },
             end: Position {
              line: 43,
              column: 5,
             },
            },
           },
          ),
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 16,
         column: 40,
        },
        end: Position {
         line: 44,
         column: 2,
        },
       },
      },
     ),
    ],
   },
  ),
  span: Span {
   start: Position {
    line: 1,
    column: 1,
   },
   end: Position {
    line: 44,
    column: 2,
   },
  },
 },
)