summary refs log tree commit diff
diff options
context:
space:
mode:
authorRyan Lahfa <masterancpp@gmail.com>2023-10-21 18:04:13 +0100
committerGitHub <noreply@github.com>2023-10-21 18:04:13 +0100
commite6ade691a5d39144118357b39bc11505db715d89 (patch)
tree70422b14c254e5ee9addb3e531f1ee8cdd7c59f4
parent68c8ffed7f2e200dda40baa11bd161f3142077ef (diff)
parent524714f7eaa37f599c978bc7cb6085934ca2c6b5 (diff)
downloadnixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar.gz
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar.bz2
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar.lz
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar.xz
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.tar.zst
nixpkgs-e6ade691a5d39144118357b39bc11505db715d89.zip
Merge pull request #259347 from ElvishJerricco/systemd-stage-1-zfs-sysusr-dependency
systemd 254: ZFS /usr fix with systemd-stage-1
-rw-r--r--nixos/modules/tasks/filesystems/zfs.nix7
-rw-r--r--nixos/tests/installer.nix3
2 files changed, 9 insertions, 1 deletions
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix
index 7e7811fd333..082634ec9d0 100644
--- a/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixos/modules/tasks/filesystems/zfs.nix
@@ -90,12 +90,17 @@ let
 
   getPoolMounts = prefix: pool:
     let
+      poolFSes = getPoolFilesystems pool;
+
       # Remove the "/" suffix because even though most mountpoints
       # won't have it, the "/" mountpoint will, and we can't have the
       # trailing slash in "/sysroot/" in stage 1.
       mountPoint = fs: escapeSystemdPath (prefix + (lib.removeSuffix "/" fs.mountPoint));
+
+      hasUsr = lib.any (fs: fs.mountPoint == "/usr") poolFSes;
     in
-      map (x: "${mountPoint x}.mount") (getPoolFilesystems pool);
+      map (x: "${mountPoint x}.mount") poolFSes
+      ++ lib.optional hasUsr "sysusr-usr.mount";
 
   getKeyLocations = pool: if isBool cfgZfs.requestEncryptionCredentials then {
     hasKeys = cfgZfs.requestEncryptionCredentials;
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index 3268a16967d..5111cedf925 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -690,6 +690,9 @@ in {
           "zpool create rpool /dev/vda2",
           "zfs create -o mountpoint=legacy rpool/root",
           "mount -t zfs rpool/root /mnt",
+          "zfs create -o mountpoint=legacy rpool/root/usr",
+          "mkdir /mnt/usr",
+          "mount -t zfs rpool/root/usr /mnt/usr",
           "udevadm settle",
       )
     '';