Hello!
With the following configuration.nix
:
{ config, lib, pkgs, ... }: with builtins; with lib;
let
nixos-hardware = builtins.fetchGit { url = "https://github.com/nixos/nixos-hardware.git"; ref = "master"; };
in {
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
"${nixos-hardware}/microsoft/surface"
];
...
boot = {
loader = {
systemd-boot.enable = true;
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
grub.copyKernels = true;
};
zfs = {
enableUnstable = true;
devNodes = "/dev/";
};
kernelParams = [ "nohibernate" ];
initrd.supportedFilesystems = [ "zfs" "bcachefs" ];
supportedFilesystems = config.boot.initrd.supportedFilesystems;
};
...
nix = {
useSandbox = false;
package = pkgs.nixUnstable;
};
hardware.enableRedistributableFirmware = lib.mkDefault true;
...
system.stateVersion = "21.11";
boot.kernelPatches = [ {
name = "bcachefs-6ddf061e68560a2bb263b126af7e894a6c1afb5f";
patch = fetchpatch {
name = "bcachefs-6ddf061e68560a2bb263b126af7e894a6c1afb5f.diff";
url = "https://evilpiepirate.org/git/bcachefs.git/rawdiff/?id=6ddf061e68560a2bb263b126af7e894a6c1afb5f&id2=v5.16";
sha256 = "1nkrr1cxavw0rqxlyiz7pf9igvqay0d5kk7194v9ph3fcp9rz5kc";
};
extraConfig = "BCACHEFS_FS m";
} ];
}
And the following bcachefs.nix
, in a forked repo of nixpkgs
:
{ config, lib, pkgs, utils, ... }:
with lib;
let
bootFs = filterAttrs (n: fs: (fs.fsType == "bcachefs") && (utils.fsNeededForBoot fs)) config.fileSystems;
commonFunctions = ''
prompt() {
local name="$1"
printf "enter passphrase for $name: "
}
tryUnlock() {
local name="$1"
local path="$2"
if bcachefs unlock -c $path > /dev/null 2> /dev/null; then # test for encryption
prompt $name
until bcachefs unlock $path 2> /dev/null; do # repeat until sucessfully unlocked
printf "unlocking failed!\n"
prompt $name
done
printf "unlocking successful.\n"
fi
}
'';
openCommand = name: fs:
let
# we need only unlock one device manually, and cannot pass multiple at once
# remove this adaptation when bcachefs implements mounting by filesystem uuid
# also, implement automatic waiting for the constituent devices when that happens
# bcachefs does not support mounting devices with colons in the path, ergo we don't (see #49671)
firstDevice = head (splitString ":" fs.device);
in
''
tryUnlock ${name} ${firstDevice}
'';
in
{
config = mkIf (elem "bcachefs" config.boot.supportedFilesystems) (mkMerge [
{
system.fsPackages = [ pkgs.bcachefs-tools ];
# use kernel package with bcachefs support until it's in mainline
# boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs;
}
(mkIf ((elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) {
# chacha20 and poly1305 are required only for decryption attempts
boot.initrd.availableKernelModules = [ "bcachefs" "sha256" "chacha20" "poly1305" ];
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/bcachefs
'';
boot.initrd.extraUtilsCommandsTest = ''
$out/bin/bcachefs version
'';
boot.initrd.postDeviceCommands = commonFunctions + concatStrings (mapAttrsToList openCommand bootFs);
})
]);
}
I’m getting the following error:
building Nix...
building the system configuration...
these 4 derivations will be built:
/nix/store/9f0b1iwk44pj2czf94vl95r4csxyb0rp-linux-5.16.11-modules-shrunk.drv
/nix/store/vdlbc5gly53xabn3n0dk4j0xr8spknhn-stage-1-init.sh.drv
/nix/store/c3cdcix05adv5imm82pzgvrz46slnx8i-initrd-linux-5.16.11.drv
/nix/store/qvnqqmvpbaibky8q1bscdb7vm0hcnzzy-nixos-system-sandshrew-22.05.git.cf37c07a41bM.drv
building '/nix/store/9f0b1iwk44pj2czf94vl95r4csxyb0rp-linux-5.16.11-modules-shrunk.drv'...
kernel version is 5.16.11
root module: xhci_pci
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/common/usb-common.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/core/usbcore.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/host/xhci-hcd.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/host/xhci-pci-renesas.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/host/xhci-pci.ko.xz
root module: nvme
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/arch/x86/crypto/crct10dif-pclmul.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_generic.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/lib/crc-t10dif.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/block/t10-pi.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/nvme/host/nvme-core.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/nvme/host/nvme.ko.xz
root module: uas
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/common/usb-common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/core/usbcore.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/scsi/scsi_common.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/scsi/scsi_mod.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/storage/usb-storage.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/usb/storage/uas.ko.xz
root module: sd_mod
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/arch/x86/crypto/crct10dif-pclmul.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crct10dif_generic.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/lib/crc-t10dif.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/scsi/scsi_common.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/scsi/scsi_mod.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/block/t10-pi.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/scsi/sd_mod.ko.xz
root module: hyperv_keyboard
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/hv/hv_vmbus.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/input/serio/serio.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/input/serio/hyperv-keyboard.ko.xz
root module: md_mod
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/md-mod.ko.xz
root module: raid0
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/md-mod.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/raid0.ko.xz
root module: raid1
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/md-mod.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/raid1.ko.xz
root module: raid10
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/md-mod.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/raid10.ko.xz
root module: raid456
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/arch/x86/crypto/crc32c-intel.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crc32c_generic.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/lib/libcrc32c.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/lib/raid6/raid6_pq.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/xor.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/md-mod.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/async_tx/async_tx.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/async_tx/async_xor.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/async_tx/async_pq.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/async_tx/async_memcpy.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/async_tx/async_raid6_recov.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/drivers/md/raid456.ko.xz
root module: ext2
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/fs/mbcache.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/fs/ext2/ext2.ko.xz
root module: ext4
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/fs/jbd2/jbd2.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/fs/mbcache.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/lib/crc16.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/arch/x86/crypto/crc32c-intel.ko.xz
dependency already copied: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/crypto/crc32c_generic.ko.xz
copying dependency: /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11/kernel/fs/ext4/ext4.ko.xz
root module: bcachefs
modprobe: FATAL: Module bcachefs not found in directory /nix/store/ibx3n5f2af7l645n6a5v909si6b2xl2z-linux-5.16.11-modules/lib/modules/5.16.11
error: builder for '/nix/store/9f0b1iwk44pj2czf94vl95r4csxyb0rp-linux-5.16.11-modules-shrunk.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/vdlbc5gly53xabn3n0dk4j0xr8spknhn-stage-1-init.sh.drv' failed to build
error: 1 dependencies of derivation '/nix/store/c3cdcix05adv5imm82pzgvrz46slnx8i-initrd-linux-5.16.11.drv' failed to build
error: 1 dependencies of derivation '/nix/store/qvnqqmvpbaibky8q1bscdb7vm0hcnzzy-nixos-system-sandshrew-22.05.git.cf37c07a41bM.drv' failed to build
As far as I can tell, this is more or less how the bcachefs
test kernel is built as well; why isn’t the bcachefs
module being found for this surface
kernel, as built from ${nixos-hardware}/microsoft/surface
?
Thank you kindly for the help!