1251 Commits

Author SHA1 Message Date
Andrew Marshall
feeb365e31 module: Expose tests.bootCommands
Useful for e.g. interactive input during VM boot.
2024-11-20 07:19:25 +01:00
mergify[bot]
b1aa08f8ce Merge branch 'master' into feature/zfs-vdev-types 2024-11-20 06:17:47 +00:00
carschandler
da52cf4020 Add explanatory comment to examples/zfs-over-legacy.nix (#886) 2024-11-19 16:38:19 +01:00
Michon van Dooren
92ad678418 Add examples for all special zpool vdev types 2024-11-18 22:50:10 +01:00
Michon van Dooren
caad548415 Make vdev sort only move empty modes to the start 2024-11-18 22:49:51 +01:00
github-actions[bot]
639d1520df flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/aebe249544837ce42588aa4b2e7972222ba12e8f?narHash=sha256-vmLS8%2Bx%2BgHRv1yzj3n%2BGTAEObwmhxmkkukB2DwtJRdU%3D' (2024-11-10)
  → 'github:NixOS/nixpkgs/c69a9bffbecde46b4b939465422ddc59493d3e4d?narHash=sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk%3D' (2024-11-16)
2024-11-18 02:00:10 +00:00
Michon van Dooren
d192ffd944 Fix zpool create for disk vdev after mirror vdev
A config like

```nix
{
  vdev = [
    {
      mode = "mirror";
      members = [ "data1" "data2" ];
    }
    {
      members = [ "data3" ];
    }
  ];
}
```

would result in the following command:

```shell
zpool create -f <name> mirror /dev/data1 /dev/data2 /dev/data3
```

which would result in a single vdev with a 3-way mirror, rather than a
vdev with a 2-way mirror and a second vdev with a single disk. By
reordering the vdevs to handle those with an empty mode first we
transform this into:

```shell
zpool create -f <name> /dev/data3 mirror /dev/data1 /dev/data2
```

which does have the desired outcome.
2024-11-18 01:33:49 +01:00
Michon van Dooren
6a472cc248 Fix zpool create with > 1 log/dedup/special vdev
The type keyword was included before every vdev:

```shell
zpool create -f <name> /dev/sda log mirror /dev/sdb /dev/sdc log mirror /dev/sdd /dev/sde
```

but this is incorrect and should instead be:

```shell
zpool create -f <name> /dev/sda log mirror /dev/sdb /dev/sdc mirror /dev/sdd /dev/sde
```
2024-11-17 22:19:33 +01:00
Michon van Dooren
9b56c1afdb Add support for ZFS spare, log & dedup vdevs 2024-11-17 15:52:28 +01:00
Felix Uhl
cb64993826 cli: Fix "attribute missing" error when using flake
The final config's attributes have different names than those defined in
./default.nix, so this failed previously.
2024-11-16 08:40:38 +00:00
Felix Uhl
eaa51560df cli: Show error if flake's disko is incompatible
Fixes #871

Previously, if a user used v2.10.0 (currently unreleased master), an
error like this would be displayed:

    error: attribute '_cliDestroyFormatMount' missing
       at /nix/store/fbqgaij9d3b373rq1iav5glzr4dy77qf-disko/share/disko/cli.nix:73:7:
           72|     else if (lib.traceValSeq hasDiskoModuleFlake) then
           73|       (builtins.getFlake flake).nixosConfigurations.${flakeAttr}.config.system.build.${diskoAttr}
             |       ^
           74|     else

This situation now produces a more helpful error:

    Error: Attribute `nixosConfigurations.testmachine.config.system.build._cliDestroyFormatMount`
           not found in flake `/home/felix/repos-new/disko`!
           This is probably caused by the locked version of disko in the flake
           being different from the version of disko you executed.
    EITHER set the `disko` input of your flake to `github:nix-community/disko/latest`,
           run `nix flake update disko` in the flake directory and then try again,
    OR run `nix run github:nix-community/disko/v1.9.0 -- --help` and use one of its modes.
2024-11-16 08:40:38 +00:00
Felix Uhl
9f97bd0995 lib: Fix jsonTypes evaluation
This will be very useful for generating documentation.

Backported from a5c646bd93c956d41d532dce4c8ff95573c3d2a0 for #789
2024-11-16 08:21:10 +00:00
github-actions[bot]
5fd852c415 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/85f7e662eda4fa3a995556527c87b2524b691933?narHash=sha256-JwQZIGSYnRNOgDDoIgqKITrPVil%2BRMWHsZH1eE1VGN0%3D' (2024-11-07)
  → 'github:NixOS/nixpkgs/aebe249544837ce42588aa4b2e7972222ba12e8f?narHash=sha256-vmLS8%2Bx%2BgHRv1yzj3n%2BGTAEObwmhxmkkukB2DwtJRdU%3D' (2024-11-10)
2024-11-14 01:51:52 +00:00
Felix Uhl
9c7de5582e destroy: Fix shellcheck warning in nixos 24.05
Regression introduced in 94bc0f5bb0,
because I developed against unstable, which has
https://github.com/NixOS/nixpkgs/pull/333744 merged, while 24.05
doesn't.

Partly shellchecks mistake, see
https://github.com/koalaman/shellcheck/issues/2891 but whatever, we
can't do much more about it than ignore the warning.

Fixes #868
2024-11-13 23:20:40 +01:00
Jörg Thalheim
486250f404 Merge pull request #869 from nix-community/fix-legacy-command-cli
cli: Fix legacy aliases
2024-11-10 22:31:31 +01:00
Felix Uhl
7d4cbcd235 cli: Fix legacy aliases
Fixes regression introduced in daca7be309
that would cause the following behavior:

    $ ./disko --mode disko --dry-run example/simple-efi.nix
    /nix/store/syiv3fhzd7ar2nk5pbh56gswcs4fzvxs-disko/bin/*

Now, it returns the correct script path again:

    $ ./disko --mode disko --dry-run example/simple-efi.nix
    /nix/store/syiv3fhzd7ar2nk5pbh56gswcs4fzvxs-disko
2024-11-10 15:27:36 +01:00
Jörg Thalheim
5e40e02978 Merge pull request #761 from nix-community/update_flake_lock_action
flake.lock: Update
2024-11-08 11:14:24 +01:00
Jörg Thalheim
6bfa3a18d4 tests/interactive-cryptsetup: make waiting for passphrase more robust 2024-11-08 11:07:09 +01:00
github-actions[bot]
21b2de0a20 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b833ff01a0d694b910daca6e2ff4a3f26dee478c?narHash=sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w%2BROpMfuw%3D' (2024-09-01)
  → 'github:NixOS/nixpkgs/85f7e662eda4fa3a995556527c87b2524b691933?narHash=sha256-JwQZIGSYnRNOgDDoIgqKITrPVil%2BRMWHsZH1eE1VGN0%3D' (2024-11-07)
2024-11-08 08:44:00 +01:00
Jörg Thalheim
a8bdb16b47 tests/disko-install: fix eval 2024-11-08 08:38:31 +01:00
Jörg Thalheim
051ff61420 Merge pull request #864 from nix-community/offline-installer
fix offline installation
2024-11-08 08:35:22 +01:00
Jörg Thalheim
dd3d2a5e93 fix offline installation 2024-11-08 08:33:11 +01:00
Jörg Thalheim
60d4914b98 Merge pull request #842 from nix-community/write-scripts-to-bin-dir
outputs: make compatible with nix run and package lists
2024-11-08 06:57:04 +01:00
raexera
f3f8254fcc docs: fix inconsistent disko-install cmd 2024-11-08 00:35:09 +00:00
Felix Uhl
3fc91a7576 outputs: Deprecate all unused outputs
I believe that people are either using disko through the flake or via
nixpkgs. In both cases, the `default.nix` file contains a lot of outputs
that are not needed.

Adding scary error messages with a call to action like this should help
confirm or deny this theory.
2024-11-06 21:16:18 +01:00
Felix Uhl
94bc0f5bb0 mode destroy: Add confirmation dialogue
The new confirmation dialogue is only shown for the new outputs
introduced in the previous commits. The existing outputs do not change
behavior to keep backwards compatibility.

Fixes #725
2024-11-06 21:16:18 +01:00
Felix Uhl
daca7be309 outputs: make compatible with nix run and package lists
This adds new outpus like `format` and `formatNoDeps` which
are compatible with `nix run` so you can do something like

    nix run .#nixosConfigurations.myhostname.config.system.build.formatNoDeps

as originally intended in #78, or add disko to your configuration like

    environment.systemPackages = [
        config.system.build.format
        config.system.build.mount
        config.system.build.destroyFormatMount
    ];

as mentioned in #454.

Fixes part of #454
Supersedes #78

It also deprecates mode `disko` in favor of the clearer
`destroy,format,mount` and adds `format,mount` to allow easier in-place
updates.
2024-11-06 21:16:18 +01:00
Felix Uhl
856a290215 docs: Remove non-existing flag
Oversight from d106aa7a3d2857e38c6122a32879a9cb158f7d16
2024-11-04 20:24:33 +00:00
Pablo Ovelleiro Corral
380847d94f Add kmod to dependencies
Fixes #857
2024-11-04 00:11:01 +01:00
Andrew Marshall
3979285062 treewide: Fix using pkgs.{build,host}Platform alias
This was recently changed in nixpkgs to be an alias; if nixpkgs is
configured to disable aliases, this usage will fail.
2024-10-29 09:32:41 +01:00
Felix Uhl
0e55423bf8 release: reset released flag 2024-10-28 18:08:12 +01:00
Felix Uhl
ab58501b23 release: v1.9.0 2024-10-28 18:08:12 +01:00
Paul Haerle
3163b2724c Merge pull request #851 from nix-community/fix-eval-error-unexpected-argument-customQemu
disk-image: Fix "unexpected argument 'customQemu'" eval error
2024-10-28 15:17:58 +01:00
Felix Uhl
bba79f6b5e disk-image: Fix "unexpected argument 'customQemu'" eval error
Previously, an error like

    error: function 'anonymous lambda' called with unexpected argument 'customQemu'

    at /nix/store/lbqj1cndic4121whnx8xm0jgb1c8x4xx-source/pkgs/build-support/vm/default.nix:1:1:

was printed when trying to evaluate `config.system.build.vmWithDisko` or
`config.system.build.diskoImagesScript` with nixpkgs 24.05 (and below).

This argument was added in
65c851cd75,
so technically the minimum version is 24.11.20240708.65c851c. However,
`versionAtLeast` only compares versions alphabetically, so the comparison's
result will be incorrect for other commits made on the same day.

Instead, we compare against 24.11.20240709, which is the next day.
This means this function returns false for some commits that DO support the
customQemu argument, but if it returns true, we can be 100% certain that this
is correct, and we can pass the customQemu argument to vmTools without an
evaluation error.

Fixes #850
2024-10-28 14:38:07 +01:00
iFreilicht
89e458a3bb UX: be specific if disko-install failed or succeeded (#847)
UX: be specific if disko-install failed or succeeded

* Output success message to stdout

Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2024-10-27 16:12:03 +00:00
DavHau
58cd832497 lvm_vg: fix size=100% leading to crash
lvcreate -l does not accept a '100%' parameter which currently leads to a crash. THis change automatically changes `100%` to `100%FREE` leading to the intended behavior.
2024-10-26 11:42:42 +00:00
phaer
09a776702b fix: avoid calling splitString ""...
because it breaks evaluation on darwin with at least nix 2.18.

Evaluating `lib.splitString "" "foo"` throws the following:
`error: invalid regular expression ''`.

We could avoid that by using lib.stringToCharacters, but as
we are mapping over it anyway, lib.stringAsChars seems to be
an even better fit.

I tested the examples in hexEscapeUdevSymlinks docstring manually
in a nix repl.
2024-10-23 19:46:38 +00:00
Felix Uhl
4be2aadf13 lib: use lib.escapeShellArg for concatenated paths 2024-10-22 09:10:08 +00:00
Felix Uhl
ca47da60e5 disko: fix improper handling of whitespace
Fixes #130

This should fix pretty much all cases where spaces or other special
characters would break disko due to improper quoting. I searched for all
instances of '.label', '.device' and '.name', so I believe I caught
whatever I could.

In some cases I changed single quotes to double quotes for consistency.

I know we don't usually fix bugs in the legacy table type, but it was so
easy I couldn't resist.
2024-10-22 09:10:08 +00:00
Chris Scutcher
78d685c123 tests: Add failing test to demonstrate issues with whitespace in part names
Reproduces #130.

For new style table the generated script has a few problems for example;

```sh
    sgdisk \
      --new=2:0:+100M \
      --change-name=2:disk-vdb-name with spaces \
      --typecode=2:EF00 \
      /dev/vdb
```

and

```sh
mkfs.vfat \
         \
        /dev/disk/by-partlabel/disk-vdb-name with spaces
```

Legacy table style generates slightly different problems e.g.;

```sh
parted -s /dev/vdb -- mkpart name with spaces  1MiB 100MiB
```
2024-10-22 09:10:08 +00:00
Felix Uhl
a6a3179ddf cli: stop using system dependencies in destroy step
re-applying 15aa78e9a5 because I
accidentally overwrote it in 15aa78e9a5.
2024-10-18 21:59:08 +02:00
Felix Uhl
d7d57edb72 docs: Add docs for contributors
Fixes #334
2024-10-16 17:27:36 +00:00
Felix Uhl
15aa78e9a5 lib: Remove global with lib;
This is generally regarded as a code-smell. I did utilize `with lib;`
in some places where I felt it aided readability, but it's very clearly
scoped in those situations.

See https://github.com/nix-community/disko/pull/835#issuecomment-2416126497
2024-10-16 17:17:32 +00:00
Felix Uhl
dcabccaad6 swap: fix partition type
Fixes #391
2024-10-16 17:05:43 +00:00
Felix Uhl
c8760cee70 cli: stop using system dependencies in destroy step
Fixes #815
2024-10-16 09:22:47 +00:00
Felix Uhl
9ab6ae4e63 disko-install: make output deterministic
Fixes #827
2024-10-15 16:36:09 +00:00
qbisi
3b778f10eb docs: add docs on how to use imageName in disk type. 2024-10-14 16:16:13 +00:00
qbisi
ef408f7f9a options: add imageName option to disk type.
For disk type, option name used in disk partlabel
naming should be short. While setting a specialized
option imageName allow us to create image with long name
without side-effects.
2024-10-14 16:16:13 +00:00
qbisi
9938afb435 options: make extraPostVM mergable. 2024-10-14 16:16:13 +00:00
Felix Uhl
3b2e19fe7c disko cli: fix misleading error message
Found this while trying to repro #523
2024-10-14 10:36:55 +00:00