From a738e0be3ab0280ea9985c3ac20f264e05929771 Mon Sep 17 00:00:00 2001 From: adikro Date: Sat, 20 Dec 2025 15:53:56 +0100 Subject: added power management for laptop --- hosts/desktop/configuration.nix | 5 +++- hosts/desktop/home.nix | 1 - hosts/laptop/configuration.nix | 57 +++++++++++++++++++++++++++++++++++++++++ hosts/laptop/home.nix | 55 +++++++++++++++++++++++++++++++++++++++ sys/core/core.nix | 1 + sys/core/drivers.nix | 2 +- sys/core/power.nix | 18 +++++++++++++ sys/core/storage.nix | 29 ++++++++++++++++++++- 8 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 hosts/laptop/home.nix create mode 100644 sys/core/power.nix 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%"; + }; }; } -- cgit v1.3