Unverified Commit b9fe04d6 authored by Will Fancher's avatar Will Fancher Committed by GitHub
Browse files

Merge pull request #291825 from WilliButz/repart/max-label-length

nixos/systemd-repart: add assertion for partition label length
parents a587a6a3 4d59ace1
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -10,6 +10,20 @@ let
    "repart.d"
    format
    (lib.mapAttrs (_n: v: { Partition = v; }) cfg.partitions);

  partitionAssertions = lib.mapAttrsToList (fileName: definition:
    let
      maxLabelLength = 36; # GPT_LABEL_MAX defined in systemd's gpt.h
      labelLength = builtins.stringLength definition.Label;
    in
    {
      assertion = definition ? Label -> maxLabelLength >= labelLength;
      message = ''
        The partition label '${definition.Label}' defined for '${fileName}' is ${toString labelLength}
        characters long, but the maximum label length supported by systemd is ${toString maxLabelLength}.
      '';
    }
  ) cfg.partitions;
in
{
  options = {
@@ -81,7 +95,7 @@ in
          'boot.initrd.systemd.repart.enable' requires 'boot.initrd.systemd.enable' to be enabled.
        '';
      }
    ];
    ] ++ partitionAssertions;

    # systemd-repart uses loopback devices for partition creation
    boot.initrd.availableKernelModules = lib.optional initrdCfg.enable "loop";