From 9f8a5527d68a7f7d2351f817d76da383c267abaf Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Thu, 19 Aug 2021 13:47:47 +0200 Subject: [PATCH] gnomeExtensions.bluetooth-battery: init at unstable-2021-08-13 --- .../bluetooth-battery-indicator/default.nix | 71 +++++++++++++++++++ .../fix-paths.patch | 17 +++++ .../gnome/extensions/manuallyPackaged.nix | 1 + 3 files changed, 89 insertions(+) create mode 100644 pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/default.nix create mode 100644 pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/fix-paths.patch diff --git a/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/default.nix b/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/default.nix new file mode 100644 index 0000000000000..1afc4aef60e50 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, lib +, fetchFromGitHub +, substituteAll +, glib +, python3 +, bluetooth_battery +, unstableGitUpdater +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-bluetooth-battery-indicator"; + version = "unstable-2021-08-13"; + + src = fetchFromGitHub { + owner = "MichalW"; + repo = "gnome-bluetooth-battery-indicator"; + rev = "3b5e6b93e251058a99e3f258bceb2723166c085b"; + sha256 = "ZHM3OAqXLKoh2IUXEtfBht8rfOgg259sXNelbmYTPSw="; + }; + + patches = [ + # Make dependencies available at runtime. + (substituteAll { + src = ./fix-paths.patch; + bluetooth_battery = "${bluetooth_battery}/bin/bluetooth_battery"; + python = python3.interpreter; + }) + ]; + + nativeBuildInputs = [ + glib + ]; + + buildPhase = '' + runHook preBuild + + glib-compile-schemas --strict --targetdir=schemas schemas + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/share/gnome-shell/extensions/${passthru.extensionUuid}" + cp -r *.js *.json schemas/ "$out/share/gnome-shell/extensions/${passthru.extensionUuid}" + + runHook postInstall + ''; + + passthru = { + extensionUuid = "bluetooth-battery@michalw.github.com"; + extensionPortalSlug = "bluetooth-battery"; + + updateScript = unstableGitUpdater { + # The updater tries src.url by default, which does not exist for fetchFromGitHub (fetchurl). + url = "${src.meta.homepage}.git"; + }; + }; + + meta = with lib; { + description = "GNOME Shell extension displaying battery percentage for bluetooth devices"; + homepage = "https://github.com/MichalW/gnome-bluetooth-battery-indicator"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ + jtojnar + ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/fix-paths.patch b/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/fix-paths.patch new file mode 100644 index 0000000000000..d18c45d826b82 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/bluetooth-battery-indicator/fix-paths.patch @@ -0,0 +1,17 @@ +--- a/constants.js ++++ b/constants.js +@@ -1,3 +1,3 @@ + var GETTEXT_DOMAIN = 'bluetooth_battery_indicator'; + var SETTINGS_ID = 'org.gnome.shell.extensions.bluetooth_battery_indicator'; +-var SCRIPT_PATH = 'Bluetooth_Headset_Battery_Level/bluetooth_battery.py'; ++var SCRIPT_PATH = '@bluetooth_battery@'; +--- a/utils.js ++++ b/utils.js +@@ -36,6 +36,7 @@ function addSignalsHelperMethods(prototype) { + } + + function getPythonExec() { ++ return '@python@'; + //return ['python', 'python3', 'python2'].find(cmd => GLib.find_program_in_path(cmd)); + return ['python3'].find(cmd => GLib.find_program_in_path(cmd)); //Hotfix for no percentage shown + } diff --git a/pkgs/desktops/gnome/extensions/manuallyPackaged.nix b/pkgs/desktops/gnome/extensions/manuallyPackaged.nix index 3e99f3143d249..cd50999d68acf 100644 --- a/pkgs/desktops/gnome/extensions/manuallyPackaged.nix +++ b/pkgs/desktops/gnome/extensions/manuallyPackaged.nix @@ -1,6 +1,7 @@ { callPackage }: { "arcmenu@arcmenu.com" = callPackage ./arcmenu { }; + "bluetooth-battery@michalw.github.com" = callPackage ./bluetooth-battery-indicator { }; "caffeine@patapon.info" = callPackage ./caffeine { }; "clock-override@gnomeshell.kryogenix.org" = callPackage ./clock-override { }; "dash-to-dock@micxgx.gmail.com" = callPackage ./dash-to-dock { };