add (device options): add zram and laptop config options

This commit is contained in:
Kirill Samoylenkov 2025-09-26 23:28:31 +05:00
parent 83c8ef2a42
commit cb33cd4006
4 changed files with 146 additions and 0 deletions

7
options/default.nix Normal file
View file

@ -0,0 +1,7 @@
{ customFunctions, ... }:
{
imports = customFunctions.scan {
path = ./.;
exclude = [ ./default.nix ];
};
}

115
options/device/desktop.nix Normal file
View file

@ -0,0 +1,115 @@
{
lib,
pkgs,
config,
inputs,
...
}:
let
cfg = config.device.laptop;
in
{
options = {
device.laptop = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Settings for the laptop.";
};
battery.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Battery configuration for the laptop.";
};
bluetooth.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Bluetooth configuration for the laptop.";
};
cpu.type = lib.mkOption {
type = lib.enum [
"intel"
"amd"
];
default = "intel";
description = "Laptop CPU type.";
};
sound.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Sound configuration for the laptop.";
};
};
};
config = lib.mkIf cfg.enable {
services.tlp = lib.mkIf cfg.battery.enable {
enable = true;
settings = {
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "balanced";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "balanced";
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 0;
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 40;
START_CHARGE_THRESH_BAT0 = 0;
STOP_CHARGE_THRESH_BAT0 = 1;
};
};
hardware.bluetooth = lib.mkIf cfg.bluetooth.enable {
enable = true;
powerOnBoot = false;
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
Experimental = true;
};
};
};
services.blueman = lib.mkIf cfg.bluetooth.enable {
enable = true;
};
imports = lib.optional (
cfg.cpu.type == "intel"
) inputs.nixos-hardware.nixosModules.common-cpu-intel;
services.thermald =
lib.mkIf cfg.cpu.type == "intel" {
enable = true;
package = pkgs.thermald;
};
hardware.graphics =
lib.mkIf cfg.cpu.type == "intel" {
enable = true;
enable32Bit = true;
};
security.rtkit.enable = lib.mkIf cfg.sound.enable true;
services.pulseaudio = lib.mkIf cfg.sound.enable {
enable = false;
};
services.pipewire = lib.mkIf cfg.sound.enable {
enable = true;
pulse.enable = true;
wireplumber.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
};
};
}

22
options/device/zram.nix Normal file
View file

@ -0,0 +1,22 @@
{ 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;
};
};
}