turn string option into the many sub options

This enables me to enable multiple desktop environments at the same
time.
This commit is contained in:
Osman Faruk Bayram 2025-11-23 11:49:34 +03:00
parent 17e0ff33a0
commit f8b6dd5e7c
17 changed files with 30 additions and 29 deletions

View file

@ -13,7 +13,6 @@
];
osbmModules = {
desktopEnvironment = "none"; # fuckass darwin defaults
machineType = "laptop";
programs.neovim.enable = true;
};

View file

@ -5,7 +5,6 @@
];
osbmModules = {
desktopEnvironment = "none";
machineType = "server";
users = [ "osbm" ];
services = {

View file

@ -11,7 +11,7 @@
];
osbmModules = {
desktopEnvironment = "gnome";
desktopEnvironment.gnome.enable = true;
machineType = "mobile";
hardware.systemd-boot.enable = false; # Mobile devices use different bootloader
programs.graphical.enable = false;

View file

@ -11,7 +11,6 @@
];
osbmModules = {
desktopEnvironment = "none";
fonts.enable = false;
services.tailscale.enable = true;
hardware.systemd-boot.enable = false; # SD card uses extlinux

View file

@ -5,7 +5,6 @@
];
osbmModules = {
desktopEnvironment = "none";
machineType = "server";
hardware.systemd-boot.enable = false; # Uses extlinux bootloader
};

View file

@ -12,7 +12,6 @@
];
osbmModules = {
desktopEnvironment = "none";
machineType = "server";
hardware.systemd-boot.enable = false; # Raspberry Pi uses init-script bootloader
services = {

View file

@ -5,7 +5,7 @@
];
osbmModules = {
desktopEnvironment = "plasma";
desktopEnvironment.plasma.enable = true;
machineType = "laptop";
emulation.aarch64.enable = true;
hardware.sound.enable = true;

View file

@ -4,7 +4,6 @@
../../../modules/nixos
];
osbmModules = {
desktopEnvironment = "none";
machineType = "server";
services = {
hydra.enable = true;

View file

@ -5,7 +5,7 @@
];
osbmModules = {
desktopEnvironment = "plasma";
desktopEnvironment.plasma.enable = true;
machineType = "desktop";
programs = {
adbFastboot.enable = true;

View file

@ -6,7 +6,7 @@
}:
{
config = lib.mkMerge [
(lib.mkIf (nixosConfig != null && nixosConfig.osbmModules.desktopEnvironment != "none") {
(lib.mkIf (nixosConfig != null && !nixosConfig.osbmModules.desktopEnvironment.none) {
# Set enableAlacritty to true by default when there's a desktop environment
programs.alacritty.enable = lib.mkDefault true;
})

View file

@ -7,7 +7,7 @@
{
config = lib.mkMerge [
# Auto-enable Firefox if system has a desktop environment
(lib.mkIf (nixosConfig != null && nixosConfig.osbmModules.desktopEnvironment != "none") {
(lib.mkIf (nixosConfig != null && !nixosConfig.osbmModules.desktopEnvironment.none) {
# Set enableFirefox to true by default when there's a desktop environment
programs.firefox.enable = lib.mkDefault true;
})

View file

@ -1,7 +1,7 @@
{ lib, nixosConfig, ... }:
{
config = lib.mkMerge [
(lib.mkIf (nixosConfig != null && nixosConfig.osbmModules.desktopEnvironment != "none") {
(lib.mkIf (nixosConfig != null && !nixosConfig.osbmModules.desktopEnvironment.none) {
# Set enableGhostty to true by default when there's a desktop environment
programs.ghostty.enable = lib.mkDefault true;
})

View file

@ -1,7 +1,7 @@
{ lib, nixosConfig, ... }:
{
config = lib.mkMerge [
(lib.mkIf (nixosConfig != null && nixosConfig.osbmModules.desktopEnvironment != "none") {
(lib.mkIf (nixosConfig != null && !nixosConfig.osbmModules.desktopEnvironment.none) {
programs.mpv.enable = lib.mkDefault true;
})

View file

@ -6,7 +6,7 @@
}:
{
config = lib.mkMerge [
(lib.mkIf (nixosConfig != null && nixosConfig.osbmModules.desktopEnvironment != "none") {
(lib.mkIf (nixosConfig != null && !nixosConfig.osbmModules.desktopEnvironment.none) {
programs.wezterm.enable = lib.mkDefault true;
})

View file

@ -2,14 +2,21 @@
{
options.osbmModules = {
# Desktop Environment
desktopEnvironment = lib.mkOption {
type = lib.types.enum [
"plasma"
"gnome"
"none"
];
default = "none";
description = "Which desktop environment to use";
desktopEnvironment = {
plasma.enable = lib.mkEnableOption "plasma";
gnome.enable = lib.mkEnableOption "gnome";
niri.enable = lib.mkEnableOption "niri";
# none is true if all above are false, just for easier checks
none = lib.mkOption {
type = lib.types.bool;
default =
!(
config.osbmModules.desktopEnvironment.plasma.enable
|| config.osbmModules.desktopEnvironment.gnome.enable
|| config.osbmModules.desktopEnvironment.niri.enable
);
description = "True if no desktop environment is enabled";
};
};
# Machine Type
@ -83,7 +90,7 @@
graphical = {
enable = lib.mkOption {
type = lib.types.bool;
default = config.osbmModules.desktopEnvironment != "none";
default = !config.osbmModules.desktopEnvironment.none;
description = "Enable graphical applications";
};
};
@ -165,7 +172,7 @@
bluetooth = {
enable = lib.mkOption {
type = lib.types.bool;
default = config.osbmModules.desktopEnvironment != "none";
default = !config.osbmModules.desktopEnvironment.none;
description = "Enable Bluetooth support";
};
};
@ -393,7 +400,7 @@
fonts = {
enable = lib.mkOption {
type = lib.types.bool;
default = config.osbmModules.desktopEnvironment != "none";
default = !config.osbmModules.desktopEnvironment.none;
description = "Enable custom fonts";
};
};

View file

@ -10,7 +10,7 @@ in
{
config = lib.mkMerge [
# Plasma Desktop Environment
(lib.mkIf (cfg.desktopEnvironment == "plasma") {
(lib.mkIf cfg.desktopEnvironment.plasma.enable {
services = {
xserver.enable = true;
displayManager.sddm.enable = true;
@ -40,7 +40,7 @@ in
})
# GNOME Desktop Environment
(lib.mkIf (cfg.desktopEnvironment == "gnome") {
(lib.mkIf cfg.desktopEnvironment.gnome.enable {
# Enable GNOME Desktop Environment
services = {
@ -85,7 +85,7 @@ in
})
# Common settings for any desktop environment
(lib.mkIf (cfg.desktopEnvironment != "none") {
(lib.mkIf (!cfg.desktopEnvironment.none) {
# Enable X11 keymap
services.xserver.xkb = {
layout = lib.mkDefault "us";

View file

@ -27,7 +27,7 @@
inputMethod = {
type = "fcitx5";
enable = config.osbmModules.desktopEnvironment != "none";
enable = !config.osbmModules.desktopEnvironment.none;
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk