From 2c063fe250e019a44eba31e4f7857d0e35065b5b Mon Sep 17 00:00:00 2001 From: piegames Date: Wed, 8 Sep 2021 22:49:05 +0200 Subject: [PATCH 1/5] gnomeExtensions: add patch framework It's like Haskell's overlay system, but way more primitive. We simply pre-define some package overrides that are required for an automatically packaged extension to work. Ideally, all (or almost all) currently manually pacakged extensions will work this way. Since these are mostly just a few lines each, there is no need to split this up into a lot of small files. --- .../gnome/extensions/buildGnomeExtension.nix | 7 +++++-- pkgs/desktops/gnome/extensions/default.nix | 21 ++++++++++++------- .../gnome/extensions/extensionPatches.nix | 14 +++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 pkgs/desktops/gnome/extensions/extensionPatches.nix diff --git a/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix b/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix index 3be7f5c8789a..d661c853bbc1 100644 --- a/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix +++ b/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix @@ -36,9 +36,12 @@ let echo "${metadata}" | base64 --decode > $out/metadata.json ''; }; - buildCommand = '' + dontBuild = true; + installPhase = '' + runHook preInstall mkdir -p $out/share/gnome-shell/extensions/ - cp -r -T $src $out/share/gnome-shell/extensions/${uuid} + cp -r -T . $out/share/gnome-shell/extensions/${uuid} + runHook postInstall ''; meta = { description = builtins.head (lib.splitString "\n" description); diff --git a/pkgs/desktops/gnome/extensions/default.nix b/pkgs/desktops/gnome/extensions/default.nix index f98e2fb4e67a..2e5e2ade43e2 100644 --- a/pkgs/desktops/gnome/extensions/default.nix +++ b/pkgs/desktops/gnome/extensions/default.nix @@ -60,17 +60,24 @@ in rec { gnome38Extensions = mapUuidNames (produceExtensionsList "38"); gnome40Extensions = mapUuidNames (produceExtensionsList "40"); - gnomeExtensions = lib.recurseIntoAttrs ( - (mapReadableNames - (lib.attrValues (gnome40Extensions // (callPackages ./manuallyPackaged.nix {}))) - ) - // lib.optionalAttrs (config.allowAliases or true) { + gnomeExtensions = lib.trivial.pipe gnome40Extensions [ + # Apply some custom patches for automatically packaged extensions + (callPackage ./extensionPatches.nix {}) + # Add all manually packaged extensions + (extensions: extensions // (callPackages ./manuallyPackaged.nix {})) + # Map the extension UUIDs to readable names + (lib.attrValues) + (mapReadableNames) + # Add some aliases + (extensions: extensions // lib.optionalAttrs (config.allowAliases or true) { unite-shell = gnomeExtensions.unite; # added 2021-01-19 arc-menu = gnomeExtensions.arcmenu; # added 2021-02-14 nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks."; mediaplayer = throw "gnomeExtensions.mediaplayer deprecated since 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md"; remove-dropdown-arrows = throw "gnomeExtensions.remove-dropdown-arrows removed since 2021-05-25: The extensions has not seen an update sine GNOME 3.34. Furthermore, the functionality it provides is obsolete as of GNOME 40."; - } - ); + }) + # Make the set "public" + lib.recurseIntoAttrs + ]; } diff --git a/pkgs/desktops/gnome/extensions/extensionPatches.nix b/pkgs/desktops/gnome/extensions/extensionPatches.nix new file mode 100644 index 000000000000..21c75ebf1966 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/extensionPatches.nix @@ -0,0 +1,14 @@ +{ + lib, + ddcutil, + gjs, +}: +# A set of overrides for automatically packaged extensions that require some small fixes. +# The input must be an attribute set with the extensions' UUIDs as keys and the extension +# derivations as values. Output is the same, but with patches applied. +# +# Note that all source patches refer to the built extension as published on extensions.gnome.org, and not +# the upstream repository's sources. +super: super // { + +} From 0ce4ae676a817d028af86931ccd4a23f4e9fb4eb Mon Sep 17 00:00:00 2001 From: piegames Date: Wed, 8 Sep 2021 22:52:32 +0200 Subject: [PATCH 2/5] gnomeExtensions.brightness-control-using-ddcutil: Fix paths Fixes #136111. --- pkgs/desktops/gnome/extensions/extensionPatches.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/desktops/gnome/extensions/extensionPatches.nix b/pkgs/desktops/gnome/extensions/extensionPatches.nix index 21c75ebf1966..2188e06d4338 100644 --- a/pkgs/desktops/gnome/extensions/extensionPatches.nix +++ b/pkgs/desktops/gnome/extensions/extensionPatches.nix @@ -11,4 +11,12 @@ # the upstream repository's sources. super: super // { + "display-brightness-ddcutil@themightydeity.github.com" = super."display-brightness-ddcutil@themightydeity.github.com".overrideAttrs (old: { + # Has a hard-coded path to a run-time dependency + # https://github.com/NixOS/nixpkgs/issues/136111 + postPatch = '' + substituteInPlace "extension.js" --replace "/usr/bin/ddcutil" "${ddcutil}/bin/ddcutil" + ''; + }); + } From 48064d95d944709a7eb679c0129c424c63c52371 Mon Sep 17 00:00:00 2001 From: piegames Date: Wed, 8 Sep 2021 22:52:58 +0200 Subject: [PATCH 3/5] gnomeExtensions.screenshot-tool: Fix paths Fixes #136112. --- pkgs/desktops/gnome/extensions/extensionPatches.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/desktops/gnome/extensions/extensionPatches.nix b/pkgs/desktops/gnome/extensions/extensionPatches.nix index 2188e06d4338..182bdf6ecdfb 100644 --- a/pkgs/desktops/gnome/extensions/extensionPatches.nix +++ b/pkgs/desktops/gnome/extensions/extensionPatches.nix @@ -19,4 +19,14 @@ super: super // { ''; }); + "gnome-shell-screenshot@ttll.de" = super."gnome-shell-screenshot@ttll.de".overrideAttrs (old: { + # Requires gjs + # https://github.com/NixOS/nixpkgs/issues/136112 + postPatch = '' + for file in *.js; do + substituteInPlace $file --replace "gjs" "${gjs}/bin/gjs" + done + ''; + }); + } From 2de33b718400ee76eba738cdec846fc25ca4287a Mon Sep 17 00:00:00 2001 From: piegames Date: Sat, 11 Sep 2021 01:18:07 +0200 Subject: [PATCH 4/5] gnomeExtensions.tilingGnome: remove unstable in pname We want the pname to match a potential automatic packaging (if the extension is updated to support a more recent GNOME version) as closely as possible. --- pkgs/desktops/gnome/extensions/tilingnome/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome/extensions/tilingnome/default.nix b/pkgs/desktops/gnome/extensions/tilingnome/default.nix index 42c6467dba80..fbf89ffa19c9 100644 --- a/pkgs/desktops/gnome/extensions/tilingnome/default.nix +++ b/pkgs/desktops/gnome/extensions/tilingnome/default.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchFromGitHub, glib, gnome }: stdenv.mkDerivation rec { - pname = "gnome-shell-extension-tilingnome-unstable"; + pname = "gnome-shell-extension-tilingnome"; version = "unstable-2019-09-19"; src = fetchFromGitHub { From 49041cd82eeae4d8413c79a10e46d8a1d9e8c083 Mon Sep 17 00:00:00 2001 From: piegames Date: Fri, 24 Sep 2021 20:42:18 +0200 Subject: [PATCH 5/5] gnomeExtensions: rename extensionPatches.nix to extensionOverrides.nix --- pkgs/desktops/gnome/extensions/default.nix | 2 +- .../extensions/{extensionPatches.nix => extensionOverrides.nix} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename pkgs/desktops/gnome/extensions/{extensionPatches.nix => extensionOverrides.nix} (100%) diff --git a/pkgs/desktops/gnome/extensions/default.nix b/pkgs/desktops/gnome/extensions/default.nix index 2e5e2ade43e2..2937cf6ac798 100644 --- a/pkgs/desktops/gnome/extensions/default.nix +++ b/pkgs/desktops/gnome/extensions/default.nix @@ -62,7 +62,7 @@ in rec { gnomeExtensions = lib.trivial.pipe gnome40Extensions [ # Apply some custom patches for automatically packaged extensions - (callPackage ./extensionPatches.nix {}) + (callPackage ./extensionOverrides.nix {}) # Add all manually packaged extensions (extensions: extensions // (callPackages ./manuallyPackaged.nix {})) # Map the extension UUIDs to readable names diff --git a/pkgs/desktops/gnome/extensions/extensionPatches.nix b/pkgs/desktops/gnome/extensions/extensionOverrides.nix similarity index 100% rename from pkgs/desktops/gnome/extensions/extensionPatches.nix rename to pkgs/desktops/gnome/extensions/extensionOverrides.nix