---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "lib",
    default: None,
   },
   FunctionArgument {
    identifier: "config",
    default: None,
   },
  ],
  ellipsis: true,
 },
 definition: LetIn {
  bindings: [
   KeyValue(
    AttributePath {
     attributes: [
      Raw {
       content: "kernel",
       position: (3, 5),
      },
     ],
    },
    PropertyAccess {
     expression: Variable {
      identifier: "config",
      position: (3, 14),
     },
     attribute_path: AttributePath {
      attributes: [
       Raw {
        content: "boot",
        position: (3, 21),
       },
       Raw {
        content: "kernelPackages",
        position: (3, 26),
       },
      ],
     },
     default: None,
    },
   ),
  ],
  target: Map {
   bindings: [
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "options",
        position: (9, 3),
       },
      ],
     },
     Map {
      bindings: [
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "hardware",
           position: (11, 5),
          },
          Raw {
           content: "nvidiaOptimus",
           position: (11, 14),
          },
          Raw {
           content: "disable",
           position: (11, 28),
          },
         ],
        },
        FunctionApplication {
         function: PropertyAccess {
          expression: Variable {
           identifier: "lib",
           position: (11, 38),
          },
          attribute_path: AttributePath {
           attributes: [
            Raw {
             content: "mkOption",
             position: (11, 42),
            },
           ],
          },
          default: None,
         },
         arguments: [
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "default",
                position: (12, 7),
               },
              ],
             },
             Variable {
              identifier: "false",
              position: (12, 17),
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "type",
                position: (13, 7),
               },
              ],
             },
             PropertyAccess {
              expression: Variable {
               identifier: "lib",
               position: (13, 14),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "types",
                 position: (13, 18),
                },
                Raw {
                 content: "bool",
                 position: (13, 24),
                },
               ],
              },
              default: None,
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "description",
                position: (14, 7),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "Completely disable the NVIDIA graphics card and use the\nintegrated graphics processor instead.\n",
                position: (15, 1),
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (11, 51),
          },
         ],
        },
       ),
      ],
      recursive: false,
      position: (9, 13),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "config",
        position: (25, 3),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "lib",
        position: (25, 12),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "mkIf",
          position: (25, 16),
         },
        ],
       },
       default: None,
      },
      arguments: [
       PropertyAccess {
        expression: Variable {
         identifier: "config",
         position: (25, 21),
        },
        attribute_path: AttributePath {
         attributes: [
          Raw {
           content: "hardware",
           position: (25, 28),
          },
          Raw {
           content: "nvidiaOptimus",
           position: (25, 37),
          },
          Raw {
           content: "disable",
           position: (25, 51),
          },
         ],
        },
        default: None,
       },
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "boot",
             position: (26, 5),
            },
            Raw {
             content: "blacklistedKernelModules",
             position: (26, 10),
            },
           ],
          },
          List {
           elements: [
            String {
             parts: [
              Raw {
               content: "nouveau",
               position: (26, 39),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "nvidia",
               position: (26, 49),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "nvidiafb",
               position: (26, 58),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "nvidia-drm",
               position: (26, 69),
              },
             ],
            },
           ],
           position: (26, 37),
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "boot",
             position: (27, 5),
            },
            Raw {
             content: "kernelModules",
             position: (27, 10),
            },
           ],
          },
          List {
           elements: [
            String {
             parts: [
              Raw {
               content: "bbswitch",
               position: (27, 29),
              },
             ],
            },
           ],
           position: (27, 26),
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "boot",
             position: (28, 5),
            },
            Raw {
             content: "extraModulePackages",
             position: (28, 10),
            },
           ],
          },
          List {
           elements: [
            PropertyAccess {
             expression: Variable {
              identifier: "kernel",
              position: (28, 34),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "bbswitch",
                position: (28, 41),
               },
              ],
             },
             default: None,
            },
           ],
           position: (28, 32),
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "systemd",
             position: (30, 5),
            },
            Raw {
             content: "services",
             position: (30, 13),
            },
            Raw {
             content: "bbswitch",
             position: (30, 22),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "description",
                position: (31, 7),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "Disable NVIDIA Card",
                position: (31, 22),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "wantedBy",
                position: (32, 7),
               },
              ],
             },
             List {
              elements: [
               String {
                parts: [
                 Raw {
                  content: "multi-user.target",
                  position: (32, 21),
                 },
                ],
               },
              ],
              position: (32, 18),
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "serviceConfig",
                position: (33, 7),
               },
              ],
             },
             Map {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "Type",
                   position: (34, 9),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "oneshot",
                   position: (34, 17),
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "RemainAfterExit",
                   position: (35, 9),
                  },
                 ],
                },
                Variable {
                 identifier: "true",
                 position: (35, 27),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "ExecStart",
                   position: (36, 9),
                  },
                 ],
                },
                String {
                 parts: [
                  Expression {
                   expression: PropertyAccess {
                    expression: Variable {
                     identifier: "kernel",
                     position: (36, 24),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "bbswitch",
                       position: (36, 31),
                      },
                     ],
                    },
                    default: None,
                   },
                  },
                  Raw {
                   content: "/bin/discrete_vga_poweroff",
                   position: (36, 40),
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "ExecStop",
                   position: (37, 9),
                  },
                 ],
                },
                String {
                 parts: [
                  Expression {
                   expression: PropertyAccess {
                    expression: Variable {
                     identifier: "kernel",
                     position: (37, 23),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "bbswitch",
                       position: (37, 30),
                      },
                     ],
                    },
                    default: None,
                   },
                  },
                  Raw {
                   content: "/bin/discrete_vga_poweron",
                   position: (37, 39),
                  },
                 ],
                },
               ),
              ],
              recursive: false,
              position: (33, 23),
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "path",
                position: (39, 7),
               },
              ],
             },
             List {
              elements: [
               PropertyAccess {
                expression: Variable {
                 identifier: "kernel",
                 position: (39, 16),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bbswitch",
                   position: (39, 23),
                  },
                 ],
                },
                default: None,
               },
              ],
              position: (39, 14),
             },
            ),
           ],
           recursive: false,
           position: (30, 33),
          },
         ),
        ],
        recursive: false,
        position: (25, 59),
       },
      ],
     },
    ),
   ],
   recursive: false,
   position: (5, 1),
  },
  position: (3, 1),
 },
 position: (1, 1),
}