debugMode = true;
};
+ bch_bindgen = final.callPackage ../rust-src/bch_bindgen {};
+
mount = final.callPackage ../rust-src/mount {};
+
kernelPackages = final.recurseIntoAttrs (final.linuxPackagesFor final.bcachefs.kernel);
kernel = final.callPackage ./bcachefs-kernel.nix {
commit = final.bcachefs.tools.bcachefs_revision;
# This needs to be recalculated for every revision change
- diffHash = "sha256-JrVRkEO7DKUTf+qhjWPwfbF3a/Qbd8me7oGay4aae3k=";
+ diffHash = "sha256-XSA0dBZZL8RXplgjpoLOFSULM8t/0Ztz8xlhLn9hdyw=";
kernelPatches = [];
};
};
--- /dev/null
+{ lib
+, stdenv
+, rustPlatform
+, llvmPackages
+, bcachefs
+, pkg-config
+
+, udev
+, liburcu
+, zstd
+, keyutils
+, libaio
+
+, lz4 # liblz4
+, libsodium
+, libuuid
+, zlib # zlib1g
+, libscrypt
+
+, rustfmt
+
+, glibc
+, ...
+}: let
+ include = {
+ glibc = "${glibc.dev}/include";
+ clang = let libc = llvmPackages.libclang; in
+ "${libc.lib}/lib/clang/${libc.version}/include";
+ urcu = "${liburcu}/include";
+ zstd = "${zstd.dev}/include";
+ };
+ cargo = lib.trivial.importTOML ./Cargo.toml;
+in rustPlatform.buildRustPackage {
+ pname = cargo.package.name;
+ version = cargo.package.version;
+
+ src = builtins.path { path = ./.; name = "bch_bindgen"; };
+
+ cargoLock = { lockFile = ./Cargo.lock; };
+
+ nativeBuildInputs = [ rustfmt pkg-config ];
+ buildInputs = [
+
+ # libaio
+ keyutils # libkeyutils
+ lz4 # liblz4
+ libsodium
+ liburcu
+ libuuid
+ zstd # libzstd
+ zlib # zlib1g
+ udev
+ libscrypt
+ libaio
+ ];
+
+ LIBBCACHEFS_LIB ="${bcachefs.tools}/lib";
+ LIBBCACHEFS_INCLUDE = bcachefs.tools.src;
+ LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
+ BINDGEN_EXTRA_CLANG_ARGS = lib.replaceStrings ["\n" "\t"] [" " ""] ''
+ -std=gnu99
+ -I${include.glibc}
+ -I${include.clang}
+ -I${include.urcu}
+ -I${include.zstd}
+ '';
+
+ postPatch = ''
+ cp ${./Cargo.lock} Cargo.lock
+ '';
+
+
+ doCheck = true;
+
+ # NIX_DEBUG = 4;
+}
\ No newline at end of file
--- /dev/null
+{ lib
+
+, stdenv
+, glibc
+, llvmPackages
+, rustPlatform
+
+, bcachefs
+
+, ...
+}: rustPlatform.buildRustPackage ( let
+ cargo = lib.trivial.importTOML ./Cargo.toml;
+in {
+ pname = "mount.bcachefs";
+ version = cargo.package.version;
+
+ src = builtins.path { path = ../.; name = "rust-src"; };
+ sourceRoot = "rust-src/mount";
+
+ cargoLock = { lockFile = ./Cargo.lock; };
+
+ nativeBuildInputs = bcachefs.bch_bindgen.nativeBuildInputs;
+ buildInputs = bcachefs.bch_bindgen.buildInputs;
+ inherit (bcachefs.bch_bindgen)
+ LIBBCACHEFS_INCLUDE
+ LIBBCACHEFS_LIB
+ LIBCLANG_PATH
+ BINDGEN_EXTRA_CLANG_ARGS;
+
+ preFixup = ''
+ ln $out/bin/mount-bcachefs $out/bin/mount.bcachefs
+ ln -s $out/bin $out/sbin
+ '';
+ # -isystem ${llvmPackages.libclang.lib}/lib/clang/${lib.getVersion llvmPackages.libclang}/include";
+ # CFLAGS = "-I${llvmPackages.libclang.lib}/include";
+ # LDFLAGS = "-L${libcdev}";
+
+ doCheck = false;
+
+ # NIX_DEBUG = 4;
+})
\ No newline at end of file