diff options
author | WilliButz <willibutz@posteo.de> | 2024-03-07 18:24:00 +0100 |
---|---|---|
committer | WilliButz <willibutz@posteo.de> | 2024-03-07 22:50:56 +0100 |
commit | 82ef47d3b71c54fdb8449a7a8919a81685572a52 (patch) | |
tree | 6d6a2c18a011b876f9c3c7a60364aae6b0ea853e /nixos | |
parent | f88148f05e28015dbd01d49bc8c22ff11b3db052 (diff) | |
download | nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar.gz nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar.bz2 nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar.lz nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar.xz nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.tar.zst nixlib-82ef47d3b71c54fdb8449a7a8919a81685572a52.zip |
nixos/repart-image: add options to specify mkfs parameters
This new option makes it easier to specify extra mkfs parameters for the systemd-repart builder. See https://github.com/systemd/systemd/blob/v255/docs/ENVIRONMENT.md?plain=1#L575-L577
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/image/repart-image.nix | 3 | ||||
-rw-r--r-- | nixos/modules/image/repart.nix | 32 |
2 files changed, 34 insertions, 1 deletions
diff --git a/nixos/modules/image/repart-image.nix b/nixos/modules/image/repart-image.nix index 56f2775636a8..5ae523c43f58 100644 --- a/nixos/modules/image/repart-image.nix +++ b/nixos/modules/image/repart-image.nix @@ -34,6 +34,7 @@ , seed , definitionsDirectory , sectorSize +, mkfsEnv ? {} }: let @@ -89,6 +90,8 @@ runCommand imageFileBasename compressionPkg ] ++ fileSystemTools; + env = mkfsEnv; + systemdRepartFlags = [ "--dry-run=no" "--empty=create" diff --git a/nixos/modules/image/repart.nix b/nixos/modules/image/repart.nix index 6a933f0d83cc..90c9c7e51dfa 100644 --- a/nixos/modules/image/repart.nix +++ b/nixos/modules/image/repart.nix @@ -60,6 +60,11 @@ let }; }; }; + + mkfsOptionsToEnv = opts: lib.mapAttrs' (fsType: options: { + name = "SYSTEMD_REPART_MKFS_OPTIONS_${lib.toUpper fsType}"; + value = builtins.concatStringsSep " " options; + }) opts; in { options.image.repart = { @@ -183,6 +188,29 @@ in ''; }; + mkfsOptions = lib.mkOption { + type = with lib.types; attrsOf (listOf str); + default = {}; + example = lib.literalExpression '' + { + vfat = [ "-S 512" "-c" ]; + } + ''; + description = lib.mdDoc '' + Specify extra options for created file systems. The specified options + are converted to individual environment variables of the format + `SYSTEMD_REPART_MKFS_OPTIONS_<FSTYPE>`. + + See [upstream systemd documentation](https://github.com/systemd/systemd/blob/v255/docs/ENVIRONMENT.md?plain=1#L575-L577) + for information about the usage of these environment variables. + + The example would produce the following environment variable: + ``` + SYSTEMD_REPART_MKFS_OPTIONS_VFAT="-S 512 -c" + ``` + ''; + }; + }; config = { @@ -239,11 +267,13 @@ in (lib.mapAttrs (_n: v: { Partition = v.repartConfig; }) finalPartitions); partitions = pkgs.writeText "partitions.json" (builtins.toJSON finalPartitions); + + mkfsEnv = mkfsOptionsToEnv cfg.mkfsOptions; in pkgs.callPackage ./repart-image.nix { systemd = cfg.package; inherit (cfg) imageFileBasename compression split seed sectorSize; - inherit fileSystems definitionsDirectory partitions; + inherit fileSystems definitionsDirectory partitions mkfsEnv; }; meta.maintainers = with lib.maintainers; [ nikstur ]; |