depot/third_party/nixpkgs/pkgs/by-name/pi/picom/package.nix

142 lines
2.8 KiB
Nix

{
asciidoctor,
dbus,
docbook_xml_dtd_45,
docbook_xsl,
fetchFromGitHub,
lib,
libconfig,
libdrm,
libev,
libGL,
libepoxy,
libX11,
libxcb,
libxdg_basedir,
libXext,
libxml2,
libxslt,
makeWrapper,
meson,
ninja,
pcre2,
pixman,
pkg-config,
stdenv,
uthash,
xcbutil,
xcbutilimage,
xcbutilrenderutil,
xorgproto,
xwininfo,
withDebug ? false,
versionCheckHook,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "picom";
version = "12.5";
src = fetchFromGitHub {
owner = "yshui";
repo = "picom";
rev = "v${finalAttrs.version}";
hash = "sha256-H8IbzzrzF1c63MXbw5mqoll3H+vgcSVpijrlSDNkc+o=";
fetchSubmodules = true;
};
strictDeps = true;
nativeBuildInputs = [
asciidoctor
docbook_xml_dtd_45
docbook_xsl
makeWrapper
meson
ninja
pkg-config
];
buildInputs = [
dbus
libconfig
libdrm
libev
libGL
libepoxy
libX11
libxcb
libxdg_basedir
libXext
libxml2
libxslt
pcre2
pixman
uthash
xcbutil
xcbutilimage
xcbutilrenderutil
xorgproto
];
# 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"
];
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/
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Fork of XCompMgr, a sample compositing manager for X servers";
license = lib.licenses.mit;
longDescription = ''
A fork of XCompMgr, which is a sample compositing manager for X
servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
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.
'';
homepage = "https://github.com/yshui/picom";
mainProgram = "picom";
maintainers = with lib.maintainers; [
ertes
gepbird
thiagokokada
twey
];
platforms = lib.platforms.linux;
};
})