summary refs log tree commit diff
diff options
context:
space:
mode:
authormaralorn <malte.brandy@maralorn.de>2021-09-30 23:22:11 +0200
committerGitHub <noreply@github.com>2021-09-30 23:22:11 +0200
commit786b429ace50ce4c65c42646a57d9ff1589ba76f (patch)
tree1cc0587521184143a9789d18cd6eea73867291c0
parent920806938b5b9cad0781ad70326af8df016f7d55 (diff)
parent49041cd82eeae4d8413c79a10e46d8a1d9e8c083 (diff)
downloadnixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar.gz
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar.bz2
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar.lz
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar.xz
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.tar.zst
nixpkgs-786b429ace50ce4c65c42646a57d9ff1589ba76f.zip
Merge pull request #137131 from piegamesde/gnome-extensions
gnomeExtensions: add patch framework and fix extensions
-rw-r--r--pkgs/desktops/gnome/extensions/buildGnomeExtension.nix7
-rw-r--r--pkgs/desktops/gnome/extensions/default.nix21
-rw-r--r--pkgs/desktops/gnome/extensions/extensionOverrides.nix32
-rw-r--r--pkgs/desktops/gnome/extensions/tilingnome/default.nix2
4 files changed, 52 insertions, 10 deletions
diff --git a/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix b/pkgs/desktops/gnome/extensions/buildGnomeExtension.nix
index 3be7f5c8789..d661c853bbc 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 f98e2fb4e67..2937cf6ac79 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 ./extensionOverrides.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/extensionOverrides.nix b/pkgs/desktops/gnome/extensions/extensionOverrides.nix
new file mode 100644
index 00000000000..182bdf6ecdf
--- /dev/null
+++ b/pkgs/desktops/gnome/extensions/extensionOverrides.nix
@@ -0,0 +1,32 @@
+{
+  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 // {
+
+  "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"
+    '';
+  });
+
+  "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
+    '';
+  });
+
+}
diff --git a/pkgs/desktops/gnome/extensions/tilingnome/default.nix b/pkgs/desktops/gnome/extensions/tilingnome/default.nix
index 42c6467dba8..fbf89ffa19c 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 {