mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 03:23:29 +03:00
treewide: Format all Nix files
Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:
nix-build ci -A fmt.check
This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).
This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).
Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](8616af08d9/maintainers/scripts/auto-rebase
).
If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
This commit is contained in:
parent
2140bf39e4
commit
374e6bcc40
1523 changed files with 986047 additions and 513621 deletions
|
@ -1,82 +1,108 @@
|
|||
# This is an expression meant to be called from `./repart.nix`, it is NOT a
|
||||
# NixOS module that can be imported.
|
||||
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, runCommand
|
||||
, python3
|
||||
, black
|
||||
, ruff
|
||||
, mypy
|
||||
, systemd
|
||||
, fakeroot
|
||||
, util-linux
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
runCommand,
|
||||
python3,
|
||||
black,
|
||||
ruff,
|
||||
mypy,
|
||||
systemd,
|
||||
fakeroot,
|
||||
util-linux,
|
||||
|
||||
# filesystem tools
|
||||
, dosfstools
|
||||
, mtools
|
||||
, e2fsprogs
|
||||
, squashfsTools
|
||||
, erofs-utils
|
||||
, btrfs-progs
|
||||
, xfsprogs
|
||||
dosfstools,
|
||||
mtools,
|
||||
e2fsprogs,
|
||||
squashfsTools,
|
||||
erofs-utils,
|
||||
btrfs-progs,
|
||||
xfsprogs,
|
||||
|
||||
# compression tools
|
||||
, zstd
|
||||
, xz
|
||||
, zeekstd
|
||||
zstd,
|
||||
xz,
|
||||
zeekstd,
|
||||
|
||||
# arguments
|
||||
, name
|
||||
, version
|
||||
, imageFileBasename
|
||||
, compression
|
||||
, fileSystems
|
||||
, finalPartitions
|
||||
, split
|
||||
, seed
|
||||
, definitionsDirectory
|
||||
, sectorSize
|
||||
, mkfsEnv ? {}
|
||||
, createEmpty ? true
|
||||
name,
|
||||
version,
|
||||
imageFileBasename,
|
||||
compression,
|
||||
fileSystems,
|
||||
finalPartitions,
|
||||
split,
|
||||
seed,
|
||||
definitionsDirectory,
|
||||
sectorSize,
|
||||
mkfsEnv ? { },
|
||||
createEmpty ? true,
|
||||
}:
|
||||
|
||||
let
|
||||
systemdArch = let
|
||||
inherit (stdenvNoCC) hostPlatform;
|
||||
in
|
||||
if hostPlatform.isAarch32 then "arm"
|
||||
else if hostPlatform.isAarch64 then "arm64"
|
||||
else if hostPlatform.isx86_32 then "x86"
|
||||
else if hostPlatform.isx86_64 then "x86-64"
|
||||
else if hostPlatform.isMips32 then "mips-le"
|
||||
else if hostPlatform.isMips64 then "mips64-le"
|
||||
else if hostPlatform.isPower then "ppc"
|
||||
else if hostPlatform.isPower64 then "ppc64"
|
||||
else if hostPlatform.isRiscV32 then "riscv32"
|
||||
else if hostPlatform.isRiscV64 then "riscv64"
|
||||
else if hostPlatform.isS390 then "s390"
|
||||
else if hostPlatform.isS390x then "s390x"
|
||||
else if hostPlatform.isLoongArch64 then "loongarch64"
|
||||
else if hostPlatform.isAlpha then "alpha"
|
||||
else hostPlatform.parsed.cpu.name;
|
||||
systemdArch =
|
||||
let
|
||||
inherit (stdenvNoCC) hostPlatform;
|
||||
in
|
||||
if hostPlatform.isAarch32 then
|
||||
"arm"
|
||||
else if hostPlatform.isAarch64 then
|
||||
"arm64"
|
||||
else if hostPlatform.isx86_32 then
|
||||
"x86"
|
||||
else if hostPlatform.isx86_64 then
|
||||
"x86-64"
|
||||
else if hostPlatform.isMips32 then
|
||||
"mips-le"
|
||||
else if hostPlatform.isMips64 then
|
||||
"mips64-le"
|
||||
else if hostPlatform.isPower then
|
||||
"ppc"
|
||||
else if hostPlatform.isPower64 then
|
||||
"ppc64"
|
||||
else if hostPlatform.isRiscV32 then
|
||||
"riscv32"
|
||||
else if hostPlatform.isRiscV64 then
|
||||
"riscv64"
|
||||
else if hostPlatform.isS390 then
|
||||
"s390"
|
||||
else if hostPlatform.isS390x then
|
||||
"s390x"
|
||||
else if hostPlatform.isLoongArch64 then
|
||||
"loongarch64"
|
||||
else if hostPlatform.isAlpha then
|
||||
"alpha"
|
||||
else
|
||||
hostPlatform.parsed.cpu.name;
|
||||
|
||||
amendRepartDefinitions = runCommand "amend-repart-definitions.py"
|
||||
{
|
||||
# TODO: ruff does not splice properly in nativeBuildInputs
|
||||
depsBuildBuild = [ ruff ];
|
||||
nativeBuildInputs = [ python3 black mypy ];
|
||||
} ''
|
||||
install ${./amend-repart-definitions.py} $out
|
||||
patchShebangs --build $out
|
||||
amendRepartDefinitions =
|
||||
runCommand "amend-repart-definitions.py"
|
||||
{
|
||||
# TODO: ruff does not splice properly in nativeBuildInputs
|
||||
depsBuildBuild = [ ruff ];
|
||||
nativeBuildInputs = [
|
||||
python3
|
||||
black
|
||||
mypy
|
||||
];
|
||||
}
|
||||
''
|
||||
install ${./amend-repart-definitions.py} $out
|
||||
patchShebangs --build $out
|
||||
|
||||
black --check --diff $out
|
||||
ruff check --line-length 88 $out
|
||||
mypy --strict $out
|
||||
'';
|
||||
black --check --diff $out
|
||||
ruff check --line-length 88 $out
|
||||
mypy --strict $out
|
||||
'';
|
||||
|
||||
fileSystemToolMapping = {
|
||||
"vfat" = [ dosfstools mtools ];
|
||||
"vfat" = [
|
||||
dosfstools
|
||||
mtools
|
||||
];
|
||||
"ext4" = [ e2fsprogs.bin ];
|
||||
"squashfs" = [ squashfsTools ];
|
||||
"erofs" = [ erofs-utils ];
|
||||
|
@ -87,108 +113,127 @@ let
|
|||
|
||||
fileSystemTools = builtins.concatMap (f: fileSystemToolMapping."${f}") fileSystems;
|
||||
|
||||
compressionPkg = {
|
||||
"zstd" = zstd;
|
||||
"xz" = xz;
|
||||
"zstd-seekable" = zeekstd;
|
||||
}."${compression.algorithm}";
|
||||
compressionPkg =
|
||||
{
|
||||
"zstd" = zstd;
|
||||
"xz" = xz;
|
||||
"zstd-seekable" = zeekstd;
|
||||
}
|
||||
."${compression.algorithm}";
|
||||
|
||||
compressionCommand = {
|
||||
"zstd" = "zstd --no-progress --threads=$NIX_BUILD_CORES -${toString compression.level}";
|
||||
"xz" = "xz --keep --verbose --threads=$NIX_BUILD_CORES -${toString compression.level}";
|
||||
"zstd-seekable" = "zeekstd --quiet --max-frame-size 2M --compression-level ${toString compression.level}";
|
||||
}."${compression.algorithm}";
|
||||
compressionCommand =
|
||||
{
|
||||
"zstd" = "zstd --no-progress --threads=$NIX_BUILD_CORES -${toString compression.level}";
|
||||
"xz" = "xz --keep --verbose --threads=$NIX_BUILD_CORES -${toString compression.level}";
|
||||
"zstd-seekable" =
|
||||
"zeekstd --quiet --max-frame-size 2M --compression-level ${toString compression.level}";
|
||||
}
|
||||
."${compression.algorithm}";
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs:
|
||||
(if (version != null)
|
||||
then { pname = name; inherit version; }
|
||||
else { inherit name; }
|
||||
) // {
|
||||
__structuredAttrs = true;
|
||||
stdenvNoCC.mkDerivation (
|
||||
finalAttrs:
|
||||
(
|
||||
if (version != null) then
|
||||
{
|
||||
pname = name;
|
||||
inherit version;
|
||||
}
|
||||
else
|
||||
{ inherit name; }
|
||||
)
|
||||
// {
|
||||
__structuredAttrs = true;
|
||||
|
||||
# the image will be self-contained so we can drop references
|
||||
# to the closure that was used to build it
|
||||
unsafeDiscardReferences.out = true;
|
||||
|
||||
# the image will be self-contained so we can drop references
|
||||
# to the closure that was used to build it
|
||||
unsafeDiscardReferences.out = true;
|
||||
nativeBuildInputs =
|
||||
[
|
||||
systemd
|
||||
util-linux
|
||||
fakeroot
|
||||
]
|
||||
++ lib.optionals (compression.enable) [
|
||||
compressionPkg
|
||||
]
|
||||
++ fileSystemTools;
|
||||
|
||||
nativeBuildInputs = [
|
||||
systemd
|
||||
util-linux
|
||||
fakeroot
|
||||
] ++ lib.optionals (compression.enable) [
|
||||
compressionPkg
|
||||
] ++ fileSystemTools;
|
||||
env = mkfsEnv;
|
||||
|
||||
env = mkfsEnv;
|
||||
inherit finalPartitions definitionsDirectory;
|
||||
|
||||
inherit finalPartitions definitionsDirectory;
|
||||
partitionsJSON = builtins.toJSON finalAttrs.finalPartitions;
|
||||
|
||||
partitionsJSON = builtins.toJSON finalAttrs.finalPartitions;
|
||||
# relative path to the repart definitions that are read by systemd-repart
|
||||
finalRepartDefinitions = "repart.d";
|
||||
|
||||
# relative path to the repart definitions that are read by systemd-repart
|
||||
finalRepartDefinitions = "repart.d";
|
||||
systemdRepartFlags =
|
||||
[
|
||||
"--architecture=${systemdArch}"
|
||||
"--dry-run=no"
|
||||
"--size=auto"
|
||||
"--seed=${seed}"
|
||||
"--definitions=${finalAttrs.finalRepartDefinitions}"
|
||||
"--split=${lib.boolToString split}"
|
||||
"--json=pretty"
|
||||
]
|
||||
++ lib.optionals createEmpty [
|
||||
"--empty=create"
|
||||
]
|
||||
++ lib.optionals (sectorSize != null) [
|
||||
"--sector-size=${toString sectorSize}"
|
||||
];
|
||||
|
||||
systemdRepartFlags = [
|
||||
"--architecture=${systemdArch}"
|
||||
"--dry-run=no"
|
||||
"--size=auto"
|
||||
"--seed=${seed}"
|
||||
"--definitions=${finalAttrs.finalRepartDefinitions}"
|
||||
"--split=${lib.boolToString split}"
|
||||
"--json=pretty"
|
||||
] ++ lib.optionals createEmpty [
|
||||
"--empty=create"
|
||||
] ++ lib.optionals (sectorSize != null) [
|
||||
"--sector-size=${toString sectorSize}"
|
||||
];
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
doCheck = false;
|
||||
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
doCheck = false;
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
amendedRepartDefinitionsDir=$(${amendRepartDefinitions} <(echo "$partitionsJSON") $definitionsDirectory)
|
||||
ln -vs $amendedRepartDefinitionsDir $finalRepartDefinitions
|
||||
|
||||
amendedRepartDefinitionsDir=$(${amendRepartDefinitions} <(echo "$partitionsJSON") $definitionsDirectory)
|
||||
ln -vs $amendedRepartDefinitionsDir $finalRepartDefinitions
|
||||
runHook postPatch
|
||||
'';
|
||||
|
||||
runHook postPatch
|
||||
'';
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
echo "Building image with systemd-repart..."
|
||||
unshare --map-root-user fakeroot systemd-repart \
|
||||
''${systemdRepartFlags[@]} \
|
||||
${imageFileBasename}.raw \
|
||||
| tee repart-output.json
|
||||
|
||||
echo "Building image with systemd-repart..."
|
||||
unshare --map-root-user fakeroot systemd-repart \
|
||||
''${systemdRepartFlags[@]} \
|
||||
${imageFileBasename}.raw \
|
||||
| tee repart-output.json
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
installPhase =
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out
|
||||
''
|
||||
# Compression is implemented in the same derivation as opposed to in a
|
||||
# separate derivation to allow users to save disk space. Disk images are
|
||||
# already very space intensive so we want to allow users to mitigate this.
|
||||
+ lib.optionalString compression.enable ''
|
||||
for f in ${imageFileBasename}*; do
|
||||
echo "Compressing $f with ${compression.algorithm}..."
|
||||
# Keep the original file when compressing and only delete it afterwards
|
||||
${compressionCommand} $f && rm $f
|
||||
done
|
||||
''
|
||||
+ ''
|
||||
mv -v repart-output.json ${imageFileBasename}* $out
|
||||
|
||||
mkdir -p $out
|
||||
''
|
||||
# Compression is implemented in the same derivation as opposed to in a
|
||||
# separate derivation to allow users to save disk space. Disk images are
|
||||
# already very space intensive so we want to allow users to mitigate this.
|
||||
+ lib.optionalString compression.enable
|
||||
''
|
||||
for f in ${imageFileBasename}*; do
|
||||
echo "Compressing $f with ${compression.algorithm}..."
|
||||
# Keep the original file when compressing and only delete it afterwards
|
||||
${compressionCommand} $f && rm $f
|
||||
done
|
||||
'' + ''
|
||||
mv -v repart-output.json ${imageFileBasename}* $out
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit amendRepartDefinitions;
|
||||
};
|
||||
})
|
||||
passthru = {
|
||||
inherit amendRepartDefinitions;
|
||||
};
|
||||
}
|
||||
)
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
# This module exposes options to build a disk image with a GUID Partition Table
|
||||
# (GPT). It uses systemd-repart to build the image.
|
||||
|
||||
{ config, pkgs, lib, utils, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.image.repart;
|
||||
|
@ -27,14 +33,16 @@ let
|
|||
};
|
||||
|
||||
contents = lib.mkOption {
|
||||
type = with lib.types; attrsOf (submodule {
|
||||
options = {
|
||||
source = lib.mkOption {
|
||||
type = types.path;
|
||||
description = "Path of the source file.";
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (submodule {
|
||||
options = {
|
||||
source = lib.mkOption {
|
||||
type = types.path;
|
||||
description = "Path of the source file.";
|
||||
};
|
||||
};
|
||||
};
|
||||
});
|
||||
});
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
|
@ -48,7 +56,14 @@ let
|
|||
};
|
||||
|
||||
repartConfig = lib.mkOption {
|
||||
type = with lib.types; attrsOf (oneOf [ str int bool (listOf str) ]);
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (oneOf [
|
||||
str
|
||||
int
|
||||
bool
|
||||
(listOf str)
|
||||
]);
|
||||
example = {
|
||||
Type = "home";
|
||||
SizeMinBytes = "512M";
|
||||
|
@ -63,10 +78,12 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
mkfsOptionsToEnv = opts: lib.mapAttrs' (fsType: options: {
|
||||
name = "SYSTEMD_REPART_MKFS_OPTIONS_${lib.toUpper fsType}";
|
||||
value = builtins.concatStringsSep " " options;
|
||||
}) opts;
|
||||
mkfsOptionsToEnv =
|
||||
opts:
|
||||
lib.mapAttrs' (fsType: options: {
|
||||
name = "SYSTEMD_REPART_MKFS_OPTIONS_${lib.toUpper fsType}";
|
||||
value = builtins.concatStringsSep " " options;
|
||||
}) opts;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
|
@ -113,7 +130,11 @@ in
|
|||
enable = lib.mkEnableOption "Image compression";
|
||||
|
||||
algorithm = lib.mkOption {
|
||||
type = lib.types.enum [ "zstd" "xz" "zstd-seekable" ];
|
||||
type = lib.types.enum [
|
||||
"zstd"
|
||||
"xz"
|
||||
"zstd-seekable"
|
||||
];
|
||||
default = "zstd";
|
||||
description = "Compression algorithm";
|
||||
};
|
||||
|
@ -159,7 +180,10 @@ in
|
|||
package = lib.mkPackageOption pkgs "systemd-repart" {
|
||||
# We use buildPackages so that repart images are built with the build
|
||||
# platform's systemd, allowing for cross-compiled systems to work.
|
||||
default = [ "buildPackages" "systemd" ];
|
||||
default = [
|
||||
"buildPackages"
|
||||
"systemd"
|
||||
];
|
||||
example = "pkgs.buildPackages.systemdMinimal.override { withCryptsetup = true; }";
|
||||
};
|
||||
|
||||
|
@ -196,7 +220,7 @@ in
|
|||
|
||||
mkfsOptions = lib.mkOption {
|
||||
type = with lib.types; attrsOf (listOf str);
|
||||
default = {};
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
vfat = [ "-S 512" "-c" ];
|
||||
|
@ -230,7 +254,8 @@ in
|
|||
|
||||
config = {
|
||||
|
||||
assertions = lib.mapAttrsToList (fileName: partitionConfig:
|
||||
assertions = lib.mapAttrsToList (
|
||||
fileName: partitionConfig:
|
||||
let
|
||||
inherit (partitionConfig) repartConfig;
|
||||
labelLength = builtins.stringLength repartConfig.Label;
|
||||
|
@ -240,52 +265,59 @@ in
|
|||
message = ''
|
||||
The partition label '${repartConfig.Label}'
|
||||
defined for '${fileName}' is ${toString labelLength} characters long,
|
||||
but the maximum label length supported by UEFI is ${toString
|
||||
GPTMaxLabelLength}.
|
||||
but the maximum label length supported by UEFI is ${toString GPTMaxLabelLength}.
|
||||
'';
|
||||
}
|
||||
) cfg.partitions;
|
||||
|
||||
warnings = lib.filter (v: v != null) (lib.mapAttrsToList (fileName: partitionConfig:
|
||||
let
|
||||
inherit (partitionConfig) repartConfig;
|
||||
suggestedMaxLabelLength = GPTMaxLabelLength - 2;
|
||||
labelLength = builtins.stringLength repartConfig.Label;
|
||||
in
|
||||
if (repartConfig ? Label && labelLength >= suggestedMaxLabelLength) then ''
|
||||
The partition label '${repartConfig.Label}'
|
||||
defined for '${fileName}' is ${toString labelLength} characters long.
|
||||
The suggested maximum label length is ${toString
|
||||
suggestedMaxLabelLength}.
|
||||
warnings = lib.filter (v: v != null) (
|
||||
lib.mapAttrsToList (
|
||||
fileName: partitionConfig:
|
||||
let
|
||||
inherit (partitionConfig) repartConfig;
|
||||
suggestedMaxLabelLength = GPTMaxLabelLength - 2;
|
||||
labelLength = builtins.stringLength repartConfig.Label;
|
||||
in
|
||||
if (repartConfig ? Label && labelLength >= suggestedMaxLabelLength) then
|
||||
''
|
||||
The partition label '${repartConfig.Label}'
|
||||
defined for '${fileName}' is ${toString labelLength} characters long.
|
||||
The suggested maximum label length is ${toString suggestedMaxLabelLength}.
|
||||
|
||||
If you use sytemd-sysupdate style A/B updates, this might
|
||||
not leave enough space to increment the version number included in
|
||||
the label in a future release. For example, if your label is
|
||||
${toString GPTMaxLabelLength} characters long (the maximum enforced by UEFI) and
|
||||
you're at version 9, you cannot increment this to 10.
|
||||
'' else null
|
||||
) cfg.partitions);
|
||||
If you use sytemd-sysupdate style A/B updates, this might
|
||||
not leave enough space to increment the version number included in
|
||||
the label in a future release. For example, if your label is
|
||||
${toString GPTMaxLabelLength} characters long (the maximum enforced by UEFI) and
|
||||
you're at version 9, you cannot increment this to 10.
|
||||
''
|
||||
else
|
||||
null
|
||||
) cfg.partitions
|
||||
);
|
||||
|
||||
image.repart =
|
||||
let
|
||||
version = config.image.repart.version;
|
||||
versionInfix = if version != null then "_${version}" else "";
|
||||
compressionSuffix = lib.optionalString cfg.compression.enable
|
||||
{
|
||||
"zstd" = ".zst";
|
||||
"xz" = ".xz";
|
||||
"zstd-seekable" = ".zst";
|
||||
}."${cfg.compression.algorithm}";
|
||||
compressionSuffix =
|
||||
lib.optionalString cfg.compression.enable
|
||||
{
|
||||
"zstd" = ".zst";
|
||||
"xz" = ".xz";
|
||||
"zstd-seekable" = ".zst";
|
||||
}
|
||||
."${cfg.compression.algorithm}";
|
||||
|
||||
makeClosure = paths: pkgs.closureInfo { rootPaths = paths; };
|
||||
|
||||
# Add the closure of the provided Nix store paths to cfg.partitions so
|
||||
# that amend-repart-definitions.py can read it.
|
||||
addClosure = _name: partitionConfig: partitionConfig // (
|
||||
lib.optionalAttrs
|
||||
(partitionConfig.storePaths or [ ] != [ ])
|
||||
{ closure = "${makeClosure partitionConfig.storePaths}/store-paths"; }
|
||||
);
|
||||
addClosure =
|
||||
_name: partitionConfig:
|
||||
partitionConfig
|
||||
// (lib.optionalAttrs (partitionConfig.storePaths or [ ] != [ ]) {
|
||||
closure = "${makeClosure partitionConfig.storePaths}/store-paths";
|
||||
});
|
||||
in
|
||||
{
|
||||
name = lib.mkIf (config.system.image.id != null) (lib.mkOptionDefault config.system.image.id);
|
||||
|
@ -296,11 +328,14 @@ in
|
|||
# Generally default to slightly faster than default compression
|
||||
# levels under the assumption that most of the building will be done
|
||||
# for development and release builds will be customized.
|
||||
level = lib.mkOptionDefault {
|
||||
"zstd" = 3;
|
||||
"xz" = 3;
|
||||
"zstd-seekable" = 3;
|
||||
}."${cfg.compression.algorithm}";
|
||||
level =
|
||||
lib.mkOptionDefault
|
||||
{
|
||||
"zstd" = 3;
|
||||
"xz" = 3;
|
||||
"zstd-seekable" = 3;
|
||||
}
|
||||
."${cfg.compression.algorithm}";
|
||||
};
|
||||
|
||||
finalPartitions = lib.mapAttrs addClosure cfg.partitions;
|
||||
|
@ -308,27 +343,37 @@ in
|
|||
|
||||
system.build.image =
|
||||
let
|
||||
fileSystems = lib.filter
|
||||
(f: f != null)
|
||||
(lib.mapAttrsToList (_n: v: v.repartConfig.Format or null) cfg.partitions);
|
||||
|
||||
fileSystems = lib.filter (f: f != null) (
|
||||
lib.mapAttrsToList (_n: v: v.repartConfig.Format or null) cfg.partitions
|
||||
);
|
||||
|
||||
format = pkgs.formats.ini { listsAsDuplicateKeys = true; };
|
||||
|
||||
definitionsDirectory = utils.systemdUtils.lib.definitions
|
||||
"repart.d"
|
||||
format
|
||||
(lib.mapAttrs (_n: v: { Partition = v.repartConfig; }) cfg.finalPartitions);
|
||||
definitionsDirectory = utils.systemdUtils.lib.definitions "repart.d" format (
|
||||
lib.mapAttrs (_n: v: { Partition = v.repartConfig; }) cfg.finalPartitions
|
||||
);
|
||||
|
||||
mkfsEnv = mkfsOptionsToEnv cfg.mkfsOptions;
|
||||
in
|
||||
pkgs.callPackage ./repart-image.nix {
|
||||
systemd = cfg.package;
|
||||
inherit (cfg) name version imageFileBasename compression split seed sectorSize finalPartitions;
|
||||
inherit (cfg)
|
||||
name
|
||||
version
|
||||
imageFileBasename
|
||||
compression
|
||||
split
|
||||
seed
|
||||
sectorSize
|
||||
finalPartitions
|
||||
;
|
||||
inherit fileSystems definitionsDirectory mkfsEnv;
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ nikstur willibutz ];
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
nikstur
|
||||
willibutz
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue