mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-20 04:19:00 +02:00
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
This commit is contained in:
parent
f88148f05e
commit
82ef47d3b7
|
@ -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"
|
||||
|
|
|
@ -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 ];
|
||||
|
|
Loading…
Reference in a new issue