Skip to content

Commit 941c595

Browse files
committed
fix: only add userxattr when rw-store overlay is virtiofs share
1 parent e31df08 commit 941c595

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

nixos-modules/microvm/mounts.nix

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ let
2727
else "/dev/vda"
2828
else throw "No disk letter when /nix/store is not in disk";
2929

30+
# Check if the writable store overlay is a virtiofs share
31+
isRwStoreVirtiofsShare = builtins.any ({mountPoint, proto, ... }:
32+
mountPoint == config.microvm.writableStoreOverlay
33+
&& proto == "virtiofs"
34+
) config.microvm.shares;
35+
3036
in
3137
lib.mkIf config.microvm.guest.enable {
3238
fileSystems = lib.mkMerge [ (
@@ -82,7 +88,8 @@ lib.mkIf config.microvm.guest.enable {
8288
"lowerdir=${roStore}"
8389
"upperdir=${writableStoreOverlay}/store"
8490
"workdir=${writableStoreOverlay}/work"
85-
"userxattr" # FIXME: only when writableStoreOverlay is a virtiofs share
91+
] ++ lib.optionals isRwStoreVirtiofsShare [
92+
"userxattr"
8693
];
8794
depends = [ roStore writableStoreOverlay ];
8895
};
@@ -133,12 +140,13 @@ lib.mkIf config.microvm.guest.enable {
133140
where = "/sysroot/nix/store";
134141
what = "overlay";
135142
type = "overlay";
136-
options = builtins.concatStringsSep "," [
143+
options = builtins.concatStringsSep "," ([
137144
"lowerdir=/sysroot${roStore}"
138145
"upperdir=/sysroot${writableStoreOverlay}/store"
139146
"workdir=/sysroot${writableStoreOverlay}/work"
140-
"userxattr" # FIXME: only when writableStoreOverlay is a virtiofs share
141-
];
147+
] ++ lib.optionals isRwStoreVirtiofsShare [
148+
"userxattr"
149+
]);
142150
wantedBy = [ "initrd-fs.target" ];
143151
before = [ "initrd-fs.target" ];
144152
requires = [ "rw-store.service" ];

0 commit comments

Comments
 (0)