diff options
Diffstat (limited to 'pkgs/desktops/gnome/extensions')
48 files changed, 1838 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/extensions/EasyScreenCast/default.nix b/pkgs/desktops/gnome/extensions/EasyScreenCast/default.nix new file mode 100644 index 0000000000000..57d78bf756abb --- /dev/null +++ b/pkgs/desktops/gnome/extensions/EasyScreenCast/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchFromGitHub, substituteAll, glib, gnome, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-EasyScreenCast"; + version = "unstable-2020-11-25"; + + src = fetchFromGitHub { + # To make it work with gnome 3.38, using effectively: https://github.com/EasyScreenCast/EasyScreenCast/pull/276 + owner = "Ian2020"; + repo = "EasyScreenCast"; + rev = "b1ab4a999bc7110ecbf68b5fe42c37fa67d7cb0d"; + sha256 = "s9b0ITKUzgG6XOd1bK7i3mGxfc+T+UHrTZhBp0Ff8zQ="; + }; + + patches = [ + (substituteAll { + src = ./fix-gi-path.patch; + gnomeShell = gnome.gnome-shell; + }) + ]; + + nativeBuildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + uuid = "EasyScreenCast@iacopodeenosee.gmail.com"; + + meta = with lib; { + description = "Simplifies the use of the video recording function integrated in gnome shell"; + homepage = "https://github.com/EasyScreenCast/EasyScreenCast"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ doronbehar ]; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/desktops/gnome/extensions/EasyScreenCast/fix-gi-path.patch b/pkgs/desktops/gnome/extensions/EasyScreenCast/fix-gi-path.patch new file mode 100644 index 0000000000000..2d32021b6c665 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/EasyScreenCast/fix-gi-path.patch @@ -0,0 +1,16 @@ +diff --git i/utilaudio.js w/utilaudio.js +index 983b29c..7a94de8 100644 +--- i/utilaudio.js ++++ w/utilaudio.js +@@ -11,10 +11,7 @@ + */ + + const GIRepository = imports.gi.GIRepository; +-GIRepository.Repository.prepend_search_path("/usr/lib/gnome-shell"); +-GIRepository.Repository.prepend_library_path("/usr/lib/gnome-shell"); +-GIRepository.Repository.prepend_search_path("/usr/lib64/gnome-shell"); +-GIRepository.Repository.prepend_library_path("/usr/lib64/gnome-shell"); ++GIRepository.Repository.prepend_search_path("@gnomeShell@/lib/gnome-shell"); + const Gvc = imports.gi.Gvc; + const Lang = imports.lang; + diff --git a/pkgs/desktops/gnome/extensions/appindicator/default.nix b/pkgs/desktops/gnome/extensions/appindicator/default.nix new file mode 100644 index 0000000000000..0906d76295632 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/appindicator/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-appindicator"; + version = "36"; + + src = fetchFromGitHub { + owner = "Ubuntu"; + repo = "gnome-shell-extension-appindicator"; + rev = "v${version}"; + sha256 = "1nx1lgrrp3w5z5hymb91frjdvdkk7x677my5v4jjd330ihqa02dq"; + }; + + # This package has a Makefile, but it's used for building a zip for + # publication to extensions.gnome.org. Disable the build phase so + # installing doesn't build an unnecessary release. + dontBuild = true; + + uuid = "appindicatorsupport@rgcjonas.gmail.com"; + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp *.js $out/share/gnome-shell/extensions/${uuid} + cp -r interfaces-xml $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "AppIndicator/KStatusNotifierItem support for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome.gnome-shell.meta.platforms; + homepage = "https://github.com/Ubuntu/gnome-shell-extension-appindicator"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/arcmenu/default.nix b/pkgs/desktops/gnome/extensions/arcmenu/default.nix new file mode 100644 index 0000000000000..851a816c61c73 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/arcmenu/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchFromGitLab, glib, gettext, substituteAll, gnome-menus }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-arcmenu"; + version = "5"; + + src = fetchFromGitLab { + owner = "arcmenu"; + repo = "ArcMenu"; + rev = "v${version}"; + sha256 = "1w4avvnp08l7lkf76vc7wvfn1cd81l4r4dhz8qnai49rvrjgqcg3"; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" ]; + + uuid = "arcmenu@arcmenu.com"; + + meta = with lib; { + description = "Application menu for GNOME Shell, designed to provide a more traditional user experience and workflow"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ dkabot ]; + homepage = "https://gitlab.com/arcmenu/ArcMenu"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/arcmenu/fix_gmenu.patch b/pkgs/desktops/gnome/extensions/arcmenu/fix_gmenu.patch new file mode 100644 index 0000000000000..5d8584f52a6aa --- /dev/null +++ b/pkgs/desktops/gnome/extensions/arcmenu/fix_gmenu.patch @@ -0,0 +1,11 @@ +--- a/extension.js ++++ b/extension.js +@@ -23,6 +23,8 @@ + + const Me = imports.misc.extensionUtils.getCurrentExtension(); + ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); ++ + const {GLib, Gio, St} = imports.gi; + const Constants = Me.imports.constants; + const Controller = Me.imports.controller; diff --git a/pkgs/desktops/gnome/extensions/caffeine/default.nix b/pkgs/desktops/gnome/extensions/caffeine/default.nix new file mode 100644 index 0000000000000..3085a4461e712 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/caffeine/default.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetchFromGitHub, glib, gettext, bash, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-caffeine"; + version = "37"; + + src = fetchFromGitHub { + owner = "eonpatapon"; + repo = "gnome-shell-extension-caffeine"; + rev = "v${version}"; + sha256 = "1mpa0fbpmv3pblb20dxj8iykn4ayvx89qffpcs67bzlq597zsbkb"; + }; + + uuid = "caffeine@patapon.info"; + + nativeBuildInputs = [ + glib gettext + ]; + + buildPhase = '' + runHook preBuild + ${bash}/bin/bash ./update-locale.sh + glib-compile-schemas --strict --targetdir=caffeine@patapon.info/schemas/ caffeine@patapon.info/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "Fill the cup to inhibit auto suspend and screensaver"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = "https://github.com/eonpatapon/gnome-shell-extension-caffeine"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix b/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix new file mode 100644 index 0000000000000..779d7506abf54 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix @@ -0,0 +1,71 @@ +{ lib, stdenv +, fetchurl +, cmake +, ninja +, jq +, python3 +, gnome +, wrapGAppsHook +, gobject-introspection +}: + +let + inherit (python3.pkgs) python pygobject3 requests; +in +stdenv.mkDerivation rec { + pname = "chrome-gnome-shell"; + version = "10.1"; + + src = fetchurl { + url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${pname}-${version}.tar.xz"; + sha256 = "0f54xyamm383ypbh0ndkza0pif6ljddg2f947p265fkqj3p4zban"; + }; + + nativeBuildInputs = [ + cmake + ninja + jq + wrapGAppsHook + gobject-introspection # for setup-hook + ]; + + buildInputs = [ + gnome.gnome-shell + python + pygobject3 + requests + gobject-introspection # for Gio typelib + ]; + + cmakeFlags = [ + "-DBUILD_EXTENSION=OFF" + ]; + + wrapPrefixVariables = [ + "PYTHONPATH" + ]; + + # cmake setup hook changes /etc/opt into /var/empty + dontFixCmake = true; + + preConfigure = '' + substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc" + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "chrome-gnome-shell"; + }; + }; + + meta = with lib; { + description = "GNOME Shell integration for Chrome"; + homepage = "https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome"; + longDescription = '' + To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">browser extension</link>, and then set <option>services.gnome.chrome-gnome-shell.enable</option> to <literal>true</literal>. + ''; + license = licenses.gpl3; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/extensions/clipboard-indicator/default.nix b/pkgs/desktops/gnome/extensions/clipboard-indicator/default.nix new file mode 100644 index 0000000000000..ee64fc5113d05 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/clipboard-indicator/default.nix @@ -0,0 +1,30 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-clipboard-indicator"; + version = "37"; + + src = fetchFromGitHub { + owner = "Tudmotu"; + repo = "gnome-shell-extension-clipboard-indicator"; + rev = "v${version}"; + sha256 = "0npxhaam2ra2b9zh2gk2q0n5snlhx6glz86m3jf8hz037w920k41"; + }; + + uuid = "clipboard-indicator@tudmotu.com"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "Adds a clipboard indicator to the top panel and saves clipboard history"; + license = licenses.mit; + maintainers = with maintainers; [ jonafato ]; + platforms = platforms.linux; + homepage = "https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/clock-override/default.nix b/pkgs/desktops/gnome/extensions/clock-override/default.nix new file mode 100644 index 0000000000000..3e02d33857a69 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/clock-override/default.nix @@ -0,0 +1,37 @@ +{ lib, stdenv, fetchzip, gnome, gettext, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-clock-override"; + version = "12"; + + src = fetchzip { + url = "https://extensions.gnome.org/extension-data/clock-overridegnomeshell.kryogenix.org.v${version}.shell-extension.zip"; + sha256 = "1cyaszks6bwnbgacqsl1pmr24mbj05mad59d4253la9am8ibb4m6"; + stripRoot = false; + }; + + uuid = "clock-override@gnomeshell.kryogenix.org"; + + nativeBuildInputs = [ gettext glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --strict --targetdir=schemas schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r {convenience.js,extension.js,format.js,locale,metadata.json,prefs.js,schemas} $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "Customize the date and time format displayed in clock in the top bar in GNOME Shell"; + license = licenses.mit; + maintainers = with maintainers; [ rhoriguchi ]; + homepage = "https://github.com/stuartlangridge/gnome-shell-clock-override"; + broken = versionOlder gnome.gnome-shell.version "3.18"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix b/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix new file mode 100644 index 0000000000000..45233e52f8932 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv +, fetchFromGitHub +, glib +, gettext +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-dock"; + version = "69"; + + src = fetchFromGitHub { + owner = "micheleg"; + repo = "dash-to-dock"; + rev = "extensions.gnome.org-v" + version; + hash = "sha256-YuLtC7E8dK57JSuFdbDQe5Ml+KQfl9qSdrHdVhFaNiE="; + }; + + nativeBuildInputs = [ + glib + gettext + ]; + + makeFlags = [ + "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" + ]; + + uuid = "dash-to-dock@micxgx.gmail.com"; + + meta = with lib; { + description = "A dock for the Gnome Shell"; + homepage = "https://micheleg.github.io/dash-to-dock/"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo jtojnar ]; + }; +} diff --git a/pkgs/desktops/gnome/extensions/dash-to-panel/default.nix b/pkgs/desktops/gnome/extensions/dash-to-panel/default.nix new file mode 100644 index 0000000000000..7a9dc066cc77e --- /dev/null +++ b/pkgs/desktops/gnome/extensions/dash-to-panel/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-panel"; + version = "40"; + + src = fetchFromGitHub { + owner = "home-sweet-gnome"; + repo = "dash-to-panel"; + rev = "v${version}"; + sha256 = "07jq8d16nn62ikis896nyfn3q02f5srj754fmiblhz472q4ljc3p"; + }; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + uuid = "dash-to-panel@jderose9.github.com"; + + meta = with lib; { + description = "An icon taskbar for Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ mounium ]; + homepage = "https://github.com/jderose9/dash-to-panel"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/disable-unredirect/default.nix b/pkgs/desktops/gnome/extensions/disable-unredirect/default.nix new file mode 100644 index 0000000000000..0a9145de3db35 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/disable-unredirect/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-disable-unredirect"; + version = "unstable-2021-01-17"; + + src = fetchFromGitHub { + owner = "kazysmaster"; + repo = "gnome-shell-extension-disable-unredirect"; + rev = "2ecb2f489ea3316b77d04f03a0c885f322c67e79"; + sha256 = "1rjyrg8qya0asndxr7189a9npww0rcxk02wkxrxjy7fdp5m89p7y"; + }; + + uuid = "unredirect@vaina.lt"; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/gnome-shell/extensions + cp -R ${uuid} $out/share/gnome-shell/extensions/${uuid} + + runHook postInstall + ''; + + meta = with lib; { + description = "Disables unredirect fullscreen windows in gnome-shell to avoid tearing"; + license = licenses.gpl3Only; + homepage = "https://github.com/kazysmaster/gnome-shell-extension-disable-unredirect"; + maintainers = with maintainers; [ eduardosm ]; + }; +} diff --git a/pkgs/desktops/gnome/extensions/draw-on-your-screen/default.nix b/pkgs/desktops/gnome/extensions/draw-on-your-screen/default.nix new file mode 100644 index 0000000000000..90e8bffeec972 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/draw-on-your-screen/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchgit, gettext, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-draw-on-your-screen"; + version = "10"; + + src = fetchgit { + url = "https://framagit.org/abakkk/DrawOnYourScreen/"; + rev = "v${version}"; + sha256 = "07adzg3mf6k0pmd9lc358w0w3l4pr3p6374day1qhmci2p4zxq6p"; + }; + + uuid = "drawOnYourScreen@abakkk.framagit.org"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "A drawing extension for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ ericdallo ahuzik ]; + platforms = gnome.gnome-shell.meta.platforms; + homepage = "https://framagit.org/abakkk/DrawOnYourScreen"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/drop-down-terminal/default.nix b/pkgs/desktops/gnome/extensions/drop-down-terminal/default.nix new file mode 100644 index 0000000000000..a994e427fb0e8 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/drop-down-terminal/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub, substituteAll, gjs, vte, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-drop-down-terminal"; + version = "unstable-2020-03-25"; + + src = fetchFromGitHub { + owner = "zzrough"; + repo = "gs-extensions-drop-down-terminal"; + rev = "a59669afdb395b3315619f62c1f740f8b2f0690d"; + sha256 = "0igfxgrjdqq6z6xg4rsawxn261pk25g5dw2pm3bhwz5sqsy4bq3i"; + }; + + uuid = "drop-down-terminal@gs-extensions.zzrough.org"; + + patches = [ + (substituteAll { + src = ./fix_vte_and_gjs.patch; + inherit gjs vte; + }) + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions/ + runHook postInstall + ''; + + meta = with lib; { + description = "Configurable drop down terminal shell"; + license = licenses.gpl3; + maintainers = with maintainers; [ ericdallo ]; + homepage = "https://github.com/zzrough/gs-extensions-drop-down-terminal"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/drop-down-terminal/fix_vte_and_gjs.patch b/pkgs/desktops/gnome/extensions/drop-down-terminal/fix_vte_and_gjs.patch new file mode 100644 index 0000000000000..3544c91ee8958 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/drop-down-terminal/fix_vte_and_gjs.patch @@ -0,0 +1,32 @@ +--- a/drop-down-terminal@gs-extensions.zzrough.org/extension.js ++++ b/drop-down-terminal@gs-extensions.zzrough.org/extension.js +@@ -15,6 +15,8 @@ + + // Author: Stéphane Démurget <stephane.demurget@free.fr> + ++imports.gi.GIRepository.Repository.prepend_search_path('@vte@/lib/girepository-1.0') ++ + const Lang = imports.lang; + const Gettext = imports.gettext.domain("drop-down-terminal"); + const Mainloop = imports.mainloop; +@@ -653,7 +655,7 @@ const DropDownTerminalExtension = new Lang.Class({ + this._killingChild = false; + + // finds the forking arguments +- let args = ["gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path]; ++ let args = ["@gjs@/bin/gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path]; + + // forks the process + debug("forking '" + args.join(" ") + "'"); +--- a/drop-down-terminal@gs-extensions.zzrough.org/terminal.js ++++ b/drop-down-terminal@gs-extensions.zzrough.org/terminal.js +@@ -14,6 +14,9 @@ + // along with this program. If not, see <http://www.gnu.org/licenses/>. + + // Author: Stéphane Démurget <stephane.demurget@free.fr> ++ ++imports.gi.GIRepository.Repository.prepend_search_path('@vte@/lib/girepository-1.0') ++ + const Lang = imports.lang; + + const Pango = imports.gi.Pango; diff --git a/pkgs/desktops/gnome/extensions/dynamic-panel-transparency/default.nix b/pkgs/desktops/gnome/extensions/dynamic-panel-transparency/default.nix new file mode 100644 index 0000000000000..f31e170b975dd --- /dev/null +++ b/pkgs/desktops/gnome/extensions/dynamic-panel-transparency/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchFromGitHub, gnome, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-dynamic-panel-transparency"; + version = "35"; + + src = fetchFromGitHub { + owner = "ewlsh"; + repo = "dynamic-panel-transparency"; + rev = "0800c0a921bb25f51f6a5ca2e6981b1669a69aec"; + sha256 = "0200mx861mlsi9lf7h108yam02jfqqw55r521chkgmk4fy6z99pq"; + }; + + uuid = "dynamic-panel-transparency@rockon999.github.io"; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --strict --targetdir=${uuid}/schemas/ ${uuid}/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "This extension fades your top panel to nothingness when there are no maximized windows present"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ rhoriguchi ]; + homepage = "https://github.com/ewlsh/dynamic-panel-transparency"; + broken = versionOlder gnome.gnome-shell.version "3.36"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/emoji-selector/default.nix b/pkgs/desktops/gnome/extensions/emoji-selector/default.nix new file mode 100644 index 0000000000000..5470dc996be01 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/emoji-selector/default.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-emoji-selector"; + version = "19"; + + src = fetchFromGitHub { + owner = "maoschanz"; + repo = "emoji-selector-for-gnome"; + rev = version; + sha256 = "0x60pg5nl5d73av494dg29hyfml7fbf2d03wm053vx1q8a3pxbyb"; + }; + + uuid = "emoji-selector@maestroschan.fr"; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas ./${uuid}/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = + "GNOME Shell extension providing a searchable popup menu displaying most emojis"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ rawkode ]; + homepage = "https://github.com/maoschanz/emoji-selector-for-gnome"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/freon/default.nix b/pkgs/desktops/gnome/extensions/freon/default.nix new file mode 100644 index 0000000000000..f30e2f6f8a250 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/freon/default.nix @@ -0,0 +1,37 @@ +{ lib, stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-freon"; + version = "40"; + + uuid = "freon@UshakovVasilii_Github.yahoo.com"; + + src = fetchFromGitHub { + owner = "UshakovVasilii"; + repo = "gnome-shell-extension-freon"; + rev = "EGO-${version}"; + sha256 = "0ak6f5dds9kk3kqww681gs3l1mj3vf22icrvb5m257s299rq8yzl"; + }; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --strict --targetdir=${uuid}/schemas ${uuid}/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "GNOME Shell extension for displaying CPU, GPU, disk temperatures, voltage and fan RPM in the top panel"; + license = licenses.gpl2; + maintainers = with maintainers; [ justinas ]; + homepage = "https://github.com/UshakovVasilii/gnome-shell-extension-freon"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix b/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix new file mode 100755 index 0000000000000..302b21f2aefc5 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitLab, gnome, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-fuzzy-app-search"; + version = "4"; + + src = fetchFromGitLab { + owner = "Czarlie"; + repo = "gnome-fuzzy-app-search"; + rev = "da9c15d39958d9c3b38df3b616fd40b85aed24e5"; + sha256 = "1r3qha530s97x818znn1wi76f4x9bhlgi7jlxfwjnrwys62cv5fn"; + }; + + uuid = "gnome-fuzzy-app-search@gnome-shell-extensions.Czarlie.gitlab.com"; + + nativeBuildInputs = [ glib ]; + + patches = [ ./fix-desktop-file-paths.patch ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + meta = with lib; { + description = "Fuzzy application search results for Gnome Search"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ rhoriguchi ]; + homepage = "https://gitlab.com/Czarlie/gnome-fuzzy-app-search"; + broken = versionOlder gnome.gnome-shell.version "3.18"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch b/pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch new file mode 100755 index 0000000000000..1795f998c9bde --- /dev/null +++ b/pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch @@ -0,0 +1,50 @@ +diff --git a/applicationsUtils.js b/applicationsUtils.js +index 728223b..aa9f291 100644 +--- a/applicationsUtils.js ++++ b/applicationsUtils.js +@@ -44,27 +44,24 @@ var Search = new Lang.Class({ + * @return {Void} + */ + _init: function () { +- let dir = [ +- "/usr/share/applications", +- GLib.get_home_dir() + "/.local/share/applications", +- ]; +- +- // listen object - file/monitor list +- this._listen = dir.map((path) => { +- let file = Gio.File.new_for_path(path); +- let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); +- +- // refresh on each directory change +- monitor.connect( +- "changed", +- Lang.bind(this, this._handleMonitorChanged) +- ); +- +- return { +- file: file, +- monitor: monitor, +- }; +- }); ++ this._listen = [...new Set(GLib.get_system_data_dirs())] ++ .filter((path) => path.endsWith("/share")) ++ .map((path) => Gio.File.new_for_path(path + "/applications")) ++ .filter((file) => file.query_exists(null)) ++ .map((file) => { ++ let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); ++ ++ // refresh on each directory change ++ monitor.connect( ++ "changed", ++ Lang.bind(this, this._handleMonitorChanged) ++ ); ++ ++ return { ++ file: file, ++ monitor: monitor, ++ }; ++ }); + this._interval = null; + this._data = {}; + \ No newline at end of file diff --git a/pkgs/desktops/gnome/extensions/gsconnect/default.nix b/pkgs/desktops/gnome/extensions/gsconnect/default.nix new file mode 100644 index 0000000000000..c924b4e3eca05 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/gsconnect/default.nix @@ -0,0 +1,116 @@ +{ lib, stdenv +, fetchFromGitHub +, substituteAll +, openssl +, gsound +, meson +, ninja +, pkg-config +, gobject-introspection +, wrapGAppsHook +, glib +, glib-networking +, gtk3 +, openssh +, gnome +, gjs +, nixosTests +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-gsconnect"; + version = "46"; + + outputs = [ "out" "installedTests" ]; + + src = fetchFromGitHub { + owner = "andyholmes"; + repo = "gnome-shell-extension-gsconnect"; + rev = "v${version}"; + sha256 = "161379kipr6z6gbhchb5b17djrkg5fbvblyyabzkc2gv05r3h6fw"; + }; + + patches = [ + # Make typelibs available in the extension + (substituteAll { + src = ./fix-paths.patch; + gapplication = "${glib.bin}/bin/gapplication"; + }) + + # Allow installing installed tests to a separate output + ./installed-tests-path.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gobject-introspection # for locating typelibs + wrapGAppsHook # for wrapping daemons + ]; + + buildInputs = [ + glib # libgobject + glib-networking + gtk3 + gsound + gjs # for running daemon + gnome.evolution-data-server # for libebook-contacts typelib + ]; + + mesonFlags = [ + "-Dgnome_shell_libdir=${gnome.gnome-shell}/lib" + "-Dgsettings_schemadir=${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}" + "-Dchrome_nmhdir=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts" + "-Dchromium_nmhdir=${placeholder "out"}/etc/chromium/native-messaging-hosts" + "-Dopenssl_path=${openssl}/bin/openssl" + "-Dsshadd_path=${openssh}/bin/ssh-add" + "-Dsshkeygen_path=${openssh}/bin/ssh-keygen" + "-Dsession_bus_services_dir=${placeholder "out"}/share/dbus-1/services" + "-Dpost_install=true" + "-Dinstalled_test_prefix=${placeholder "installedTests"}" + ]; + + postPatch = '' + patchShebangs meson/nmh.sh + patchShebangs meson/post-install.sh + patchShebangs installed-tests/prepare-tests.sh + + # TODO: do not include every typelib everywhere + # for example, we definitely do not need nautilus + for file in src/extension.js src/prefs.js; do + substituteInPlace "$file" \ + --subst-var-by typelibPath "$GI_TYPELIB_PATH" + done + ''; + + postFixup = '' + # Let’s wrap the daemons + for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{daemon,nativeMessagingHost}.js; do + echo "Wrapping program $file" + wrapGApp "$file" + done + + # Wrap jasmine runner for tests + for file in $installedTests/libexec/installed-tests/gsconnect/minijasmine; do + echo "Wrapping program $file" + wrapGApp "$file" + done + ''; + + uuid = "gsconnect@andyholmes.github.io"; + + passthru = { + tests = { + installedTests = nixosTests.installed-tests.gsconnect; + }; + }; + + meta = with lib; { + description = "KDE Connect implementation for Gnome Shell"; + homepage = "https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ etu ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/extensions/gsconnect/fix-paths.patch b/pkgs/desktops/gnome/extensions/gsconnect/fix-paths.patch new file mode 100644 index 0000000000000..58c02a92eb2ef --- /dev/null +++ b/pkgs/desktops/gnome/extensions/gsconnect/fix-paths.patch @@ -0,0 +1,37 @@ +diff --git i/data/org.gnome.Shell.Extensions.GSConnect.desktop.in w/data/org.gnome.Shell.Extensions.GSConnect.desktop.in +index ffb23342..b405c73b 100644 +--- i/data/org.gnome.Shell.Extensions.GSConnect.desktop.in ++++ w/data/org.gnome.Shell.Extensions.GSConnect.desktop.in +@@ -1,7 +1,7 @@ + [Desktop Entry] + Type=Application + Name=GSConnect +-Exec=gapplication launch org.gnome.Shell.Extensions.GSConnect %U ++Exec=@gapplication@ launch org.gnome.Shell.Extensions.GSConnect %U + Terminal=false + NoDisplay=true + Icon=org.gnome.Shell.Extensions.GSConnect +diff --git i/src/extension.js w/src/extension.js +index 5f32aa68..872c0c61 100644 +--- i/src/extension.js ++++ w/src/extension.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GObject = imports.gi.GObject; + const Gtk = imports.gi.Gtk; +diff --git i/src/prefs.js w/src/prefs.js +index 07e93099..1c166710 100644 +--- i/src/prefs.js ++++ w/src/prefs.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; diff --git a/pkgs/desktops/gnome/extensions/gsconnect/installed-tests-path.patch b/pkgs/desktops/gnome/extensions/gsconnect/installed-tests-path.patch new file mode 100644 index 0000000000000..78e1ad96d74c3 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/gsconnect/installed-tests-path.patch @@ -0,0 +1,30 @@ +diff --git a/installed-tests/meson.build b/installed-tests/meson.build +index c7eff2fb..ef4f6052 100644 +--- a/installed-tests/meson.build ++++ b/installed-tests/meson.build +@@ -1,5 +1,5 @@ +-installed_tests_execdir = join_paths(libexecdir, 'installed-tests', meson.project_name()) +-installed_tests_metadir = join_paths(datadir, 'installed-tests', meson.project_name()) ++installed_tests_execdir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', meson.project_name()) ++installed_tests_metadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', meson.project_name()) + + installed_tests_srcdir = meson.current_source_dir() + installed_tests_builddir = meson.current_build_dir() +diff --git a/meson_options.txt b/meson_options.txt +index 8912e052..ca6ee5eb 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -116,6 +116,13 @@ option( + description: 'Native Messaging Host directory for Mozilla' + ) + ++option( ++ 'installed_test_prefix', ++ type: 'string', ++ value: '', ++ description: 'Prefix for installed tests' ++) ++ + option( + 'installed_tests', + type: 'boolean', diff --git a/pkgs/desktops/gnome/extensions/hot-edge/default.nix b/pkgs/desktops/gnome/extensions/hot-edge/default.nix new file mode 100644 index 0000000000000..aaa5870996aba --- /dev/null +++ b/pkgs/desktops/gnome/extensions/hot-edge/default.nix @@ -0,0 +1,33 @@ +{ lib +, stdenv +, fetchFromGitHub +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-hot-edge"; + version = "jdoda"; + + src = fetchFromGitHub { + owner = "jdoda"; + repo = "hotedge"; + rev = "bb7f651becea5287241caf7cda246a68ab07dac8"; + sha256 = "oeTs0kRan6b5relxzhK1IKbV0Yv2d5YdvvUPJ3fM9ik="; + }; + + dontBuild = true; + + uuid = "hotedge@jonathan.jdoda.ca"; + + installPhase = '' + runHook preInstall + install -Dt $out/share/gnome-shell/extensions/${uuid} extension.js metadata.json stylesheet.css + runHook postInstall + ''; + + meta = with lib; { + description = "Replace the top-left hot corner with a bottom hot edge"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jtojnar ]; + homepage = "https://github.com/jdoda/hotedge"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/icon-hider/default.nix b/pkgs/desktops/gnome/extensions/icon-hider/default.nix new file mode 100644 index 0000000000000..820d96988c9ab --- /dev/null +++ b/pkgs/desktops/gnome/extensions/icon-hider/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-icon-hider"; + version = "23"; + + src = fetchFromGitHub { + owner = "ikalnytskyi"; + repo = "gnome-shell-extension-icon-hider"; + rev = "v${version}"; + sha256 = "18c8zkdrmdbghqqz7b450vhgpykgz25mgigwn2nggcb2lxmvm9ks"; + }; + + uuid = "icon-hider@kalnitsky.org"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "Icon Hider is a GNOME Shell extension for managing status area items"; + license = licenses.bsd3; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome.gnome-shell.meta.platforms; + homepage = "https://github.com/ikalnytskyi/gnome-shell-extension-icon-hider"; + broken = versionAtLeast gnome.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/pkgs/desktops/gnome/extensions/impatience/default.nix b/pkgs/desktops/gnome/extensions/impatience/default.nix new file mode 100644 index 0000000000000..82551efef3c78 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/impatience/default.nix @@ -0,0 +1,39 @@ +{ lib, stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-impatience"; + version = "unstable-2019-09-23"; + + src = fetchFromGitHub { + owner = "timbertson"; + repo = "gnome-shell-impatience"; + rev = "43e4e0a1e0eeb334a2da5224ce3ab4fdddf4f1b2"; + sha256 = "0kvdhlz41fjyqdgcfw6mrr9nali6wg2qwji3dvykzfi0aypljzpx"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + runHook preBuild + make schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r impatience $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + uuid = "impatience@gfxmonk.net"; + + meta = with lib; { + description = "Speed up builtin gnome-shell animations"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ timbertson tiramiseb ]; + homepage = "http://gfxmonk.net/dist/0install/gnome-shell-impatience.xml"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/material-shell/default.nix b/pkgs/desktops/gnome/extensions/material-shell/default.nix new file mode 100644 index 0000000000000..9b683c1af6b57 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/material-shell/default.nix @@ -0,0 +1,35 @@ +{ stdenv, lib, fetchFromGitHub, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-material-shell"; + version = "12"; + + src = fetchFromGitHub { + owner = "material-shell"; + repo = "material-shell"; + rev = version; + sha256 = "0ikrh70drwr0pqjcdz7l1ky8xllpnk7myprjd4s61nqkx9j2iz44"; + }; + + # This package has a Makefile, but it's used for building a zip for + # publication to extensions.gnome.org. Disable the build phase so + # installing doesn't build an unnecessary release. + dontBuild = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid}/ + runHook postInstall + ''; + + uuid = "material-shell@papyelgringo"; + + meta = with lib; { + description = "A modern desktop interface for Linux"; + license = licenses.mit; + maintainers = with maintainers; [ benley ]; + homepage = "https://github.com/material-shell/material-shell"; + platforms = gnome.gnome-shell.meta.platforms; + }; +} diff --git a/pkgs/desktops/gnome/extensions/mpris-indicator-button/default.nix b/pkgs/desktops/gnome/extensions/mpris-indicator-button/default.nix new file mode 100644 index 0000000000000..b0dfc9b8dec8a --- /dev/null +++ b/pkgs/desktops/gnome/extensions/mpris-indicator-button/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv +, fetchFromGitHub +, nix-update-script +, gnome +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-mpris-indicator-button-unstable"; + version = "2020-03-21"; + + src = fetchFromGitHub { + owner = "JasonLG1979"; + repo = "gnome-shell-extension-mpris-indicator-button"; + rev = "de54160e7d905b8c48c0fe30a437f7c51efc1aa3"; + sha256 = "0n5qlx51fxjq1nn10zhdwfy905j20sv7pwh2jc6fns757ac4pwwk"; + }; + + uuid = "mprisindicatorbutton@JasonLG1979.github.io"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "gnomeExtensions.${pname}"; + }; + }; + + + meta = with lib; { + description = "A simple MPRIS indicator button for GNOME Shell"; + license = licenses.gpl3; + maintainers = with maintainers; [ worldofpeace ]; + platforms = gnome.gnome-shell.meta.platforms; + homepage = "https://github.com/JasonLG1979/gnome-shell-extension-mpris-indicator-button"; + broken = versionOlder gnome.gnome-shell.version "3.34"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/night-theme-switcher/default.nix b/pkgs/desktops/gnome/extensions/night-theme-switcher/default.nix new file mode 100644 index 0000000000000..fd0d2dbb57849 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/night-theme-switcher/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchFromGitLab, glib, gnome, unzip }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-night-theme-switcher"; + version = "40"; + + src = fetchFromGitLab { + owner = "rmnvgr"; + repo = "nightthemeswitcher-gnome-shell-extension"; + rev = "v${version}"; + sha256 = "0z11y18bgdc0y41hrrzzgi4lagm2cg06x12jgdnary1ycng7xja0"; + }; + + nativeBuildInputs = [ unzip ]; + buildInputs = [ glib gnome.gnome-shell ]; + + uuid = "nightthemeswitcher@romainvigier.fr"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/ + unzip build/${uuid}.shell-extension.zip -d $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "Automatically change the GTK theme to dark variant when Night Light activates"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension/"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/no-title-bar/default.nix b/pkgs/desktops/gnome/extensions/no-title-bar/default.nix new file mode 100644 index 0000000000000..ad588be18ce9e --- /dev/null +++ b/pkgs/desktops/gnome/extensions/no-title-bar/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchFromGitHub, substituteAll, glib, gettext, xorg }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-no-title-bar"; + version = "11"; + + src = fetchFromGitHub { + owner = "poehlerj"; + repo = "no-title-bar"; + rev = "V_${version}"; + sha256 = "07ddw47binlsbyvgy4xkdjvd40zyp7nwd17r6k7w54d50vmnwhvb"; + }; + + nativeBuildInputs = [ glib gettext ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + xprop = "${xorg.xprop}/bin/xprop"; + xwininfo = "${xorg.xwininfo}/bin/xwininfo"; + }) + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + uuid = "no-title-bar@jonaspoehler.de"; + + meta = with lib; { + description = "Integrates maximized windows with the top panel"; + homepage = "https://github.com/poehlerj/no-title-bar"; + license = licenses.gpl2; + maintainers = with maintainers; [ jonafato svsdep maxeaubrey ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/extensions/no-title-bar/fix-paths.patch b/pkgs/desktops/gnome/extensions/no-title-bar/fix-paths.patch new file mode 100644 index 0000000000000..fb2d3d57e51d3 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/no-title-bar/fix-paths.patch @@ -0,0 +1,56 @@ +diff --git a/decoration.js b/decoration.js +index d1ff3dd..ff4193f 100644 +--- a/decoration.js ++++ b/decoration.js +@@ -223,7 +223,7 @@ var Decoration = class { + + let winId = this._guessWindowXID(win); + +- let xprops = GLib.spawn_command_line_sync(`xprop -id ${winId}`); ++ let xprops = GLib.spawn_command_line_sync(`@xprop@ -id ${winId}`); + if (!xprops[0]) { + Utils.log_debug(`Unable to determine windows '${win.get_title()}' original state`); + return win._noTitleBarOriginalState = WindowState.UNKNOWN; +@@ -237,7 +237,7 @@ var Decoration = class { + let prop = '_MOTIF_WM_HINTS'; + let value = '0x2, 0x0, %s, 0x0, 0x0'.format(hide ? '0x2' : '0x1'); + +- GLib.spawn_command_line_sync(`xprop -id ${windId} -f ${prop} 32c -set ${prop} "${value}"`); ++ GLib.spawn_command_line_sync(`@xprop@ -id ${windId} -f ${prop} 32c -set ${prop} "${value}"`); + if (!hide && !win.titlebar_is_onscreen()) { + Utils.log_debug(`Shoving titlebar onscreen for window '${win.get_title()}'`); + win.shove_titlebar_onscreen(); +@@ -354,7 +354,7 @@ var Decoration = class { + let act = win.get_compositor_private(); + let xwindow = act && act['x-window']; + if (xwindow) { +- let xwininfo = GLib.spawn_command_line_sync('xwininfo -children -id 0x%x'.format(xwindow)); ++ let xwininfo = GLib.spawn_command_line_sync('@xwininfo@ -children -id 0x%x'.format(xwindow)); + if (xwininfo[0]) { + let str = ByteArray.toString(xwininfo[1]); + +@@ -384,7 +384,7 @@ var Decoration = class { + // Try enumerating all available windows and match the title. Note that this + // may be necessary if the title contains special characters and `x-window` + // is not available. +- let result = GLib.spawn_command_line_sync('xprop -root _NET_CLIENT_LIST'); ++ let result = GLib.spawn_command_line_sync('@xprop@ -root _NET_CLIENT_LIST'); + if (result[0]) { + let str = ByteArray.toString(result[1]); + +@@ -395,7 +395,7 @@ var Decoration = class { + + // For each window ID, check if the title matches the desired title. + for (var i = 0; i < windowList.length; ++i) { +- let cmd = 'xprop -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; ++ let cmd = '@xprop@ -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; + let result = GLib.spawn_command_line_sync(cmd); + + if (result[0]) { +@@ -455,4 +455,4 @@ var Decoration = class { + let styleContent = this._updateUserStyles(); + GLib.file_set_contents(this._userStylesPath, styleContent); + } +-} +\ No newline at end of file ++} diff --git a/pkgs/desktops/gnome/extensions/noannoyance/default.nix b/pkgs/desktops/gnome/extensions/noannoyance/default.nix new file mode 100644 index 0000000000000..4763d90575517 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/noannoyance/default.nix @@ -0,0 +1,31 @@ +{ stdenv +, lib +, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "noannoyance"; + version = "unstable-2021-01-17"; + + src = fetchFromGitHub { + owner = "BjoernDaase"; + repo = "noannoyance"; + rev = "f6e76916336aee2f7c4141796f3c40c870d2b347"; + sha256 = "1iy3nif8rjjcwf83fg9ds93fi7vmhliynmlwqnx036s3msmxvgs3"; + }; + + uuid = "noannoyance@daase.net"; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp metadata.json extension.js $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with lib; { + description = "Removes the 'Window is ready' notification and puts the window into focus"; + homepage = "https://github.com/BjoernDaase/noannoyance"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ tu-maurice ]; + }; +} diff --git a/pkgs/desktops/gnome/extensions/paperwm/default.nix b/pkgs/desktops/gnome/extensions/paperwm/default.nix new file mode 100644 index 0000000000000..201628b4b424e --- /dev/null +++ b/pkgs/desktops/gnome/extensions/paperwm/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-paperwm"; + version = "38.1"; + + src = fetchFromGitHub { + owner = "paperwm"; + repo = "PaperWM"; + rev = version; + sha256 = "1jq15qrq3khqpjsjbcc17amdr1k53jkvambdacdf56xbqkycvlgs"; + }; + + uuid = "paperwm@hedning:matrix.org"; + + dontBuild = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "Tiled scrollable window management for Gnome Shell"; + homepage = "https://github.com/paperwm/PaperWM"; + license = licenses.gpl3; + maintainers = with maintainers; [ hedning ]; + }; +} diff --git a/pkgs/desktops/gnome/extensions/pidgin-im-integration/default.nix b/pkgs/desktops/gnome/extensions/pidgin-im-integration/default.nix new file mode 100644 index 0000000000000..93ffcda830a1e --- /dev/null +++ b/pkgs/desktops/gnome/extensions/pidgin-im-integration/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub, glib, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-pidgin-im-integration"; + version = "32"; + + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "pidgin-im-gnome-shell-extension"; + rev = "v${version}"; + sha256 = "1jyg8r0s1v83sgg6y0jbsj2v37mglh8rvd8vi27fxnjq9xmg8kpc"; + }; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + share_dir="$prefix/share" + extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad" + mkdir -p "$extensions_dir" + mv *.js metadata.json dbus.xml schemas locale "$extensions_dir" + runHook postInstall + ''; + + uuid = "pidgin@muffinmad"; + + meta = with lib; { + homepage = "https://github.com/muffinmad/pidgin-im-gnome-shell-extension"; + description = "Make Pidgin IM conversations appear in the Gnome Shell message tray"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + broken = versionAtLeast gnome.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/pkgs/desktops/gnome/extensions/remove-dropdown-arrows/default.nix b/pkgs/desktops/gnome/extensions/remove-dropdown-arrows/default.nix new file mode 100644 index 0000000000000..e310f5dcf10c5 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/remove-dropdown-arrows/default.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-remove-dropdown-arrows"; + version = "13"; + + src = fetchFromGitHub { + owner = "mpdeimos"; + repo = "gnome-shell-remove-dropdown-arrows"; + rev = "version/${version}"; + sha256 = "09b2hnfbqym20pb1sfc8xiz7gs2kbs6b1s7xl8swc8dydhsbambk"; + }; + + # This package has a Makefile, but it's used for publishing and linting, not + # for building. Disable the build phase so installing doesn't attempt to + # publish the extension. + dontBuild = true; + + uuid = "remove-dropdown-arrows@mpdeimos.com"; + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "Remove dropdown arrows from GNOME Shell Menus"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://github.com/mpdeimos/gnome-shell-remove-dropdown-arrows"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/sound-output-device-chooser/default.nix b/pkgs/desktops/gnome/extensions/sound-output-device-chooser/default.nix new file mode 100644 index 0000000000000..e58d8ce6e42f7 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/sound-output-device-chooser/default.nix @@ -0,0 +1,44 @@ +{ lib, stdenv +, substituteAll +, fetchFromGitHub +, libpulseaudio +, python3 +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-sound-output-device-chooser"; + version = "35"; + + src = fetchFromGitHub { + owner = "kgshank"; + repo = "gse-sound-output-device-chooser"; + rev = version; + sha256 = "sha256-Yl5ut6kJAkAAdCBiNFpwDgshXCLMmFH3/zhnFGpyKqs="; + }; + + patches = [ + # Fix paths to libpulse and python + (substituteAll { + src = ./fix-paths.patch; + libpulse = "${libpulseaudio}/lib/libpulse.so"; + python = python3.interpreter; + }) + ]; + + dontBuild = true; + + uuid = "sound-output-device-chooser@kgshank.net"; + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "GNOME Shell extension adding audio device chooser to panel"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jtojnar ]; + homepage = "https://github.com/kgshank/gse-sound-output-device-chooser"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/sound-output-device-chooser/fix-paths.patch b/pkgs/desktops/gnome/extensions/sound-output-device-chooser/fix-paths.patch new file mode 100644 index 0000000000000..1971bf1e5e745 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/sound-output-device-chooser/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/sound-output-device-chooser@kgshank.net/convenience.js b/sound-output-device-chooser@kgshank.net/convenience.js +index 54ad06f..0860531 100644 +--- a/sound-output-device-chooser@kgshank.net/convenience.js ++++ b/sound-output-device-chooser@kgshank.net/convenience.js +@@ -142,7 +142,7 @@ function refreshCards() { + if (newProfLogic) { + _log("New logic"); + let pyLocation = Me.dir.get_child("utils/pa_helper.py").get_path(); +- let pythonExec = ["python", "python3", "python2"].find(cmd => isCmdFound(cmd)); ++ let pythonExec = '@python@'; + if (!pythonExec) { + _log("ERROR: Python not found. fallback to default mode"); + _settings.set_boolean(Prefs.NEW_PROFILE_ID, false); +diff --git a/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py b/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py +index c4d2484..262608d 100644 +--- a/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py ++++ b/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py +@@ -82,7 +82,7 @@ else: + + _libraries = {} + +-libpulse_library_name = find_library('pulse') ++libpulse_library_name = '@libpulse@' + if libpulse_library_name is None: + raise Exception('No libpulse.so library found!') + diff --git a/pkgs/desktops/gnome/extensions/system-monitor/default.nix b/pkgs/desktops/gnome/extensions/system-monitor/default.nix new file mode 100644 index 0000000000000..e7b5e8a1a9c18 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/system-monitor/default.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-system-monitor"; + version = "unstable-2021-04-08"; + + src = fetchFromGitHub { + owner = "paradoxxxzero"; + repo = "gnome-shell-system-monitor-applet"; + rev = "942603da39de12f50b1f86efbde92d7526d1290e"; + sha256 = "0lzb7064bigw2xsqkzr8qfhp9wfmxyi3823j2782v99jpcz423aw"; + }; + + buildInputs = [ + glib + glib-networking + libgtop + ]; + + patches = [ + (substituteAll { + src = ./paths_and_nonexisting_dirs.patch; + clutter_path = gnome.mutter.libdir; # this should not be used in settings but 🤷♀️ + gtop_path = "${libgtop}/lib/girepository-1.0"; + glib_net_path = "${glib-networking}/lib/girepository-1.0"; + }) + ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + uuid = "system-monitor@paradoxxx.zero.gmail.com"; + + meta = with lib; { + description = "Display system informations in gnome shell status bar"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ tiramiseb ]; + homepage = "https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/system-monitor/paths_and_nonexisting_dirs.patch b/pkgs/desktops/gnome/extensions/system-monitor/paths_and_nonexisting_dirs.patch new file mode 100644 index 0000000000000..280af965af3f6 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/system-monitor/paths_and_nonexisting_dirs.patch @@ -0,0 +1,33 @@ +diff --git a/system-monitor@paradoxxx.zero.gmail.com/extension.js b/system-monitor@paradoxxx.zero.gmail.com/extension.js +index de5e3d7..2d7824d 100644 +--- a/system-monitor@paradoxxx.zero.gmail.com/extension.js ++++ b/system-monitor@paradoxxx.zero.gmail.com/extension.js +@@ -18,6 +18,9 @@ + + // Author: Florian Mounier aka paradoxxxzero + ++imports.gi.GIRepository.Repository.prepend_search_path('@gtop_path@'); ++imports.gi.GIRepository.Repository.prepend_search_path('@glib_net_path@'); ++ + /* Ugly. This is here so that we don't crash old libnm-glib based shells unnecessarily + * by loading the new libnm.so. Should go away eventually */ + +@@ -407,7 +410,7 @@ const smMountsMonitor = class SystemMonitor_smMountsMonitor { + this.connected = false; + + this._volumeMonitor = Gio.VolumeMonitor.get(); +- let sys_mounts = ['/home', '/tmp', '/boot', '/usr', '/usr/local']; ++ let sys_mounts = ['/home', '/tmp', '/boot']; + this.base_mounts = ['/']; + sys_mounts.forEach((sMount) => { + if (this.is_sys_mount(sMount + '/')) { +diff --git a/system-monitor@paradoxxx.zero.gmail.com/prefs.js b/system-monitor@paradoxxx.zero.gmail.com/prefs.js +index 81d667c..0da4809 100644 +--- a/system-monitor@paradoxxx.zero.gmail.com/prefs.js ++++ b/system-monitor@paradoxxx.zero.gmail.com/prefs.js +@@ -1,3 +1,5 @@ ++imports.gi.GIRepository.Repository.prepend_search_path('@clutter_path@'); ++ + const Gtk = imports.gi.Gtk; + const Gio = imports.gi.Gio; + const Gdk = imports.gi.Gdk; diff --git a/pkgs/desktops/gnome/extensions/taskwhisperer/default.nix b/pkgs/desktops/gnome/extensions/taskwhisperer/default.nix new file mode 100644 index 0000000000000..68d07e2d1429a --- /dev/null +++ b/pkgs/desktops/gnome/extensions/taskwhisperer/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv, substituteAll, fetchFromGitHub, taskwarrior, gettext, runtimeShell }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-taskwhisperer"; + version = "16"; + + src = fetchFromGitHub { + owner = "cinatic"; + repo = "taskwhisperer"; + rev = "v${version}"; + sha256 = "05w2dfpr5vrydb7ij4nd2gb7c31nxix3j48rb798r4jzl1rakyah"; + }; + + nativeBuildInputs = [ + gettext + ]; + + buildInputs = [ + taskwarrior + ]; + + uuid = "taskwhisperer-extension@infinicode.de"; + + makeFlags = [ + "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + task = "${taskwarrior}/bin/task"; + shell = runtimeShell; + }) + ]; + + meta = with lib; { + description = "GNOME Shell TaskWarrior GUI"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jonafato ]; + homepage = "https://github.com/cinatic/taskwhisperer"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/taskwhisperer/fix-paths.patch b/pkgs/desktops/gnome/extensions/taskwhisperer/fix-paths.patch new file mode 100644 index 0000000000000..2ea54f4b0897d --- /dev/null +++ b/pkgs/desktops/gnome/extensions/taskwhisperer/fix-paths.patch @@ -0,0 +1,99 @@ +diff --git a/taskwhisperer-extension@infinicode.de/extra/create.sh b/taskwhisperer-extension@infinicode.de/extra/create.sh +index a69e369..35d5ea1 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/create.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/create.sh +@@ -1 +1 @@ +-bash -c "task add $1" ++bash -c "@task@ add $1" +diff --git a/taskwhisperer-extension@infinicode.de/extra/modify.sh b/taskwhisperer-extension@infinicode.de/extra/modify.sh +index 7964a26..8edd21b 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/modify.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/modify.sh +@@ -1 +1 @@ +-bash -c "task $1 modify $2" ++bash -c "@task@ $1 modify $2" +diff --git a/taskwhisperer-extension@infinicode.de/taskService.js b/taskwhisperer-extension@infinicode.de/taskService.js +index ead7a12..aa36db4 100644 +--- a/taskwhisperer-extension@infinicode.de/taskService.js ++++ b/taskwhisperer-extension@infinicode.de/taskService.js +@@ -182,7 +182,7 @@ const TaskService = class TaskService { + + let project = projectName ? "project:" + projectName : ""; + +- let command = ['task', 'rc.json.array=on', status, project, 'export']; ++ let command = ['@task@', 'rc.json.array=on', status, project, 'export']; + let reader = new SpawnReader.SpawnReader(); + + let buffer = ""; +@@ -220,7 +220,7 @@ const TaskService = class TaskService { + break; + } + +- let shellProc = Gio.Subprocess.new(['task', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -261,7 +261,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -290,7 +290,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -318,7 +318,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -344,7 +344,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -374,7 +374,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -403,7 +403,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -432,7 +432,7 @@ const TaskService = class TaskService { + let shellProc; + + try { +- shellProc = Gio.Subprocess.new(['task', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); ++ shellProc = Gio.Subprocess.new(['@task@', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); + } catch (err) { + onError(err); + return; diff --git a/pkgs/desktops/gnome/extensions/tilingnome/default.nix b/pkgs/desktops/gnome/extensions/tilingnome/default.nix new file mode 100644 index 0000000000000..c1ca77d9d73f2 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/tilingnome/default.nix @@ -0,0 +1,38 @@ +{ stdenv, lib, fetchFromGitHub, glib, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-tilingnome-unstable"; + version = "unstable-2019-09-19"; + + src = fetchFromGitHub { + owner = "rliang"; + repo = "gnome-shell-extension-tilingnome"; + rev = "f401c20c9721d85e6b3e30d1e822a200db370407"; + sha256 = "1hq9g9bxqpzqrdj9zm0irld8r6q4w1m4b00jya7wsny8rzb1s0y2"; + }; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas . + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid}/ + runHook postInstall + ''; + + uuid = "tilingnome@rliang.github.com"; + + meta = with lib; { + description = "Tiling window management for GNOME Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ benley ]; + homepage = "https://github.com/rliang/gnome-shell-extension-tilingnome"; + platforms = gnome.gnome-shell.meta.platforms; + }; +} diff --git a/pkgs/desktops/gnome/extensions/timepp/default.nix b/pkgs/desktops/gnome/extensions/timepp/default.nix new file mode 100644 index 0000000000000..cb4234a2513c2 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/timepp/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-timepp"; + version = "unstable-2020-03-15"; + + src = fetchFromGitHub { + owner = "zagortenay333"; + repo = "timepp__gnome"; + rev = "34ae477a51267cc1e85992a80cf85a1a7b7005c1"; + sha256 = "1v0xbrp0x5dwizscxh7h984pax4n92bj8iyw3qvjk27ynpxq8ag1"; + }; + + uuid = "timepp@zagortenay333"; + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension."; + homepage = "https://github.com/zagortenay333/timepp__gnome"; + license = licenses.gpl3; + maintainers = with maintainers; [ svsdep ]; + }; +} diff --git a/pkgs/desktops/gnome/extensions/topicons-plus/default.nix b/pkgs/desktops/gnome/extensions/topicons-plus/default.nix new file mode 100644 index 0000000000000..084548e1a1053 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/topicons-plus/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-topicons-plus"; + version = "27"; + + src = fetchFromGitHub { + owner = "phocean"; + repo = "TopIcons-plus"; + rev = version; + sha256 = "1p3jlvs4zgnrvy8am7myivv4rnnshjp49kg87rd22qqyvcz51ykr"; + }; + + buildInputs = [ glib ]; + + nativeBuildInputs = [ gettext ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + uuid = "TopIcons@phocean.net"; + + meta = with lib; { + description = "Brings all icons back to the top panel, so that it's easier to keep track of apps running in the backround"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ eperuffo ]; + homepage = "https://github.com/phocean/TopIcons-plus"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/unite/default.nix b/pkgs/desktops/gnome/extensions/unite/default.nix new file mode 100644 index 0000000000000..1fbd31ec10a53 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/unite/default.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, gnome, fetchFromGitHub, xprop, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-unite"; + version = "53"; + + src = fetchFromGitHub { + owner = "hardpixel"; + repo = "unite-shell"; + rev = "v${version}"; + sha256 = "0fw9wqf362h2yd67fhgbhqx0b2fwcl25wxmb92dqwigxjcj0dnw6"; + }; + + uuid = "unite@hardpixel.eu"; + + nativeBuildInputs = [ glib ]; + + buildInputs = [ xprop ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --strict --targetdir=${uuid}/schemas/ ${uuid}/schemas + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "Unite is a GNOME Shell extension which makes a few layout tweaks to the top panel and removes window decorations to make it look like Ubuntu Unity Shell"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ rhoriguchi ]; + homepage = "https://github.com/hardpixel/unite-shell"; + broken = versionOlder gnome.gnome-shell.version "3.32"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/window-corner-preview/default.nix b/pkgs/desktops/gnome/extensions/window-corner-preview/default.nix new file mode 100644 index 0000000000000..0e71345bb8a7b --- /dev/null +++ b/pkgs/desktops/gnome/extensions/window-corner-preview/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchFromGitHub, gnome }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-window-corner-preview"; + version = "unstable-2019-04-03"; + + src = fetchFromGitHub { + owner = "medenagan"; + repo = "window-corner-preview"; + rev = "a95bb1389d94474efab7509aac592fb58fff6006"; + sha256 = "03v18j9l0fb64xrg3swf1vcgl0kpgwjlp8ddn068bpvghrsvgfah"; + }; + + dontBuild = true; + + uuid = "window-corner-preview@fabiomereu.it"; + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "GNOME Shell extension showing a video preview on the corner of the screen"; + license = licenses.mit; + maintainers = with maintainers; [ jtojnar ]; + homepage = "https://github.com/medenagan/window-corner-preview"; + broken = lib.versionAtLeast gnome.gnome-shell.version "3.32"; # Doesn't support 3.34 + }; +} diff --git a/pkgs/desktops/gnome/extensions/window-is-ready-remover/default.nix b/pkgs/desktops/gnome/extensions/window-is-ready-remover/default.nix new file mode 100644 index 0000000000000..3f0e9e71b571b --- /dev/null +++ b/pkgs/desktops/gnome/extensions/window-is-ready-remover/default.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-window-is-ready-remover"; + version = "1.02"; + + src = fetchFromGitHub { + owner = "nunofarruca"; + repo = "WindowIsReady_Remover"; + rev = "v${version}"; + sha256 = "1xaf95gn0if44avvkjxyf8fl29y28idn9shnrks0m9k67jcwv8ns"; + }; + + uuid = "windowIsReady_Remover@nunofarruca@gmail.com"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions/ + cp -r ${uuid} $out/share/gnome-shell/extensions/${uuid} + runHook postInstall + ''; + + meta = with lib; { + description = "GNOME Shell extension removing window is ready notification"; + homepage = "https://github.com/nunofarruca/WindowIsReady_Remover"; + license = licenses.asl20; + }; +} diff --git a/pkgs/desktops/gnome/extensions/workspace-matrix/default.nix b/pkgs/desktops/gnome/extensions/workspace-matrix/default.nix new file mode 100644 index 0000000000000..eb1d6e7e319c6 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/workspace-matrix/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub, findutils, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-workspace-matrix"; + version = "4.0.2"; + + src = fetchFromGitHub { + owner = "mzur"; + repo = "gnome-shell-wsmatrix"; + rev = "v${version}"; + sha256 = "0dbn6b3fdd7yblk0mhsmaiqs3mwgcf3khkx1dsnlqn5hcs0a3myd"; + }; + + uuid = "wsmatrix@martin.zurowietz.de"; + + nativeBuildInputs = [ + findutils + glib + ]; + + buildFlags = "schemas"; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + runHook postInstall + ''; + + meta = with lib; { + description = "Arrange workspaces in a two dimensional grid with workspace thumbnails"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ chkno ]; + homepage = "https://github.com/mzur/gnome-shell-wsmatrix"; + }; +} |