From 0d99d55ef5607aa21531a21e3a27f8d836d15c6e Mon Sep 17 00:00:00 2001 From: geekiot Date: Sat, 27 Sep 2025 15:20:18 +0500 Subject: [PATCH] add (host options): add basic host options --- options/host/locale.nix | 43 +++++++++++++++++++++++ options/host/network_manager.nix | 25 ++++++++++++++ options/host/nix.nix | 44 ++++++++++++++++++++++++ options/host/polkit.nix | 27 +++++++++++++++ options/host/version.nix | 20 +++++++++++ options/host/window_managers.nix | 58 ++++++++++++++++++++++++++++++++ options/host/xserver.nix | 25 ++++++++++++++ 7 files changed, 242 insertions(+) create mode 100644 options/host/locale.nix create mode 100644 options/host/network_manager.nix create mode 100644 options/host/nix.nix create mode 100644 options/host/polkit.nix create mode 100644 options/host/version.nix create mode 100644 options/host/window_managers.nix create mode 100644 options/host/xserver.nix diff --git a/options/host/locale.nix b/options/host/locale.nix new file mode 100644 index 0000000..5602c50 --- /dev/null +++ b/options/host/locale.nix @@ -0,0 +1,43 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.host.locale; +in +{ + options = { + host.locale = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Basic locale settings."; + }; + + timeZone = lib.mkOption { + type = lib.types.str; + default = "America/New_York"; + description = "Time Zone Locale."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + time.timeZone = cfg.timeZone; + }; +} diff --git a/options/host/network_manager.nix b/options/host/network_manager.nix new file mode 100644 index 0000000..e7df38c --- /dev/null +++ b/options/host/network_manager.nix @@ -0,0 +1,25 @@ +{ lib, config, ... }: +let + cfg = config.host.xserver; +in +{ + options = { + host.xserver = { + enable = lib.mkOption { + types = lib.types.bool; + default = true; + description = "Xserver configurations for host."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.xserver = { + enable = true; + xkb = { + layout = "us"; + variant = ""; + }; + }; + }; +} diff --git a/options/host/nix.nix b/options/host/nix.nix new file mode 100644 index 0000000..24cacea --- /dev/null +++ b/options/host/nix.nix @@ -0,0 +1,44 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.host.nix; +in +{ + options = { + host.nix = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Nix settings for host."; + }; + optimization.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Nix store optimization."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + nix = { + package = pkgs.nix; + + settings = { + warn-dirty = false; + experimental-features = [ + "flakes" + "nix-command" + "pipe-operators" + ]; + }; + + optimise = lib.mkIf cfg.optimization.enable { + automatic = true; + }; + }; + }; +} diff --git a/options/host/polkit.nix b/options/host/polkit.nix new file mode 100644 index 0000000..da0a100 --- /dev/null +++ b/options/host/polkit.nix @@ -0,0 +1,27 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.host.polkit; +in +{ + options = { + host.polkit = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Polkit configurations for host."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + security.polkit = { + enable = true; + package = pkgs.polkit; + }; + }; +} diff --git a/options/host/version.nix b/options/host/version.nix new file mode 100644 index 0000000..4dec038 --- /dev/null +++ b/options/host/version.nix @@ -0,0 +1,20 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.host.version; +in +{ + options = { + host.version = lib.mkOption { + type = lib.types.str; + default = "25.05"; + description = "System version."; + }; + }; + + config.system.stateVersion = cfg; +} diff --git a/options/host/window_managers.nix b/options/host/window_managers.nix new file mode 100644 index 0000000..f06974d --- /dev/null +++ b/options/host/window_managers.nix @@ -0,0 +1,58 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.host.window_managers.kde; +in +{ + options = { + host.window_managers.kde = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "KDE Clear configurations for host."; + }; + sddm.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "SDDM configurations for host."; + }; + + powerProfiles.enable = lib.mkOption { + type = lib.types.bool; + default = !config.device.battery.enable; + description = "Power Profiles Daemon configurations for host."; + }; + }; + }; + + config = mkIf cfg.enable { + services.desktopManager.plasma6.enable = true; + + environment.plasma6.excludePackages = with pkgs.kdePackages; [ + kate + elisa + konsole + kdepim-runtime + plasma-browser-integration + ]; + + environment.systemPackages = [ + pkgs.wl-clipboard + pkgs.wayland-utils + ] + ++ lib.optional cfg.sddm.enable [ + pkgs.kdePackages.sddm-kcm + ]; + + services.power-profiles-daemon.enable = cfg.powerProfiles.enable; + + services.displayManager.sddm = lib.mkIf cfg.sddm.enable { + enable = true; + wayland.enable = true; + }; + }; +} diff --git a/options/host/xserver.nix b/options/host/xserver.nix new file mode 100644 index 0000000..e7df38c --- /dev/null +++ b/options/host/xserver.nix @@ -0,0 +1,25 @@ +{ lib, config, ... }: +let + cfg = config.host.xserver; +in +{ + options = { + host.xserver = { + enable = lib.mkOption { + types = lib.types.bool; + default = true; + description = "Xserver configurations for host."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.xserver = { + enable = true; + xkb = { + layout = "us"; + variant = ""; + }; + }; + }; +}