nixos-demo/options.nix

311 lines
12 KiB
Nix

{ 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";
};
subnet = lib.mkOption {
type = lib.types.str;
example = "/24";
description = "beancloud.network.subnet to define the subnet of the host/vm or a service";
};
interface = {
lan = lib.mkOption {
type = lib.types.str;
example = "enp1s0";
default = "eth0";
description = "beancloud.network.interface.lan to define the wired network interface";
};
wlan = lib.mkOption {
type = lib.types.str;
example = "enp1s0";
default = "wlan0";
description = "beancloud.network.interface.wlan to define the wireless network interface";
};
};
bridge = lib.mkOption {
type = lib.types.bool;
default = false;
description = "beancloud.network.bridge to enable a bridge network";
};
nat = lib.mkOption {
type = lib.types.bool;
default = false;
description = "beancloud.network.nat to enable a NAT network";
};
};
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.gitlab = lib.mkOption {
type = lib.types.bool;
default = false;
description = "beancloud.software.gitlab to activate a Gitlab instance running in a nspawn container";
};
beancloud.software.forgejo = lib.mkOption {
type = lib.types.bool;
default = false;
description = "beancloud.software.forgejo to activate a Forgejo instance running in a podman container";
};
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.software.splunk = lib.mkOption {
type = lib.types.bool;
default = false;
description = "beancloud.software.splunk to deploy Splunk in a Kubernetes single node instances in the k8s microvm";
};
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";
};
};
}