Fil-C on Nix

Filnix wiki

mbrock/filnix

tests/gtk-runtime.nix

λpkgs, pkgsFilc, major
let
7gtk=
if major ≡ 3 then pkgsFilc.gtk3 else pkgsFilc.gtk4
8module=
if major ≡ 3 then "gtk+-3.0" else "gtk4"
9server=
if major ≡ 3 then "broadwayd" else "gtk4-broadwayd"
in
pkgsFilc.stdenv.mkDerivation
12name=
"filc-gtk${toStringmajor}-runtime-check"
13dontUnpack=
true
14nativeBuildInputs=
pkgs.pkg-config
15buildInputs=
16FONTCONFIG_FILE=
pkgs.makeFontsConffontDirectories = pkgs.dejavu_fonts;
19buildPhase=
$CC ${./gtk-runtime.c} $(pkg-config --cflags --libs ${module}) -o gtk-check
export XDG_RUNTIME_DIR="$TMPDIR/runtime" XDG_CACHE_HOME="$TMPDIR/cache"
mkdir -m 700 "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME"
export GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 GTK_A11Y=none NO_AT_BRIDGE=1
${gtk.out}/bin/${server} :5 > broadway.log 2>&1 &
server_pid=$!
trap 'kill "$server_pid" 2>/dev/null || true' EXIT
for attempt in $(seq 1 100); do
status=0
./gtk-check && break || status=$?
if [ "$status" != 77 ] || ! kill -0 "$server_pid"; then
cat broadway.log
exit 1
fi
sleep 0.1
done
test "$status" = 0
38installPhase=
mkdir "$out"
cp broadway.log "$out/"