57 lines
1.2 KiB
Nix
57 lines
1.2 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf;
|
|
cfg = config.wsl;
|
|
in {
|
|
config = mkIf cfg.enable {
|
|
system.build.tarballBuilderExt = pkgs.writeShellApplication {
|
|
name = "nixos-wsl-tarball-builder-ext";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
coreutils
|
|
gnutar
|
|
zstd
|
|
nixos-install-tools
|
|
config.nix.package
|
|
];
|
|
|
|
text = ''
|
|
if ! [ $EUID -eq 0 ]; then
|
|
echo "This script must be run as root!"
|
|
exit 1
|
|
fi
|
|
|
|
out=''${1:-nixos-wsl.tar.zst}
|
|
|
|
root=$(mktemp -p "''${TMPDIR:-/tmp}" -d nixos-wsl-tarball.XXXXXXXXXX)
|
|
# FIXME: fails in CI for some reason, but we don't really care because it's CI
|
|
trap 'rm -rf "$root" || true' INT TERM EXIT
|
|
|
|
chmod o+rx "$root"
|
|
|
|
echo "[NixOS-WSL] Installing..."
|
|
nixos-install \
|
|
--root "$root" \
|
|
--no-root-passwd \
|
|
--system ${config.system.build.toplevel} \
|
|
--substituters ""
|
|
|
|
echo "[NixOS-WSL] Compressing..."
|
|
tar -C "$root" \
|
|
-cz \
|
|
--sort=name \
|
|
--mtime='@1' \
|
|
--owner=0 \
|
|
--group=0 \
|
|
--numeric-owner \
|
|
. \
|
|
> "$out"
|
|
'';
|
|
};
|
|
};
|
|
}
|