---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "netDevices",
    default: Some(
     List {
      elements: [],
      position: (1, 38),
     },
    ),
   },
   FunctionArgument {
    identifier: "brscan4",
    default: None,
   },
   FunctionArgument {
    identifier: "lib",
    default: None,
   },
   FunctionArgument {
    identifier: "stdenv",
    default: None,
   },
  ],
  ellipsis: false,
 },
 definition: LetIn {
  bindings: [
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "addNetDev",
       position: (24, 3),
      },
     ],
    },
    Function {
     argument: Some(
      "nd",
     ),
     arguments: FunctionArguments {
      arguments: [],
      ellipsis: false,
     },
     definition: String {
      parts: [
       Raw {
        content: "brsaneconfig4 -a \\\nname=\"",
        position: (25, 1),
       },
       Expression {
        expression: PropertyAccess {
         expression: Variable {
          identifier: "nd",
          position: (26, 13),
         },
         attribute_path: AttributePath {
          attributes: [
           Raw {
            content: "name",
            position: (26, 16),
           },
          ],
         },
         default: None,
        },
       },
       Raw {
        content: "\" \\\nmodel=\"",
        position: (26, 21),
       },
       Expression {
        expression: PropertyAccess {
         expression: Variable {
          identifier: "nd",
          position: (27, 14),
         },
         attribute_path: AttributePath {
          attributes: [
           Raw {
            content: "model",
            position: (27, 17),
           },
          ],
         },
         default: None,
        },
       },
       Raw {
        content: "\" \\\n",
        position: (27, 23),
       },
       Expression {
        expression: IfThenElse {
         predicate: BinaryOperation {
          operator: LogicalAnd,
          operands: [
           FunctionApplication {
            function: PropertyAccess {
             expression: Variable {
              identifier: "lib",
              position: (28, 11),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "hasAttr",
                position: (28, 15),
               },
              ],
             },
             default: None,
            },
            arguments: [
             String {
              parts: [
               Raw {
                content: "nodename",
                position: (28, 24),
               },
              ],
             },
             Variable {
              identifier: "nd",
              position: (28, 34),
             },
            ],
           },
           BinaryOperation {
            operator: NotEqualTo,
            operands: [
             PropertyAccess {
              expression: Variable {
               identifier: "nd",
               position: (28, 40),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "nodename",
                 position: (28, 43),
                },
               ],
              },
              default: None,
             },
             Variable {
              identifier: "null",
              position: (28, 55),
             },
            ],
            position: (28, 52),
           },
          ],
          position: (28, 37),
         },
         then: String {
          parts: [
           Raw {
            content: "nodename=\"",
            position: (29, 9),
           },
           Expression {
            expression: PropertyAccess {
             expression: Variable {
              identifier: "nd",
              position: (29, 21),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "nodename",
                position: (29, 24),
               },
              ],
             },
             default: None,
            },
           },
           Raw {
            content: "\"",
            position: (29, 33),
           },
          ],
         },
         else_: String {
          parts: [
           Raw {
            content: "ip=\"",
            position: (30, 9),
           },
           Expression {
            expression: PropertyAccess {
             expression: Variable {
              identifier: "nd",
              position: (30, 15),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "ip",
                position: (30, 18),
               },
              ],
             },
             default: None,
            },
           },
           Raw {
            content: "\"",
            position: (30, 21),
           },
          ],
         },
         position: (28, 7),
        },
       },
      ],
     },
     position: (24, 15),
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "addAllNetDev",
       position: (31, 3),
      },
     ],
    },
    Function {
     argument: Some(
      "xs",
     ),
     arguments: FunctionArguments {
      arguments: [],
      ellipsis: false,
     },
     definition: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "lib",
        position: (31, 22),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "concatStringsSep",
          position: (31, 26),
         },
        ],
       },
       default: None,
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: "\n",
          position: (31, 44),
         },
        ],
       },
       FunctionApplication {
        function: Variable {
         identifier: "map",
         position: (31, 49),
        },
        arguments: [
         Variable {
          identifier: "addNetDev",
          position: (31, 53),
         },
         Variable {
          identifier: "xs",
          position: (31, 63),
         },
        ],
       },
      ],
     },
     position: (31, 18),
    },
   ),
  ],
  target: FunctionApplication {
   function: PropertyAccess {
    expression: Variable {
     identifier: "stdenv",
     position: (34, 1),
    },
    attribute_path: AttributePath {
     attributes: [
      Raw {
       content: "mkDerivation",
       position: (34, 8),
      },
     ],
    },
    default: None,
   },
   arguments: [
    Map {
     bindings: [
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "name",
          position: (36, 3),
         },
        ],
       },
       String {
        parts: [
         Raw {
          content: "brscan4-etc-files-0.4.3-3",
          position: (36, 11),
         },
        ],
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "src",
          position: (37, 3),
         },
        ],
       },
       String {
        parts: [
         Expression {
          expression: Variable {
           identifier: "brscan4",
           position: (37, 12),
          },
         },
         Raw {
          content: "/opt/brother/scanner/brscan4",
          position: (37, 20),
         },
        ],
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "nativeBuildInputs",
          position: (39, 3),
         },
        ],
       },
       List {
        elements: [
         Variable {
          identifier: "brscan4",
          position: (39, 25),
         },
        ],
        position: (39, 23),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontConfigure",
          position: (41, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (41, 19),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "buildPhase",
          position: (43, 3),
         },
        ],
       },
       String {
        parts: [
         Raw {
          content: "TARGET_DIR=\"$out/etc/opt/brother/scanner/brscan4\"\nmkdir -p \"$TARGET_DIR\"\ncp -rp \"./models4\" \"$TARGET_DIR\"\ncp -rp \"./Brsane4.ini\" \"$TARGET_DIR\"\ncp -rp \"./brsanenetdevice4.cfg\" \"$TARGET_DIR\"\n\nexport BRSANENETDEVICE4_CFG_FILENAME=\"$TARGET_DIR/brsanenetdevice4.cfg\"\n\nprintf ",
          position: (44, 1),
         },
         Raw {
          content: "'",
          position: (52, 12),
         },
         Expression {
          expression: FunctionApplication {
           function: Variable {
            identifier: "addAllNetDev",
            position: (52, 15),
           },
           arguments: [
            Variable {
             identifier: "netDevices",
             position: (52, 28),
            },
           ],
          },
         },
         Raw {
          content: "\\n'\n\n",
          position: (52, 39),
         },
         Expression {
          expression: FunctionApplication {
           function: Variable {
            identifier: "addAllNetDev",
            position: (54, 7),
           },
           arguments: [
            Variable {
             identifier: "netDevices",
             position: (54, 20),
            },
           ],
          },
         },
         Raw {
          content: "\n",
          position: (54, 31),
         },
        ],
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontInstall",
          position: (57, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (57, 17),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontStrip",
          position: (58, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (58, 15),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontPatchELF",
          position: (59, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (59, 18),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "meta",
          position: (61, 3),
         },
        ],
       },
       With {
        expression: Variable {
         identifier: "lib",
         position: (61, 15),
        },
        target: Map {
         bindings: [
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "description",
              position: (62, 5),
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "Brother brscan4 sane backend driver etc files",
              position: (62, 20),
             },
            ],
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "homepage",
              position: (63, 5),
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "http://www.brother.com",
              position: (63, 17),
             },
            ],
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "platforms",
              position: (64, 5),
             },
            ],
           },
           PropertyAccess {
            expression: Variable {
             identifier: "platforms",
             position: (64, 17),
            },
            attribute_path: AttributePath {
             attributes: [
              Raw {
               content: "linux",
               position: (64, 27),
              },
             ],
            },
            default: None,
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "license",
              position: (65, 5),
             },
            ],
           },
           PropertyAccess {
            expression: Variable {
             identifier: "licenses",
             position: (65, 15),
            },
            attribute_path: AttributePath {
             attributes: [
              Raw {
               content: "unfree",
               position: (65, 24),
              },
             ],
            },
            default: None,
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "maintainers",
              position: (66, 5),
             },
            ],
           },
           With {
            expression: Variable {
             identifier: "maintainers",
             position: (66, 24),
            },
            target: List {
             elements: [
              Variable {
               identifier: "jraygauthier",
               position: (66, 39),
              },
             ],
             position: (66, 37),
            },
            position: (66, 19),
           },
          ),
         ],
         recursive: false,
         position: (61, 20),
        },
        position: (61, 10),
       },
      ),
     ],
     recursive: false,
     position: (34, 21),
    },
   ],
  },
  position: (22, 1),
 },
 position: (1, 1),
}