nixVersions.stable: 2.15 -> 2.17
[NixPkgs.git] / nixos / tests / initrd-secrets.nix
blob0f3f83b0904e36a859b6b006e2424984b65810c0
1 { system ? builtins.currentSystem
2 , config ? {}
3 , pkgs ? import ../.. { inherit system config; }
4 , lib ? pkgs.lib
5 , testing ? import ../lib/testing-python.nix { inherit system pkgs; }
6 }:
7 let
8   secretInStore = pkgs.writeText "topsecret" "iamasecret";
9   testWithCompressor = compressor: testing.makeTest {
10     name = "initrd-secrets-${compressor}";
12     meta.maintainers = [ lib.maintainers.lheckemann ];
14     nodes.machine = { ... }: {
15       virtualisation.useBootLoader = true;
16       boot.initrd.secrets = {
17         "/test" = secretInStore;
19         # This should *not* need to be copied in postMountCommands
20         "/run/keys/test" = secretInStore;
21       };
22       boot.initrd.postMountCommands = ''
23         cp /test /mnt-root/secret-from-initramfs
24       '';
25       boot.initrd.compressor = compressor;
26       # zstd compression is only supported from 5.9 onwards. Remove when 5.10 becomes default.
27       boot.kernelPackages = pkgs.linuxPackages_latest;
28     };
30     testScript = ''
31       start_all()
32       machine.wait_for_unit("multi-user.target")
33       machine.succeed(
34           "cmp ${secretInStore} /secret-from-initramfs",
35           "cmp ${secretInStore} /run/keys/test",
36       )
37     '';
38   };
39 in lib.flip lib.genAttrs testWithCompressor [
40   "cat" "gzip" "bzip2" "xz" "lzma" "lzop" "pigz" "pixz" "zstd"