...with some basic optional persistence and without having to rebuild images for every app nix run -f . pkgs.uvms -- --persist-home librewolf alacritty --run librewolf --run alacritty
56 lines
1 KiB
Nix
56 lines
1 KiB
Nix
{
|
|
lib,
|
|
symlinkJoin,
|
|
writers,
|
|
writeClosure,
|
|
replaceVars,
|
|
bubblewrap,
|
|
cloud-hypervisor-gpu,
|
|
crosvm,
|
|
effective-cloud-hypervisor ? cloud-hypervisor-gpu,
|
|
execline,
|
|
s6,
|
|
strace,
|
|
util-linux,
|
|
virtiofsd,
|
|
|
|
taps,
|
|
baseImage,
|
|
}:
|
|
|
|
let
|
|
tools = map lib.getBin [
|
|
execline
|
|
s6
|
|
effective-cloud-hypervisor
|
|
virtiofsd
|
|
bubblewrap
|
|
strace
|
|
crosvm
|
|
taps
|
|
util-linux
|
|
];
|
|
toolsFarm = symlinkJoin {
|
|
name = "tools";
|
|
paths = tools;
|
|
};
|
|
toolsClosure = writeClosure toolsFarm;
|
|
in
|
|
writers.writePython3Bin "uvms" { } (
|
|
replaceVars ./uvms.py {
|
|
BWRAP = "${lib.getExe bubblewrap}";
|
|
TOOLS = "${toolsFarm}/bin";
|
|
TOOLS_CLOSURE = toolsClosure;
|
|
CROSVM = lib.getExe crosvm;
|
|
STRACE = lib.getExe strace;
|
|
TAPS = "${lib.getExe taps}";
|
|
VIRTIOFSD = "${lib.getExe virtiofsd}";
|
|
|
|
BASE_CONFIG = baseImage.config.system.build.ch;
|
|
SYSTEM = baseImage.config.system.build.toplevel;
|
|
SYSTEM_CLOSURE = writeClosure [
|
|
baseImage.config.system.build.toplevel
|
|
baseImage.config.system.build.ch
|
|
];
|
|
}
|
|
)
|