summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradikro <adikro@disroot.org>2025-12-20 15:53:56 +0100
committeradikro <adikro@disroot.org>2025-12-20 15:53:56 +0100
commita738e0be3ab0280ea9985c3ac20f264e05929771 (patch)
tree96981350e09a2cb2ed39dd6872c1f054e5b611e3
parentc1d9af57156f3c95590d9a12c394ee064df9696e (diff)
added power management for laptop
-rw-r--r--hosts/desktop/configuration.nix5
-rw-r--r--hosts/desktop/home.nix1
-rw-r--r--hosts/laptop/configuration.nix57
-rw-r--r--hosts/laptop/home.nix55
-rw-r--r--sys/core/core.nix1
-rw-r--r--sys/core/drivers.nix2
-rw-r--r--sys/core/power.nix18
-rw-r--r--sys/core/storage.nix29
8 files changed, 164 insertions, 4 deletions
diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix
index 21fe566..a395b54 100644
--- a/hosts/desktop/configuration.nix
+++ b/hosts/desktop/configuration.nix
@@ -35,7 +35,10 @@
swapfile.size = 32;
};
security.enable = true;
- storage.enable = true;
+ storage = {
+ enable = true;
+ keepDays = 14;
+ };
users.enable = true;
};
srv = {
diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix
index ea33837..bcb5e43 100644
--- a/hosts/desktop/home.nix
+++ b/hosts/desktop/home.nix
@@ -56,7 +56,6 @@
nixcord.enable = true;
obs.enable = true;
obsidian.enable = true;
- onlyoffice.enable = false;
spicetify.enable = true;
torrent.enable = true;
vpn = {
diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix
index e69de29..b067b26 100644
--- a/hosts/laptop/configuration.nix
+++ b/hosts/laptop/configuration.nix
@@ -0,0 +1,57 @@
+{ username, ... }:
+{
+ system.stateVersion = "25.05";
+
+ imports = [
+ ./hardware-configuration.nix
+ ../../sys/default.nix
+ ];
+
+ sys = {
+ core = {
+ allowUnfree.enable = true;
+
+ audio.enable = true;
+ bootloader = "grub";
+ drivers = {
+ enable = true;
+ amd.enable = true;
+ };
+ fonts.enable = true;
+ greet.enable = true;
+ home-manager = {
+ enable = true;
+ users.${username}.path = ./home.nix;
+ };
+ locale.enable = true;
+ network.enable = true;
+ memory = {
+ zram.enable = true;
+ zram.percent = 25;
+ swapfile.enable = true;
+ swapfile.size = 8;
+ };
+ power.enable = true;
+ security.enable = true;
+ storage = {
+ enable = true;
+ keepDays = 14;
+ };
+ users.enable = true;
+ };
+ srv = {
+ files = {
+ thunar.enable = true;
+ utils.enable = true;
+ };
+ gaming = {
+ enable = true;
+ steam.enable = true;
+ };
+ nix-helper.enable = true;
+ };
+ wm = {
+ niri.enable = true;
+ };
+ };
+}
diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix
new file mode 100644
index 0000000..b56a4de
--- /dev/null
+++ b/hosts/laptop/home.nix
@@ -0,0 +1,55 @@
+{ username, ... }:
+{
+ imports = [ ../../hm/default.nix ];
+
+ home = {
+ username = "${username}";
+ homeDirectory = "/home/${username}";
+ stateVersion = "25.05";
+ };
+
+ hm = {
+ conf = {
+ clip = {
+ enable = true;
+ backend = "wayland";
+ };
+ git.enable = true;
+ xdg-dirs.enable = true;
+ };
+ editors.nixvim.enable = true;
+ env = {
+ niri.enable = true;
+
+ waybar.enable = true;
+ themes = {
+ enable = true;
+ gtk.enable = true;
+ qt.enable = true;
+ };
+ };
+ shell = {
+ cli.enable = true;
+ fish.enable = true;
+ foot.enable = true;
+ starship.enable = true;
+ };
+ soft = {
+ browser = {
+ enable = true;
+ librewolf.enable = true;
+ };
+ email = {
+ enable = true;
+ thunderbird.enable = false;
+ evolution.enable = true;
+ };
+ kdeconnect.enable = true;
+ media.enable = true;
+ nixcord.enable = true;
+ obsidian.enable = true;
+ spicetify.enable = true;
+ torrent.enable = true;
+ };
+ };
+}
diff --git a/sys/core/core.nix b/sys/core/core.nix
index ba38eb9..428d7ea 100644
--- a/sys/core/core.nix
+++ b/sys/core/core.nix
@@ -13,6 +13,7 @@ in
./localization.nix
./memory.nix
./networking.nix
+ ./power.nix
./security.nix
./storage.nix
./users.nix
diff --git a/sys/core/drivers.nix b/sys/core/drivers.nix
index a01bb54..c769786 100644
--- a/sys/core/drivers.nix
+++ b/sys/core/drivers.nix
@@ -16,6 +16,7 @@ in
services.smartd.enable = true;
hardware.sensor.iio.enable = true;
hardware.enableAllFirmware = true;
+ hardware.cpu.amd.updateMicrocode = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
@@ -24,7 +25,6 @@ in
(lib.mkIf cfg.amd.enable {
services.xserver.videoDrivers = [ "amdgpu" ];
- hardware.cpu.amd.updateMicrocode = true;
hardware.amdgpu = {
initrd.enable = true;
overdrive.enable = true;
diff --git a/sys/core/power.nix b/sys/core/power.nix
new file mode 100644
index 0000000..f67665e
--- /dev/null
+++ b/sys/core/power.nix
@@ -0,0 +1,18 @@
+{ config, lib, ... }:
+let
+ cfg = config.sys.core.power;
+in
+{
+ options.sys.core.power.enable = lib.mkEnableOption "enables AMD-optimized power management";
+ config = lib.mkIf cfg.enable {
+ services.power-profiles-daemon.enable = true;
+
+ boot.kernelParams = [
+ "amd_pstate=active"
+ "nvme_core.default_ps_max_latency_us=0"
+ ];
+
+ powerManagement.powertop.enable = true;
+ services.thermald.enable = true;
+ };
+}
diff --git a/sys/core/storage.nix b/sys/core/storage.nix
index 6e2dab8..22abcd7 100644
--- a/sys/core/storage.nix
+++ b/sys/core/storage.nix
@@ -3,8 +3,35 @@ let
cfg = config.sys.core.storage;
in
{
- options.sys.core.storage.enable = lib.mkEnableOption "enables storage management";
+ options.sys.core.storage = {
+ enable = lib.mkEnableOption "enables storage management";
+
+ keepDays = lib.mkOption {
+ type = lib.types.int;
+ default = 14;
+ description = "Number of days to keep old Nix generations before GC.";
+ };
+ };
config = lib.mkIf cfg.enable {
nix.settings.auto-optimise-store = true;
+
+ nix.gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than ${toString cfg.keepDays}d";
+ };
+
+ services.fstrim.enable = true;
+
+ services.btrfs.autoScrub = {
+ enable = true;
+ interval = "monthly";
+ fileSystems = [ "/" ];
+ };
+
+ boot.tmp = {
+ useTmpfs = true;
+ tmpfsSize = "50%";
+ };
};
}