summaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
authorKayla Firestack <dev@kaylafire.me>2021-10-14 10:17:23 -0400
committerKayla Firestack <dev@kaylafire.me>2021-10-18 11:30:30 -0400
commite70c66e3b59d10f8ea09f7c2e4cc373b330d84f7 (patch)
tree2afb52d95146aeef9d631e62e9392cd3060247c7 /default.nix
parentb7254160d9b7445cc3954dc1197e0b997f31c071 (diff)
update default.nix to use latest dependencies and newer stdenv, as well as be flake compatible and overlay compatible
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix174
1 files changed, 143 insertions, 31 deletions
diff --git a/default.nix b/default.nix
index f19ff107..ae012821 100644
--- a/default.nix
+++ b/default.nix
@@ -1,32 +1,144 @@
-{ nixpkgs ? (import ./nix/nixpkgs.nix)
-}:
-
-with nixpkgs;
-
-stdenv.mkDerivation rec {
- name = "bcachefs-tools-${version}";
- version = "git";
-
- src = lib.cleanSource ./.; # NOTE: ignore .git, otherwise things get weird!
-
- nativeBuildInputs = [ git pkgconfig ];
- buildInputs =
- [ liburcu libuuid libaio zlib attr keyutils
- libsodium libscrypt
- ];
-
- enableParallelBuilding = true;
- makeFlags =
- [ "PREFIX=$(out)"
- ];
-
- meta = with stdenv.lib; {
- description = "Userspace tools for bcachefs";
- homepage = http://bcachefs.org;
- license = licenses.gpl2;
- platforms = platforms.linux;
- maintainers =
- [ "Kent Overstreet <kent.overstreet@gmail.com>"
- ];
- };
+{ lib
+, filter
+
+, stdenv
+, pkg-config
+, attr
+, libuuid
+, libscrypt
+, libsodium
+, keyutils
+
+, liburcu
+, zlib
+, libaio
+, udev
+, zstd
+, lz4
+
+, python39
+, python39Packages
+, docutils
+, nixosTests
+
+, lastModified
+, versionString ? lastModified
+
+, inShell ? false
+, debugMode ? inShell
+
+, testWithValgrind ? true
+, valgrind
+
+, fuseSupport ? false
+, fuse3 ? null }:
+
+assert fuseSupport -> fuse3 != null;
+assert testWithValgrind -> valgrind != null;
+stdenv.mkDerivation {
+ pname = "bcachefs-tools";
+
+ version = "v0.1-flake-${versionString}";
+ VERSION = "v0.1-flake-${versionString}";
+
+ src = filter.filter {
+ name = "bcachefs-tools";
+ root = ./.;
+ exclude = [
+ ./rust-src
+
+ ./.git
+ ./nix
+
+ ./flake.nix
+ ./flake.lock
+ ];
+ };
+
+ postPatch = "patchShebangs --build doc/macro2rst.py";
+
+ nativeBuildInputs = [
+ # used to find dependencies
+ ## see ./INSTALL
+ pkg-config
+ ];
+ buildInputs = [
+ # bcachefs explicit dependencies
+ ## see ./INSTALL
+ libaio
+
+ # libblkid
+ keyutils # libkeyutils
+ lz4 # liblz4
+
+ libscrypt
+ libsodium
+ liburcu
+ libuuid
+ zstd # libzstd
+ zlib # zlib1g
+ valgrind
+
+ # unspecified dependencies
+ attr
+ udev
+
+ # documentation depenedencies
+ docutils
+ python39Packages.pygments
+ ] ++ (lib.optional fuseSupport fuse3)
+ ++ (lib.optional testWithValgrind valgrind) ;
+
+ makeFlags = [
+ "PREFIX=${placeholder "out"}"
+ ] ++ lib.optional debugMode "EXTRA_CFLAGS=-ggdb";
+
+ installFlags = [
+ "INITRAMFS_DIR=${placeholder "out"}/etc/initramfs-tools"
+ ];
+
+ doCheck = true; # needs bcachefs module loaded on builder
+
+ checkInputs = [
+ python39Packages.pytest
+ python39Packages.pytest-xdist
+ ] ++ lib.optional testWithValgrind valgrind;
+
+ checkFlags = [
+ "BCACHEFS_TEST_USE_VALGRIND=${if testWithValgrind then "yes" else "no"}"
+ # cannot escape spaces within make flags, quotes are stripped
+ "PYTEST=pytest" # "PYTEST_ARGS='-n4 --version'"
+ ];
+
+ preCheck =
+ ''
+ makeFlagsArray+=(PYTEST_ARGS="--verbose -n4")
+ '' +
+ lib.optionalString fuseSupport ''
+ rm tests/test_fuse.py
+ '';
+
+ dontStrip = debugMode == true;
+ passthru = {
+ bcachefs_revision = let
+ file = builtins.readFile ./.bcachefs_revision;
+ removeLineFeeds = str: lib.lists.foldr (lib.strings.removeSuffix) str ["\r" "\n"];
+ in removeLineFeeds file;
+
+ tests = {
+ smoke-test = nixosTests.bcachefs;
+ };
+ };
+
+ enableParallelBuilding = true;
+ meta = with lib; {
+ description = "Userspace tools for bcachefs";
+ homepage = http://bcachefs.org;
+ license = licenses.gpl2;
+ platforms = platforms.linux;
+ maintainers =
+ [ "Kent Overstreet <kent.overstreet@gmail.com>"
+ ];
+
+ };
}