---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "udevDebug",
    default: Some(
     Variable {
      identifier: "false",
      position: (6, 15),
     },
    ),
   },
   FunctionArgument {
    identifier: "drivers",
    default: Some(
     List {
      elements: [],
      position: (5, 13),
     },
    ),
   },
   FunctionArgument {
    identifier: "runCommand",
    default: None,
   },
   FunctionArgument {
    identifier: "makeWrapper",
    default: None,
   },
   FunctionArgument {
    identifier: "libwebcam",
    default: None,
   },
   FunctionArgument {
    identifier: "buildEnv",
    default: None,
   },
  ],
  ellipsis: false,
 },
 definition: LetIn {
  bindings: [
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "version",
       position: (10, 3),
      },
     ],
    },
    String {
     parts: [
      Raw {
       content: "0.0.0",
       position: (10, 14),
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "dataPath",
       position: (12, 3),
      },
     ],
    },
    FunctionApplication {
     function: Variable {
      identifier: "buildEnv",
      position: (12, 14),
     },
     arguments: [
      Map {
       bindings: [
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "name",
            position: (13, 5),
           },
          ],
         },
         String {
          parts: [
           Raw {
            content: "uvcdynctrl-with-drivers-data-path",
            position: (13, 13),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "paths",
            position: (14, 5),
           },
          ],
         },
         BinaryOperation {
          operator: Concatenation,
          operands: [
           Variable {
            identifier: "drivers",
            position: (14, 13),
           },
           List {
            elements: [
             Variable {
              identifier: "libwebcam",
              position: (14, 26),
             },
            ],
            position: (14, 24),
           },
          ],
          position: (14, 21),
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "pathsToLink",
            position: (15, 5),
           },
          ],
         },
         List {
          elements: [
           String {
            parts: [
             Raw {
              content: "/share/uvcdynctrl/data",
              position: (15, 22),
             },
            ],
           },
          ],
          position: (15, 19),
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "ignoreCollisions",
            position: (16, 5),
           },
          ],
         },
         Variable {
          identifier: "false",
          position: (16, 24),
         },
        ),
       ],
       recursive: false,
       position: (12, 23),
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "dataDir",
       position: (19, 3),
      },
     ],
    },
    String {
     parts: [
      Expression {
       expression: Variable {
        identifier: "dataPath",
        position: (19, 16),
       },
      },
      Raw {
       content: "/share/uvcdynctrl/data",
       position: (19, 25),
      },
     ],
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "udevDebugVarValue",
       position: (20, 3),
      },
     ],
    },
    IfThenElse {
     predicate: Variable {
      identifier: "udevDebug",
      position: (20, 26),
     },
     then: String {
      parts: [
       Raw {
        content: "1",
        position: (20, 42),
       },
      ],
     },
     else_: String {
      parts: [
       Raw {
        content: "0",
        position: (20, 51),
       },
      ],
     },
     position: (20, 23),
    },
   ),
  ],
  target: FunctionApplication {
   function: Variable {
    identifier: "runCommand",
    position: (23, 1),
   },
   arguments: [
    String {
     parts: [
      Raw {
       content: "uvcdynctrl-udev-rules-",
       position: (23, 13),
      },
      Expression {
       expression: Variable {
        identifier: "version",
        position: (23, 37),
       },
      },
     ],
    },
    Map {
     bindings: [
      Inherit(
       None,
       [
        Raw {
         content: "dataPath",
         position: (25, 11),
        },
       ],
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "buildInputs",
          position: (26, 3),
         },
        ],
       },
       List {
        elements: [
         Variable {
          identifier: "makeWrapper",
          position: (27, 5),
         },
         Variable {
          identifier: "libwebcam",
          position: (28, 5),
         },
        ],
        position: (26, 17),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontPatchELF",
          position: (30, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (30, 18),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "dontStrip",
          position: (31, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (31, 15),
       },
      ),
      KeyValue(
       AttributePath {
        attributes: [
         Raw {
          content: "preferLocalBuild",
          position: (32, 3),
         },
        ],
       },
       Variable {
        identifier: "true",
        position: (32, 22),
       },
      ),
     ],
     recursive: false,
     position: (24, 1),
    },
    String {
     parts: [
      Raw {
       content: "mkdir -p \"$out/lib/udev\"\nmakeWrapper \"",
       position: (35, 1),
      },
      Expression {
       expression: Variable {
        identifier: "libwebcam",
        position: (36, 18),
       },
      },
      Raw {
       content: "/lib/udev/uvcdynctrl\" \"$out/lib/udev/uvcdynctrl\" \\\n  --set NIX_UVCDYNCTRL_DATA_DIR \"",
       position: (36, 28),
      },
      Expression {
       expression: Variable {
        identifier: "dataDir",
        position: (37, 38),
       },
      },
      Raw {
       content: "\" \\\n  --set NIX_UVCDYNCTRL_UDEV_DEBUG \"",
       position: (37, 46),
      },
      Expression {
       expression: Variable {
        identifier: "udevDebugVarValue",
        position: (38, 40),
       },
      },
      Raw {
       content: "\"\n\nmkdir -p \"$out/lib/udev/rules.d\"\ncat \"",
       position: (38, 58),
      },
      Expression {
       expression: Variable {
        identifier: "libwebcam",
        position: (41, 10),
       },
      },
      Raw {
       content: "/lib/udev/rules.d/80-uvcdynctrl.rules\" | \\\n  sed -r \"s#RUN\\+\\=\\\"([^\\\"]+)\\\"#RUN\\+\\=\\\"$out/lib/udev/uvcdynctrl\\\"#g\" > \\\n  \"$out/lib/udev/rules.d/80-uvcdynctrl.rules\"\n",
       position: (41, 20),
      },
     ],
    },
   ],
  },
  position: (9, 1),
 },
 position: (1, 1),
}