pkgs.writeErofsLayers,profiles/ch-runner: MVE
$ nix-build -A examples.dummy.config.debug.closure.erofs.list | xargs cat | xargs du -h 749M /nix/store/bzfv5x6lycq6hzhjv6d6vlk1q8fdg9di-base0.erofs 24M /nix/store/hp41jfq36y0mmjrzqilyh3jfsvqic3kb-nixos.erofs $ nix run -f . examples.dummy.config.uvms.cloud-hypervisor.runner ... <<< Welcome to NixOS 25.11pre-git (x86_64) - ttyS0 >>> nixos login: The definition of the `pkgs` fixpoint was moved to pkgs/default.nix. For that, dirToAttrs was moved to lib/, imported ad hoc
This commit is contained in:
parent
1828835a1d
commit
28d3f89ad4
12 changed files with 428 additions and 77 deletions
85
profiles/debug-closure.nix
Normal file
85
profiles/debug-closure.nix
Normal file
|
@ -0,0 +1,85 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.debug.closure;
|
||||
inherit (lib.types) package;
|
||||
inherit (config.system.build) toplevel;
|
||||
|
||||
ps = pkgs.callPackage ../pkgs { };
|
||||
inherit (ps) writeErofsLayers;
|
||||
emptySystem = import (pkgs.path + "/nixos/lib/eval-config.nix") {
|
||||
modules = [
|
||||
(modulesPath + "/profiles/minimal.nix")
|
||||
{
|
||||
system.stateVersion = config.system.stateVersion;
|
||||
fileSystems."/".fsType = "tmpfs";
|
||||
boot.loader.grub.enable = false;
|
||||
networking.hostName = "base";
|
||||
networking.nftables.enable = true;
|
||||
networking.useNetworkd = true;
|
||||
systemd.network.enable = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
options.debug.closure = {
|
||||
info = lib.mkOption {
|
||||
type = package;
|
||||
description = "closureInfo { rootPaths = [ toplevel ]; }";
|
||||
};
|
||||
write = lib.mkOption {
|
||||
type = package;
|
||||
description = "writeClosure [ toplevel ]";
|
||||
};
|
||||
extraLayers = lib.mkOption {
|
||||
type = lib.types.listOf package;
|
||||
description = "Roots from which to generate `erofs.layers`";
|
||||
defaultText = ''
|
||||
[
|
||||
(nixosSystem { modules = [ ]; }).config.system.build.toplevel
|
||||
# implicitly appended: config.system.build.toplevel
|
||||
]
|
||||
'';
|
||||
};
|
||||
erofs.layers = lib.mkOption {
|
||||
type = lib.types.listOf package;
|
||||
description = "writeErofs [ ... ]";
|
||||
readOnly = true;
|
||||
};
|
||||
erofs.list = lib.mkOption {
|
||||
type = package;
|
||||
description = "writeClosure [ (writeErofs [ ... ])... ]";
|
||||
};
|
||||
};
|
||||
config.debug.closure = {
|
||||
info = pkgs.closureInfo { rootPaths = [ toplevel ]; };
|
||||
write = pkgs.writeClosure [ toplevel ];
|
||||
|
||||
erofs.list =
|
||||
pkgs.runCommand "layers"
|
||||
{
|
||||
__structuredAttrs = true;
|
||||
inherit (cfg.erofs) layers;
|
||||
}
|
||||
''
|
||||
printf "%s\n" "''${layers[@]}" > "$out"
|
||||
'';
|
||||
extraLayers = lib.mkMerge [
|
||||
(lib.mkBefore [ emptySystem.config.system.build.toplevel ])
|
||||
# (lib.mkAfter [config.system.build.toplevel])
|
||||
];
|
||||
erofs.layers = writeErofsLayers {
|
||||
layers = cfg.extraLayers ++ [
|
||||
toplevel
|
||||
];
|
||||
labelUpper = config.networking.hostName;
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue