summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'nixos')
-rw-r--r--nixos/doc/manual/release-notes/rl-2103.xml36
-rw-r--r--nixos/modules/hardware/device-tree.nix8
-rw-r--r--nixos/modules/installer/netboot/netboot.nix2
-rw-r--r--nixos/modules/services/misc/nix-daemon.nix8
-rw-r--r--nixos/modules/services/networking/nomad.nix25
-rw-r--r--nixos/modules/system/activation/top-level.nix2
-rw-r--r--nixos/modules/system/boot/loader/generations-dir/generations-dir.nix2
-rw-r--r--nixos/modules/system/boot/loader/grub/grub.nix22
-rw-r--r--nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix2
-rw-r--r--nixos/release.nix4
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/nomad.nix53
12 files changed, 145 insertions, 20 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml
index 94e42369b605..09455611fbae 100644
--- a/nixos/doc/manual/release-notes/rl-2103.xml
+++ b/nixos/doc/manual/release-notes/rl-2103.xml
@@ -420,6 +420,26 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
</listitem>
<listitem>
<para>
+ The attribute <varname>mpi</varname> is now consistently used to
+ provide a default, system-wide MPI implementation.
+ The default implementation is openmpi, which has been used before by
+ all derivations affects by this change.
+ Note that all packages that have used <varname>mpi ? null</varname> in the input
+ for optional MPI builds, have been changed to the boolean input paramater
+ <varname>useMpi</varname> to enable building with MPI.
+
+ Building all packages with <varname>mpich</varname> instead
+ of the default <varname>openmpi</varname> can now be achived like this:
+ <programlisting>
+self: super:
+{
+ mpi = super.mpich;
+}
+ </programlisting>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
The Searx module has been updated with the ability to configure the
service declaratively and uWSGI integration.
The option <literal>services.searx.configFile</literal> has been renamed
@@ -603,6 +623,22 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
<literal>/etc/netgroup</literal> defines network-wide groups and may affect to setups using NIS.
</para>
</listitem>
+ <listitem>
+ <para>
+ Platforms, like <varname>stdenv.hostPlatform</varname>, no longer have a <varname>platform</varname> attribute.
+ It has been (mostly) flattoned away:
+ </para>
+ <itemizedlist>
+ <listitem><para><varname>platform.gcc</varname> is now <varname>gcc</varname></para></listitem>
+ <listitem><para><literal>platform.kernel*</literal> is now <literal>linux-kernel.*</literal></para></listitem>
+ </itemizedlist>
+ <para>
+ Additionally, <varname>platform.kernelArch</varname> moved to the top level as <varname>linuxArch</varname> to match the other <literal>*Arch</literal> variables.
+ </para>
+ <para>
+ The <varname>platform</varname> grouping of these things never meant anything, and was just a historial/implementation artifact that was overdue removal.
+ </para>
+ </listitem>
</itemizedlist>
</section>
</section>
diff --git a/nixos/modules/hardware/device-tree.nix b/nixos/modules/hardware/device-tree.nix
index e0ab37bca63a..4aa1d6369d1b 100644
--- a/nixos/modules/hardware/device-tree.nix
+++ b/nixos/modules/hardware/device-tree.nix
@@ -68,11 +68,11 @@ let
patchShebangs scripts/*
substituteInPlace scripts/Makefile.lib \
--replace 'DTC_FLAGS += $(DTC_FLAGS_$(basetarget))' 'DTC_FLAGS += $(DTC_FLAGS_$(basetarget)) -@'
- make ${pkgs.stdenv.hostPlatform.platform.kernelBaseConfig} ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
- make dtbs ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
+ make ${pkgs.stdenv.hostPlatform.linux-kernel.baseConfig} ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
+ make dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
'';
installPhase = ''
- make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
+ make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
'';
};
@@ -115,7 +115,7 @@ in
options = {
hardware.deviceTree = {
enable = mkOption {
- default = pkgs.stdenv.hostPlatform.platform.kernelDTB or false;
+ default = pkgs.stdenv.hostPlatform.linux-kernel.DTB or false;
type = types.bool;
description = ''
Build device tree files. These are used to describe the
diff --git a/nixos/modules/installer/netboot/netboot.nix b/nixos/modules/installer/netboot/netboot.nix
index 95eba86bcb65..fa074fdfcc6e 100644
--- a/nixos/modules/installer/netboot/netboot.nix
+++ b/nixos/modules/installer/netboot/netboot.nix
@@ -88,7 +88,7 @@ with lib;
system.build.netbootIpxeScript = pkgs.writeTextDir "netboot.ipxe" ''
#!ipxe
- kernel ${pkgs.stdenv.hostPlatform.platform.kernelTarget} init=${config.system.build.toplevel}/init initrd=initrd ${toString config.boot.kernelParams}
+ kernel ${pkgs.stdenv.hostPlatform.linux-kernel.target} init=${config.system.build.toplevel}/init initrd=initrd ${toString config.boot.kernelParams}
initrd initrd
boot
'';
diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix
index 0eeff31d6c4d..64bdbf159d51 100644
--- a/nixos/modules/services/misc/nix-daemon.nix
+++ b/nixos/modules/services/misc/nix-daemon.nix
@@ -587,10 +587,10 @@ in
nix.systemFeatures = mkDefault (
[ "nixos-test" "benchmark" "big-parallel" "kvm" ] ++
- optionals (pkgs.hostPlatform.platform ? gcc.arch) (
- # a builder can run code for `platform.gcc.arch` and inferior architectures
- [ "gccarch-${pkgs.hostPlatform.platform.gcc.arch}" ] ++
- map (x: "gccarch-${x}") lib.systems.architectures.inferiors.${pkgs.hostPlatform.platform.gcc.arch}
+ optionals (pkgs.hostPlatform ? gcc.arch) (
+ # a builder can run code for `gcc.arch` and inferior architectures
+ [ "gccarch-${pkgs.hostPlatform.gcc.arch}" ] ++
+ map (x: "gccarch-${x}") lib.systems.architectures.inferiors.${pkgs.hostPlatform.gcc.arch}
)
);
diff --git a/nixos/modules/services/networking/nomad.nix b/nixos/modules/services/networking/nomad.nix
index e6bbb607aaaf..dafdae0c327b 100644
--- a/nixos/modules/services/networking/nomad.nix
+++ b/nixos/modules/services/networking/nomad.nix
@@ -49,12 +49,20 @@ in
'';
};
+ extraSettingsPaths = mkOption {
+ type = types.listOf types.path;
+ default = [];
+ description = ''
+ Additional settings paths used to configure nomad. These can be files or directories.
+ '';
+ example = literalExample ''
+ [ "/etc/nomad-mutable.json" "/run/keys/nomad-with-secrets.json" "/etc/nomad/config.d" ]
+ '';
+ };
+
settings = mkOption {
type = format.type;
- default = {
- # Agrees with `StateDirectory = "nomad"` set below.
- data_dir = "/var/lib/nomad";
- };
+ default = {};
description = ''
Configuration for Nomad. See the <link xlink:href="https://www.nomadproject.io/docs/configuration">documentation</link>
for supported values.
@@ -77,6 +85,11 @@ in
##### implementation
config = mkIf cfg.enable {
+ services.nomad.settings = {
+ # Agrees with `StateDirectory = "nomad"` set below.
+ data_dir = mkDefault "/var/lib/nomad";
+ };
+
environment = {
etc."nomad.json".source = format.generate "nomad.json" cfg.settings;
systemPackages = [ cfg.package ];
@@ -99,7 +112,8 @@ in
serviceConfig = {
DynamicUser = cfg.dropPrivileges;
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
- ExecStart = "${cfg.package}/bin/nomad agent -config=/etc/nomad.json";
+ ExecStart = "${cfg.package}/bin/nomad agent -config=/etc/nomad.json" +
+ concatMapStrings (path: " -config=${path}") cfg.extraSettingsPaths;
KillMode = "process";
KillSignal = "SIGINT";
LimitNOFILE = 65536;
@@ -114,6 +128,7 @@ in
} // (optionalAttrs cfg.enableDocker {
SupplementaryGroups = "docker"; # space-separated string
});
+
unitConfig = {
StartLimitIntervalSec = 10;
StartLimitBurst = 3;
diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix
index 03d7e7493230..b0f77ca3fb8d 100644
--- a/nixos/modules/system/activation/top-level.nix
+++ b/nixos/modules/system/activation/top-level.nix
@@ -190,7 +190,7 @@ in
system.boot.loader.kernelFile = mkOption {
internal = true;
- default = pkgs.stdenv.hostPlatform.platform.kernelTarget;
+ default = pkgs.stdenv.hostPlatform.linux-kernel.target;
type = types.str;
description = ''
Name of the kernel file to be passed to the bootloader.
diff --git a/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix b/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix
index 2d27611946e2..fee567a510ba 100644
--- a/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix
+++ b/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix
@@ -59,7 +59,7 @@ in
system.build.installBootLoader = generationsDirBuilder;
system.boot.loader.id = "generationsDir";
- system.boot.loader.kernelFile = platform.kernelTarget;
+ system.boot.loader.kernelFile = linux-kernel.target;
};
}
diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix
index df5dfaa554bc..289c2b199862 100644
--- a/nixos/modules/system/boot/loader/grub/grub.nix
+++ b/nixos/modules/system/boot/loader/grub/grub.nix
@@ -327,6 +327,26 @@ in
'';
};
+ extraInstallCommands = mkOption {
+ default = "";
+ example = literalExample ''
+ # the example below generates detached signatures that GRUB can verify
+ # https://www.gnu.org/software/grub/manual/grub/grub.html#Using-digital-signatures
+ ''${pkgs.findutils}/bin/find /boot -not -path "/boot/efi/*" -type f -name '*.sig' -delete
+ old_gpg_home=$GNUPGHOME
+ export GNUPGHOME="$(mktemp -d)"
+ ''${pkgs.gnupg}/bin/gpg --import ''${priv_key} > /dev/null 2>&1
+ ''${pkgs.findutils}/bin/find /boot -not -path "/boot/efi/*" -type f -exec ''${pkgs.gnupg}/bin/gpg --detach-sign "{}" \; > /dev/null 2>&1
+ rm -rf $GNUPGHOME
+ export GNUPGHOME=$old_gpg_home
+ '';
+ type = types.lines;
+ description = ''
+ Additional shell commands inserted in the bootloader installer
+ script after generating menu entries.
+ '';
+ };
+
extraPerEntryConfig = mkOption {
default = "";
example = "root (hd0)";
@@ -715,7 +735,7 @@ in
${optionalString cfg.enableCryptodisk "export GRUB_ENABLE_CRYPTODISK=y"}
'' + flip concatMapStrings cfg.mirroredBoots (args: ''
${pkgs.perl}/bin/perl ${install-grub-pl} ${grubConfig args} $@
- ''));
+ '') + cfg.extraInstallCommands);
system.build.grub = grub;
diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
index ba936b265732..db22dd36cbea 100644
--- a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
+++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
@@ -103,6 +103,6 @@ in
system.build.installBootLoader = builder;
system.boot.loader.id = "raspberrypi";
- system.boot.loader.kernelFile = platform.kernelTarget;
+ system.boot.loader.kernelFile = linux-kernel.target;
};
}
diff --git a/nixos/release.nix b/nixos/release.nix
index 1f5c15812695..109747945f78 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -79,7 +79,7 @@ let
in
tarball //
{ meta = {
- description = "NixOS system tarball for ${system} - ${stdenv.hostPlatform.platform.name}";
+ description = "NixOS system tarball for ${system} - ${stdenv.hostPlatform.linux-kernel.name}";
maintainers = map (x: lib.maintainers.${x}) maintainers;
};
inherit config;
@@ -105,7 +105,7 @@ let
modules = makeModules module {};
};
build = configEvaled.config.system.build;
- kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.platform.kernelTarget;
+ kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.linux-kernel.target;
in
pkgs.symlinkJoin {
name = "netboot";
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 966c78446574..523d3c051e04 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -272,6 +272,7 @@ in
nginx-variants = handleTest ./nginx-variants.nix {};
nix-ssh-serve = handleTest ./nix-ssh-serve.nix {};
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
+ nomad = handleTest ./nomad.nix {};
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
nsd = handleTest ./nsd.nix {};
nzbget = handleTest ./nzbget.nix {};
diff --git a/nixos/tests/nomad.nix b/nixos/tests/nomad.nix
new file mode 100644
index 000000000000..bd052152bd65
--- /dev/null
+++ b/nixos/tests/nomad.nix
@@ -0,0 +1,53 @@
+import ./make-test-python.nix (
+ { lib, ... }: {
+ name = "nomad";
+ nodes = {
+ server = { pkgs, lib, ... }: {
+ networking = {
+ interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [{
+ address = "192.168.1.1";
+ prefixLength = 16;
+ }];
+ };
+
+ environment.etc."nomad.custom.json".source =
+ (pkgs.formats.json { }).generate "nomad.custom.json" {
+ region = "universe";
+ datacenter = "earth";
+ };
+
+ services.nomad = {
+ enable = true;
+
+ settings = {
+ server = {
+ enabled = true;
+ bootstrap_expect = 1;
+ };
+ };
+
+ extraSettingsPaths = [ "/etc/nomad.custom.json" ];
+ enableDocker = false;
+ };
+ };
+ };
+
+ testScript = ''
+ server.wait_for_unit("nomad.service")
+
+ # wait for healthy server
+ server.wait_until_succeeds(
+ "[ $(nomad operator raft list-peers | grep true | wc -l) == 1 ]"
+ )
+
+ # wait for server liveness
+ server.succeed("[ $(nomad server members | grep -o alive | wc -l) == 1 ]")
+
+ # check the region
+ server.succeed("nomad server members | grep -o universe")
+
+ # check the datacenter
+ server.succeed("[ $(nomad server members | grep -o earth | wc -l) == 1 ]")
+ '';
+ }
+)