-
-
Notifications
You must be signed in to change notification settings - Fork 588
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
flake: import package.nix from nixpkgs
So we can have more control of the build process compared to overriding the picom derivation. Also add expressions to cross-compile picom for arm32, arm64, and x86. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
- Loading branch information
Showing
2 changed files
with
143 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
{ asciidoctor | ||
, dbus | ||
, docbook_xml_dtd_45 | ||
, docbook_xsl | ||
, fetchFromGitHub | ||
, clang-tools_18 | ||
, llvmPackages_18 | ||
, lib | ||
, libconfig | ||
, libdrm | ||
, libev | ||
, libGL | ||
, libepoxy | ||
, libX11 | ||
, libxcb | ||
, libxdg_basedir | ||
, libXext | ||
, libxml2 | ||
, libxslt | ||
, makeWrapper | ||
, meson | ||
, ninja | ||
, pcre2 | ||
, pixman | ||
, pkg-config | ||
, python3 | ||
, stdenv | ||
, uthash | ||
, xcbutil | ||
, xcbutilimage | ||
, xcbutilrenderutil | ||
, xorgproto | ||
, xwininfo | ||
, withDebug ? false | ||
, git-ignore-nix | ||
, devShell ? false | ||
}: | ||
|
||
let | ||
versionFromMeson = s: builtins.head (builtins.match "project\\('picom',.*version: *'([0-9.]*)'.*" s); | ||
in | ||
stdenv.mkDerivation (finalAttrs: { | ||
pname = "picom"; | ||
version = versionFromMeson (builtins.readFile ./meson.build); | ||
|
||
src = git-ignore-nix.lib.gitignoreSource ./.; | ||
|
||
strictDeps = true; | ||
|
||
|
||
nativeBuildInputs = [ | ||
asciidoctor | ||
docbook_xml_dtd_45 | ||
docbook_xsl | ||
makeWrapper | ||
meson | ||
ninja | ||
pkg-config | ||
] ++ (lib.optional devShell [ | ||
clang-tools_18 | ||
llvmPackages_18.clang-unwrapped.python | ||
llvmPackages_18.libllvm | ||
(python3.withPackages (ps: with ps; [ | ||
xcffib pip dbus-next | ||
])) | ||
]); | ||
|
||
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/ | ||
''; | ||
}) |