---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "lib",
    default: None,
   },
   FunctionArgument {
    identifier: "options",
    default: None,
   },
   FunctionArgument {
    identifier: "config",
    default: None,
   },
  ],
  ellipsis: true,
 },
 definition: LetIn {
  bindings: [
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "path",
       position: (3, 3),
      },
     ],
    },
    List {
     elements: [
      String {
       parts: [
        Raw {
         content: "deployment",
         position: (3, 13),
        },
       ],
      },
      String {
       parts: [
        Raw {
         content: "autoLuks",
         position: (3, 26),
        },
       ],
      },
     ],
     position: (3, 10),
    },
   ),
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "hasAutoLuksConfig",
       position: (4, 3),
      },
     ],
    },
    BinaryOperation {
     operator: LogicalAnd,
     operands: [
      FunctionApplication {
       function: PropertyAccess {
        expression: Variable {
         identifier: "lib",
         position: (4, 23),
        },
        attribute_path: AttributePath {
         attributes: [
          Raw {
           content: "hasAttrByPath",
           position: (4, 27),
          },
         ],
        },
        default: None,
       },
       arguments: [
        Variable {
         identifier: "path",
         position: (4, 41),
        },
        Variable {
         identifier: "config",
         position: (4, 46),
        },
       ],
      },
      BinaryOperation {
       operator: NotEqualTo,
       operands: [
        FunctionApplication {
         function: PropertyAccess {
          expression: Variable {
           identifier: "lib",
           position: (4, 57),
          },
          attribute_path: AttributePath {
           attributes: [
            Raw {
             content: "attrByPath",
             position: (4, 61),
            },
           ],
          },
          default: None,
         },
         arguments: [
          Variable {
           identifier: "path",
           position: (4, 72),
          },
          Map {
           bindings: [],
           recursive: false,
           position: (4, 77),
          },
          Variable {
           identifier: "config",
           position: (4, 80),
          },
         ],
        },
        Map {
         bindings: [],
         recursive: false,
         position: (4, 91),
        },
       ],
       position: (4, 88),
      },
     ],
     position: (4, 53),
    },
   ),
   Inherit(
    Some(
     PropertyAccess {
      expression: Variable {
       identifier: "config",
       position: (6, 12),
      },
      attribute_path: AttributePath {
       attributes: [
        Raw {
         content: "nixops",
         position: (6, 19),
        },
       ],
      },
      default: None,
     },
    ),
    [
     Raw {
      content: "enableDeprecatedAutoLuks",
      position: (6, 27),
     },
    ],
   ),
  ],
  target: Map {
   bindings: [
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "options",
        position: (8, 3),
       },
       Raw {
        content: "nixops",
        position: (8, 11),
       },
       Raw {
        content: "enableDeprecatedAutoLuks",
        position: (8, 18),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "lib",
        position: (8, 45),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "mkEnableOption",
          position: (8, 49),
         },
        ],
       },
       default: None,
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: "Enable the deprecated NixOps AutoLuks module",
          position: (8, 65),
         },
        ],
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "config",
        position: (10, 3),
       },
      ],
     },
     Map {
      bindings: [
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "assertions",
           position: (11, 5),
          },
         ],
        },
        List {
         elements: [
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "assertion",
                position: (13, 9),
               },
              ],
             },
             IfThenElse {
              predicate: Variable {
               identifier: "hasAutoLuksConfig",
               position: (13, 24),
              },
              then: BinaryOperation {
               operator: LogicalAnd,
               operands: [
                Variable {
                 identifier: "hasAutoLuksConfig",
                 position: (13, 47),
                },
                Variable {
                 identifier: "enableDeprecatedAutoLuks",
                 position: (13, 68),
                },
               ],
               position: (13, 65),
              },
              else_: Variable {
               identifier: "true",
               position: (13, 98),
              },
              position: (13, 21),
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "message",
                position: (14, 9),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "⚠\u{fe0f}  !!! WARNING !!! ⚠\u{fe0f}\n\n  NixOps autoLuks is deprecated. The feature was never widely used and the maintenance did outgrow the benefit.\n  If you still want to use the module:\n    a) Please raise your voice in the issue tracking usage of the module:\n       https://github.com/NixOS/nixpkgs/issues/62211\n    b) make sure you set the `_netdev` option for each of the file\n       systems referring to block devices provided by the autoLuks module.\n\n       ⚠\u{fe0f} If you do not set the option your system will not boot anymore! ⚠\u{fe0f}\n\n        {\n          fileSystems.\"/secret\" = { options = [ \"_netdev\" ]; };\n        }\n\n    b) set the option >nixops.enableDeprecatedAutoLuks = true< to remove this error.\n\n\n  For more details read through the following resources:\n    - https://github.com/NixOS/nixops/pull/1156\n    - https://github.com/NixOS/nixpkgs/issues/47550\n    - https://github.com/NixOS/nixpkgs/issues/62211\n    - https://github.com/NixOS/nixpkgs/pull/61321\n",
                position: (15, 1),
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (12, 7),
          },
         ],
         position: (11, 18),
        },
       ),
      ],
      recursive: false,
      position: (10, 12),
     },
    ),
   ],
   recursive: false,
   position: (7, 4),
  },
  position: (2, 1),
 },
 position: (1, 1),
}