From c946307c6724f7474a6b29e69e56bc5d2ef23de6 Mon Sep 17 00:00:00 2001 From: Donovan Glover Date: Wed, 31 May 2023 11:35:41 -0400 Subject: [PATCH] waybar: Update to 0.9.18 Note that with the latest version of waybar with the experimental flag enabled and the latest version of hyprland, patching waybar *shouldn't* be necessary. --- desktop/waybar/default.nix | 4 +- desktop/waybar/package/default.nix | 120 +++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 desktop/waybar/package/default.nix diff --git a/desktop/waybar/default.nix b/desktop/waybar/default.nix index fe55329..a4437d4 100644 --- a/desktop/waybar/default.nix +++ b/desktop/waybar/default.nix @@ -1,10 +1,10 @@ -{ lib, hyprland, ... }: +{ lib, pkgs, ... }: { home-manager.sharedModules = [{ programs.waybar = { enable = true; - package = hyprland.packages."x86_64-linux".waybar-hyprland; + package = (pkgs.callPackage ./package {}); settings = { mainBar = { diff --git a/desktop/waybar/package/default.nix b/desktop/waybar/package/default.nix new file mode 100644 index 0000000..0d15757 --- /dev/null +++ b/desktop/waybar/package/default.nix @@ -0,0 +1,120 @@ +{ lib +, stdenv +, fetchFromGitHub +, meson +, pkg-config +, ninja +, wrapGAppsHook +, wayland +, wlroots +, gtkmm3 +, libsigcxx +, jsoncpp +, scdoc +, spdlog +, gtk-layer-shell +, howard-hinnant-date +, libinotify-kqueue +, libxkbcommon +, evdevSupport ? true, libevdev +, inputSupport ? true, libinput +, jackSupport ? true, libjack2 +, mpdSupport ? true, libmpdclient +, mprisSupport ? stdenv.isLinux, playerctl ? false +, nlSupport ? true, libnl +, pulseSupport ? true, libpulseaudio +, rfkillSupport ? true +, runTests ? true, catch2_3 +, sndioSupport ? true, sndio +, swaySupport ? true, sway +, traySupport ? true, libdbusmenu-gtk3 +, udevSupport ? true, udev +, upowerSupport ? true, upower +, wireplumberSupport ? true, wireplumber +, withMediaPlayer ? mprisSupport && false, glib, gobject-introspection, python3 +}: + +stdenv.mkDerivation rec { + pname = "waybar"; + version = "0.9.18"; + + src = fetchFromGitHub { + owner = "Alexays"; + repo = "Waybar"; + rev = version; + hash = "sha256-bnaYNa1jb7kZ1mtMzeOQqz4tmBG1w5YXlQWoop1Q0Yc="; + }; + + nativeBuildInputs = [ + meson ninja pkg-config scdoc wrapGAppsHook + ] ++ lib.optional withMediaPlayer gobject-introspection; + + propagatedBuildInputs = lib.optionals withMediaPlayer [ + glib + playerctl + python3.pkgs.pygobject3 + ]; + + strictDeps = false; + + buildInputs = with lib; + [ wayland wlroots gtkmm3 libsigcxx jsoncpp spdlog gtk-layer-shell howard-hinnant-date libxkbcommon ] + ++ optional (!stdenv.isLinux) libinotify-kqueue + ++ optional evdevSupport libevdev + ++ optional inputSupport libinput + ++ optional jackSupport libjack2 + ++ optional mpdSupport libmpdclient + ++ optional mprisSupport playerctl + ++ optional nlSupport libnl + ++ optional pulseSupport libpulseaudio + ++ optional sndioSupport sndio + ++ optional swaySupport sway + ++ optional traySupport libdbusmenu-gtk3 + ++ optional udevSupport udev + ++ optional upowerSupport upower + ++ optional wireplumberSupport wireplumber; + + nativeCheckInputs = [ catch2_3 ]; + doCheck = runTests; + + mesonFlags = (lib.mapAttrsToList + (option: enable: "-D${option}=${if enable then "enabled" else "disabled"}") + { + dbusmenu-gtk = traySupport; + jack = jackSupport; + libinput = inputSupport; + libnl = nlSupport; + libudev = udevSupport; + mpd = mpdSupport; + mpris = mprisSupport; + pulseaudio = pulseSupport; + rfkill = rfkillSupport; + sndio = sndioSupport; + tests = runTests; + upower_glib = upowerSupport; + wireplumber = wireplumberSupport; + } + ) ++ [ + "-Dsystemd=disabled" + "-Dgtk-layer-shell=enabled" + "-Dman-pages=enabled" + "-Dcava=disabled" + "-Dexperimental=true" + ]; + + preFixup = lib.optionalString withMediaPlayer '' + cp $src/resources/custom_modules/mediaplayer.py $out/bin/waybar-mediaplayer.py + + wrapProgram $out/bin/waybar-mediaplayer.py \ + --prefix PYTHONPATH : "$PYTHONPATH:$out/${python3.sitePackages}" + ''; + + meta = with lib; { + changelog = "https://github.com/alexays/waybar/releases/tag/${version}"; + description = "Highly customizable Wayland bar for Sway and Wlroots based compositors"; + license = licenses.mit; + maintainers = with maintainers; [ FlorianFranzen minijackson synthetica lovesegfault rodrgz ]; + platforms = platforms.unix; + homepage = "https://github.com/alexays/waybar"; + }; +}