mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 22:43:01 +00:00
overlayfs: Assert that upperdir == null requires systemd initrd
This commit is contained in:
parent
160ff9ff9c
commit
c653608dcd
@ -127,18 +127,29 @@ in
|
||||
|
||||
boot.initrd.availableKernelModules = lib.mkIf (initrdFileSystems != { }) [ "overlay" ];
|
||||
|
||||
assertions = lib.concatLists (lib.mapAttrsToList
|
||||
(_name: fs: [
|
||||
{
|
||||
assertion = (fs.overlay.upperdir == null) == (fs.overlay.workdir == null);
|
||||
message = "You cannot define a `lowerdir` without a `workdir` and vice versa for mount point: ${fs.mountPoint}";
|
||||
}
|
||||
{
|
||||
assertion = (fs.overlay.lowerdir != null && fs.overlay.upperdir == null) -> (lib.length fs.overlay.lowerdir) >= 2;
|
||||
message = "A read-only overlay (without an `upperdir`) requires at least 2 `lowerdir`s: ${fs.mountPoint}";
|
||||
}
|
||||
])
|
||||
config.fileSystems);
|
||||
assertions =
|
||||
lib.concatLists (
|
||||
lib.mapAttrsToList (_name: fs: [
|
||||
{
|
||||
assertion = (fs.overlay.upperdir == null) == (fs.overlay.workdir == null);
|
||||
message = "You cannot define a `lowerdir` without a `workdir` and vice versa for mount point: ${fs.mountPoint}";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
(fs.overlay.lowerdir != null && fs.overlay.upperdir == null)
|
||||
-> (lib.length fs.overlay.lowerdir) >= 2;
|
||||
message = "A read-only overlay (without an `upperdir`) requires at least 2 `lowerdir`s: ${fs.mountPoint}";
|
||||
}
|
||||
]) overlayFileSystems
|
||||
)
|
||||
++ lib.mapAttrsToList (_: fs: {
|
||||
assertion = fs.overlay.upperdir == null -> config.boot.initrd.systemd.enable;
|
||||
message = ''
|
||||
Stage 1 overlay file system ${fs.mountPoint} has no upperdir,
|
||||
which is not supported with scripted initrd. Please enable
|
||||
'boot.initrd.systemd.enable'.
|
||||
'';
|
||||
}) initrdFileSystems;
|
||||
|
||||
boot.initrd.systemd.services = lib.mkMerge (lib.mapAttrsToList preMountService initrdFileSystems);
|
||||
systemd.services = lib.mkMerge (lib.mapAttrsToList preMountService userspaceFileSystems);
|
||||
|
@ -26,7 +26,6 @@ in
|
||||
|
||||
nodes.machine = { config, pkgs, ... }: {
|
||||
boot.initrd.systemd.enable = true;
|
||||
boot.initrd.availableKernelModules = [ "overlay" ];
|
||||
|
||||
virtualisation.fileSystems = {
|
||||
"/initrd-overlay" = {
|
||||
|
Loading…
Reference in New Issue
Block a user