summaryrefslogtreecommitdiff
path: root/rust-src
diff options
context:
space:
mode:
Diffstat (limited to 'rust-src')
-rw-r--r--rust-src/bch_bindgen/default.nix76
-rw-r--r--rust-src/mount/default.nix41
2 files changed, 117 insertions, 0 deletions
diff --git a/rust-src/bch_bindgen/default.nix b/rust-src/bch_bindgen/default.nix
new file mode 100644
index 00000000..f6053d56
--- /dev/null
+++ b/rust-src/bch_bindgen/default.nix
@@ -0,0 +1,76 @@
+{ 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
diff --git a/rust-src/mount/default.nix b/rust-src/mount/default.nix
new file mode 100644
index 00000000..84c046b1
--- /dev/null
+++ b/rust-src/mount/default.nix
@@ -0,0 +1,41 @@
+{ 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