about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/window-managers/picom/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/window-managers/picom/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/window-managers/picom/default.nix86
1 files changed, 69 insertions, 17 deletions
diff --git a/nixpkgs/pkgs/applications/window-managers/picom/default.nix b/nixpkgs/pkgs/applications/window-managers/picom/default.nix
index 4287dd2db020..32eee9df0d83 100644
--- a/nixpkgs/pkgs/applications/window-managers/picom/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/picom/default.nix
@@ -1,41 +1,82 @@
-{ stdenv, lib, fetchFromGitHub, pkg-config, uthash, asciidoc, docbook_xml_dtd_45
-, docbook_xsl, libxslt, libxml2, makeWrapper, meson, ninja
-, xorgproto, libxcb ,xcbutilrenderutil, xcbutilimage, pixman, libev
-, dbus, libconfig, libdrm, libGL, pcre, libX11
-, libXinerama, libXext, xwininfo, libxdg_basedir }:
+{ asciidoc
+, dbus
+, docbook_xml_dtd_45
+, docbook_xsl
+, fetchFromGitHub
+, lib
+, libconfig
+, libdrm
+, libev
+, libGL
+, libX11
+, libxcb
+, libxdg_basedir
+, libXext
+, libXinerama
+, libxml2
+, libxslt
+, makeWrapper
+, meson
+, ninja
+, pcre
+, pixman
+, pkg-config
+, stdenv
+, uthash
+, xcbutilimage
+, xcbutilrenderutil
+, xorgproto
+, xwininfo
+, withDebug ? false
+}:
 
 stdenv.mkDerivation rec {
   pname = "picom";
   version = "8.2";
 
   src = fetchFromGitHub {
-    owner  = "yshui";
-    repo   = "picom";
-    rev    = "v${version}";
+    owner = "yshui";
+    repo = "picom";
+    rev = "v${version}";
     sha256 = "0gjksayz2xpmgglvw17ppsan2imrd1fijs579kbf27xwp503xgfl";
     fetchSubmodules = true;
   };
 
   nativeBuildInputs = [
-    meson ninja
-    pkg-config
-    uthash
     asciidoc
     docbook_xml_dtd_45
     docbook_xsl
     makeWrapper
+    meson
+    ninja
+    pkg-config
+    uthash
   ];
 
   buildInputs = [
-    dbus libX11 libXext
-    xorgproto
-    libXinerama libdrm pcre libxml2 libxslt libconfig libGL
-    libxcb xcbutilrenderutil xcbutilimage
-    pixman libev
+    dbus
+    libconfig
+    libdrm
+    libev
+    libGL
+    libX11
+    libxcb
     libxdg_basedir
+    libXext
+    libXinerama
+    libxml2
+    libxslt
+    pcre
+    pixman
+    xcbutilimage
+    xcbutilrenderutil
+    xorgproto
   ];
 
-  mesonBuildType = "release";
+  # Use "debugoptimized" instead of "debug" so perhaps picom works better in
+  # normal usage too, not just temporary debugging.
+  mesonBuildType = if withDebug then "debugoptimized" else "release";
+  dontStrip = withDebug;
 
   mesonFlags = [
     "-Dwith_docs=true"
@@ -43,9 +84,13 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "PREFIX=$(out)" ];
 
+  # In debug mode, also copy src directory to store. If you then run `gdb picom`
+  # in the bin directory of picom store path, gdb finds the source files.
   postInstall = ''
     wrapProgram $out/bin/picom-trans \
       --prefix PATH : ${lib.makeBinPath [ xwininfo ]}
+  '' + lib.optionalString withDebug ''
+    cp -r ../src $out/
   '';
 
   meta = with lib; {
@@ -56,6 +101,13 @@ stdenv.mkDerivation rec {
       extensions. It enables basic eye-candy effects. This fork adds
       additional features, such as additional effects, and a fork at a
       well-defined and proper place.
+
+      The package can be installed in debug mode as:
+
+        picom.override { withDebug = true; }
+
+      For gdb to find the source files, you need to run gdb in the bin directory
+      of picom package in the nix store.
     '';
     license = licenses.mit;
     homepage = "https://github.com/yshui/picom";