criu/flake.nix
Karim Vergnes 010a346c67 feat: remove build-time patches from Nixpkgs
Upstream Nixpkgs shadows Google's version of the default protobufs,
which is no longer applicable given that they are copied into the
repository, and causes builds to fail.

Signed-off-by: Karim Vergnes <me@thesola.io>
2026-03-15 21:04:43 +00:00

80 lines
2 KiB
Nix

{
description = "CRIU development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
# Dependencies for CRIU
criuDeps = with pkgs; [
# Compiler and build essentials
gcc
gnumake
pkg-config
# Protocol Buffers
protobuf
protobufc
python3Packages.protobuf
# Other required libraries
libuuid
libbsd
iproute2
nftables
libcap
libnet
libnl
libaio
gnutls
libdrm
# ZDTM
python3Packages.pyyaml
];
# Multilib support for 32-bit compatibility
# criuDeps32bit = with pkgs; [
# glibc.dev
# glibc
# gcc-unwrapped
# ];
devShell = pkgs.mkShell {
buildInputs = criuDeps; # ++ (if pkgs.stdenv.isx86_64 then criuDeps32bit else []);
shellHook = ''
echo "CRIU development environment"
echo "=============================="
echo ""
echo "Useful commands:"
echo " make - Build CRIU"
echo " make test - Run tests (requires ZDTM dependencies)"
echo ""
'';
# Add proper flags for multilib support
# NIX_CFLAGS_COMPILE = pkgs.lib.optional pkgs.stdenv.isx86_64 "-m32";
# Make sure the shell can find headers for multilib
# PKG_CONFIG_PATH = pkgs.lib.makeSearchPath "lib/pkgconfig" criuDeps;
};
in
{
# Export the development shell
devShells.default = devShell;
# Build CRIU package as well
packages.default = pkgs.criu.overrideAttrs {
src = ./.;
postPatch = "";
};
}
);
}