summary refs log tree commit diff stats
path: root/system/settings/hardware/laptop.nix
blob: ee67d38fb6fea5367db5ec18fb3c3897878c0266 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
  config,
  pkgs,
  lib,
  ...
}: {
  imports = [
    ./bluetooth.nix
    ./bluetooth-audio.nix
    ./connman.nix
    ./iwd.nix
    ./personal-computer.nix
    ../user-interface.nix
  ];

  boot.kernelModules = ["coretemp"];

  environment.systemPackages = with pkgs; [
    powerstat
    powertop

    arandr
    autorandr
    disper
  ];

  programs.light.enable = true;

  services.autorandr = {
    enable = true;
    defaultTarget = "common";
  };
  systemd.services.autorandr.wantedBy = ["graphical.target"];

  environment.etc.autorandr = {
    enable = true;
    source = ../../autorandr;
    target = "xdg/autorandr";
  };

  services.logind = {
    lidSwitch = "suspend";
    lidSwitchExternalPower = "ignore";
    extraConfig = ''
      IdleAction=suspend
      IdleActionSec=600
    '';
  };

  services.acpid = {
    enable = true;
    lidEventCommands = ''
      ${pkgs.autorandr}/bin/autorandr --batch --change
    '';
  };

  services.tlp = {
    extraConfig = ''
      CPU_SCALING_GOVERNOR_ON_BAT=powersave
      ENERGY_PERF_POLICY_ON_BAT="balance_power"

      SOUND_POWER_SAVE_ON_AC=60
      DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wwan"
    '';
  };

  services.xserver = {
    libinput = {
      enable = lib.mkDefault true;
      naturalScrolling = true;
      disableWhileTyping = true;
    };
    displayManager.sessionCommands = ''
      ${pkgs.autorandr}/bin/autorandr --change --force
    '';
  };

  systemd.services.nixos-upgrade.unitConfig.ConditionACPower = true;
  systemd.services.nix-gc.unitConfig.ConditionACPower = true;
  systemd.services.docker-prune.unitConfig.ConditionACPower = true;
}