diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel')
3 files changed, 165 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix new file mode 100644 index 000000000000..8b24dba707c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,83 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, wrapGAppsHook +, pkg-config +, meson +, ninja +, vala +, gala +, gtk3 +, libgee +, granite +, gettext +, mutter +, mesa +, json-glib +, elementary-gtk-theme +, elementary-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "wingpanel"; + version = "3.0.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "sha256-xowGdaH0e6y0Q2xSl0kUa01rxxoEQ0qXB3sUol0YDBA="; + }; + + patches = [ + ./indicators.patch + ]; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + gala + granite + gtk3 + json-glib + libgee + mutter + mesa # for libEGL + ]; + + preFixup = '' + gappsWrapperArgs+=( + # this GTK theme is required + --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share" + + # the icon theme is required + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" + ) + ''; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = with lib; { + description = "The extensible top panel for Pantheon"; + longDescription = '' + Wingpanel is an empty container that accepts indicators as extensions, + including the applications menu. + ''; + homepage = "https://github.com/elementary/wingpanel"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.pantheon.members; + mainProgram = "io.elementary.wingpanel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch new file mode 100644 index 000000000000..68a5fd532a8d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch @@ -0,0 +1,21 @@ +diff --git a/lib/IndicatorManager.vala b/lib/IndicatorManager.vala +index a99a1ec..0ae7799 100644 +--- a/lib/IndicatorManager.vala ++++ b/lib/IndicatorManager.vala +@@ -115,7 +115,15 @@ public class Wingpanel.IndicatorManager : GLib.Object { + } + + /* load indicators */ +- var base_folder = File.new_for_path (Build.INDICATORS_DIR); ++ ++ var indicators_path = Environment.get_variable("WINGPANEL_INDICATORS_PATH"); ++ if (indicators_path != null) { ++ debug ("WINGPANEL_INDICATORS_PATH set to %s", indicators_path); ++ } else { ++ critical ("WINGPANEL_INDICATORS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (indicators_path); + + try { + monitor = base_folder.monitor_directory (FileMonitorFlags.NONE, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix new file mode 100644 index 000000000000..89a359a4c9d2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,61 @@ +{ lib +, wrapGAppsHook +, glib +, stdenv +, xorg +, wingpanel +, wingpanelIndicators +, switchboard-with-plugs +, indicators ? null + # Only useful to disable for development testing. +, useDefaultIndicators ? true +}: + +let + selectedIndicators = + if indicators == null then wingpanelIndicators + else indicators ++ (lib.optionals useDefaultIndicators wingpanelIndicators); +in +stdenv.mkDerivation rec { + pname = "${wingpanel.pname}-with-indicators"; + inherit (wingpanel) version; + + src = null; + + paths = [ + wingpanel + ] ++ selectedIndicators; + + passAsFile = [ "paths" ]; + + nativeBuildInputs = [ + glib + wrapGAppsHook + ]; + + buildInputs = lib.forEach selectedIndicators (x: x.buildInputs) + ++ selectedIndicators; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + preferLocalBuild = true; + allowSubstitutes = false; + + installPhase = '' + mkdir -p $out + for i in $(cat $pathsPath); do + ${xorg.lndir}/bin/lndir -silent $i $out + done + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" + ) + ''; + + inherit (wingpanel) meta; +} |