CrOS/modules/options.nix
TheWanderingCrow c426d8899f remove i3
2025-04-22 09:36:46 -04:00

114 lines
3.7 KiB
Nix

{
config,
lib,
...
}: {
# Start definitions for mkEnableOptions
options = {
module = {
enable = lib.mkEnableOption "enables packages";
core.enable = lib.mkEnableOption "enables required packages";
gui.enable = lib.mkEnableOption "enables gui+DE packages";
programming.enable = lib.mkEnableOption "enables programming packages";
hacking.enable = lib.mkEnableOption "enables hacking packages";
mudding.enable = lib.mkEnableOption "enables mudding packages";
gaming.enable = lib.mkEnableOption "enables gaming packages";
os-gaming.enable = lib.mkEnableOption "enables some neat but obscure open-source games";
appdevel.enable = lib.mkEnableOption "enables app development in flutter";
vr.enable = lib.mkEnableOption "enables VR utilities";
art.enable = lib.mkEnableOption "enabled graphical art stuff";
hobbies.enable = lib.mkEnableOption "some misc packages related to hobbies";
};
software = {
keyd.enable = lib.mkEnableOption "enabled keyd overrides (useful for non-QMK enabled devices)";
usershell.enable = lib.mkEnableOption "opinionated usershell";
docker.enable = lib.mkEnableOption "enable rootless docker";
};
user = {
enable = lib.mkEnableOption "enables users";
crow = {
enable = lib.mkEnableOption "enable crow";
home.enable = lib.mkEnableOption "enable home configuration";
};
dragneel = {
enable = lib.mkEnableOption "enable dragneel";
home.enable = lib.mkEnableOption "enable home configuration";
};
overseer = {
enable = lib.mkEnableOption "enable container overseer user";
};
live = {
enable = lib.mkEnableOption "enable live disk user";
};
};
desktop = {
sway.enable = lib.mkEnableOption "enables sway";
swayfx.enable = lib.mkEnableOption "enable sway with eye candy";
niri.enable = lib.mkEnableOption "enable niri window manager";
kde.enable = lib.mkEnableOption "KDE with Plasma6";
};
ricing = {
basic.enable = lib.mkEnableOption "enable basic ricing";
wasteland.enable = lib.mkEnableOption "post-collapse themed rice";
};
};
# Set default option states in config
config = {
module = {
enable = lib.mkDefault true;
core.enable = lib.mkDefault true;
gui.enable = lib.mkDefault false;
programming.enable = lib.mkDefault false;
hacking.enable = lib.mkDefault false;
mudding.enable = lib.mkDefault false;
gaming.enable = lib.mkDefault false;
os-gaming.enable = lib.mkDefault false;
appdevel.enable = lib.mkDefault false;
vr.enable = lib.mkDefault false;
art.enable = lib.mkDefault false;
hobbies.enable = lib.mkDefault false;
};
software = {
keyd.enable = lib.mkDefault false;
usershell.enable = lib.mkDefault true;
docker.enable = lib.mkDefault false;
};
user = {
enable = lib.mkDefault true;
crow = {
enable = lib.mkDefault false;
home.enable = lib.mkDefault config.user.crow.enable;
};
dragneel = {
enable = lib.mkDefault false;
home.enable = lib.mkDefault config.user.dragneel.enable;
};
overseer = {
enable = lib.mkDefault false;
};
live = {
enable = lib.mkDefault false;
};
};
# Desktop options are declared in their relevant modules in module/desktops
desktop = {
sway.enable = lib.mkDefault false;
swayfx.enable = lib.mkDefault false;
niri.enable = lib.mkDefault false;
kde.enable = lib.mkDefault false;
};
ricing = {
basic.enable = lib.mkDefault true;
wasteland.enable = lib.mkDefault false;
};
};
}