{ lib, ... }: { options = { beancloud.network.address = lib.mkOption { type = lib.types.str; example = "192.168.1.10"; description = "beancloud.network.address to define the ip of the host/vm or a service"; }; beancloud.network.subnet = lib.mkOption { type = lib.types.str; example = "/24"; description = "beancloud.network.subnet to define the subnet of the host/vm or a service"; }; beancloud.network.interface.lan = lib.mkOption { type = lib.types.str; example = "enp1s0"; default = "eth0"; description = "beancloud.network.interface.lan to define the wired network interface"; }; beancloud.network.interface.wlan = lib.mkOption { type = lib.types.str; example = "enp1s0"; default = "wlan0"; description = "beancloud.network.interface.wlan to define the wireless network interface"; }; beancloud.bootloader.type = lib.mkOption { type = lib.types.str; example = "grub"; default = "systemd"; description = "beancloud.bootloader.type[grub|systemd] to define the to be used bootloader"; }; beancloud.persistence.type = lib.mkOption { type = lib.types.str; example = "preservation"; default = "impermanence"; description = "beancloud.persistence.type[impermanence|preservation] to define the to be used persistence provider"; }; beancloud.persistence.root = lib.mkOption { type = lib.types.str; example = "fs"; default = "tmpfs"; description = "beancloud.persistence.root[fs|tmpfs] to define the to be used type of root partition"; }; beancloud.disk.device.name = lib.mkOption { type = lib.types.str; example = "sda"; default = "nvme0n1"; description = "beancloud.disk.device.name to define the to be used device path for the first disk"; }; beancloud.os.lang.first = lib.mkOption { type = lib.types.str; example = "de_DE.UTF-8"; default = "de_DE.UTF-8"; description = "beancloud.os.lang.first to define the default system language"; }; beancloud.os.lang.second = lib.mkOption { type = lib.types.str; example = "en_US.UTF-8"; default = "en_US.UTF-8"; description = "beancloud.os.lang.second to define the second system language"; }; beancloud.os.lang.keymap = lib.mkOption { type = lib.types.str; example = "us"; default = "de,us"; description = "beancloud.os.lang.keymap to define the language for the (console) keymaps"; }; beancloud.os.powermgmt.service = lib.mkOption { type = lib.types.str; example = "tlp"; default = "auto-cpufreq"; description = "beancloud.os.lang.keymap[auto-cpufreq|power-profiles|tlp] to define the to be used power management service"; }; beancloud.software.chromium = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.chromium to activate the chromium package"; }; beancloud.software.container = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.container to activate the container related packages like docker and podman"; }; beancloud.software.davinci-resolve = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.davinci-resolve to activate the Davinci video editor"; }; beancloud.software.desktop = lib.mkOption { type = lib.types.bool; default = true; description = "beancloud.software.desktop to activate the Gnome Desktop and the related software packages"; }; beancloud.software.development = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.development to activate the software development related packages like gnome-builder"; }; beancloud.software.games = { enable = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.games.enable to install several game related packages"; }; stardewvalley = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.games.stardewvalley to enable game related settings"; }; }; beancloud.software.epson-scan = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.epson-scan to activate the Epson scanner software package"; }; beancloud.software.nextcloud = { client = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.nextcloud.client to activate the nextcloud-client package"; }; talk-desktop = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.nextcloud.talk-desktop to activate the nextcloud talk desktop package"; }; server = { enable = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.nextcloud.server.enable to activate the nextcloud server and the related software like the DB"; }; }; }; beancloud.software.ollama = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.ollama to activate the local only ollama service and WebUI"; }; beancloud.software.obs-studio = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.obs-studio to activate the OBS streaming software"; }; beancloud.software.podman-desktop = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.podman-desktop to activate the podman-desktop package"; }; beancloud.software.shotcut = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.shotcut to activate the Shotcut video editor"; }; beancloud.software.steam.enable = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.steam.enable to activate the steam related packages"; }; beancloud.software.steam.autostart = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.steam.autostart to control if the Steam client should be started on login"; }; beancloud.software.virt-manager = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.virt-manager to activate the virt-manager package"; }; beancloud.software.wine = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.wine to activate the wine related packages"; }; beancloud.software.zed-editor = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.zed-editor to activate the zed-editor package"; }; beancloud.software.photography = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.photography to activate several photo development related packages"; }; beancloud.software.virtualisation = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.software.virtualisation to activate the libvirtd daemon and virt-manager"; }; beancloud.os.kernel.latest = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.os.kernel.latest to enable the newest available Linux kernel version"; }; beancloud.os.screensaver.lock = lib.mkOption { type = lib.types.bool; default = true; description = "beancloud.os.screensaver.lock to control if the session should be locked after a period of inactivity"; }; beancloud.hardware = { gpu = { intel.i915 = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.gpu.intel.i915 to enable older Intel i915 GPU specific packages"; }; intel.xe = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.gpu.intel.xe to enable newer Intel xe GPU specific packages"; }; amd = { enable = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.gpu.amd.enable to enable AMD GPU specific packages"; }; amdvlk = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.gpu.amd.amdvlk to enable the amdvlk driver instead of the default mesa driver"; }; }; }; wifi.broadcom = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.wifi.broadcom to enable the Broadcom Wifi driver packages"; }; macbook = lib.mkOption { type = lib.types.bool; example = true; default = false; description = "beancloud.hardware.macbook to enable beancloud.hardware.macbook specific packages and settings"; }; steamdeck = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.hardware.steamdeck to enable Steam Deck specific settings like the display autoconfig"; }; backlight.service = lib.mkOption { type = lib.types.str; example = "pommed"; default = "clight"; description = "beancloud.hardware.backlight.service [clight|pommed] to enable a backlight control service"; }; printer = { hp = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.hardware.printer.hp to enable HP printer drivers"; }; epson = lib.mkOption { type = lib.types.bool; default = false; description = "beancloud.hardware.printer.epson to enable Epson printer drivers"; }; }; virtualmachine = { type = lib.mkOption { type = lib.types.str; example = "kvm"; description = "beancloud.hardware.virtualmachine.type[kvm] to enable virtio related kernel modules"; }; }; }; beancloud.tier = lib.mkOption { type = lib.types.str; example = "dev"; default = "main"; description = "beancloud.tier to define the to be used git branch [main|qa|dev] for the autoupdates"; }; }; }