diff --git a/devices/thinkbook/boot.nix b/devices/thinkbook/boot.nix new file mode 100644 index 0000000..96cd433 --- /dev/null +++ b/devices/thinkbook/boot.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_zen; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + + consoleLogLevel = 0; + initrd.verbose = false; + + loader = { + timeout = 60; + efi.canTouchEfiVariables = true; + systemd-boot.enable = true; + }; + }; +} diff --git a/devices/thinkbook/default.nix b/devices/thinkbook/default.nix index 7893a7c..2b8d47f 100644 --- a/devices/thinkbook/default.nix +++ b/devices/thinkbook/default.nix @@ -16,5 +16,8 @@ }; }; - device.zram.enable = false; + zramSwap = { + enable = true; + memoryPercent = 100; + }; } diff --git a/lib/config.nix b/lib/config.nix index 8ebd196..1b8abc7 100644 --- a/lib/config.nix +++ b/lib/config.nix @@ -42,7 +42,7 @@ let ; }; - userPackagesConfig = import ../users/${hostName}/packages-config.nix { inherit lib; }; + userPackagesConfig = import ../users/${hostName}/packages_config.nix { inherit lib; }; additionalArgs = { inherit inputs customFunctions userData; }; diff --git a/options/device/laptop.nix b/options/device/laptop.nix index 5a066f2..d8256af 100644 --- a/options/device/laptop.nix +++ b/options/device/laptop.nix @@ -103,7 +103,9 @@ in enable32Bit = true; }; - security.rtkit.enable = lib.mkIf cfg.sound.enable true; + security.rtkit = lib.mkIf cfg.sound.enable { + enable = true; + }; services.pulseaudio = lib.mkIf cfg.sound.enable { enable = false; }; diff --git a/options/device/zram.nix b/options/device/zram.nix deleted file mode 100644 index 502e356..0000000 --- a/options/device/zram.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, config, ... }: -let - cfg = device.zram; -in -{ - options = { - device.zram = { - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Zram settings for the device."; - }; - }; - }; - - config = lib.mkIf cfg.enable { - zramSwap = { - enable = true; - memoryPercent = 100; - }; - }; -} 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 = ""; + }; + }; + }; +} diff --git a/users/geekiot/packages-config.nix b/users/geekiot/packages-config.nix deleted file mode 100644 index e69de29..0000000 diff --git a/users/geekiot/packages_config.nix b/users/geekiot/packages_config.nix new file mode 100644 index 0000000..580f2cc --- /dev/null +++ b/users/geekiot/packages_config.nix @@ -0,0 +1,14 @@ +{ lib }: +{ + allowUnfree = false; + allowBroken = false; + + allowUnfreePredicate = + pkg: + builtins.elem (lib.getName pkg) [ + "steam" + "steam-original" + "steam-unwrapped" + "steam-run" + ]; +}