zig-river-init/flake.nix
2025-01-03 13:37:31 -06:00

105 lines
2.6 KiB
Nix

{
inputs = {
nixpkgs = {
url = "nixpkgs/nixos-unstable";
};
flake-utils = {
url = "github:numtide/flake-utils";
};
};
outputs = {
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (
system: let
pkgs = import nixpkgs {
inherit system;
};
in {
devShells = {
default = pkgs.mkShell {
nativeBuildInputs = [
pkgs.zig_0_13
pkgs.glib
pkgs.pkg-config
pkgs.river
pkgs.wayland-protocols
pkgs.wayland-scanner
];
buildInputs = [
pkgs.wayland
];
shellHook = ''
export name=river-init
'';
};
};
packages = {
river-init = let
cache = src:
pkgs.stdenv.mkDerivation {
inherit src;
name = "river-init-cache";
nativeBuildInputs = [
pkgs.git
pkgs.zig_0_13.hook
];
dontConfigure = true;
dontUseZigBuild = true;
dontUseZigInstall = true;
dontFixup = true;
buildPhase = ''
runHook preBuild
zig build --fetch
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r --reflink=auto $ZIG_GLOBAL_CACHE_DIR $out
runHook postInstall
'';
outputHashMode = "recursive";
outputHash = pkgs.lib.fakeHash;
};
in
pkgs.stdenv.mkDerivation (final: {
pname = "river-init";
version = "0.0.0";
src = ./.;
nativeBuildInputs = [
pkgs.pkg-config
pkgs.wayland-protocols
pkgs.wayland-scanner
pkgs.zig_0_13.hook
];
buildInputs = [
pkgs.glib
pkgs.river
pkgs.wayland
];
zigBuildFlags = [
"-Drivertile=${pkgs.river}/bin/rivertile"
"-Dgdbus=${pkgs.glib}/bin/gdbus"
];
preBuild = ''
rm -rf $ZIG_GLOBAL_CACHE_DIR
cp -r --reflink=auto ${cache final.src} $ZIG_GLOBAL_CACHE_DIR
chmod u+rwX -R $ZIG_GLOBAL_CACHE_DIR
'';
});
};
}
);
}