{ inputs, lib, utils, pkgs, config, hostConfig, dnsNix, ... }: let modules = inputs.haumea.lib.load { src = ./nixos; transformer = [ inputs.haumea.lib.transformers.liftDefault ( _: lib.mapAttrs ( name: value: ( if value ? option then ( (lib.removeAttrs value [ "option" ]) // { nixosOptions = lib.mkOption value.option; } ) else if value ? options then ( (lib.removeAttrs value [ "options" ]) // { nixosOptions = ( lib.mapAttrsRecursiveCond (element: !(element ? type)) ( path: value: lib.mkOption value ) value.options ); } ) else (value) ) ) ) (inputs.haumea.lib.transformers.hoistAttrs "nixosOptions" "options") ]; inputs = { inherit (inputs.self) homeManagerModules; inherit inputs lib utils pkgs config hostConfig dnsNix ; }; }; in { options = modules.options; config = lib.mkMerge ( modules |> lib.filterAttrs (name: value: name != "options") |> lib.collect (element: element ? config) |> lib.map (element: element.config) ); }