added audio support

This commit is contained in:
Julien Malka 2023-09-10 15:19:18 +02:00
parent 0b181e4543
commit 475799a1a1
Signed by: Luj
GPG key ID: 6FC74C847011FD83
2 changed files with 85 additions and 1 deletions

View file

@ -0,0 +1,84 @@
From e6e285cd201e5de2f36ce7f3efacd224a73c96a0 Mon Sep 17 00:00:00 2001
From: Linus Heckemann <git@sphalerite.org>
Date: Wed, 16 Aug 2023 17:02:28 +0200
Subject: [PATCH 1/2] bcachefs: support unlocking in systemd-based stage1
---
nixos/modules/tasks/filesystems/bcachefs.nix | 26 ++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/nixos/modules/tasks/filesystems/bcachefs.nix b/nixos/modules/tasks/filesystems/bcachefs.nix
index 19ef188ce7833..6a45a53e9b1cc 100644
--- a/nixos/modules/tasks/filesystems/bcachefs.nix
+++ b/nixos/modules/tasks/filesystems/bcachefs.nix
@@ -70,6 +70,32 @@ in
"mount.bcachefs" = "${mountCommand}/bin/mount.bcachefs";
};
+ boot.initrd.systemd.services = lib.mapAttrs' (mountpoint: fileSystem: let
+ mountUnitName =
+ if mountpoint == "/"
+ then "sysroot.mount"
+ else "sysroot-" + (utils.escapeSystemdPath mountpoint) + ".mount";
+ deviceUnit = (utils.escapeSystemdPath fileSystem.device) + ".device";
+ in {
+ name = "unlock-bcachefs-${utils.escapeSystemdPath mountpoint}";
+ value = {
+ requiredBy = [mountUnitName];
+ before = [mountUnitName];
+ after = [deviceUnit];
+ requires = [deviceUnit];
+ serviceConfig.Type = "oneshot";
+ script = ''
+ if ! bcachefs unlock -c ${fileSystem.device}; then
+ exit 0
+ fi
+ passphrase=
+ until bcachefs unlock ${fileSystem.device} <<<"$passphrase"; do
+ passphrase=$(systemd-ask-password "bcachefs passphrase for ${fileSystem.device}")
+ done
+ '';
+ };
+ }) bootFs;
+
boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/bcachefs
copy_bin_and_libs ${mountCommand}/bin/mount.bcachefs
From 6d194a0b0248658f1e2d4fd354ce884bd81d5fa6 Mon Sep 17 00:00:00 2001
From: Linus Heckemann <git@sphalerite.org>
Date: Thu, 24 Aug 2023 00:48:52 +0200
Subject: [PATCH 2/2] nixos/tests/installer: test bcachefs root with systemd
stage1
---
nixos/tests/installer-systemd-stage-1.nix | 2 ++
nixos/tests/installer.nix | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/nixos/tests/installer-systemd-stage-1.nix b/nixos/tests/installer-systemd-stage-1.nix
index 85155a6c682b3..8f10a461d1c6c 100644
--- a/nixos/tests/installer-systemd-stage-1.nix
+++ b/nixos/tests/installer-systemd-stage-1.nix
@@ -8,6 +8,8 @@
# them when fixed.
inherit (import ./installer.nix { inherit system config pkgs; systemdStage1 = true; })
# bcache
+ bcachefsSimple
+ bcachefsEncrypted
btrfsSimple
btrfsSubvolDefault
btrfsSubvolEscape
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index 56ba85b76e6f5..3ad36f22f3a95 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -918,7 +918,7 @@ in {
enableOCR = true;
preBootCommands = ''
machine.start()
- machine.wait_for_text("enter passphrase for ")
+ machine.wait_for_text("passphrase for ")
machine.send_chars("password\n")
'';

View file

@ -5,7 +5,7 @@
users.users.julien = {
isNormalUser = true;
home = "/home/julien";
extraGroups = [ "wheel" config.users.groups.keys.name "filerun" "networkmanager" "davfs2" "adbusers" ];
extraGroups = [ "wheel" config.users.groups.keys.name "filerun" "networkmanager" "davfs2" "adbusers" "audio" ];
shell = pkgs.fish;
passwordFile = config.sops.secrets.user-julien-password.path;
};