nixpkgs/nixos/lib
Graham Christensen 5d0154f812 nixos/make-zfs-image: init
This is a private interface for internal NixOS  use. It is similar
to `make-disk-image` except it is much more opinionated about what
kind of disk image it'll make.

Specifically, it will always create *two* disks:

1. a `boot` disk formatted with FAT in a hybrid GPT mode.
2. a `root` disk which is completely owned by a single zpool.

The partitioning and FAT decisions should make the resulting images
bootable under EFI or BIOS, with systemd-boot or grub.

The root disk's zpools options are highly customizable, including
fully customizable datasets and their options.

Because the boot disk and partition are highly opinionated, it is
expected that the `boot` disk will be mounted at `/boot`. It is
always labeled ESP even on BIOS boot systems.

In order for the datasets to be mounted properly, the `datasets`
passed in to `make-zfs-image` are turned in to NixOS configuration
stored at /etc/nixos/configuration.nix inside the VM.
NOTE: The function accepts a system configuration in the `config`
argument. The *caller* must manually configure the system
in `config` to have each specified `dataset` be represented
by a corresponding `fileSystems` entry.

One way to test the resulting images is with qemu:

```sh
boot=$(find ./result/ -name '*.boot.*');
root=$(find ./result/ -name '*.root.*');

echo '`Ctrl-a h` to get help on the monitor';
echo '`Ctrl-a x` to exit';

qemu-kvm \
    -nographic \
    -cpu max \
    -m 16G \
    -drive file=$boot,snapshot=on,index=0,media=disk \
    -drive file=$root,snapshot=on,index=1,media=disk \
    -boot c \
    -net user \
    -net nic \
    -msg timestamp=on
```

(cherry picked from commit 076f6e2d948259e18ddac8e562c62b5b53de9fe6)
2021-09-13 16:20:46 +00:00
..
make-options-doc nixosOptionsDoc: add markdown formatting 2021-04-13 10:10:40 -07:00
test-driver nixos/tests/test-driver: make it clear when shell is ready 2021-06-03 09:49:17 +00:00
build-vms.nix nixosTest: Force system.nixos.revision constant 2021-06-21 20:41:47 +00:00
eval-config.nix Merge pull request #51850 from roberth/nixos-pure 2020-08-24 04:29:37 +02:00
from-env.nix Move all of NixOS to nixos/ in preparation of the repository merge 2013-10-10 13:28:20 +02:00
make-channel.nix Remove incorrect sentence from make-channel comment 2018-11-04 20:45:49 +01:00
make-disk-image.nix Merge pull request #120489 from samueldr/fix/make-disk-image-auto-size 2021-04-26 10:34:15 +02:00
make-ext4-fs.nix nixos/lib/make-ext4-fs: Fix: `resize2fs -M' can leave insufficient slack 2021-06-01 04:58:07 +00:00
make-iso9660-image.nix nixos: use nativeBuildInputs in make- iso9660-image and system-tarball 2020-11-18 14:05:30 +01:00
make-iso9660-image.sh make-iso9660-image: produce stable GPT disk GUID 2020-07-20 11:16:59 +02:00
make-squashfs.nix squashfs: use -no-hardlinks for reproducible squashfs images (#114454) 2021-02-28 18:03:50 +00:00
make-system-tarball.nix nixos: use nativeBuildInputs in make- iso9660-image and system-tarball 2020-11-18 14:05:30 +01:00
make-system-tarball.sh use closure-info for building system tarball 2018-11-07 12:52:53 +08:00
make-zfs-image.nix nixos/make-zfs-image: init 2021-09-13 16:20:46 +00:00
qemu-flags.nix nixos/qemu-flags: add ppc64 2021-03-05 01:57:54 -08:00
testing-python.nix nixos/testing: add interactive serial stdout logs switch and dim them 2021-05-14 20:36:00 -04:00
utils.nix nixos/{containers,cri-o,podman}: move copyFile to nixos/lib/utils 2020-09-24 10:01:47 +10:00