Merge master into staging-next
This commit is contained in:
@@ -1344,6 +1344,12 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
||||
that makes it unsuitable to be a default app.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
If you want to manage the configuration of <package>wpa_supplicant</package> outside of NixOS you must ensure that none of <xref linkend="opt-networking.wireless.networks" />, <xref linkend="opt-networking.wireless.extraConfig" /> or <xref linkend="opt-networking.wireless.userControlled.enable" /> is being used or <literal>true</literal>.
|
||||
Using any of those options will cause <package>wpa_supplicant</package> to be started with a NixOS generated configuration file instead of your own.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ let
|
||||
# the initial RAM disk.
|
||||
initialRamdisk = pkgs.makeInitrd {
|
||||
name = "initrd-${kernel-name}";
|
||||
inherit (config.boot.initrd) compressor prepend;
|
||||
inherit (config.boot.initrd) compressor compressorArgs prepend;
|
||||
|
||||
contents =
|
||||
[ { object = bootStage1;
|
||||
@@ -334,7 +334,9 @@ let
|
||||
|
||||
# Script to add secret files to the initrd at bootloader update time
|
||||
initialRamdiskSecretAppender =
|
||||
pkgs.writeScriptBin "append-initrd-secrets"
|
||||
let
|
||||
compressorExe = initialRamdisk.compressorExecutableFunction pkgs;
|
||||
in pkgs.writeScriptBin "append-initrd-secrets"
|
||||
''
|
||||
#!${pkgs.bash}/bin/bash -e
|
||||
function usage {
|
||||
@@ -376,7 +378,7 @@ let
|
||||
}
|
||||
|
||||
(cd "$tmp" && find . -print0 | sort -z | cpio -o -H newc -R +0:+0 --reproducible --null) | \
|
||||
${config.boot.initrd.compressor} >> "$1"
|
||||
${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
|
||||
'';
|
||||
|
||||
in
|
||||
@@ -511,13 +513,28 @@ in
|
||||
};
|
||||
|
||||
boot.initrd.compressor = mkOption {
|
||||
internal = true;
|
||||
default = "gzip -9n";
|
||||
type = types.str;
|
||||
description = "The compressor to use on the initrd image.";
|
||||
default = "gzip";
|
||||
type = types.unspecified; # We don't have a function type...
|
||||
description = ''
|
||||
The compressor to use on the initrd image. May be any of:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>The name of one of the predefined compressors, see <filename>pkgs/build-support/kernel/initrd-compressor-meta.nix</filename> for the definitions.</para></listitem>
|
||||
<listitem><para>A function which, given the nixpkgs package set, returns the path to a compressor tool, e.g. <literal>pkgs: "''${pkgs.pigz}/bin/pigz"</literal></para></listitem>
|
||||
<listitem><para>(not recommended, because it does not work when cross-compiling) the full path to a compressor tool, e.g. <literal>"''${pkgs.pigz}/bin/pigz"</literal></para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
The given program should read data from stdin and write it to stdout compressed.
|
||||
'';
|
||||
example = "xz";
|
||||
};
|
||||
|
||||
boot.initrd.compressorArgs = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr (types.listOf types.str);
|
||||
description = "Arguments to pass to the compressor for the initrd image, or null to use the compressor's defaults.";
|
||||
};
|
||||
|
||||
boot.initrd.secrets = mkOption
|
||||
{ default = {};
|
||||
type = types.attrsOf (types.nullOr types.path);
|
||||
|
||||
@@ -168,6 +168,7 @@ in
|
||||
initrd-network-openvpn = handleTest ./initrd-network-openvpn {};
|
||||
initrd-network-ssh = handleTest ./initrd-network-ssh {};
|
||||
initrdNetwork = handleTest ./initrd-network.nix {};
|
||||
initrd-secrets = handleTest ./initrd-secrets.nix {};
|
||||
installer = handleTest ./installer.nix {};
|
||||
iodine = handleTest ./iodine.nix {};
|
||||
ipfs = handleTest ./ipfs.nix {};
|
||||
@@ -411,6 +412,7 @@ in
|
||||
xterm = handleTest ./xterm.nix {};
|
||||
yabar = handleTest ./yabar.nix {};
|
||||
yggdrasil = handleTest ./yggdrasil.nix {};
|
||||
yq = handleTest ./yq.nix {};
|
||||
zfs = handleTest ./zfs.nix {};
|
||||
zigbee2mqtt = handleTest ./zigbee2mqtt.nix {};
|
||||
zoneminder = handleTest ./zoneminder.nix {};
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, config ? {}
|
||||
, pkgs ? import ../.. { inherit system config; }
|
||||
, lib ? pkgs.lib
|
||||
, testing ? import ../lib/testing-python.nix { inherit system pkgs; }
|
||||
}:
|
||||
let
|
||||
secretInStore = pkgs.writeText "topsecret" "iamasecret";
|
||||
testWithCompressor = compressor: testing.makeTest {
|
||||
name = "initrd-secrets-${compressor}";
|
||||
|
||||
meta.maintainers = [ lib.maintainers.lheckemann ];
|
||||
|
||||
machine = { ... }: {
|
||||
virtualisation.useBootLoader = true;
|
||||
boot.initrd.secrets."/test" = secretInStore;
|
||||
boot.initrd.postMountCommands = ''
|
||||
cp /test /mnt-root/secret-from-initramfs
|
||||
'';
|
||||
boot.initrd.compressor = compressor;
|
||||
# zstd compression is only supported from 5.9 onwards. Remove when 5.10 becomes default.
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"cmp ${secretInStore} /secret-from-initramfs"
|
||||
)
|
||||
'';
|
||||
};
|
||||
in lib.flip lib.genAttrs testWithCompressor [
|
||||
"cat" "gzip" "bzip2" "xz" "lzma" "lzop" "pigz" "pixz" "zstd"
|
||||
]
|
||||
@@ -0,0 +1,12 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "yq";
|
||||
meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ nequissimus ]; };
|
||||
|
||||
nodes.yq = { pkgs, ... }: { environment.systemPackages = with pkgs; [ jq yq ]; };
|
||||
|
||||
testScript = ''
|
||||
assert "hello:\n foo: bar\n" in yq.succeed(
|
||||
'echo \'{"hello":{"foo":"bar"}}\' | yq -y .'
|
||||
)
|
||||
'';
|
||||
})
|
||||
Reference in New Issue
Block a user