diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 7be90e590085d..fa583799365ed 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -10,7 +10,7 @@ In addition to numerous new and upgraded packages, this release has the followin - `screen`'s module has been cleaned, and will now require you to set `programs.screen.enable` in order to populate `screenrc` and add the program to the environment. -- `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_testing`, and is therefore no longer available. +- `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_latest`, and is therefore no longer available. - NixOS now installs a stub ELF loader that prints an informative error message when users attempt to run binaries not made for NixOS. - This can be disabled through the `environment.stub-ld.enable` option. diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 086e5d65da2f2..59cf1a47fb7f9 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -86,9 +86,14 @@ touch /etc/initrd-release # Function for waiting for device(s) to appear. waitDevice() { local device="$1" - # Split device string using ':' as a delimiter as bcachefs - # uses this for multi-device filesystems, i.e. /dev/sda1:/dev/sda2:/dev/sda3 - local IFS=':' + # Split device string using ':' as a delimiter, bcachefs uses + # this for multi-device filesystems, i.e. /dev/sda1:/dev/sda2:/dev/sda3 + local IFS + + # bcachefs is the only known use for this at the moment + # Preferably, the 'UUID=' syntax should be enforced, but + # this is kept for compatibility reasons + if [ "$fsType" = bcachefs ]; then IFS=':'; fi # USB storage devices tend to appear with some delay. It would be # great if we had a way to synchronously wait for them, but diff --git a/nixos/modules/tasks/filesystems/bcachefs.nix b/nixos/modules/tasks/filesystems/bcachefs.nix index fdb149a3d9a17..3b990ce30b21e 100644 --- a/nixos/modules/tasks/filesystems/bcachefs.nix +++ b/nixos/modules/tasks/filesystems/bcachefs.nix @@ -123,9 +123,14 @@ in inherit assertions; # needed for systemd-remount-fs system.fsPackages = [ pkgs.bcachefs-tools ]; - # FIXME: Remove this line when the default kernel has bcachefs + # FIXME: Remove this line when the LTS (default) kernel is at least version 6.7 boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; - systemd.services = lib.mapAttrs' (mkUnits "") (lib.filterAttrs (n: fs: (fs.fsType == "bcachefs") && (!utils.fsNeededForBoot fs)) config.fileSystems); + services.udev.packages = [ pkgs.bcachefs-tools ]; + + systemd = { + packages = [ pkgs.bcachefs-tools ]; + services = lib.mapAttrs' (mkUnits "") (lib.filterAttrs (n: fs: (fs.fsType == "bcachefs") && (!utils.fsNeededForBoot fs)) config.fileSystems); + }; } (lib.mkIf ((lib.elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) { diff --git a/pkgs/tools/filesystems/bcachefs-tools/default.nix b/pkgs/tools/filesystems/bcachefs-tools/default.nix index 17b438ac46b88..f45e4b51953f7 100644 --- a/pkgs/tools/filesystems/bcachefs-tools/default.nix +++ b/pkgs/tools/filesystems/bcachefs-tools/default.nix @@ -19,6 +19,7 @@ , rustPlatform , makeWrapper , writeScript +, python3 , fuseSupport ? false }: @@ -26,7 +27,6 @@ stdenv.mkDerivation (finalAttrs: { pname = "bcachefs-tools"; version = "1.4.1"; - src = fetchFromGitHub { owner = "koverstreet"; repo = "bcachefs-tools"; @@ -65,12 +65,12 @@ stdenv.mkDerivation (finalAttrs: { udev ] ++ lib.optional fuseSupport fuse3; + # FIXME: Try enabling this once the default linux kernel is at least 6.7 doCheck = false; # needs bcachefs module loaded on builder checkFlags = [ "BCACHEFS_TEST_USE_VALGRIND=no" ]; makeFlags = [ - "DESTDIR=${placeholder "out"}" - "PREFIX=" + "PREFIX=${placeholder "out"}" "VERSION=${finalAttrs.version}" "INITRAMFS_DIR=${placeholder "out"}/etc/initramfs-tools" ]; @@ -79,6 +79,17 @@ stdenv.mkDerivation (finalAttrs: { rm tests/test_fuse.py ''; + # Tries to install to the 'systemd-minimal' and 'udev' nix installation paths + installFlags = [ + "PKGCONFIG_SERVICEDIR=$(out)/lib/systemd/system" + "PKGCONFIG_UDEVDIR=$(out)/lib/udev" + ]; + + postInstall = '' + substituteInPlace $out/libexec/bcachefsck_all \ + --replace "/usr/bin/python3" "${python3}/bin/python3" + ''; + passthru = { tests = { smoke-test = nixosTests.bcachefs; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 98c3c66e780f8..8eb19333d3020 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -607,9 +607,9 @@ mapAliases ({ ''; linux_latest_hardened = linuxPackages_latest_hardened; - # Added 2023-11-18 - linuxPackages_testing_bcachefs = throw "'linuxPackages_testing_bcachefs' has been removed, please use 'linuxPackages_testing', or any other linux kernel with bcachefs support"; - linux_testing_bcachefs = throw "'linux_testing_bcachefs' has been removed, please use 'linux_testing', or any other linux kernel with bcachefs support"; + # Added 2023-11-18, modified 2024-01-09 + linuxPackages_testing_bcachefs = throw "'linuxPackages_testing_bcachefs' has been removed, please use 'linuxPackages_latest', any kernel version at least 6.7, or any other linux kernel with bcachefs support"; + linux_testing_bcachefs = throw "'linux_testing_bcachefs' has been removed, please use 'linux_latest', any kernel version at least 6.7, or any other linux kernel with bcachefs support"; lld_6 = throw "lld_6 has been removed from nixpkgs"; # Added 2024-01-08 lld_7 = throw "lld_7 has been removed from nixpkgs"; # Added 2023-11-19