-{ lib
-, stdenv
-, pkg-config
-, attr
-, libuuid
-, libsodium
-, keyutils
-, liburcu
-, zlib
-, libaio
-, udev
-, zstd
-, lz4
-, nix-gitignore
-, rustPlatform
- }:
-
+{ lib, stdenv, pkg-config, attr, libuuid, libsodium, keyutils, liburcu, zlib
+, libaio, udev, zstd, lz4, nix-gitignore, rustPlatform, rustc, cargo, fuse3
+, fuseSupport ? false, }:
let
- src = nix-gitignore.gitignoreSource [] ./. ;
+ src = nix-gitignore.gitignoreSource [ ] ./.;
commit = lib.strings.substring 0 7 (builtins.readFile ./.bcachefs_revision);
version = "git-${commit}";
-
in stdenv.mkDerivation {
inherit src version;
nativeBuildInputs = [
pkg-config
+ cargo
+ rustc
rustPlatform.cargoSetupHook
- rustPlatform.rust.cargo
- rustPlatform.rust.rustc
rustPlatform.bindgenHook
];
zlib # zlib1g
attr
udev
- ];
+ ] ++ lib.optional fuseSupport fuse3;
+
+ BCACHEFS_FUSE = if fuseSupport then "1" else "";
cargoRoot = "rust-src";
+ # when git-based crates are updated, run:
+ # nix run github:Mic92/nix-update -- --version=skip --flake default
+ # to update the hashes
cargoDeps = rustPlatform.importCargoLock {
lockFile = "${src}/rust-src/Cargo.lock";
+ outputHashes = {
+ "bindgen-0.64.0" = "sha256-GNG8as33HLRYJGYe0nw6qBzq86aHiGonyynEM7gaEE4=";
+ };
};
- makeFlags = [
- "PREFIX=${placeholder "out"}"
- "VERSION=${commit}"
- ];
+ makeFlags = [ "DESTDIR=${placeholder "out"}" "PREFIX=" "VERSION=${commit}" ];
dontStrip = true;
checkPhase = "./bcachefs version";
doCheck = true;
+
+ meta = {
+ mainProgram = "bcachefs";
+ license = lib.licenses.gpl2Only;
+ };
}