add wluma to control backlight

This commit is contained in:
ulic-youthlic 2025-01-15 16:45:19 +08:00
parent 605f5c9b20
commit e3e25560ca
Signed by: youthlic
GPG key ID: 63E86C3C14A0D721
7 changed files with 100 additions and 1 deletions

View file

@ -9,6 +9,7 @@
{
imports = [
./niri
./wluma
];
youthlic.programs = {

View file

@ -0,0 +1,25 @@
# [als.iio]
# path = "/sys/bus/iio/devices"
# thresholds = { 0 = "night", 20 = "dark", 80 = "dim", 250 = "normal", 500 = "bright", 800 = "outdoors" }
[als.webcam]
video = 0
thresholds = { 0 = "night", 15 = "dark", 30 = "dim", 45 = "normal", 60 = "bright", 75 = "outdoors" }
# [als.time]
# thresholds = { 0 = "night", 7 = "dark", 9 = "dim", 11 = "normal", 13 = "bright", 16 = "normal", 18 = "dark", 20 = "night" }
# [als.none]
[[output.backlight]]
name = "eDP-1"
path = "/sys/class/backlight/intel_backlight"
capturer = "wayland"
# [[output.ddcutil]]
# name = "Dell Inc. DELL P2415Q"
# capturer = "none"
[[keyboard]]
name = "keyboard-asus"
path = "/sys/bus/platform/devices/asus-nb-wmi/leds/asus::kbd_backlight"

View file

@ -0,0 +1,4 @@
{ ... }:
{
youthlic.programs.wluma.config = ./config.toml;
}

View file

@ -17,6 +17,7 @@
./fuzzel.nix
./firefox.nix
./niri.nix
./wluma.nix
];
options = {

View file

@ -29,6 +29,7 @@ in
];
youthlic.programs = {
fuzzel.enable = true;
wluma.enable = true;
};
programs.niri = {
config = builtins.readFile cfg.config;

57
home/modules/wluma.nix Normal file
View file

@ -0,0 +1,57 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.youthlic.programs.wluma;
in
{
options = {
youthlic.programs.wluma = {
enable = lib.mkEnableOption "wluma";
config = lib.mkOption {
type = lib.types.path;
example = ./config.toml;
description = ''
path to config file of wluma
'';
};
package = lib.mkOption {
type = lib.types.package;
example = pkgs.wluam;
default = pkgs.wluma;
description = ''
pakcage of wluma
'';
};
};
};
config = lib.mkIf cfg.enable {
home.packages = [
cfg.package
];
xdg.configFile."wluma/config.toml" = {
enable = true;
source = cfg.config;
};
systemd.user.services.wluma = {
Unit = {
Description = "Adjusting screen brightness based on screen contents and amount of ambient light";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = [ "${lib.getExe cfg.package}" ];
Restart = "always";
EnvironmentFile = [ "-%E/wluma/service.conf" ];
PrivateNetwork = true;
PrivateMounts = false;
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, ... }:
{ lib, pkgs, ... }:
{
users.users.david = {
isNormalUser = true;
@ -7,8 +7,18 @@
"networkmanager"
"libvirtd"
"wheel"
"video"
];
};
services.udev = {
enable = true;
extraRules = ''
ACTION=="add", SUBSYSTEM=="backlight", RUN+="${lib.getExe' pkgs.coreutils "chgrp"} video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="${lib.getExe' pkgs.coreutils "chmod"} g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="${lib.getExe' pkgs.coreutils "chgrp"} video /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="${lib.getExe' pkgs.coreutils "chmod"} g+w /sys/class/leds/%k/brightness"
'';
};
programs.fish.enable = true;
users.users.david.shell = pkgs.fish;
users.users.david.openssh.authorizedKeys.keyFiles = [