Add monitor brightness gnome extension
This commit is contained in:
parent
d51f4104c5
commit
71ab0d9eb1
|
@ -1,15 +1,16 @@
|
|||
{ inputs, pkgs, system, ... }:
|
||||
|
||||
let
|
||||
customPkgs = final: prev: {
|
||||
adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam.nix { };
|
||||
customPkgs = final: prev: with pkgs;{
|
||||
adwaita-for-steam = callPackage ./adwaita-for-steam.nix { };
|
||||
|
||||
gnomeExtensions = prev.gnomeExtensions // {
|
||||
rounded-window-corners-reborn = pkgs.callPackage ./gnomeExtensions/rounded-window-corners-reborn.nix { };
|
||||
monitor-brightness-and-volume = callPackage ./gnomeExtensions/monitor-brightness-and-volume.nix { };
|
||||
rounded-window-corners-reborn = callPackage ./gnomeExtensions/rounded-window-corners-reborn.nix { };
|
||||
};
|
||||
|
||||
gpu-screen-recorder = final.unstable.gpu-screen-recorder;
|
||||
mkvextract-gtk = pkgs.callPackage ./mkvextract-gtk.nix { };
|
||||
mkvextract-gtk = callPackage ./mkvextract-gtk.nix { };
|
||||
};
|
||||
|
||||
unstableOverlay = final: prev: {
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
{ lib, stdenv, fetchurl, unzip, glib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-monitor-brightness-volume";
|
||||
version = "7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://extensions.gnome.org/extension-data/monitor-brightness-volumeailin.nemui.v${version}.shell-extension.zip";
|
||||
hash = "sha256-NrFZZdQTgnMyYk2Yp2l3RiXM2C+/NHhIPv/Fo/KrXt8=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
nativeBuildInputs = [ unzip glib ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui
|
||||
mv * $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui
|
||||
glib-compile-schemas $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui/schemas
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "GNOME Shell extension to control monitor brightness and volume.";
|
||||
homepage = "https://extensions.gnome.org/extension/1292/monitor-brightness-and-volume/";
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ jdig78 ];
|
||||
};
|
||||
}
|
|
@ -3,5 +3,6 @@
|
|||
{
|
||||
imports = [
|
||||
./custom-wallpaper
|
||||
./extensions
|
||||
];
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./monitor-brightness-and-volume.nix
|
||||
];
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
UUID = "monitor-brightness-volume@ailin.nemui";
|
||||
lightModeBrightness = 50;
|
||||
darkModeBrightness = 20;
|
||||
in
|
||||
{
|
||||
dconf.settings = {
|
||||
"org/gnome/shell".enabled-extensions = [ UUID ];
|
||||
|
||||
"org/gnome/shell/extensions/monitor-brightness-volume".show-volume = false;
|
||||
};
|
||||
|
||||
systemd.user.services.ddcutil-auto-brightness-gnome = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Service = {
|
||||
ExecStart = pkgs.writeShellScript "ddcutil-auto-brightness-gnome" ''
|
||||
${pkgs.glib}/bin/gsettings monitor org.gnome.desktop.interface color-scheme | while read -r line; do
|
||||
${pkgs.gnome.gnome-shell}/bin/gnome-extensions disable ${UUID} # Reload the extension to detect the brightness change
|
||||
if [[ "$line" == *"prefer-dark"* ]]; then
|
||||
${pkgs.ddcutil}/bin/ddcutil setvcp 10 ${toString darkModeBrightness}
|
||||
else
|
||||
${pkgs.ddcutil}/bin/ddcutil setvcp 10 ${toString lightModeBrightness}
|
||||
fi
|
||||
# Reload the extension to apply the brightness change
|
||||
${pkgs.gnome.gnome-shell}/bin/gnome-extensions enable ${UUID}
|
||||
done
|
||||
'';
|
||||
Restart = "always";
|
||||
RestartSec = 10;
|
||||
};
|
||||
|
||||
Unit = {
|
||||
After = [ "graphical-session.target" ];
|
||||
Description = "ddcutil auto brightness service for GNOME";
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ gnomeExtensions.monitor-brightness-and-volume ];
|
||||
}
|
|
@ -2,11 +2,9 @@
|
|||
|
||||
{
|
||||
config = lib.mkIf config.hardware.monitor-control.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
ddcutil
|
||||
];
|
||||
|
||||
boot.kernelModules = [ "i2c-dev" ];
|
||||
environment.systemPackages = with pkgs; [ ddcutil ];
|
||||
hardware.i2c.enable = true;
|
||||
users.groups."i2c".members = builtins.attrNames config.users.users;
|
||||
};
|
||||
|
||||
options.hardware.monitor-control.enable = lib.mkEnableOption "enable support for controlling monitor settings.";
|
||||
|
|
Loading…
Reference in a new issue