{ inputs, lib, ... }: let userOpt = with lib; { username = mkOption { type = types.str; }; wm = mkOption { type = types.enum [ "Wayland" "X11" "-" ]; default = "-"; }; git = { username = mkOption { type = types.str; }; email = mkOption { type = types.str; }; key = mkOption { type = types.str; }; }; }; netOpt = with lib; { ble = { enable = mkOption { type = types.bool; default = false; }; }; wlp = { enable = mkOption { type = types.bool; default = false; }; nif = mkOption { type = types.str; default = ""; }; }; wg = { enable = mkOption { type = types.bool; default = false; }; ip4 = mkOption { type = types.str; default = ""; }; ip6 = mkOption { type = types.str; default = ""; }; }; }; makeOpt = with lib; { cli = mkOption { type = types.bool; default = true; }; gui = mkOption { type = types.bool; default = false; }; virt = mkOption { type = types.bool; default = true; }; power = mkOption { type = types.bool; default = false; }; game = mkOption { type = types.bool; default = false; }; develop = mkOption { type = types.bool; default = false; }; }; serverOpt = with lib; { hostDomain = mkOption { type = types.str; }; mailDomain = mkOption { type = types.str; }; mailServer = mkOption { type = types.str; }; dbHost = mkOption { type = types.str; default = "localhost"; }; dbPort = mkOption { type = types.str; default = "3306"; }; configPath = mkOption { type = types.str; default = "/media/config"; }; dataPath = mkOption { type = types.str; default = "/media/data"; }; }; in with lib; { options.usercfg = userOpt; options.syscfg = { hostname = mkOption { type = types.str; }; defaultUser = mkOption { type = types.str; }; make = makeOpt; net = netOpt; users = mkOption { type = types.listOf (types.submodule { options = userOpt; }); default = [ ]; }; }; }