From f73b403747d33ee5ef9bcfcca04c79d13e6126eb Mon Sep 17 00:00:00 2001 From: whispers Date: Sun, 26 Jul 2026 12:40:04 -0400 Subject: [PATCH 1/3] libdisplay-info{,_0_2}: make generic downstreams often get behind libdisplay-info. historically, libdisplay-info-rs has supported a maximum of 0.2 (hence the existence of `libdisplay-info_0_2`) and now it supports a maximum of 0.3. since there's a tendency to get behind, we rearchitect this by making the package generic, since using `.overrideAttrs` as `libdisplay-info_0_2` currently does is not recommended in Nixpkgs. --- pkgs/by-name/li/libdisplay-info/0.2.nix | 4 ++ pkgs/by-name/li/libdisplay-info/generic.nix | 59 +++++++++++++++++++ pkgs/by-name/li/libdisplay-info/package.nix | 53 +---------------- .../li/libdisplay-info_0_2/package.nix | 18 ------ pkgs/top-level/all-packages.nix | 2 + 5 files changed, 68 insertions(+), 68 deletions(-) create mode 100644 pkgs/by-name/li/libdisplay-info/0.2.nix create mode 100644 pkgs/by-name/li/libdisplay-info/generic.nix delete mode 100644 pkgs/by-name/li/libdisplay-info_0_2/package.nix diff --git a/pkgs/by-name/li/libdisplay-info/0.2.nix b/pkgs/by-name/li/libdisplay-info/0.2.nix new file mode 100644 index 000000000000..75fbba07e554 --- /dev/null +++ b/pkgs/by-name/li/libdisplay-info/0.2.nix @@ -0,0 +1,4 @@ +import ./generic.nix { + version = "0.2.0"; + hash = "sha256-6xmWBrPHghjok43eIDGeshpUEQTuwWLXNHg7CnBUt3Q="; +} diff --git a/pkgs/by-name/li/libdisplay-info/generic.nix b/pkgs/by-name/li/libdisplay-info/generic.nix new file mode 100644 index 000000000000..17f0574c52c4 --- /dev/null +++ b/pkgs/by-name/li/libdisplay-info/generic.nix @@ -0,0 +1,59 @@ +{ + version, + hash, +}: + +{ + lib, + stdenv, + buildPackages, + fetchFromGitLab, + meson, + pkg-config, + ninja, + python3, + hwdata, + v4l-utils, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "libdisplay-info"; + inherit version; + + src = fetchFromGitLab { + inherit hash; + domain = "gitlab.freedesktop.org"; + owner = "emersion"; + repo = "libdisplay-info"; + tag = finalAttrs.version; + }; + + strictDeps = true; + __structuredAttrs = true; + + depsBuildBuild = [ pkg-config ]; + nativeBuildInputs = [ + meson + pkg-config + ninja + hwdata + python3 + ] + ++ lib.optionals (stdenv.hostPlatform.emulatorAvailable buildPackages) [ + # Only used for tests, which we cannot run without an emulator + v4l-utils + ]; + + postPatch = '' + patchShebangs tool/gen-search-table.py + ''; + + meta = { + description = "EDID and DisplayID library"; + mainProgram = "di-edid-decode"; + homepage = "https://gitlab.freedesktop.org/emersion/libdisplay-info"; + license = lib.licenses.mit; + platforms = lib.platforms.linux ++ lib.platforms.freebsd; + maintainers = with lib.maintainers; [ pedrohlc ]; + }; +}) diff --git a/pkgs/by-name/li/libdisplay-info/package.nix b/pkgs/by-name/li/libdisplay-info/package.nix index 028ab2d85e24..17d04621aac6 100644 --- a/pkgs/by-name/li/libdisplay-info/package.nix +++ b/pkgs/by-name/li/libdisplay-info/package.nix @@ -1,51 +1,4 @@ -{ - lib, - stdenv, - buildPackages, - fetchFromGitLab, - meson, - pkg-config, - ninja, - python3, - hwdata, - v4l-utils, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "libdisplay-info"; +import ./generic.nix { version = "0.4.0"; - - src = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "emersion"; - repo = "libdisplay-info"; - rev = finalAttrs.version; - sha256 = "sha256-5wd7UUYfhlvhAGfWWa/O14Did7pEmhwSMeXiYoYx1vU="; - }; - - depsBuildBuild = [ pkg-config ]; - nativeBuildInputs = [ - meson - pkg-config - ninja - hwdata - python3 - ] - ++ lib.optionals (stdenv.hostPlatform.emulatorAvailable buildPackages) [ - # Only used for tests, which we cannot run without an emulator - v4l-utils - ]; - - postPatch = '' - patchShebangs tool/gen-search-table.py - ''; - - meta = { - description = "EDID and DisplayID library"; - mainProgram = "di-edid-decode"; - homepage = "https://gitlab.freedesktop.org/emersion/libdisplay-info"; - license = lib.licenses.mit; - platforms = lib.platforms.linux ++ lib.platforms.freebsd; - maintainers = with lib.maintainers; [ pedrohlc ]; - }; -}) + hash = "sha256-5wd7UUYfhlvhAGfWWa/O14Did7pEmhwSMeXiYoYx1vU="; +} diff --git a/pkgs/by-name/li/libdisplay-info_0_2/package.nix b/pkgs/by-name/li/libdisplay-info_0_2/package.nix deleted file mode 100644 index 802dc582ebd2..000000000000 --- a/pkgs/by-name/li/libdisplay-info_0_2/package.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - libdisplay-info, - fetchFromGitLab, -}: - -libdisplay-info.overrideAttrs ( - finalAttrs: oldAttrs: { - version = "0.2.0"; - - src = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "emersion"; - repo = "libdisplay-info"; - rev = finalAttrs.version; - sha256 = "sha256-6xmWBrPHghjok43eIDGeshpUEQTuwWLXNHg7CnBUt3Q="; - }; - } -) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79f255ec1773..afa90828185e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5991,6 +5991,8 @@ with pkgs; libdbusmenu-gtk2 = libdbusmenu.override { gtkVersion = "2"; }; libdbusmenu-gtk3 = libdbusmenu.override { gtkVersion = "3"; }; + libdisplay-info_0_2 = callPackage ../by-name/li/libdisplay-info/0.2.nix { }; + dwarfdump = libdwarf.bin; libfm-extra = libfm.override { From 938d5365ad2f35b4655cc91c60645d279fb84379 Mon Sep 17 00:00:00 2001 From: whispers Date: Sun, 26 Jul 2026 12:40:04 -0400 Subject: [PATCH 2/3] libdisplay-info_0_3: init at 0.3.0 this version was lost in upgrading libdisplay-info to 0.4.0, and causes build failures in downstreams (particularly those still using libdisplay-info-rs) that do not yet have support. --- pkgs/by-name/li/libdisplay-info/0.3.nix | 4 ++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 5 insertions(+) create mode 100644 pkgs/by-name/li/libdisplay-info/0.3.nix diff --git a/pkgs/by-name/li/libdisplay-info/0.3.nix b/pkgs/by-name/li/libdisplay-info/0.3.nix new file mode 100644 index 000000000000..8ea9e2eab1b8 --- /dev/null +++ b/pkgs/by-name/li/libdisplay-info/0.3.nix @@ -0,0 +1,4 @@ +import ./generic.nix { + version = "0.3.0"; + hash = "sha256-nXf2KGovNKvcchlHlzKBkAOeySMJXgxMpbi5z9gLrdc="; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index afa90828185e..077d1de0be29 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5992,6 +5992,7 @@ with pkgs; libdbusmenu-gtk3 = libdbusmenu.override { gtkVersion = "3"; }; libdisplay-info_0_2 = callPackage ../by-name/li/libdisplay-info/0.2.nix { }; + libdisplay-info_0_3 = callPackage ../by-name/li/libdisplay-info/0.3.nix { }; dwarfdump = libdwarf.bin; From c088236389bd2631050f833a7c33267b48a904a6 Mon Sep 17 00:00:00 2001 From: whispers Date: Sun, 26 Jul 2026 12:40:04 -0400 Subject: [PATCH 3/3] niri: pin libdisplay-info_0_3 libdisplay-info-rs, which niri uses, does not yet support libdisplay-info v0.4. --- pkgs/by-name/ni/niri/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ni/niri/package.nix b/pkgs/by-name/ni/niri/package.nix index 91ee8455fb1c..ad8cdcf83753 100644 --- a/pkgs/by-name/ni/niri/package.nix +++ b/pkgs/by-name/ni/niri/package.nix @@ -4,7 +4,7 @@ eudev, fetchFromGitHub, installShellFiles, - libdisplay-info, + libdisplay-info_0_3, libglvnd, libinput, libxkbcommon, @@ -58,7 +58,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ]; buildInputs = [ - libdisplay-info + libdisplay-info_0_3 libglvnd # For libEGL libinput libxkbcommon