From 14059021c5b6c312f73eb187a7246e6293af0548 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:42:34 +0200 Subject: [PATCH 01/13] ddccontrol: no with lib; in meta --- pkgs/by-name/dd/ddccontrol/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/dd/ddccontrol/package.nix b/pkgs/by-name/dd/ddccontrol/package.nix index 864381aa4d47..b3805617058e 100644 --- a/pkgs/by-name/dd/ddccontrol/package.nix +++ b/pkgs/by-name/dd/ddccontrol/package.nix @@ -53,11 +53,11 @@ stdenv.mkDerivation rec { intltoolize --force ''; - meta = with lib; { + meta = { description = "Program used to control monitor parameters by software"; homepage = "https://github.com/ddccontrol/ddccontrol"; - license = licenses.gpl2Plus; - platforms = platforms.linux; + license = lib.licenses.gpl2Plus; + platforms = lib.platforms.linux; maintainers = with lib.maintainers; [ pakhfn ]; }; } From 18cdb6a885bed141244f8621acb055b4f6abc870 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:42:58 +0200 Subject: [PATCH 02/13] ddccontrol: use tag in src --- pkgs/by-name/dd/ddccontrol/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/dd/ddccontrol/package.nix b/pkgs/by-name/dd/ddccontrol/package.nix index b3805617058e..8906257a387c 100644 --- a/pkgs/by-name/dd/ddccontrol/package.nix +++ b/pkgs/by-name/dd/ddccontrol/package.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "ddccontrol"; repo = "ddccontrol"; - rev = version; + tag = version; sha256 = "sha256-qyD6i44yH3EufIW+LA/LBMW20Tejb49zvsDfv6YFD6c="; }; From 5755f113347636187168c6b6bf625c2ae9d0a81c Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:45:23 +0200 Subject: [PATCH 03/13] ddccontrol: use finalAttrs pattern --- pkgs/by-name/dd/ddccontrol/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/dd/ddccontrol/package.nix b/pkgs/by-name/dd/ddccontrol/package.nix index 8906257a387c..0dcea84a1b50 100644 --- a/pkgs/by-name/dd/ddccontrol/package.nix +++ b/pkgs/by-name/dd/ddccontrol/package.nix @@ -11,14 +11,14 @@ ddccontrol-db, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "ddccontrol"; version = "1.0.3"; src = fetchFromGitHub { owner = "ddccontrol"; repo = "ddccontrol"; - tag = version; + tag = finalAttrs.version; sha256 = "sha256-qyD6i44yH3EufIW+LA/LBMW20Tejb49zvsDfv6YFD6c="; }; @@ -60,4 +60,4 @@ stdenv.mkDerivation rec { platforms = lib.platforms.linux; maintainers = with lib.maintainers; [ pakhfn ]; }; -} +}) From 9b8dcfdf7a6292c6e2695ea6acff00d72aaa726e Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:45:51 +0200 Subject: [PATCH 04/13] ddccontrol: add doronbehar as co-maintainer --- pkgs/by-name/dd/ddccontrol/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/dd/ddccontrol/package.nix b/pkgs/by-name/dd/ddccontrol/package.nix index 0dcea84a1b50..57b148c4ce92 100644 --- a/pkgs/by-name/dd/ddccontrol/package.nix +++ b/pkgs/by-name/dd/ddccontrol/package.nix @@ -58,6 +58,9 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/ddccontrol/ddccontrol"; license = lib.licenses.gpl2Plus; platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ pakhfn ]; + maintainers = with lib.maintainers; [ + pakhfn + doronbehar + ]; }; }) From 3808a3dc89cdd374227af3406af1b4e7186f3164 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:48:11 +0200 Subject: [PATCH 05/13] ddccontrol-db: no with lib; in meta --- pkgs/by-name/dd/ddccontrol-db/package.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/dd/ddccontrol-db/package.nix b/pkgs/by-name/dd/ddccontrol-db/package.nix index b2fae63dc569..6316b06fd79c 100644 --- a/pkgs/by-name/dd/ddccontrol-db/package.nix +++ b/pkgs/by-name/dd/ddccontrol-db/package.nix @@ -30,11 +30,13 @@ stdenv.mkDerivation rec { ./autogen.sh ''; - meta = with lib; { + meta = { description = "Monitor database for DDCcontrol"; homepage = "https://github.com/ddccontrol/ddccontrol-db"; - license = licenses.gpl2; - platforms = platforms.linux; - maintainers = [ lib.maintainers.pakhfn ]; + license = lib.licenses.gpl2; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ + pakhfn + ]; }; } From 9f24bb44dc4af34c7ffe26c48598596fcf7f2d70 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:48:23 +0200 Subject: [PATCH 06/13] ddccontrol-db: add doronbehar as co-maintainer --- pkgs/by-name/dd/ddccontrol-db/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/dd/ddccontrol-db/package.nix b/pkgs/by-name/dd/ddccontrol-db/package.nix index 6316b06fd79c..37bd26fe3814 100644 --- a/pkgs/by-name/dd/ddccontrol-db/package.nix +++ b/pkgs/by-name/dd/ddccontrol-db/package.nix @@ -37,6 +37,7 @@ stdenv.mkDerivation rec { platforms = lib.platforms.linux; maintainers = with lib.maintainers; [ pakhfn + doronbehar ]; }; } From 6c554d57dba80435bc7e41dc67cd971690ce5e35 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:48:52 +0200 Subject: [PATCH 07/13] ddccontrol-db: use finalAttrs pattern --- pkgs/by-name/dd/ddccontrol-db/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/dd/ddccontrol-db/package.nix b/pkgs/by-name/dd/ddccontrol-db/package.nix index 37bd26fe3814..245302522809 100644 --- a/pkgs/by-name/dd/ddccontrol-db/package.nix +++ b/pkgs/by-name/dd/ddccontrol-db/package.nix @@ -8,14 +8,14 @@ fetchFromGitHub, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "ddccontrol-db"; version = "20251102"; src = fetchFromGitHub { owner = "ddccontrol"; repo = "ddccontrol-db"; - rev = version; + rev = finalAttrs.version; sha256 = "sha256-r87zucuHnWbvaqg++xI3s3Tghz80auQBgUxJzu7nmqU="; }; @@ -40,4 +40,4 @@ stdenv.mkDerivation rec { doronbehar ]; }; -} +}) From ccc159849627f7670306ee69c8d1e81e395a181a Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 29 Oct 2025 14:49:06 +0200 Subject: [PATCH 08/13] ddccontrol-db: use tag in src --- pkgs/by-name/dd/ddccontrol-db/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/dd/ddccontrol-db/package.nix b/pkgs/by-name/dd/ddccontrol-db/package.nix index 245302522809..b966947c04e0 100644 --- a/pkgs/by-name/dd/ddccontrol-db/package.nix +++ b/pkgs/by-name/dd/ddccontrol-db/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "ddccontrol"; repo = "ddccontrol-db"; - rev = finalAttrs.version; + tag = finalAttrs.version; sha256 = "sha256-r87zucuHnWbvaqg++xI3s3Tghz80auQBgUxJzu7nmqU="; }; From ae1d9b08d005b98e3bf670095da4e1508549bf2b Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Thu, 30 Oct 2025 18:06:33 +0200 Subject: [PATCH 09/13] nixos/ddccontrol: enable hardware.i2c and mention its group --- doc/release-notes/rl-2511.section.md | 2 ++ nixos/modules/services/hardware/ddccontrol.nix | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 75336f597b3a..a4ba427be9b5 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -96,6 +96,8 @@ - `spidermonkey_91` has been removed, as it has been EOL since September 2022. +- `ddccontrol` service now enables `hardware.i2c` by default, and adds `ddcci_backlight` to the kernel modules, based on [experiences reported on discourse](https://discourse.nixos.org/t/brightness-control-of-external-monitors-with-ddcci-backlight/8639/). + - The license of duckstation has changed from `gpl3Only` to `cc-by-nc-nd-40` making it unfree in newer releases. The `duckstation` package has been overhauled to support the new releases and `duckstation-bin` has been aliased to `duckstation` to support darwin binary builds. - `hiawata` has been removed, due to lack of active development upstream, lack of maintainership downstream and upcoming security issues. diff --git a/nixos/modules/services/hardware/ddccontrol.nix b/nixos/modules/services/hardware/ddccontrol.nix index b9ad851333a4..6c1f0e8875a1 100644 --- a/nixos/modules/services/hardware/ddccontrol.nix +++ b/nixos/modules/services/hardware/ddccontrol.nix @@ -14,15 +14,25 @@ in options = { services.ddccontrol = { - enable = lib.mkEnableOption "ddccontrol for controlling displays"; + enable = lib.mkEnableOption '' + ddccontrol for controlling displays. + + This [enables `hardware.i2c`](#opt-hardware.i2c.enable), so note to add + yourself to [`hardware.i2c.group`](#opt-hardware.i2c.group). + ''; }; }; ###### implementation config = lib.mkIf cfg.enable { + boot.kernelModules = [ + "ddcci_backlight" + ]; # Load the i2c-dev module - boot.kernelModules = [ "i2c_dev" ]; + hardware.i2c = { + enable = true; + }; # Give users access to the "gddccontrol" tool environment.systemPackages = [ From 63edc4f2021084c666505eacbc6186c6bbe621b7 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Thu, 30 Oct 2025 18:13:41 +0200 Subject: [PATCH 10/13] nixos/ddccontrol: Add doronbehar as maintainer --- nixos/modules/services/hardware/ddccontrol.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/modules/services/hardware/ddccontrol.nix b/nixos/modules/services/hardware/ddccontrol.nix index 6c1f0e8875a1..6f6f30a82ada 100644 --- a/nixos/modules/services/hardware/ddccontrol.nix +++ b/nixos/modules/services/hardware/ddccontrol.nix @@ -10,6 +10,8 @@ let in { + meta.maintainers = with lib.maintainers; [ doronbehar ]; + ###### interface options = { From 44abfc6fbf78df3ba959e2fc1771f41c70dd8e63 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 2 Nov 2025 01:02:57 +0200 Subject: [PATCH 11/13] ddcutil-service: init at 1.0.14 https://github.com/digitaltrails/ddcutil-service --- pkgs/by-name/dd/ddcutil-service/package.nix | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pkgs/by-name/dd/ddcutil-service/package.nix diff --git a/pkgs/by-name/dd/ddcutil-service/package.nix b/pkgs/by-name/dd/ddcutil-service/package.nix new file mode 100644 index 000000000000..497ddc511397 --- /dev/null +++ b/pkgs/by-name/dd/ddcutil-service/package.nix @@ -0,0 +1,46 @@ +{ + lib, + stdenv, + fetchFromGitHub, + + # nativeBuildInputs + pkg-config, + + # buildInputs + glib, + ddcutil, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "ddcutil-service"; + version = "1.0.14"; + + src = fetchFromGitHub { + owner = "digitaltrails"; + repo = "ddcutil-service"; + rev = "v${finalAttrs.version}"; + hash = "sha256-IZ6s9z0zxMZT7qd+yuQJGLnKc1WISIvhJlIGsM/Dw3w="; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + glib + ddcutil + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + ]; + + meta = { + description = "A Dbus ddcutil server for control of DDC Monitors/VDUs"; + homepage = "https://github.com/digitaltrails/ddcutil-service"; + license = lib.licenses.gpl2Only; + maintainers = with lib.maintainers; [ doronbehar ]; + mainProgram = "ddcutil-service"; + platforms = lib.platforms.linux; + }; +}) From b6bf6a8ff36b280e3bbc35db047b3f3e0ebff3c2 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Thu, 30 Oct 2025 18:30:46 +0200 Subject: [PATCH 12/13] nixos/ddccontrol: add package option --- nixos/modules/services/hardware/ddccontrol.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/hardware/ddccontrol.nix b/nixos/modules/services/hardware/ddccontrol.nix index 6f6f30a82ada..51761ea4e0ae 100644 --- a/nixos/modules/services/hardware/ddccontrol.nix +++ b/nixos/modules/services/hardware/ddccontrol.nix @@ -22,6 +22,13 @@ in This [enables `hardware.i2c`](#opt-hardware.i2c.enable), so note to add yourself to [`hardware.i2c.group`](#opt-hardware.i2c.group). ''; + package = + lib.mkPackageOption pkgs + "package with which to control brightness; added also to [services.dbus.packages](#opt-services.dbus.packages)." + { + default = [ "ddccontrol" ]; + example = [ "ddcutil-service" ]; + }; }; }; @@ -36,17 +43,16 @@ in enable = true; }; - # Give users access to the "gddccontrol" tool environment.systemPackages = [ - pkgs.ddccontrol + cfg.package ]; services.dbus.packages = [ - pkgs.ddccontrol + cfg.package ]; systemd.packages = [ - pkgs.ddccontrol + cfg.package ]; }; } From 787aa8b71fda9c4a0c854a182db3a523366e50c5 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 2 Nov 2025 11:43:00 +0200 Subject: [PATCH 13/13] vdu_controls: init at 2.4.3 https://github.com/digitaltrails/vdu_controls --- pkgs/by-name/vd/vdu_controls/package.nix | 79 ++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 pkgs/by-name/vd/vdu_controls/package.nix diff --git a/pkgs/by-name/vd/vdu_controls/package.nix b/pkgs/by-name/vd/vdu_controls/package.nix new file mode 100644 index 000000000000..83b407c3d59b --- /dev/null +++ b/pkgs/by-name/vd/vdu_controls/package.nix @@ -0,0 +1,79 @@ +{ + lib, + python3, + fetchFromGitHub, + fetchpatch, + qt6, + copyDesktopItems, + installShellFiles, +}: + +python3.pkgs.buildPythonApplication rec { + pname = "vdu_controls"; + version = "2.4.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "digitaltrails"; + repo = "vdu_controls"; + rev = "v${version}"; + hash = "sha256-aapODSWPB98I/ieUTXIO7nrd11VY9SmFpsVR1ketsZU="; + }; + + patches = [ + # Standardize installation with pypa/build. See: + # https://github.com/digitaltrails/vdu_controls/pull/120 + (fetchpatch { + url = "https://github.com/digitaltrails/vdu_controls/commit/ef2ed07398fc88ccc18a11da3cf5ea1500a03cb6.patch"; + hash = "sha256-W0Iv3RXQFnHAzaXHh6ZvGARN4ShsNgOhg9FTpbvnfLo="; + }) + ]; + + build-system = [ + python3.pkgs.setuptools + python3.pkgs.sphinx + ]; + # Replace FHS paths with out paths. Unfortunately it will be pretty hard to + # change this behavior upstream, as they barely use any packaging system + # whatsoever. + preBuild = '' + substituteInPlace vdu_controls.py \ + --replace-fail /usr/share/vdu_controls $out/share/vdu_controls + ''; + + nativeBuildInputs = [ + qt6.wrapQtAppsHook + copyDesktopItems + installShellFiles + ]; + desktopItems = "vdu_controls.desktop"; + postInstall = '' + install -Dm066 vdu_controls.png $out/share/icons/hicolor/256x256/apps/vdu_controls.png + make -C docs man + installManPage docs/_build/man/vdu_controls.1 + mkdir -p $out/share/vdu_controls + cp -r icons $out/share/vdu_controls + cp -r sample-scripts $out/share/vdu_controls + cp -r translations $out/share/vdu_controls + ''; + + dependencies = [ + python3.pkgs.pyqt6 + ]; + + buildInputs = [ + qt6.qtbase + qt6.qtwayland + ]; + + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + meta = { + description = "VDU controls - a control panel for monitor brightness/contrast"; + homepage = "https://github.com/digitaltrails/vdu_controls"; + license = lib.licenses.gpl3Only; + mainProgram = "vdu_controls"; + }; +}