summary refs log tree commit diff
path: root/pkgs/by-name/po/polybar/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/po/polybar/package.nix')
-rw-r--r--pkgs/by-name/po/polybar/package.nix116
1 files changed, 116 insertions, 0 deletions
diff --git a/pkgs/by-name/po/polybar/package.nix b/pkgs/by-name/po/polybar/package.nix
new file mode 100644
index 00000000000..ee649f396fa
--- /dev/null
+++ b/pkgs/by-name/po/polybar/package.nix
@@ -0,0 +1,116 @@
+{ config
+, cairo
+, cmake
+, fetchFromGitHub
+, libuv
+, libXdmcp
+, libpthreadstubs
+, libxcb
+, pcre
+, pkg-config
+, python3
+, python3Packages # sphinx-build
+, lib
+, stdenv
+, xcbproto
+, xcbutil
+, xcbutilcursor
+, xcbutilimage
+, xcbutilrenderutil
+, xcbutilwm
+, xcbutilxrm
+, makeWrapper
+, removeReferencesTo
+, alsa-lib
+, curl
+, libmpdclient
+, libpulseaudio
+, wirelesstools
+, libnl
+, i3
+, jsoncpp
+
+  # override the variables ending in 'Support' to enable or disable modules
+, alsaSupport ? true
+, githubSupport ? false
+, mpdSupport ? false
+, pulseSupport ? config.pulseaudio or false
+, iwSupport ? false
+, nlSupport ? true
+, i3Support ? false
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "polybar";
+  version = "3.7.0";
+
+  src = fetchFromGitHub {
+    owner = "polybar";
+    repo = "polybar";
+    rev = finalAttrs.version;
+    hash = "sha256-Z1rL9WvEZHr5M03s9KCJ6O6rNuaK7PpwUDaatYuCocI=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    python3Packages.sphinx
+    removeReferencesTo
+  ] ++ lib.optional i3Support makeWrapper;
+
+  buildInputs = [
+    cairo
+    libuv
+    libXdmcp
+    libpthreadstubs
+    libxcb
+    pcre
+    python3
+    xcbproto
+    xcbutil
+    xcbutilcursor
+    xcbutilimage
+    xcbutilrenderutil
+    xcbutilwm
+    xcbutilxrm
+  ] ++ lib.optional alsaSupport alsa-lib
+  ++ lib.optional githubSupport curl
+  ++ lib.optional mpdSupport libmpdclient
+  ++ lib.optional pulseSupport libpulseaudio
+  ++ lib.optional iwSupport wirelesstools
+  ++ lib.optional nlSupport libnl
+  ++ lib.optionals i3Support [ jsoncpp i3 ];
+
+  patches = [ ./remove-hardcoded-etc.diff ];
+
+  # Replace hardcoded /etc when copying and reading the default config.
+  postPatch = ''
+    substituteInPlace CMakeLists.txt --replace "/etc" $out
+    substituteAllInPlace src/utils/file.cpp
+  '';
+
+  postInstall =
+    lib.optionalString i3Support ''
+      wrapProgram $out/bin/polybar \
+        --prefix PATH : "${i3}/bin"
+    '';
+
+  postFixup = ''
+    remove-references-to -t ${stdenv.cc} $out/bin/polybar
+  '';
+
+  meta = with lib; {
+    homepage = "https://polybar.github.io/";
+    changelog = "https://github.com/polybar/polybar/releases/tag/${version}";
+    description = "A fast and easy-to-use tool for creating status bars";
+    longDescription = ''
+      Polybar aims to help users build beautiful and highly customizable
+      status bars for their desktop environment, without the need of
+      having a black belt in shell scripting.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ afldcr Br1ght0ne moni ckie ];
+    platforms = platforms.linux;
+  };
+})