{ lib, boot, ... }: with lib; let nixpkgsOverlayType = lib.mkOptionType { name = "nixpkgs-overlay"; description = "nixpkgs overlay"; check = lib.isFunction; merge = lib.mergeOneOption; }; in { options.universe = { programs = { amnezia-vpn.enable = mkEnableOption "Enable AmneziaVPN app"; android-tools.enable = mkEnableOption "Enable android tools (adb, fastboot, ...)"; }; system = { tmpUseTmpfs = mkEnableOption "Use tmpfs for /tmp"; emulatedSystems = mkOption { description = "Systems to emulate"; type = with types; listOf enum builtins.attrNames boot.binfmt.magics; default = []; }; arch = mkOption { description = "System architecture"; type = with types; uniq str; }; hostname = mkOption { description = "System hostname"; type = with types; uniq str; }; username = mkOption { description = "Username"; type = with types; uniq str; }; }; nixpkgs = { allowUnfree = mkEnableOption "Enable non-free software"; overlays = mkOption { description = "List of nixpkgs overlays"; type = with types; listOf nixpkgsOverlayType; default = []; }; }; locale = { timeZone = mkOption { description = "System time zone"; type = with types; uniq str; default = "Asia/Yekaterinburg"; }; lang = mkOption { description = "System locale"; type = with types; uniq str; default = "en_US.UTF-8"; }; }; services = { command-not-found.enable = mkEnableOption "Enable command-not-found"; libvirtd.enable = mkEnableOption "Enable libvirtd"; podman.enable = mkEnableOption "Enable libvirtd"; openssh = { enable = mkEnableOption "Enable openssh server"; ports = mkOption { description = "Listen ports"; type = with types; uniq (listOf port); default = [22]; }; authorizedKeys = mkOption { description = "Authorized public ssh keys"; type = with types; uniq (listOf str); default = []; }; }; amneziawg = { enable = mkEnableOption "Enable amneziawg vpn service"; secret-config = mkOption { description = "Configuration SOPS secret"; type = with types; nullOr path; default = null; }; IfName = mkOption { description = "Interface name"; type = with types; uniq str; }; }; }; de = { hyprland = { enable = mkEnableOption "Enable Hyprland"; }; waybar = { enable = mkEnableOption "Enable waybar"; settings = { radiuses = { outer = mkOption { type = types.int; default = 100; }; inner = mkOption { type = types.int; default = 40; }; bar = mkOption { type = types.int; default = 25; }; }; gapps = { outer = mkOption { type = types.int; default = 6; }; inner = mkOption { type = types.int; default = 8; }; chips = mkOption { type = types.int; default = 4; }; }; sizes = { icons = mkOption { type = types.int; default = 20; }; text = mkOption { type = types.int; default = 15; }; }; }; }; }; }; }