aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-18 16:32:00 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-18 16:32:00 +0000
commit0f74f62ee25ac2d21bd67c29b8efc3ad079a72a8 (patch)
treebd701e982d896952f4291e4b795c85bb581593b8 /nixpkgs/nixos
parentdae1ae41b3a575e87d411e0cd9daa42a85c5aa89 (diff)
parent1c40ee6fc44f7eb474c69ea070a43247a1a2c83c (diff)
Merge commit '1c40ee6fc44f7eb474c69ea070a43247a1a2c83c'
Diffstat (limited to 'nixpkgs/nixos')
-rw-r--r--nixpkgs/nixos/doc/manual/configuration/wireless.xml11
-rw-r--r--nixpkgs/nixos/doc/manual/installation/installing.xml2
-rw-r--r--nixpkgs/nixos/doc/manual/installation/upgrading.xml16
-rw-r--r--nixpkgs/nixos/doc/manual/man-configuration.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-enter.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-generate-config.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-install.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-option.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-rebuild.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/man-nixos-version.xml4
-rw-r--r--nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml67
-rw-r--r--nixpkgs/nixos/doc/manual/release-notes/rl-2003.xml15
-rw-r--r--nixpkgs/nixos/modules/config/pulseaudio.nix3
-rw-r--r--nixpkgs/nixos/modules/config/sysctl.nix2
-rw-r--r--nixpkgs/nixos/modules/config/system-environment.nix14
-rw-r--r--nixpkgs/nixos/modules/config/unix-odbc-drivers.nix2
-rw-r--r--nixpkgs/nixos/modules/hardware/steam-hardware.nix7
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix3
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix10
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix25
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix2
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix31
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/sd-image.nix19
-rw-r--r--nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix8
-rw-r--r--nixpkgs/nixos/modules/installer/tools/nixos-generate-config.pl20
-rw-r--r--nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh2
-rw-r--r--nixpkgs/nixos/modules/installer/tools/tools.nix1
-rw-r--r--nixpkgs/nixos/modules/misc/ids.nix4
-rw-r--r--nixpkgs/nixos/modules/misc/locate.nix5
-rw-r--r--nixpkgs/nixos/modules/module-list.nix8
-rw-r--r--nixpkgs/nixos/modules/profiles/hardened.nix21
-rw-r--r--nixpkgs/nixos/modules/programs/blcr.nix27
-rw-r--r--nixpkgs/nixos/modules/programs/shell.nix54
-rw-r--r--nixpkgs/nixos/modules/rename.nix4
-rw-r--r--nixpkgs/nixos/modules/services/amqp/rabbitmq.nix10
-rw-r--r--nixpkgs/nixos/modules/services/databases/memcached.nix1
-rw-r--r--nixpkgs/nixos/modules/services/databases/postgresql.nix3
-rw-r--r--nixpkgs/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix86
-rw-r--r--nixpkgs/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix49
-rw-r--r--nixpkgs/nixos/modules/services/hardware/fancontrol.nix46
-rw-r--r--nixpkgs/nixos/modules/services/mail/dovecot.nix2
-rw-r--r--nixpkgs/nixos/modules/services/misc/gitlab.nix179
-rw-r--r--nixpkgs/nixos/modules/services/misc/nix-daemon.nix89
-rw-r--r--nixpkgs/nixos/modules/services/misc/nix-optimise.nix4
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/do-agent.nix34
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/prometheus/exporters.nix1
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix58
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix2
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix5
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/thanos.nix34
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/zabbix-server.nix1
-rw-r--r--nixpkgs/nixos/modules/services/network-filesystems/samba.nix1
-rw-r--r--nixpkgs/nixos/modules/services/networking/mxisd.nix33
-rw-r--r--nixpkgs/nixos/modules/services/networking/networkmanager.nix51
-rw-r--r--nixpkgs/nixos/modules/services/networking/wpa_supplicant.nix14
-rw-r--r--nixpkgs/nixos/modules/services/networking/zeronet.nix92
-rw-r--r--nixpkgs/nixos/modules/services/security/fprintd.nix7
-rw-r--r--nixpkgs/nixos/modules/services/web-apps/documize.nix11
-rw-r--r--nixpkgs/nixos/modules/services/web-apps/shiori.nix50
-rw-r--r--nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix2
-rw-r--r--nixpkgs/nixos/modules/services/web-servers/nginx/default.nix30
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix22
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix3
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/pantheon.nix12
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix3
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix14
-rw-r--r--nixpkgs/nixos/modules/services/x11/display-managers/gdm.nix24
-rw-r--r--nixpkgs/nixos/modules/services/x11/display-managers/lightdm.nix37
-rw-r--r--nixpkgs/nixos/modules/services/x11/hardware/cmt.nix7
-rw-r--r--nixpkgs/nixos/modules/services/x11/window-managers/cwm.nix23
-rw-r--r--nixpkgs/nixos/modules/services/x11/window-managers/default.nix1
-rw-r--r--nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh10
-rw-r--r--nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix6
-rw-r--r--nixpkgs/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix6
-rw-r--r--nixpkgs/nixos/modules/system/boot/plymouth.nix18
-rw-r--r--nixpkgs/nixos/modules/system/boot/stage-1-init.sh27
-rw-r--r--nixpkgs/nixos/modules/system/boot/stage-2-init.sh2
-rw-r--r--nixpkgs/nixos/modules/system/boot/systemd-nspawn.nix24
-rw-r--r--nixpkgs/nixos/modules/system/boot/systemd.nix18
-rw-r--r--nixpkgs/nixos/modules/tasks/filesystems/zfs.nix7
-rw-r--r--nixpkgs/nixos/modules/tasks/network-interfaces-systemd.nix12
-rw-r--r--nixpkgs/nixos/modules/tasks/network-interfaces.nix15
-rw-r--r--nixpkgs/nixos/modules/virtualisation/container-config.nix1
-rw-r--r--nixpkgs/nixos/modules/virtualisation/containers.nix7
-rw-r--r--nixpkgs/nixos/release.nix5
-rw-r--r--nixpkgs/nixos/tests/all-tests.nix2
-rw-r--r--nixpkgs/nixos/tests/babeld.nix148
-rw-r--r--nixpkgs/nixos/tests/caddy.nix82
-rw-r--r--nixpkgs/nixos/tests/ferm.nix2
-rw-r--r--nixpkgs/nixos/tests/kafka.nix1
-rw-r--r--nixpkgs/nixos/tests/mxisd.nix12
-rw-r--r--nixpkgs/nixos/tests/networking.nix24
-rw-r--r--nixpkgs/nixos/tests/predictable-interface-names.nix1
-rw-r--r--nixpkgs/nixos/tests/prometheus-exporters.nix34
-rw-r--r--nixpkgs/nixos/tests/shiori.nix17
-rw-r--r--nixpkgs/nixos/tests/systemd-networkd-wireguard.nix1
97 files changed, 1442 insertions, 496 deletions
diff --git a/nixpkgs/nixos/doc/manual/configuration/wireless.xml b/nixpkgs/nixos/doc/manual/configuration/wireless.xml
index 9c0e3a8d7aa..247d29d5831 100644
--- a/nixpkgs/nixos/doc/manual/configuration/wireless.xml
+++ b/nixpkgs/nixos/doc/manual/configuration/wireless.xml
@@ -19,10 +19,17 @@
NixOS lets you specify networks for wpa_supplicant declaratively:
<programlisting>
<xref linkend="opt-networking.wireless.networks"/> = {
- echelon = {
+ echelon = { # SSID with no spaces or special characters
psk = "abcdefgh";
};
- "free.wifi" = {};
+ "echelon's AP" = { # SSID with spaces and/or special characters
+ psk = "ijklmnop";
+ };
+ echelon = { # Hidden SSID
+ hidden = true;
+ psk = "qrstuvwx";
+ };
+ free.wifi = {}; # Public wireless network
};
</programlisting>
Be aware that keys will be written to the nix store in plaintext! When no
diff --git a/nixpkgs/nixos/doc/manual/installation/installing.xml b/nixpkgs/nixos/doc/manual/installation/installing.xml
index f1e1568c034..8ff920eb5a8 100644
--- a/nixpkgs/nixos/doc/manual/installation/installing.xml
+++ b/nixpkgs/nixos/doc/manual/installation/installing.xml
@@ -68,7 +68,7 @@
If you would like to continue the installation from a different machine you
need to activate the SSH daemon via <command>systemctl start
sshd</command>. You then must set a password for either <literal>root</literal> or
- <literal>nixos</literal> with <command>passwd></command> to be able to login.
+ <literal>nixos</literal> with <command>passwd</command> to be able to login.
</para>
</section>
</section>
diff --git a/nixpkgs/nixos/doc/manual/installation/upgrading.xml b/nixpkgs/nixos/doc/manual/installation/upgrading.xml
index 35b4d266e12..8d3f35b7c26 100644
--- a/nixpkgs/nixos/doc/manual/installation/upgrading.xml
+++ b/nixpkgs/nixos/doc/manual/installation/upgrading.xml
@@ -14,7 +14,7 @@
<para>
<emphasis>Stable channels</emphasis>, such as
<literal
- xlink:href="https://nixos.org/channels/nixos-19.03">nixos-19.03</literal>.
+ xlink:href="https://nixos.org/channels/nixos-19.09">nixos-19.09</literal>.
These only get conservative bug fixes and package upgrades. For instance,
a channel update may cause the Linux kernel on your system to be upgraded
from 4.19.34 to 4.19.38 (a minor bug fix), but not from
@@ -38,7 +38,7 @@
<para>
<emphasis>Small channels</emphasis>, such as
<literal
- xlink:href="https://nixos.org/channels/nixos-19.03-small">nixos-19.03-small</literal>
+ xlink:href="https://nixos.org/channels/nixos-19.09-small">nixos-19.09-small</literal>
or
<literal
xlink:href="https://nixos.org/channels/nixos-unstable-small">nixos-unstable-small</literal>.
@@ -63,8 +63,8 @@
<para>
When you first install NixOS, you’re automatically subscribed to the NixOS
channel that corresponds to your installation source. For instance, if you
- installed from a 19.03 ISO, you will be subscribed to the
- <literal>nixos-19.03</literal> channel. To see which NixOS channel you’re
+ installed from a 19.09 ISO, you will be subscribed to the
+ <literal>nixos-19.09</literal> channel. To see which NixOS channel you’re
subscribed to, run the following as root:
<screen>
# nix-channel --list | grep nixos
@@ -75,13 +75,13 @@ nixos https://nixos.org/channels/nixos-unstable
# nix-channel --add https://nixos.org/channels/<replaceable>channel-name</replaceable> nixos
</screen>
(Be sure to include the <literal>nixos</literal> parameter at the end.) For
- instance, to use the NixOS 19.03 stable channel:
+ instance, to use the NixOS 19.09 stable channel:
<screen>
-# nix-channel --add https://nixos.org/channels/nixos-19.03 nixos
+# nix-channel --add https://nixos.org/channels/nixos-19.09 nixos
</screen>
If you have a server, you may want to use the “small” channel instead:
<screen>
-# nix-channel --add https://nixos.org/channels/nixos-19.03-small nixos
+# nix-channel --add https://nixos.org/channels/nixos-19.09-small nixos
</screen>
And if you want to live on the bleeding edge:
<screen>
@@ -127,7 +127,7 @@ nixos https://nixos.org/channels/nixos-unstable
current channel. (To see when the service runs, see <command>systemctl
list-timers</command>.) You can also specify a channel explicitly, e.g.
<programlisting>
-<xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-19.03;
+<xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-19.09;
</programlisting>
</para>
</section>
diff --git a/nixpkgs/nixos/doc/manual/man-configuration.xml b/nixpkgs/nixos/doc/manual/man-configuration.xml
index 9f30b792510..ddb1408fdcf 100644
--- a/nixpkgs/nixos/doc/manual/man-configuration.xml
+++ b/nixpkgs/nixos/doc/manual/man-configuration.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><filename>configuration.nix</filename>
- </refname><refpurpose>NixOS system configuration specification</refpurpose>
+ <refname><filename>configuration.nix</filename></refname>
+ <refpurpose>NixOS system configuration specification</refpurpose>
</refnamediv>
<refsection>
<title>Description</title>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml b/nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml
index 7d6e04e0dd9..d114261f53b 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><command>nixos-build-vms</command>
- </refname><refpurpose>build a network of virtual machines from a network of NixOS configurations</refpurpose>
+ <refname><command>nixos-build-vms</command></refname>
+ <refpurpose>build a network of virtual machines from a network of NixOS configurations</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-enter.xml b/nixpkgs/nixos/doc/manual/man-nixos-enter.xml
index 1481db46712..fe560d3efdd 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-enter.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-enter.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><command>nixos-enter</command>
- </refname><refpurpose>run a command in a NixOS chroot environment</refpurpose>
+ <refname><command>nixos-enter</command></refname>
+ <refpurpose>run a command in a NixOS chroot environment</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-generate-config.xml b/nixpkgs/nixos/doc/manual/man-nixos-generate-config.xml
index 61531a8f01c..9ac3b918ff6 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-generate-config.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-generate-config.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><command>nixos-generate-config</command>
- </refname><refpurpose>generate NixOS configuration modules</refpurpose>
+ <refname><command>nixos-generate-config</command></refname>
+ <refpurpose>generate NixOS configuration modules</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-install.xml b/nixpkgs/nixos/doc/manual/man-nixos-install.xml
index 4fb94ee7494..45bbd5d81ff 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-install.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-install.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><command>nixos-install</command>
- </refname><refpurpose>install bootloader and NixOS</refpurpose>
+ <refname><command>nixos-install</command></refname>
+ <refpurpose>install bootloader and NixOS</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-option.xml b/nixpkgs/nixos/doc/manual/man-nixos-option.xml
index 3e316e10d4e..81e3739b3be 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-option.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-option.xml
@@ -8,8 +8,8 @@
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
- <refname><command>nixos-option</command>
- </refname><refpurpose>inspect a NixOS configuration</refpurpose>
+ <refname><command>nixos-option</command></refname>
+ <refpurpose>inspect a NixOS configuration</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-rebuild.xml b/nixpkgs/nixos/doc/manual/man-nixos-rebuild.xml
index a83c4fb965e..c697b7ee047 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-rebuild.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-rebuild.xml
@@ -9,8 +9,8 @@
</refmeta>
<refnamediv>
- <refname><command>nixos-rebuild</command>
- </refname><refpurpose>reconfigure a NixOS machine</refpurpose>
+ <refname><command>nixos-rebuild</command></refname>
+ <refpurpose>reconfigure a NixOS machine</refpurpose>
</refnamediv>
<refsynopsisdiv>
diff --git a/nixpkgs/nixos/doc/manual/man-nixos-version.xml b/nixpkgs/nixos/doc/manual/man-nixos-version.xml
index 931c4a5ad02..e9ad8bddcac 100644
--- a/nixpkgs/nixos/doc/manual/man-nixos-version.xml
+++ b/nixpkgs/nixos/doc/manual/man-nixos-version.xml
@@ -7,8 +7,8 @@
<refmiscinfo class="source">NixOS</refmiscinfo>
</refmeta>
<refnamediv>
- <refname><command>nixos-version</command>
- </refname><refpurpose>show the NixOS version</refpurpose>
+ <refname><command>nixos-version</command></refname>
+ <refpurpose>show the NixOS version</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
diff --git a/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml b/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml
index e4dcc90cdd3..446597e74fe 100644
--- a/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml
+++ b/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml
@@ -3,7 +3,7 @@
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-release-19.09">
- <title>Release 19.09 (“Loris”, 2019/09/??)</title>
+ <title>Release 19.09 (“Loris”, 2019/10/09)</title>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -25,6 +25,26 @@
</listitem>
<listitem>
<para>
+ Nix has been updated to 2.3; see its
+ <link xlink:href="https://nixos.org/nix/manual/#ssec-relnotes-2.3">release
+ notes</link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Core version changes:</para>
+ <para>systemd: 239 -&gt; 243</para>
+ <para>gcc: 7 -&gt; 8</para>
+ <para>glibc: 2.27 (unchanged)</para>
+ <para>linux: 4.19 LTS (unchanged)</para>
+ <para>openssl: 1.0 -&gt; 1.1</para>
+ </listitem>
+ <listitem>
+ <para>Desktop version changes:</para>
+ <para>plasma5: 5.14 -&gt; 5.16</para>
+ <para>gnome3: 3.30 -&gt; 3.32</para>
+ </listitem>
+ <listitem>
+ <para>
PHP now defaults to PHP 7.3, updated from 7.2.
</para>
</listitem>
@@ -512,6 +532,34 @@
is set to <literal>/var/lib/gitlab/state</literal>, <literal>gitlab</literal> and all parent directories
must be owned by either <literal>root</literal> or the user specified in <option>services.gitlab.user</option>.
</para>
+ <para>
+ The <option>networking.useDHCP</option> option is unsupported in combination with
+ <option>networking.useNetworkd</option> in anticipation of defaulting to it by default.
+ It has to be set to <literal>false</literal> and enabled per
+ interface with <option>networking.interfaces.&lt;name&gt;.useDHCP = true;</option>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The Twitter client <literal>corebird</literal> has been dropped as <link xlink:href="https://www.patreon.com/posts/corebirds-future-18921328">it is discontinued and does not work against the new Twitter API</link>.
+ Please use the fork <literal>cawbird</literal> instead which has been adapted to the API changes and is still maintained.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>nodejs-11_x</literal> package has been removed as it's EOLed by upstream.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Because of the systemd upgrade,
+ <application>systemd-timesyncd</application> will no longer work if
+ <option>system.stateVersion</option> is not set correctly. When
+ upgrading from NixOS 19.03, please make sure that
+ <option>system.stateVersion</option> is set to
+ <literal>"19.03"</literal>, or lower if the installation dates back to an
+ earlier version of NixOS.
+ </para>
</listitem>
</itemizedlist>
</section>
@@ -711,7 +759,7 @@
</para>
</listitem>
</itemizedlist>
- This also configures the kernel to pass coredumps to <literal>systemd-coredump</literal>,
+ This also configures the kernel to pass core dumps to <literal>systemd-coredump</literal>,
and restricts the SysRq key combinations to the sync command only.
These sysctl snippets can be found in <literal>/etc/sysctl.d/50-*.conf</literal>,
and overridden via <link linkend="opt-boot.kernel.sysctl">boot.kernel.sysctl</link>
@@ -720,12 +768,15 @@
</listitem>
<listitem>
<para>
- Coredumps are now acquired by <literal>systemd-coredump</literal> by default.
- <literal>systemd-coredump</literal> behaviour can still be modified via
- <option>systemd.coredump.extraConfig</option>.
- To stick to the old behaviour (having the kernel dump to a file called <literal>core</literal>
- in the working directory), without piping it through <literal>systemd-coredump</literal>, set
- <option>boot.kernel.sysctl."kernel.core_pattern"</option> to <literal>"core"</literal>.
+ Core dumps are now processed by <literal>systemd-coredump</literal>
+ by default. <literal>systemd-coredump</literal> behaviour can
+ still be modified via
+ <option>systemd.coredump.extraConfig</option>. To stick to the
+ old behaviour (having the kernel dump to a file called
+ <literal>core</literal> in the working directory), without piping
+ it through <literal>systemd-coredump</literal>, set
+ <option>systemd.coredump.enable</option> to
+ <literal>false</literal>.
</para>
</listitem>
<listitem>
diff --git a/nixpkgs/nixos/doc/manual/release-notes/rl-2003.xml b/nixpkgs/nixos/doc/manual/release-notes/rl-2003.xml
index c84bc8dbb37..bdf56acd545 100644
--- a/nixpkgs/nixos/doc/manual/release-notes/rl-2003.xml
+++ b/nixpkgs/nixos/doc/manual/release-notes/rl-2003.xml
@@ -23,6 +23,19 @@
Support is planned until the end of October 2020, handing over to 20.09.
</para>
</listitem>
+ <listitem>
+ <para>
+ Postgresql for NixOS service now defaults to v11.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The graphical installer image starts the graphical session automatically.
+ Before you'd be greeted by a tty and asked to enter <command>systemctl start display-manager</command>.
+ It is now possible to disable the display-manager from running by selecting the <literal>Disable display-manager</literal>
+ quirk in the boot menu.
+ </para>
+ </listitem>
</itemizedlist>
</section>
@@ -73,7 +86,7 @@
<itemizedlist>
<listitem>
- <para />
+ <para>SD images are now compressed by default using <literal>bzip2</literal>.</para>
</listitem>
</itemizedlist>
</section>
diff --git a/nixpkgs/nixos/modules/config/pulseaudio.nix b/nixpkgs/nixos/modules/config/pulseaudio.nix
index 5c3e3930258..b3bc4a451aa 100644
--- a/nixpkgs/nixos/modules/config/pulseaudio.nix
+++ b/nixpkgs/nixos/modules/config/pulseaudio.nix
@@ -51,8 +51,7 @@ let
# that we can disable the autospawn feature in programs that
# are built with PulseAudio support (like KDE).
clientConf = writeText "client.conf" ''
- autospawn=${if nonSystemWide then "yes" else "no"}
- ${optionalString nonSystemWide "daemon-binary=${binary}"}
+ autospawn=no
${cfg.extraClientConf}
'';
diff --git a/nixpkgs/nixos/modules/config/sysctl.nix b/nixpkgs/nixos/modules/config/sysctl.nix
index fb2b58eed72..e59c7a32c28 100644
--- a/nixpkgs/nixos/modules/config/sysctl.nix
+++ b/nixpkgs/nixos/modules/config/sysctl.nix
@@ -54,7 +54,7 @@ in
# Hide kernel pointers (e.g. in /proc/modules) for unprivileged
# users as these make it easier to exploit kernel vulnerabilities.
- boot.kernel.sysctl."kernel.kptr_restrict" = 1;
+ boot.kernel.sysctl."kernel.kptr_restrict" = mkDefault 1;
# Disable YAMA by default to allow easy debugging.
boot.kernel.sysctl."kernel.yama.ptrace_scope" = mkDefault 0;
diff --git a/nixpkgs/nixos/modules/config/system-environment.nix b/nixpkgs/nixos/modules/config/system-environment.nix
index 792d1dbb38f..361c3cfc553 100644
--- a/nixpkgs/nixos/modules/config/system-environment.nix
+++ b/nixpkgs/nixos/modules/config/system-environment.nix
@@ -8,11 +8,6 @@ let
cfg = config.environment;
- pamProfiles =
- map
- (replaceStrings ["$HOME" "$USER"] ["@{HOME}" "@{PAM_USER}"])
- cfg.profiles;
-
in
{
@@ -75,13 +70,18 @@ in
let
suffixedVariables =
flip mapAttrs cfg.profileRelativeSessionVariables (envVar: suffixes:
- flip concatMap pamProfiles (profile:
+ flip concatMap cfg.profiles (profile:
map (suffix: "${profile}${suffix}") suffixes
)
);
+ # We're trying to use the same syntax for PAM variables and env variables.
+ # That means we need to map the env variables that people might use to their
+ # equivalent PAM variable.
+ replaceEnvVars = replaceStrings ["$HOME" "$USER"] ["@{HOME}" "@{PAM_USER}"];
+
pamVariable = n: v:
- ''${n} DEFAULT="${concatStringsSep ":" (toList v)}"'';
+ ''${n} DEFAULT="${concatStringsSep ":" (map replaceEnvVars (toList v))}"'';
pamVariables =
concatStringsSep "\n"
diff --git a/nixpkgs/nixos/modules/config/unix-odbc-drivers.nix b/nixpkgs/nixos/modules/config/unix-odbc-drivers.nix
index 8dd81172738..abc12a627d6 100644
--- a/nixpkgs/nixos/modules/config/unix-odbc-drivers.nix
+++ b/nixpkgs/nixos/modules/config/unix-odbc-drivers.nix
@@ -24,7 +24,7 @@ in {
Specifies Unix ODBC drivers to be registered in
<filename>/etc/odbcinst.ini</filename>. You may also want to
add <literal>pkgs.unixODBC</literal> to the system path to get
- a command line client to connnect to ODBC databases.
+ a command line client to connect to ODBC databases.
'';
};
};
diff --git a/nixpkgs/nixos/modules/hardware/steam-hardware.nix b/nixpkgs/nixos/modules/hardware/steam-hardware.nix
index 378aeffe71b..6218c9ffbb9 100644
--- a/nixpkgs/nixos/modules/hardware/steam-hardware.nix
+++ b/nixpkgs/nixos/modules/hardware/steam-hardware.nix
@@ -21,5 +21,12 @@ in
services.udev.packages = [
pkgs.steamPackages.steam
];
+
+ # The uinput module needs to be loaded in order to trigger the udev rules
+ # defined in the steam package for setting permissions on /dev/uinput.
+ #
+ # If the udev rules are not triggered, some controllers won't work with
+ # steam.
+ boot.kernelModules = [ "uinput" ];
};
}
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix
index 1578e1547bc..719ba5ffb12 100644
--- a/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix
@@ -25,9 +25,6 @@ with lib;
services.xserver = {
enable = true;
- # Don't start the X server by default.
- autorun = mkForce false;
-
# Automatically login as nixos.
displayManager.slim = {
enable = true;
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
index 559899b0a3b..1dc7920ff64 100644
--- a/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
@@ -22,14 +22,8 @@ with lib;
system.activationScripts.installerDesktop = let
- manualDesktopFile = pkgs.writeScript "nixos-manual.desktop" ''
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=NixOS Manual
- Exec=firefox ${config.system.build.manual.manual}/share/doc/nixos/index.html
- Icon=text-html
- '';
+ # Comes from documentation.nix when xserver and nixos.enable are true.
+ manualDesktopFile = "/run/current-system/sw/share/applications/nixos-manual.desktop";
homeDir = "/home/nixos/";
desktopDir = homeDir + "Desktop/";
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix b/nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix
index d5c92cfc1d9..009f1e2c543 100644
--- a/nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix
@@ -24,7 +24,7 @@ let
# Name appended to menuentry defaults to params if no specific name given.
option.name or (if option ? params then "(${option.params})" else "")
}' ${if option ? class then " --class ${option.class}" else ""} {
- linux ${defaults.image} ${defaults.params} ${
+ linux ${defaults.image} \''${isoboot} ${defaults.params} ${
option.params or ""
}
initrd ${defaults.initrd}
@@ -165,8 +165,8 @@ let
else
"# No refind for ${targetArch}"
;
-
- grubPkgs = if config.boot.loader.grub.forcei686 then pkgs.pkgsi686Linux else pkgs;
+
+ grubPkgs = if config.boot.loader.grub.forcei686 then pkgs.pkgsi686Linux else pkgs;
grubMenuCfg = ''
#
@@ -268,6 +268,12 @@ let
set timeout=10
${grubMenuCfg}
+ # If the parameter iso_path is set, append the findiso parameter to the kernel
+ # line. We need this to allow the nixos iso to be booted from grub directly.
+ if [ \''${iso_path} ] ; then
+ set isoboot="findiso=\''${iso_path}"
+ fi
+
#
# Menu entries
#
@@ -284,6 +290,14 @@ let
${buildMenuAdditionalParamsGrub2 config "video=1920x1080@60"}
}
+ # If we boot into a graphical environment where X is autoran
+ # and always crashes, it makes the media unusable. Allow the user
+ # to disable this.
+ submenu "Disable display-manager" --class quirk-disable-displaymanager {
+ ${grubMenuCfg}
+ ${buildMenuAdditionalParamsGrub2 config "systemd.mask=display-manager.service"}
+ }
+
# Some laptop and convertibles have the panel installed in an
# inconvenient way, rotated away from the keyboard.
# Those entries makes it easier to use the installer.
@@ -562,8 +576,6 @@ in
boot.initrd.availableKernelModules = [ "squashfs" "iso9660" "uas" ];
- boot.blacklistedKernelModules = [ "nouveau" ];
-
boot.initrd.kernelModules = [ "loop" ];
# Closures to be copied to the Nix store on the CD, namely the init
@@ -618,6 +630,9 @@ in
{ source = "${efiDir}/EFI";
target = "/EFI";
}
+ { source = pkgs.writeText "loopback.cfg" "source /EFI/boot/grub.cfg";
+ target = "/boot/grub/loopback.cfg";
+ }
] ++ optionals (config.boot.loader.grub.memtest86.enable && canx86BiosBoot) [
{ source = "${pkgs.memtest86plus}/memtest.bin";
target = "/boot/memtest.bin";
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
index 2a131d9ce98..ba4127eaa0e 100644
--- a/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
@@ -19,7 +19,7 @@ in
boot.loader.generic-extlinux-compatible.enable = true;
boot.consoleLogLevel = lib.mkDefault 7;
- boot.kernelPackages = pkgs.linuxPackages_rpi;
+ boot.kernelPackages = pkgs.linuxPackages_rpi1;
sdImage = {
populateFirmwareCommands = let
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
new file mode 100644
index 00000000000..c545a1e7e24
--- /dev/null
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix
@@ -0,0 +1,31 @@
+# To build, use:
+# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix -A config.system.build.sdImage
+{ config, lib, pkgs, ... }:
+
+{
+ imports = [
+ ../../profiles/base.nix
+ ../../profiles/installation-device.nix
+ ./sd-image.nix
+ ];
+
+ boot.loader.grub.enable = false;
+ boot.loader.raspberryPi.enable = true;
+ boot.loader.raspberryPi.version = 4;
+ boot.kernelPackages = pkgs.linuxPackages_rpi4;
+
+ boot.consoleLogLevel = lib.mkDefault 7;
+
+ sdImage = {
+ firmwareSize = 128;
+ # This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
+ populateFirmwareCommands =
+ "${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
+ # As the boot process is done entirely in the firmware partition.
+ populateRootCommands = "";
+ };
+
+ # the installation media is also the installation target,
+ # so we don't want to provide the installation configuration.nix.
+ installer.cloneConfig = false;
+}
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/sd-image.nix b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image.nix
index a2a8e8ef752..d510f3b2daf 100644
--- a/nixpkgs/nixos/modules/installer/cd-dvd/sd-image.nix
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/sd-image.nix
@@ -98,6 +98,16 @@ in
populate the ./files/boot (/boot) directory.
'';
};
+
+ compressImage = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether the SD image should be compressed using
+ <command>bzip2</command>.
+ '';
+ };
+
};
config = {
@@ -118,10 +128,12 @@ in
sdImage.storePaths = [ config.system.build.toplevel ];
- system.build.sdImage = pkgs.callPackage ({ stdenv, dosfstools, e2fsprogs, mtools, libfaketime, utillinux }: stdenv.mkDerivation {
+ system.build.sdImage = pkgs.callPackage ({ stdenv, dosfstools, e2fsprogs, mtools, libfaketime, utillinux, bzip2 }: stdenv.mkDerivation {
name = config.sdImage.imageName;
- nativeBuildInputs = [ dosfstools e2fsprogs mtools libfaketime utillinux ];
+ nativeBuildInputs = [ dosfstools e2fsprogs mtools libfaketime utillinux bzip2 ];
+
+ inherit (config.sdImage) compressImage;
buildCommand = ''
mkdir -p $out/nix-support $out/sd-image
@@ -168,6 +180,9 @@ in
# Verify the FAT partition before copying it.
fsck.vfat -vn firmware_part.img
dd conv=notrunc if=firmware_part.img of=$img seek=$START count=$SECTORS
+ if test -n "$compressImage"; then
+ bzip2 $img
+ fi
'';
}) {};
diff --git a/nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix b/nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix
index 2673887d2b9..d7149b35d4c 100644
--- a/nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix
+++ b/nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix
@@ -1,6 +1,6 @@
{
- x86_64-linux = "/nix/store/3ds3cgji9vjxdbgp10av6smyym1126d1-nix-2.3";
- i686-linux = "/nix/store/ln1ndqvfpc9cdl03vqxi6kvlxm9wfv9g-nix-2.3";
- aarch64-linux = "/nix/store/n8a1rwzrp20qcr2c4hvyn6c5q9zx8csw-nix-2.3";
- x86_64-darwin = "/nix/store/jq6npmpld02sz4rgniz0qrsdfnm6j17a-nix-2.3";
+ x86_64-linux = "/nix/store/6chjfy4j6hjwj5f8zcbbdg02i21x1qsi-nix-2.3.1";
+ i686-linux = "/nix/store/xa8z7fwszjjm4kiwrxfc8xv9c1pzzm7a-nix-2.3.1";
+ aarch64-linux = "/nix/store/8cac1ivcnchlpzmdjby2f71l1fwpnymr-nix-2.3.1";
+ x86_64-darwin = "/nix/store/6639l9815ggdnb4aka22qcjy7p8w4hb9-nix-2.3.1";
}
diff --git a/nixpkgs/nixos/modules/installer/tools/nixos-generate-config.pl b/nixpkgs/nixos/modules/installer/tools/nixos-generate-config.pl
index cfdbdaabf5c..f2ffe61c42c 100644
--- a/nixpkgs/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixpkgs/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -563,6 +563,24 @@ $fsAndSwap
${\join "", (map { " $_\n" } (uniq @attrs))}}
EOF
+sub generateNetworkingDhcpConfig {
+ my $config = <<EOF;
+ # The global useDHCP flag is deprecated, therefore explicitly set to false here.
+ # Per-interface useDHCP will be mandatory in the future, so this generated config
+ # replicates the default behaviour.
+ networking.useDHCP = false;
+EOF
+
+ foreach my $path (glob "/sys/class/net/*") {
+ my $dev = basename($path);
+ if ($dev ne "lo") {
+ $config .= " networking.interfaces.$dev.useDHCP = true;\n";
+ }
+ }
+
+ return $config;
+}
+
if ($showHardwareConfig) {
print STDOUT $hwConfig;
@@ -606,6 +624,8 @@ EOF
EOF
}
+ my $networkingDhcpConfig = generateNetworkingDhcpConfig();
+
write_file($fn, <<EOF);
@configuration@
EOF
diff --git a/nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh b/nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh
index 6a08c9b4c6c..ea434ca8741 100644
--- a/nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh
+++ b/nixpkgs/nixos/modules/installer/tools/nixos-rebuild.sh
@@ -111,7 +111,7 @@ buildHostCmd() {
if [ -z "$buildHost" ]; then
"$@"
elif [ -n "$remoteNix" ]; then
- ssh $SSHOPTS "$buildHost" PATH="$remoteNix:$PATH" "$@"
+ ssh $SSHOPTS "$buildHost" env PATH="$remoteNix:$PATH" "$@"
else
ssh $SSHOPTS "$buildHost" "$@"
fi
diff --git a/nixpkgs/nixos/modules/installer/tools/tools.nix b/nixpkgs/nixos/modules/installer/tools/tools.nix
index 05add59117d..32926005959 100644
--- a/nixpkgs/nixos/modules/installer/tools/tools.nix
+++ b/nixpkgs/nixos/modules/installer/tools/tools.nix
@@ -96,6 +96,7 @@ in
# networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
+ $networkingDhcpConfig
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password\@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
diff --git a/nixpkgs/nixos/modules/misc/ids.nix b/nixpkgs/nixos/modules/misc/ids.nix
index ac6af1ce8b7..3e8a5b07a5e 100644
--- a/nixpkgs/nixos/modules/misc/ids.nix
+++ b/nixpkgs/nixos/modules/misc/ids.nix
@@ -328,7 +328,7 @@
qemu-libvirtd = 301;
# kvm = 302; # unused
# render = 303; # unused
- zeronet = 304;
+ # zeronet = 304; # removed 2019-01-03
lirc = 305;
lidarr = 306;
slurm = 307;
@@ -629,7 +629,7 @@
qemu-libvirtd = 301;
kvm = 302; # default udev rules from systemd requires these
render = 303; # default udev rules from systemd requires these
- zeronet = 304;
+ # zeronet = 304; # removed 2019-01-03
lirc = 305;
lidarr = 306;
slurm = 307;
diff --git a/nixpkgs/nixos/modules/misc/locate.nix b/nixpkgs/nixos/modules/misc/locate.nix
index 449149e4bb6..737ed5c0a3f 100644
--- a/nixpkgs/nixos/modules/misc/locate.nix
+++ b/nixpkgs/nixos/modules/misc/locate.nix
@@ -128,7 +128,10 @@ in {
# directory creation needs to be separated from main service
# because ReadWritePaths fails when the directory doesn't already exist
- systemd.tmpfiles.rules = [ "d ${dirOf cfg.output} 0755 root root -" ];
+ systemd.tmpfiles.rules =
+ let dir = dirOf cfg.output; in
+ mkIf (dir != "/var/cache")
+ [ "d ${dir} 0755 root root -" ];
systemd.services.update-locatedb =
{ description = "Update Locate Database";
diff --git a/nixpkgs/nixos/modules/module-list.nix b/nixpkgs/nixos/modules/module-list.nix
index 775cc05aa0a..4d177ae9699 100644
--- a/nixpkgs/nixos/modules/module-list.nix
+++ b/nixpkgs/nixos/modules/module-list.nix
@@ -98,7 +98,6 @@
./programs/autojump.nix
./programs/bash/bash.nix
./programs/bcc.nix
- ./programs/blcr.nix
./programs/browserpass.nix
./programs/captive-browser.nix
./programs/ccache.nix
@@ -143,7 +142,6 @@
./programs/seahorse.nix
./programs/slock.nix
./programs/shadow.nix
- ./programs/shell.nix
./programs/spacefm.nix
./programs/singularity.nix
./programs/ssh.nix
@@ -299,10 +297,11 @@
./services/desktops/gnome3/chrome-gnome-shell.nix
./services/desktops/gnome3/evolution-data-server.nix
./services/desktops/gnome3/glib-networking.nix
+ ./services/desktops/gnome3/gnome-initial-setup.nix
./services/desktops/gnome3/gnome-keyring.nix
./services/desktops/gnome3/gnome-online-accounts.nix
- ./services/desktops/gnome3/gnome-remote-desktop.nix
./services/desktops/gnome3/gnome-online-miners.nix
+ ./services/desktops/gnome3/gnome-remote-desktop.nix
./services/desktops/gnome3/gnome-settings-daemon.nix
./services/desktops/gnome3/gnome-user-share.nix
./services/desktops/gnome3/rygel.nix
@@ -328,6 +327,7 @@
./services/hardware/bluetooth.nix
./services/hardware/bolt.nix
./services/hardware/brltty.nix
+ ./services/hardware/fancontrol.nix
./services/hardware/freefall.nix
./services/hardware/fwupd.nix
./services/hardware/illum.nix
@@ -502,6 +502,7 @@
./services/monitoring/das_watchdog.nix
./services/monitoring/datadog-agent.nix
./services/monitoring/dd-agent/dd-agent.nix
+ ./services/monitoring/do-agent.nix
./services/monitoring/fusion-inventory.nix
./services/monitoring/grafana.nix
./services/monitoring/grafana-reporter.nix
@@ -805,6 +806,7 @@
./services/web-apps/restya-board.nix
./services/web-apps/tt-rss.nix
./services/web-apps/selfoss.nix
+ ./services/web-apps/shiori.nix
./services/web-apps/virtlyst.nix
./services/web-apps/wordpress.nix
./services/web-apps/youtrack.nix
diff --git a/nixpkgs/nixos/modules/profiles/hardened.nix b/nixpkgs/nixos/modules/profiles/hardened.nix
index 626d8b1d2bd..f7b2f5c7fc1 100644
--- a/nixpkgs/nixos/modules/profiles/hardened.nix
+++ b/nixpkgs/nixos/modules/profiles/hardened.nix
@@ -52,6 +52,27 @@ with lib;
"ax25"
"netrom"
"rose"
+
+ # Old or rare or insufficiently audited filesystems
+ "adfs"
+ "affs"
+ "bfs"
+ "befs"
+ "cramfs"
+ "efs"
+ "erofs"
+ "exofs"
+ "freevxfs"
+ "f2fs"
+ "hfs"
+ "hpfs"
+ "jfs"
+ "minix"
+ "nilfs2"
+ "qnx4"
+ "qnx6"
+ "sysv"
+ "ufs"
];
# Restrict ptrace() usage to processes with a pre-defined relationship
diff --git a/nixpkgs/nixos/modules/programs/blcr.nix b/nixpkgs/nixos/modules/programs/blcr.nix
deleted file mode 100644
index 804e1d01f12..00000000000
--- a/nixpkgs/nixos/modules/programs/blcr.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ config, lib, ... }:
-
-let
- inherit (lib) mkOption mkIf;
- cfg = config.environment.blcr;
- blcrPkg = config.boot.kernelPackages.blcr;
-in
-
-{
- ###### interface
-
- options = {
- environment.blcr.enable = mkOption {
- default = false;
- description =
- "Whether to enable support for the BLCR checkpointing tool.";
- };
- };
-
- ###### implementation
-
- config = mkIf cfg.enable {
- boot.kernelModules = [ "blcr" "blcr_imports" ];
- boot.extraModulePackages = [ blcrPkg ];
- environment.systemPackages = [ blcrPkg ];
- };
-}
diff --git a/nixpkgs/nixos/modules/programs/shell.nix b/nixpkgs/nixos/modules/programs/shell.nix
deleted file mode 100644
index b7f7b91b5fb..00000000000
--- a/nixpkgs/nixos/modules/programs/shell.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-# This module defines a standard configuration for NixOS shells.
-
-{ config, lib, ... }:
-
-with lib;
-
-{
-
- config = {
-
- environment.shellInit =
- ''
- # Set up the per-user profile.
- mkdir -m 0755 -p "$NIX_USER_PROFILE_DIR"
- if [ "$(stat -c '%u' "$NIX_USER_PROFILE_DIR")" != "$(id -u)" ]; then
- echo "WARNING: the per-user profile dir $NIX_USER_PROFILE_DIR should belong to user id $(id -u)" >&2
- fi
-
- if [ -w "$HOME" ]; then
- if ! [ -L "$HOME/.nix-profile" ]; then
- if [ "$USER" != root ]; then
- ln -s "$NIX_USER_PROFILE_DIR/profile" "$HOME/.nix-profile"
- else
- # Root installs in the system-wide profile by default.
- ln -s /nix/var/nix/profiles/default "$HOME/.nix-profile"
- fi
- fi
-
- # Subscribe the root user to the NixOS channel by default.
- if [ "$USER" = root -a ! -e "$HOME/.nix-channels" ]; then
- echo "${config.system.defaultChannel} nixos" > "$HOME/.nix-channels"
- fi
-
- # Create the per-user garbage collector roots directory.
- NIX_USER_GCROOTS_DIR="/nix/var/nix/gcroots/per-user/$USER"
- mkdir -m 0755 -p "$NIX_USER_GCROOTS_DIR"
- if [ "$(stat -c '%u' "$NIX_USER_GCROOTS_DIR")" != "$(id -u)" ]; then
- echo "WARNING: the per-user gcroots dir $NIX_USER_GCROOTS_DIR should belong to user id $(id -u)" >&2
- fi
-
- # Set up a default Nix expression from which to install stuff.
- if [ ! -e "$HOME/.nix-defexpr" -o -L "$HOME/.nix-defexpr" ]; then
- rm -f "$HOME/.nix-defexpr"
- mkdir -p "$HOME/.nix-defexpr"
- if [ "$USER" != root ]; then
- ln -s /nix/var/nix/profiles/per-user/root/channels "$HOME/.nix-defexpr/channels_root"
- fi
- fi
- fi
- '';
-
- };
-
-}
diff --git a/nixpkgs/nixos/modules/rename.nix b/nixpkgs/nixos/modules/rename.nix
index 802ffcdc94e..df8ebe50584 100644
--- a/nixpkgs/nixos/modules/rename.nix
+++ b/nixpkgs/nixos/modules/rename.nix
@@ -233,7 +233,6 @@ with lib;
(mkRemovedOptionModule [ "services" "mysql" "rootPassword" ] "Use socket authentication or set the password outside of the nix store.")
(mkRemovedOptionModule [ "services" "zabbixServer" "dbPassword" ] "Use services.zabbixServer.database.passwordFile instead.")
(mkRemovedOptionModule [ "systemd" "generator-packages" ] "Use systemd.packages instead.")
- (mkRemovedOptionModule [ "systemd" "coredump" "enable" ] "Enabled by default. Set boot.kernel.sysctl.\"kernel.core_pattern\" = \"core\"; to disable.")
# ZSH
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
@@ -275,6 +274,9 @@ with lib;
(mkRenamedOptionModule [ "networking" "extraResolvconfConf" ] [ "networking" "resolvconf" "extraConfig" ])
(mkRenamedOptionModule [ "networking" "resolvconfOptions" ] [ "networking" "resolvconf" "extraOptions" ])
+ # BLCR
+ (mkRemovedOptionModule [ "environment.blcr.enable" ] "The BLCR module has been removed")
+
# Redis
(mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.")
(mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.")
diff --git a/nixpkgs/nixos/modules/services/amqp/rabbitmq.nix b/nixpkgs/nixos/modules/services/amqp/rabbitmq.nix
index 302b94de196..38d10923494 100644
--- a/nixpkgs/nixos/modules/services/amqp/rabbitmq.nix
+++ b/nixpkgs/nixos/modules/services/amqp/rabbitmq.nix
@@ -80,12 +80,10 @@ in {
configItems = mkOption {
default = {};
type = types.attrsOf types.str;
- example = ''
- {
- "auth_backends.1.authn" = "rabbit_auth_backend_ldap";
- "auth_backends.1.authz" = "rabbit_auth_backend_internal";
- }
- '';
+ example = {
+ "auth_backends.1.authn" = "rabbit_auth_backend_ldap";
+ "auth_backends.1.authz" = "rabbit_auth_backend_internal";
+ };
description = ''
Configuration options in RabbitMQ's new config file format,
which is a simple key-value format that can not express nested
diff --git a/nixpkgs/nixos/modules/services/databases/memcached.nix b/nixpkgs/nixos/modules/services/databases/memcached.nix
index 84d2c8674f4..d1dfdb41bf4 100644
--- a/nixpkgs/nixos/modules/services/databases/memcached.nix
+++ b/nixpkgs/nixos/modules/services/databases/memcached.nix
@@ -67,6 +67,7 @@ in
users.users = optional (cfg.user == "memcached") {
name = "memcached";
description = "Memcached server user";
+ isSystemUser = true;
};
environment.systemPackages = [ memcached ];
diff --git a/nixpkgs/nixos/modules/services/databases/postgresql.nix b/nixpkgs/nixos/modules/services/databases/postgresql.nix
index 7bba4dacddc..3bedfe96a18 100644
--- a/nixpkgs/nixos/modules/services/databases/postgresql.nix
+++ b/nixpkgs/nixos/modules/services/databases/postgresql.nix
@@ -226,7 +226,8 @@ in
# Note: when changing the default, make it conditional on
# ‘system.stateVersion’ to maintain compatibility with existing
# systems!
- mkDefault (if versionAtLeast config.system.stateVersion "17.09" then pkgs.postgresql_9_6
+ mkDefault (if versionAtLeast config.system.stateVersion "20.03" then pkgs.postgresql_11
+ else if versionAtLeast config.system.stateVersion "17.09" then pkgs.postgresql_9_6
else if versionAtLeast config.system.stateVersion "16.03" then pkgs.postgresql_9_5
else throw "postgresql_9_4 was removed, please upgrade your postgresql version.");
diff --git a/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix b/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix
new file mode 100644
index 00000000000..d715d52c2d0
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix
@@ -0,0 +1,86 @@
+# GNOME Initial Setup.
+
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+
+ # GNOME initial setup's run is conditioned on whether
+ # the gnome-initial-setup-done file exists in XDG_CONFIG_HOME
+ # Because of this, every existing user will have initial setup
+ # running because they never ran it before.
+ #
+ # To prevent this we create the file if the users stateVersion
+ # is older than 20.03 (the release we added this module).
+
+ script = pkgs.writeScript "create-gis-stamp-files" ''
+ #!${pkgs.runtimeShell}
+ setup_done=$HOME/.config/gnome-initial-setup-done
+
+ echo "Creating g-i-s stamp file $setup_done ..."
+ cat - > $setup_done <<- EOF
+ yes
+ EOF
+ '';
+
+ createGisStampFilesAutostart = pkgs.writeTextFile rec {
+ name = "create-g-i-s-stamp-files";
+ destination = "/etc/xdg/autostart/${name}.desktop";
+ text = ''
+ [Desktop Entry]
+ Type=Application
+ Name=Create GNOME Initial Setup stamp files
+ Exec=${script}
+ StartupNotify=false
+ NoDisplay=true
+ OnlyShowIn=GNOME;
+ AutostartCondition=unless-exists gnome-initial-setup-done
+ X-GNOME-Autostart-Phase=EarlyInitialization
+ '';
+ };
+
+in
+
+{
+
+ ###### interface
+
+ options = {
+
+ services.gnome3.gnome-initial-setup = {
+
+ enable = mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
+
+ };
+
+ };
+
+
+ ###### implementation
+
+ config = mkIf config.services.gnome3.gnome-initial-setup.enable {
+
+ environment.systemPackages = [
+ pkgs.gnome3.gnome-initial-setup
+ ]
+ ++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
+ ;
+
+ systemd.packages = [
+ pkgs.gnome3.gnome-initial-setup
+ ];
+
+ systemd.user.targets."gnome-session".wants = [
+ "gnome-initial-setup-copy-worker.service"
+ "gnome-initial-setup-first-login.service"
+ "gnome-welcome-tour.service"
+ ];
+
+ systemd.user.targets."gnome-session@gnome-initial-setup".wants = [
+ "gnome-initial-setup.service"
+ ];
+
+ };
+
+}
diff --git a/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix b/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix
index 7f7adcf26ac..2f83fd653bd 100644
--- a/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix
+++ b/nixpkgs/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix
@@ -12,6 +12,12 @@ in
{
+ imports = [
+ (mkRemovedOptionModule
+ ["services" "gnome3" "gnome-settings-daemon" "package"]
+ "")
+ ];
+
###### interface
options = {
@@ -20,13 +26,6 @@ in
enable = mkEnableOption "GNOME Settings Daemon";
- # There are many forks of gnome-settings-daemon
- package = mkOption {
- type = types.package;
- default = pkgs.gnome3.gnome-settings-daemon;
- description = "Which gnome-settings-daemon package to use.";
- };
-
};
};
@@ -36,9 +35,39 @@ in
config = mkIf cfg.enable {
- environment.systemPackages = [ cfg.package ];
-
- services.udev.packages = [ cfg.package ];
+ environment.systemPackages = [
+ pkgs.gnome3.gnome-settings-daemon
+ ];
+
+ services.udev.packages = [
+ pkgs.gnome3.gnome-settings-daemon
+ ];
+
+ systemd.packages = [
+ pkgs.gnome3.gnome-settings-daemon
+ ];
+
+ systemd.user.targets."gnome-session-initialized".wants = [
+ "gsd-color.target"
+ "gsd-datetime.target"
+ "gsd-keyboard.target"
+ "gsd-media-keys.target"
+ "gsd-print-notifications.target"
+ "gsd-rfkill.target"
+ "gsd-screensaver-proxy.target"
+ "gsd-sharing.target"
+ "gsd-smartcard.target"
+ "gsd-sound.target"
+ "gsd-wacom.target"
+ "gsd-wwan.target"
+ "gsd-a11y-settings.target"
+ "gsd-housekeeping.target"
+ "gsd-power.target"
+ ];
+
+ systemd.user.targets."gnome-session-x11-services".wants = [
+ "gsd-xsettings.target"
+ ];
};
diff --git a/nixpkgs/nixos/modules/services/hardware/fancontrol.nix b/nixpkgs/nixos/modules/services/hardware/fancontrol.nix
new file mode 100644
index 00000000000..616e4add31e
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/hardware/fancontrol.nix
@@ -0,0 +1,46 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.hardware.fancontrol;
+ configFile = pkgs.writeText "fan.conf" cfg.config;
+
+in {
+
+ options.hardware.fancontrol = {
+ enable = mkEnableOption "fancontrol (requires fancontrol.config)";
+
+ config = mkOption {
+ type = types.lines;
+ default = null;
+ example = ''
+ # Configuration file generated by pwmconfig
+ INTERVAL=1
+ DEVPATH=hwmon0=devices/platform/nct6775.656 hwmon1=devices/pci0000:00/0000:00:18.3
+ DEVNAME=hwmon0=nct6779 hwmon1=k10temp
+ FCTEMPS=hwmon0/pwm2=hwmon1/temp1_input
+ FCFANS=hwmon0/pwm2=hwmon0/fan2_input
+ MINTEMP=hwmon0/pwm2=25
+ MAXTEMP=hwmon0/pwm2=60
+ MINSTART=hwmon0/pwm2=25
+ MINSTOP=hwmon0/pwm2=10
+ MINPWM=hwmon0/pwm2=0
+ MAXPWM=hwmon0/pwm2=255
+ '';
+ description = "Contents for configuration file. See <citerefentry><refentrytitle>pwmconfig</refentrytitle><manvolnum>8</manvolnum></citerefentry>.";
+ };
+ };
+
+
+ config = mkIf cfg.enable {
+ systemd.services.fancontrol = {
+ description = "Fan speed control from lm_sensors";
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${pkgs.lm_sensors}/bin/fancontrol ${configFile}";
+ };
+ };
+ };
+}
diff --git a/nixpkgs/nixos/modules/services/mail/dovecot.nix b/nixpkgs/nixos/modules/services/mail/dovecot.nix
index cdbb776454b..3fd06812c67 100644
--- a/nixpkgs/nixos/modules/services/mail/dovecot.nix
+++ b/nixpkgs/nixos/modules/services/mail/dovecot.nix
@@ -181,7 +181,7 @@ in
};
configFile = mkOption {
- type = types.nullOr types.str;
+ type = types.nullOr types.path;
default = null;
description = "Config file used for the whole dovecot configuration.";
apply = v: if v != null then v else pkgs.writeText "dovecot.conf" dovecotConf;
diff --git a/nixpkgs/nixos/modules/services/misc/gitlab.nix b/nixpkgs/nixos/modules/services/misc/gitlab.nix
index 4c1ffead00c..20b87af23a5 100644
--- a/nixpkgs/nixos/modules/services/misc/gitlab.nix
+++ b/nixpkgs/nixos/modules/services/misc/gitlab.nix
@@ -7,6 +7,11 @@ let
ruby = cfg.packages.gitlab.ruby;
+ postgresqlPackage = if config.services.postgresql.enable then
+ config.services.postgresql.package
+ else
+ pkgs.postgresql;
+
gitlabSocket = "${cfg.statePath}/tmp/sockets/gitlab.socket";
gitalySocket = "${cfg.statePath}/tmp/sockets/gitaly.socket";
pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url;
@@ -22,6 +27,9 @@ let
} // cfg.extraDatabaseConfig;
};
+ # We only want to create a database if we're actually going to connect to it.
+ databaseActuallyCreateLocally = cfg.databaseCreateLocally && cfg.databaseHost == "";
+
gitalyToml = pkgs.writeText "gitaly.toml" ''
socket_path = "${lib.escape ["\""] gitalySocket}"
bin_dir = "${cfg.packages.gitaly}/bin"
@@ -138,7 +146,7 @@ let
mkdir -p $out/bin
makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rake $out/bin/gitlab-rake \
${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
- --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar config.services.postgresql.package pkgs.coreutils pkgs.procps ]}:$PATH' \
+ --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
--set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \
--run 'cd ${cfg.packages.gitlab}/share/gitlab'
'';
@@ -153,7 +161,7 @@ let
mkdir -p $out/bin
makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rails $out/bin/gitlab-rails \
${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
- --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar config.services.postgresql.package pkgs.coreutils pkgs.procps ]}:$PATH' \
+ --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
--run 'cd ${cfg.packages.gitlab}/share/gitlab'
'';
};
@@ -266,8 +274,8 @@ in {
description = ''
Whether a database should be automatically created on the
local host. Set this to <literal>false</literal> if you plan
- on provisioning a local database yourself or use an external
- one.
+ on provisioning a local database yourself. This has no effect
+ if <option>services.gitlab.databaseHost</option> is customized.
'';
};
@@ -557,8 +565,8 @@ in {
assertions = [
{
- assertion = cfg.databaseCreateLocally -> (cfg.user == cfg.databaseUsername);
- message = "For local automatic database provisioning services.gitlab.user and services.gitlab.databaseUsername should be identical.";
+ assertion = databaseActuallyCreateLocally -> (cfg.user == cfg.databaseUsername);
+ message = ''For local automatic database provisioning (services.gitlab.databaseCreateLocally == true) with peer authentication (services.gitlab.databaseHost == "") to work services.gitlab.user and services.gitlab.databaseUsername must be identical.'';
}
{
assertion = (cfg.databaseHost != "") -> (cfg.databasePasswordFile != null);
@@ -592,14 +600,14 @@ in {
services.redis.enable = mkDefault true;
# We use postgres as the main data store.
- services.postgresql = optionalAttrs cfg.databaseCreateLocally {
+ services.postgresql = optionalAttrs databaseActuallyCreateLocally {
enable = true;
ensureUsers = singleton { name = cfg.databaseUsername; };
};
# The postgresql module doesn't currently support concepts like
# objects owners and extensions; for now we tack on what's needed
# here.
- systemd.services.postgresql.postStart = mkAfter (optionalString cfg.databaseCreateLocally ''
+ systemd.services.postgresql.postStart = mkAfter (optionalString databaseActuallyCreateLocally ''
$PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${cfg.databaseName}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${cfg.databaseName}" OWNER "${cfg.databaseUsername}"'
current_owner=$($PSQL -tAc "SELECT pg_catalog.pg_get_userbyid(datdba) FROM pg_catalog.pg_database WHERE datname = '${cfg.databaseName}'")
if [[ "$current_owner" != "${cfg.databaseUsername}" ]]; then
@@ -675,7 +683,7 @@ in {
wantedBy = [ "multi-user.target" ];
environment = gitlabEnv;
path = with pkgs; [
- config.services.postgresql.package
+ postgresqlPackage
gitAndTools.git
ruby
openssh
@@ -756,81 +764,13 @@ in {
wantedBy = [ "multi-user.target" ];
environment = gitlabEnv;
path = with pkgs; [
- config.services.postgresql.package
+ postgresqlPackage
gitAndTools.git
openssh
nodejs
procps
gnupg
];
- preStart = ''
- cp -f ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION
- rm -rf ${cfg.statePath}/db/*
- cp -rf --no-preserve=mode ${cfg.packages.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config
- cp -rf --no-preserve=mode ${cfg.packages.gitlab}/share/gitlab/db/* ${cfg.statePath}/db
-
- ${cfg.packages.gitlab-shell}/bin/install
-
- ${optionalString cfg.smtp.enable ''
- install -m u=rw ${smtpSettings} ${cfg.statePath}/config/initializers/smtp_settings.rb
- ${optionalString (cfg.smtp.passwordFile != null) ''
- smtp_password=$(<'${cfg.smtp.passwordFile}')
- ${pkgs.replace}/bin/replace-literal -e '@smtpPassword@' "$smtp_password" '${cfg.statePath}/config/initializers/smtp_settings.rb'
- ''}
- ''}
-
- (
- umask u=rwx,g=,o=
-
- ${pkgs.openssl}/bin/openssl rand -hex 32 > ${cfg.statePath}/gitlab_shell_secret
-
- ${if cfg.databasePasswordFile != null then ''
- export db_password="$(<'${cfg.databasePasswordFile}')"
-
- if [[ -z "$db_password" ]]; then
- >&2 echo "Database password was an empty string!"
- exit 1
- fi
-
- ${pkgs.jq}/bin/jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
- '.production.password = $ENV.db_password' \
- >'${cfg.statePath}/config/database.yml'
- ''
- else ''
- ${pkgs.jq}/bin/jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
- >'${cfg.statePath}/config/database.yml'
- ''
- }
-
- ${utils.genJqSecretsReplacementSnippet
- gitlabConfig
- "${cfg.statePath}/config/gitlab.yml"
- }
-
- if [[ -h '${cfg.statePath}/config/secrets.yml' ]]; then
- rm '${cfg.statePath}/config/secrets.yml'
- fi
-
- export secret="$(<'${cfg.secrets.secretFile}')"
- export db="$(<'${cfg.secrets.dbFile}')"
- export otp="$(<'${cfg.secrets.otpFile}')"
- export jws="$(<'${cfg.secrets.jwsFile}')"
- ${pkgs.jq}/bin/jq -n '{production: {secret_key_base: $ENV.secret,
- otp_key_base: $ENV.otp,
- db_key_base: $ENV.db,
- openid_connect_signing_key: $ENV.jws}}' \
- > '${cfg.statePath}/config/secrets.yml'
- )
-
- initial_root_password="$(<'${cfg.initialRootPasswordFile}')"
- ${gitlab-rake}/bin/gitlab-rake gitlab:db:configure GITLAB_ROOT_PASSWORD="$initial_root_password" \
- GITLAB_ROOT_EMAIL='${cfg.initialRootEmail}'
-
- # We remove potentially broken links to old gitlab-shell versions
- rm -Rf ${cfg.statePath}/repositories/**/*.git/hooks
-
- ${pkgs.git}/bin/git config --global core.autocrlf "input"
- '';
serviceConfig = {
Type = "simple";
@@ -839,6 +779,89 @@ in {
TimeoutSec = "infinity";
Restart = "on-failure";
WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab";
+ ExecStartPre = let
+ preStartFullPrivileges = ''
+ shopt -s dotglob nullglob
+ chown --no-dereference '${cfg.user}':'${cfg.group}' '${cfg.statePath}'/*
+ chown --no-dereference '${cfg.user}':'${cfg.group}' '${cfg.statePath}'/config/*
+ '';
+ preStart = ''
+ cp -f ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION
+ rm -rf ${cfg.statePath}/db/*
+ rm -rf ${cfg.statePath}/config/initializers/*
+ cp -rf --no-preserve=mode ${cfg.packages.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config
+ cp -rf --no-preserve=mode ${cfg.packages.gitlab}/share/gitlab/db/* ${cfg.statePath}/db
+
+ ${cfg.packages.gitlab-shell}/bin/install
+
+ ${optionalString cfg.smtp.enable ''
+ install -m u=rw ${smtpSettings} ${cfg.statePath}/config/initializers/smtp_settings.rb
+ ${optionalString (cfg.smtp.passwordFile != null) ''
+ smtp_password=$(<'${cfg.smtp.passwordFile}')
+ ${pkgs.replace}/bin/replace-literal -e '@smtpPassword@' "$smtp_password" '${cfg.statePath}/config/initializers/smtp_settings.rb'
+ ''}
+ ''}
+
+ (
+ umask u=rwx,g=,o=
+
+ ${pkgs.openssl}/bin/openssl rand -hex 32 > ${cfg.statePath}/gitlab_shell_secret
+
+ if [[ -h '${cfg.statePath}/config/database.yml' ]]; then
+ rm '${cfg.statePath}/config/database.yml'
+ fi
+
+ ${if cfg.databasePasswordFile != null then ''
+ export db_password="$(<'${cfg.databasePasswordFile}')"
+
+ if [[ -z "$db_password" ]]; then
+ >&2 echo "Database password was an empty string!"
+ exit 1
+ fi
+
+ ${pkgs.jq}/bin/jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
+ '.production.password = $ENV.db_password' \
+ >'${cfg.statePath}/config/database.yml'
+ ''
+ else ''
+ ${pkgs.jq}/bin/jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
+ >'${cfg.statePath}/config/database.yml'
+ ''
+ }
+
+ ${utils.genJqSecretsReplacementSnippet
+ gitlabConfig
+ "${cfg.statePath}/config/gitlab.yml"
+ }
+
+ if [[ -h '${cfg.statePath}/config/secrets.yml' ]]; then
+ rm '${cfg.statePath}/config/secrets.yml'
+ fi
+
+ export secret="$(<'${cfg.secrets.secretFile}')"
+ export db="$(<'${cfg.secrets.dbFile}')"
+ export otp="$(<'${cfg.secrets.otpFile}')"
+ export jws="$(<'${cfg.secrets.jwsFile}')"
+ ${pkgs.jq}/bin/jq -n '{production: {secret_key_base: $ENV.secret,
+ otp_key_base: $ENV.otp,
+ db_key_base: $ENV.db,
+ openid_connect_signing_key: $ENV.jws}}' \
+ > '${cfg.statePath}/config/secrets.yml'
+ )
+
+ initial_root_password="$(<'${cfg.initialRootPasswordFile}')"
+ ${gitlab-rake}/bin/gitlab-rake gitlab:db:configure GITLAB_ROOT_PASSWORD="$initial_root_password" \
+ GITLAB_ROOT_EMAIL='${cfg.initialRootEmail}' > /dev/null
+
+ # We remove potentially broken links to old gitlab-shell versions
+ rm -Rf ${cfg.statePath}/repositories/**/*.git/hooks
+
+ ${pkgs.git}/bin/git config --global core.autocrlf "input"
+ '';
+ in [
+ "+${pkgs.writeShellScript "gitlab-pre-start-full-privileges" preStartFullPrivileges}"
+ "${pkgs.writeShellScript "gitlab-pre-start" preStart}"
+ ];
ExecStart = "${cfg.packages.gitlab.rubyEnv}/bin/unicorn -c ${cfg.statePath}/config/unicorn.rb -E production";
};
diff --git a/nixpkgs/nixos/modules/services/misc/nix-daemon.nix b/nixpkgs/nixos/modules/services/misc/nix-daemon.nix
index 3826f728afd..ff4e4f5b97d 100644
--- a/nixpkgs/nixos/modules/services/misc/nix-daemon.nix
+++ b/nixpkgs/nixos/modules/services/misc/nix-daemon.nix
@@ -10,7 +10,7 @@ let
nixVersion = getVersion nix;
- isNix20 = versionAtLeast nixVersion "2.0pre";
+ isNix23 = versionAtLeast nixVersion "2.3pre";
makeNixBuildUser = nr:
{ name = "nixbld${toString nr}";
@@ -27,43 +27,30 @@ let
nixbldUsers = map makeNixBuildUser (range 1 cfg.nrBuildUsers);
nixConf =
- let
- # In Nix < 2.0, If we're using sandbox for builds, then provide
- # /bin/sh in the sandbox as a bind-mount to bash. This means we
- # also need to include the entire closure of bash. Nix >= 2.0
- # provides a /bin/sh by default.
- sh = pkgs.runtimeShell;
- binshDeps = pkgs.writeReferencesToFile sh;
- in
- pkgs.runCommand "nix.conf" { preferLocalBuild = true; extraOptions = cfg.extraOptions; } (''
- ${optionalString (!isNix20) ''
- extraPaths=$(for i in $(cat ${binshDeps}); do if test -d $i; then echo $i; fi; done)
- ''}
+ assert versionAtLeast nixVersion "2.2";
+ pkgs.runCommand "nix.conf" { preferLocalBuild = true; extraOptions = cfg.extraOptions; } (
+ ''
cat > $out <<END
# WARNING: this file is generated from the nix.* options in
# your NixOS configuration, typically
# /etc/nixos/configuration.nix. Do not edit it!
build-users-group = nixbld
- ${if isNix20 then "max-jobs" else "build-max-jobs"} = ${toString (cfg.maxJobs)}
- ${if isNix20 then "cores" else "build-cores"} = ${toString (cfg.buildCores)}
- ${if isNix20 then "sandbox" else "build-use-sandbox"} = ${if (builtins.isBool cfg.useSandbox) then boolToString cfg.useSandbox else cfg.useSandbox}
- ${if isNix20 then "extra-sandbox-paths" else "build-sandbox-paths"} = ${toString cfg.sandboxPaths} ${optionalString (!isNix20) "/bin/sh=${sh} $(echo $extraPaths)"}
- ${if isNix20 then "substituters" else "binary-caches"} = ${toString cfg.binaryCaches}
- ${if isNix20 then "trusted-substituters" else "trusted-binary-caches"} = ${toString cfg.trustedBinaryCaches}
- ${if isNix20 then "trusted-public-keys" else "binary-cache-public-keys"} = ${toString cfg.binaryCachePublicKeys}
+ max-jobs = ${toString (cfg.maxJobs)}
+ cores = ${toString (cfg.buildCores)}
+ sandbox = ${if (builtins.isBool cfg.useSandbox) then boolToString cfg.useSandbox else cfg.useSandbox}
+ extra-sandbox-paths = ${toString cfg.sandboxPaths}
+ substituters = ${toString cfg.binaryCaches}
+ trusted-substituters = ${toString cfg.trustedBinaryCaches}
+ trusted-public-keys = ${toString cfg.binaryCachePublicKeys}
auto-optimise-store = ${boolToString cfg.autoOptimiseStore}
- ${if isNix20 then ''
- require-sigs = ${if cfg.requireSignedBinaryCaches then "true" else "false"}
- '' else ''
- signed-binary-caches = ${if cfg.requireSignedBinaryCaches then "*" else ""}
- ''}
+ require-sigs = ${if cfg.requireSignedBinaryCaches then "true" else "false"}
trusted-users = ${toString cfg.trustedUsers}
allowed-users = ${toString cfg.allowedUsers}
- ${optionalString (isNix20 && !cfg.distributedBuilds) ''
+ ${optionalString (!cfg.distributedBuilds) ''
builders =
''}
system-features = ${toString cfg.systemFeatures}
- ${optionalString (versionAtLeast nixVersion "2.3pre") ''
+ ${optionalString isNix23 ''
sandbox-fallback = false
''}
$extraOptions
@@ -74,7 +61,7 @@ let
'' else ''
echo "Checking that Nix can read nix.conf..."
ln -s $out ./nix.conf
- NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config >/dev/null
+ NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config ${optionalString isNix23 "--no-net"} >/dev/null
'')
);
@@ -421,8 +408,7 @@ in
systemd.services.nix-daemon =
{ path = [ nix pkgs.utillinux config.programs.ssh.package ]
- ++ optionals cfg.distributedBuilds [ pkgs.gzip ]
- ++ optionals (!isNix20) [ pkgs.openssl.bin ];
+ ++ optionals cfg.distributedBuilds [ pkgs.gzip ];
environment = cfg.envVars
// { CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"; }
@@ -439,34 +425,13 @@ in
restartTriggers = [ nixConf ];
};
- nix.envVars =
- optionalAttrs (!isNix20) {
- NIX_CONF_DIR = "/etc/nix";
-
- # Enable the copy-from-other-stores substituter, which allows
- # builds to be sped up by copying build results from remote
- # Nix stores. To do this, mount the remote file system on a
- # subdirectory of /run/nix/remote-stores.
- NIX_OTHER_STORES = "/run/nix/remote-stores/*/nix";
- }
-
- // optionalAttrs (cfg.distributedBuilds && !isNix20) {
- NIX_BUILD_HOOK = "${nix}/libexec/nix/build-remote.pl";
- };
-
# Set up the environment variables for running Nix.
environment.sessionVariables = cfg.envVars //
{ NIX_PATH = cfg.nixPath;
};
- environment.extraInit = optionalString (!isNix20)
+ environment.extraInit =
''
- # Set up secure multi-user builds: non-root users build through the
- # Nix daemon.
- if [ "$USER" != root -o ! -w /nix/var/nix/db ]; then
- export NIX_REMOTE=daemon
- fi
- '' + ''
if [ -e "$HOME/.nix-defexpr/channels" ]; then
export NIX_PATH="$HOME/.nix-defexpr/channels''${NIX_PATH:+:$NIX_PATH}"
fi
@@ -478,21 +443,15 @@ in
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
- # FIXME: use systemd-tmpfiles to create Nix directories.
system.activationScripts.nix = stringAfter [ "etc" "users" ]
''
- # Nix initialisation.
- install -m 0755 -d \
- /nix/var/nix/gcroots \
- /nix/var/nix/temproots \
- /nix/var/nix/userpool \
- /nix/var/nix/profiles \
- /nix/var/nix/db \
- /nix/var/log/nix/drvs
- install -m 1777 -d \
- /nix/var/nix/gcroots/per-user \
- /nix/var/nix/profiles/per-user \
- /nix/var/nix/gcroots/tmp
+ # Create directories in /nix.
+ ${nix}/bin/nix ping-store --no-net
+
+ # Subscribe the root user to the NixOS channel by default.
+ if [ ! -e "/root/.nix-channels" ]; then
+ echo "${config.system.defaultChannel} nixos" > "/root/.nix-channels"
+ fi
'';
nix.systemFeatures = mkDefault (
diff --git a/nixpkgs/nixos/modules/services/misc/nix-optimise.nix b/nixpkgs/nixos/modules/services/misc/nix-optimise.nix
index 416529f690e..e02026d5f76 100644
--- a/nixpkgs/nixos/modules/services/misc/nix-optimise.nix
+++ b/nixpkgs/nixos/modules/services/misc/nix-optimise.nix
@@ -40,8 +40,8 @@ in
systemd.services.nix-optimise =
{ description = "Nix Store Optimiser";
- # No point running it inside a nixos-container. It should be on the host instead.
- unitConfig.ConditionVirtualization = "!container";
+ # No point this if the nix daemon (and thus the nix store) is outside
+ unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket";
serviceConfig.ExecStart = "${config.nix.package}/bin/nix-store --optimise";
startAt = optionals cfg.automatic cfg.dates;
};
diff --git a/nixpkgs/nixos/modules/services/monitoring/do-agent.nix b/nixpkgs/nixos/modules/services/monitoring/do-agent.nix
new file mode 100644
index 00000000000..2d3fe2f7976
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/monitoring/do-agent.nix
@@ -0,0 +1,34 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.do-agent;
+in
+{
+ options.services.do-agent = {
+ enable = mkEnableOption "do-agent, the DigitalOcean droplet metrics agent";
+ };
+
+ config = mkIf cfg.enable {
+ environment.systemPackages = [ pkgs.do-agent ];
+
+ systemd.services.do-agent = {
+ description = "DigitalOcean Droplet Metrics Agent";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network-online.target" ];
+ wants = [ "network-online.target" ];
+ serviceConfig = {
+ ExecStart = "${pkgs.do-agent}/bin/do-agent --syslog";
+ Restart = "always";
+ OOMScoreAdjust = -900;
+ SyslogIdentifier = "DigitalOceanAgent";
+ PrivateTmp = "yes";
+ ProtectSystem = "full";
+ ProtectHome = "yes";
+ NoNewPrivileges = "yes";
+ DynamicUser = "yes";
+ };
+ };
+ };
+}
diff --git a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters.nix
index 84486aa98a4..35b513bac57 100644
--- a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -30,6 +30,7 @@ let
"json"
"mail"
"minio"
+ "nextcloud"
"nginx"
"node"
"postfix"
diff --git a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix
new file mode 100644
index 00000000000..5f9a52053f7
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix
@@ -0,0 +1,58 @@
+{ config, lib, pkgs, options }:
+
+with lib;
+
+let
+ cfg = config.services.prometheus.exporters.nextcloud;
+in
+{
+ port = 9205;
+ extraOpts = {
+ url = mkOption {
+ type = types.str;
+ example = "https://domain.tld";
+ description = ''
+ URL to the Nextcloud serverinfo page.
+ Adding the path to the serverinfo API is optional, it defaults
+ to <literal>/ocs/v2.php/apps/serverinfo/api/v1/info</literal>.
+ '';
+ };
+ username = mkOption {
+ type = types.str;
+ default = "nextcloud-exporter";
+ description = ''
+ Username for connecting to Nextcloud.
+ Note that this account needs to have admin privileges in Nextcloud.
+ '';
+ };
+ passwordFile = mkOption {
+ type = types.path;
+ example = "/path/to/password-file";
+ description = ''
+ File containing the password for connecting to Nextcloud.
+ Make sure that this file is readable by the exporter user.
+ '';
+ };
+ timeout = mkOption {
+ type = types.str;
+ default = "5s";
+ description = ''
+ Timeout for getting server info document.
+ '';
+ };
+ };
+ serviceOpts = {
+ serviceConfig = {
+ DynamicUser = false;
+ ExecStart = ''
+ ${pkgs.prometheus-nextcloud-exporter}/bin/nextcloud-exporter \
+ -a ${cfg.listenAddress}:${toString cfg.port} \
+ -u ${cfg.username} \
+ -t ${cfg.timeout} \
+ -l ${cfg.url} \
+ -p @${cfg.passwordFile} \
+ ${concatStringsSep " \\\n " cfg.extraFlags}
+ '';
+ };
+ };
+}
diff --git a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix
index 554377df37b..ba852fea433 100644
--- a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix
@@ -49,6 +49,6 @@ in
(mkRemovedOptionModule [ "insecure" ] ''
This option was replaced by 'prometheus.exporters.nginx.sslVerify'.
'')
- ({ options.warnings = options.warnings; })
+ ({ options.warnings = options.warnings; options.assertions = options.assertions; })
];
}
diff --git a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix
index 8ae2c927b58..374f83a2939 100644
--- a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix
@@ -6,6 +6,10 @@ let
cfg = config.services.prometheus.exporters.wireguard;
in {
port = 9586;
+ imports = [
+ (mkRenamedOptionModule [ "addr" ] [ "listenAddress" ])
+ ({ options.warnings = options.warnings; options.assertions = options.assertions; })
+ ];
extraOpts = {
verbose = mkEnableOption "Verbose logging mode for prometheus-wireguard-exporter";
@@ -51,6 +55,7 @@ in {
ExecStart = ''
${pkgs.prometheus-wireguard-exporter}/bin/prometheus_wireguard_exporter \
-p ${toString cfg.port} \
+ -l ${cfg.listenAddress} \
${optionalString cfg.verbose "-v"} \
${optionalString cfg.singleSubnetPerField "-s"} \
${optionalString cfg.withRemoteIp "-r"} \
diff --git a/nixpkgs/nixos/modules/services/monitoring/thanos.nix b/nixpkgs/nixos/modules/services/monitoring/thanos.nix
index 215cd43fd86..52dab28cf72 100644
--- a/nixpkgs/nixos/modules/services/monitoring/thanos.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/thanos.nix
@@ -126,6 +126,8 @@ let
'';
description = ''
Path to YAML file that contains tracing configuration.
+
+ See format details: <link xlink:href="https://thanos.io/tracing.md/#configuration"/>
'';
};
};
@@ -141,6 +143,8 @@ let
<option>tracing.config-file</option> will default to its path.
If <option>tracing.config-file</option> is set this option has no effect.
+
+ See format details: <link xlink:href="https://thanos.io/tracing.md/#configuration"/>
'';
};
};
@@ -187,6 +191,8 @@ let
'';
description = ''
Path to YAML file that contains object store configuration.
+
+ See format details: <link xlink:href="https://thanos.io/storage.md/#configuration"/>
'';
};
};
@@ -202,6 +208,8 @@ let
<option>objstore.config-file</option> will default to its path.
If <option>objstore.config-file</option> is set this option has no effect.
+
+ See format details: <link xlink:href="https://thanos.io/storage.md/#configuration"/>
'';
};
};
@@ -276,6 +284,24 @@ let
block-sync-concurrency = mkParamDef types.int 20 ''
Number of goroutines to use when syncing blocks from object storage.
'';
+
+ min-time = mkParamDef types.str "0000-01-01T00:00:00Z" ''
+ Start of time range limit to serve.
+
+ Thanos Store serves only metrics, which happened later than this
+ value. Option can be a constant time in RFC3339 format or time duration
+ relative to current time, such as -1d or 2h45m. Valid duration units are
+ ms, s, m, h, d, w, y.
+ '';
+
+ max-time = mkParamDef types.str "9999-12-31T23:59:59Z" ''
+ End of time range limit to serve.
+
+ Thanos Store serves only blocks, which happened eariler than this
+ value. Option can be a constant time in RFC3339 format or time duration
+ relative to current time, such as -1d or 2h45m. Valid duration units are
+ ms, s, m, h, d, w, y.
+ '';
};
query = params.common cfg.query // {
@@ -560,6 +586,14 @@ let
'';
};
+ downsampling.disable = mkFlagParam ''
+ Disables downsampling.
+
+ This is not recommended as querying long time ranges without
+ non-downsampled data is not efficient and useful e.g it is not possible
+ to render all samples for a human eye anyway
+ '';
+
block-sync-concurrency = mkParamDef types.int 20 ''
Number of goroutines to use when syncing block metadata from object storage.
'';
diff --git a/nixpkgs/nixos/modules/services/monitoring/zabbix-server.nix b/nixpkgs/nixos/modules/services/monitoring/zabbix-server.nix
index 4b4049ed360..e9f1590760a 100644
--- a/nixpkgs/nixos/modules/services/monitoring/zabbix-server.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/zabbix-server.nix
@@ -30,6 +30,7 @@ let
DBUser = ${cfg.database.user}
${optionalString (cfg.database.passwordFile != null) "Include ${passwordFile}"}
${optionalString (mysqlLocal && cfg.database.socket != null) "DBSocket = ${cfg.database.socket}"}
+ PidFile = ${runtimeDir}/zabbix_server.pid
SocketDir = ${runtimeDir}
FpingLocation = /run/wrappers/bin/fping
${optionalString (cfg.modules != {}) "LoadModulePath = ${moduleEnv}/lib"}
diff --git a/nixpkgs/nixos/modules/services/network-filesystems/samba.nix b/nixpkgs/nixos/modules/services/network-filesystems/samba.nix
index 055508a3224..ce565dbaab8 100644
--- a/nixpkgs/nixos/modules/services/network-filesystems/samba.nix
+++ b/nixpkgs/nixos/modules/services/network-filesystems/samba.nix
@@ -45,6 +45,7 @@ let
daemonService = appName: args:
{ description = "Samba Service Daemon ${appName}";
+ after = [ "network.target" ];
requiredBy = [ "samba.target" ];
partOf = [ "samba.target" ];
diff --git a/nixpkgs/nixos/modules/services/networking/mxisd.nix b/nixpkgs/nixos/modules/services/networking/mxisd.nix
index 02e89f441b3..a3d61922e57 100644
--- a/nixpkgs/nixos/modules/services/networking/mxisd.nix
+++ b/nixpkgs/nixos/modules/services/networking/mxisd.nix
@@ -3,6 +3,15 @@
with lib;
let
+
+ isMa1sd =
+ package:
+ lib.hasPrefix "ma1sd" package.name;
+
+ isMxisd =
+ package:
+ lib.hasPrefix "mxisd" package.name;
+
cfg = config.services.mxisd;
server = optionalAttrs (cfg.server.name != null) { inherit (cfg.server) name; }
@@ -12,37 +21,41 @@ let
matrix.domain = cfg.matrix.domain;
key.path = "${cfg.dataDir}/signing.key";
storage = {
- provider.sqlite.database = "${cfg.dataDir}/mxisd.db";
+ provider.sqlite.database = if isMa1sd cfg.package
+ then "${cfg.dataDir}/ma1sd.db"
+ else "${cfg.dataDir}/mxisd.db";
};
} // optionalAttrs (server != {}) { inherit server; };
# merges baseConfig and extraConfig into a single file
fullConfig = recursiveUpdate baseConfig cfg.extraConfig;
- configFile = pkgs.writeText "mxisd-config.yaml" (builtins.toJSON fullConfig);
+ configFile = if isMa1sd cfg.package
+ then pkgs.writeText "ma1sd-config.yaml" (builtins.toJSON fullConfig)
+ else pkgs.writeText "mxisd-config.yaml" (builtins.toJSON fullConfig);
in {
options = {
services.mxisd = {
- enable = mkEnableOption "mxisd matrix federated identity server";
+ enable = mkEnableOption "matrix federated identity server";
package = mkOption {
type = types.package;
default = pkgs.mxisd;
defaultText = "pkgs.mxisd";
- description = "The mxisd package to use";
+ description = "The mxisd/ma1sd package to use";
};
dataDir = mkOption {
type = types.str;
default = "/var/lib/mxisd";
- description = "Where data mxisd uses resides";
+ description = "Where data mxisd/ma1sd uses resides";
};
extraConfig = mkOption {
type = types.attrs;
default = {};
- description = "Extra options merged into the mxisd configuration";
+ description = "Extra options merged into the mxisd/ma1sd configuration";
};
matrix = {
@@ -62,7 +75,7 @@ in {
type = types.nullOr types.str;
default = null;
description = ''
- Public hostname of mxisd, if different from the Matrix domain.
+ Public hostname of mxisd/ma1sd, if different from the Matrix domain.
'';
};
@@ -103,11 +116,13 @@ in {
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
- serviceConfig = {
+ serviceConfig = let
+ executable = if isMa1sd cfg.package then "ma1sd" else "mxisd";
+ in {
Type = "simple";
User = "mxisd";
Group = "mxisd";
- ExecStart = "${cfg.package}/bin/mxisd -c ${configFile}";
+ ExecStart = "${cfg.package}/bin/${executable} -c ${configFile}";
WorkingDirectory = cfg.dataDir;
Restart = "on-failure";
};
diff --git a/nixpkgs/nixos/modules/services/networking/networkmanager.nix b/nixpkgs/nixos/modules/services/networking/networkmanager.nix
index 887c89ddf3a..176d26e07b0 100644
--- a/nixpkgs/nixos/modules/services/networking/networkmanager.nix
+++ b/nixpkgs/nixos/modules/services/networking/networkmanager.nix
@@ -5,11 +5,25 @@ with lib;
let
cfg = config.networking.networkmanager;
+ basePackages = with pkgs; [
+ crda
+ modemmanager
+ networkmanager
+ networkmanager-fortisslvpn
+ networkmanager-iodine
+ networkmanager-l2tp
+ networkmanager-openconnect
+ networkmanager-openvpn
+ networkmanager-vpnc
+ ] ++ optional (!delegateWireless && !enableIwd) wpa_supplicant;
+
dynamicHostsEnabled =
cfg.dynamicHosts.enable && cfg.dynamicHosts.hostsDirs != {};
delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [];
+ enableIwd = cfg.wifi.backend == "iwd";
+
# /var/lib/misc is for dnsmasq.leases.
stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc";
@@ -38,6 +52,7 @@ let
[device]
wifi.scan-rand-mac-address=${if cfg.wifi.scanRandMacAddress then "yes" else "no"}
+ wifi.backend=${cfg.wifi.backend}
${cfg.extraConfig}
'';
@@ -176,25 +191,13 @@ in {
'';
};
- # Ugly hack for using the correct gnome3 packageSet
- basePackages = mkOption {
- type = types.attrsOf types.package;
- default = { inherit (pkgs)
- networkmanager modemmanager crda
- networkmanager-openvpn networkmanager-vpnc
- networkmanager-openconnect networkmanager-fortisslvpn
- networkmanager-l2tp networkmanager-iodine; }
- // optionalAttrs (!delegateWireless) { inherit (pkgs) wpa_supplicant; };
- internal = true;
- };
-
packages = mkOption {
- type = types.listOf types.path;
+ type = types.listOf types.package;
default = [ ];
description = ''
Extra packages that provide NetworkManager plugins.
'';
- apply = list: (attrValues cfg.basePackages) ++ list;
+ apply = list: basePackages ++ list;
};
dhcp = mkOption {
@@ -236,6 +239,15 @@ in {
wifi = {
macAddress = macAddressOpt;
+ backend = mkOption {
+ type = types.enum [ "wpa_supplicant" "iwd" ];
+ default = "wpa_supplicant";
+ description = ''
+ Specify the Wi-Fi backend used for the device.
+ Currently supported are <option>wpa_supplicant</option> or <option>iwd</option> (experimental).
+ '';
+ };
+
powersave = mkOption {
type = types.nullOr types.bool;
default = null;
@@ -390,12 +402,12 @@ in {
{ assertion = !dynamicHostsEnabled || (dynamicHostsEnabled && cfg.dns == "dnsmasq");
message = ''
To use networking.networkmanager.dynamicHosts you also need to set
- networking.networkmanager.dns = "dnsmasq"
+ `networking.networkmanager.dns = "dnsmasq"`
'';
}
];
- environment.etc = with cfg.basePackages; [
+ environment.etc = with pkgs; [
{ source = configFile;
target = "NetworkManager/NetworkManager.conf";
}
@@ -469,12 +481,16 @@ in {
mkdir -m 700 -p /etc/ipsec.d
mkdir -m 755 -p ${stateDirs}
'';
+
+ aliases = [ "dbus-org.freedesktop.NetworkManager.service" ];
};
systemd.services.NetworkManager-wait-online = {
wantedBy = [ "network-online.target" ];
};
+ systemd.services.ModemManager.aliases = [ "dbus-org.freedesktop.ModemManager1.service" ];
+
systemd.services.nm-setup-hostsdirs = mkIf dynamicHostsEnabled {
wantedBy = [ "NetworkManager.service" ];
before = [ "NetworkManager.service" ];
@@ -496,6 +512,7 @@ in {
# useful binaries for user-specified hooks
path = [ pkgs.iproute pkgs.utillinux pkgs.coreutils ];
+ aliases = [ "dbus-org.freedesktop.nm-dispatcher.service" ];
};
# Turn off NixOS' network management when networking is managed entirely by NetworkManager
@@ -505,6 +522,8 @@ in {
wireless.enable = mkDefault false;
}) // (mkIf cfg.enableStrongSwan {
networkmanager.packages = [ pkgs.networkmanager_strongswan ];
+ }) // (mkIf enableIwd {
+ wireless.iwd.enable = true;
});
security.polkit.extraConfig = polkitConf;
diff --git a/nixpkgs/nixos/modules/services/networking/wpa_supplicant.nix b/nixpkgs/nixos/modules/services/networking/wpa_supplicant.nix
index 63e59e7c8fa..294c0d70ede 100644
--- a/nixpkgs/nixos/modules/services/networking/wpa_supplicant.nix
+++ b/nixpkgs/nixos/modules/services/networking/wpa_supplicant.nix
@@ -103,6 +103,13 @@ in {
description = ''
Set this to <literal>true</literal> if the SSID of the network is hidden.
'';
+ example = literalExample ''
+ { echelon = {
+ hidden = true;
+ psk = "abcdefgh";
+ };
+ }
+ '';
};
priority = mkOption {
@@ -146,10 +153,13 @@ in {
'';
default = {};
example = literalExample ''
- { echelon = {
+ { echelon = { # SSID with no spaces or special characters
psk = "abcdefgh";
};
- "free.wifi" = {};
+ "echelon's AP" = { # SSID with spaces and/or special characters
+ psk = "ijklmnop";
+ };
+ "free.wifi" = {}; # Public wireless network
}
'';
};
diff --git a/nixpkgs/nixos/modules/services/networking/zeronet.nix b/nixpkgs/nixos/modules/services/networking/zeronet.nix
index f4988a90268..f354a9d42c7 100644
--- a/nixpkgs/nixos/modules/services/networking/zeronet.nix
+++ b/nixpkgs/nixos/modules/services/networking/zeronet.nix
@@ -1,44 +1,39 @@
{ config, lib, pkgs, ... }:
let
+ inherit (lib) generators literalExample mkEnableOption mkIf mkOption recursiveUpdate types;
cfg = config.services.zeronet;
-
- zConfFile = pkgs.writeTextFile {
- name = "zeronet.conf";
-
- text = ''
- [global]
- data_dir = ${cfg.dataDir}
- log_dir = ${cfg.logDir}
- '' + lib.optionalString (cfg.port != null) ''
- ui_port = ${toString cfg.port}
- '' + lib.optionalString (cfg.fileserverPort != null) ''
- fileserver_port = ${toString cfg.fileserverPort}
- '' + lib.optionalString (cfg.torAlways) ''
- tor = always
- '' + cfg.extraConfig;
+ dataDir = "/var/lib/zeronet";
+ configFile = pkgs.writeText "zeronet.conf" (generators.toINI {} (recursiveUpdate defaultSettings cfg.settings));
+
+ defaultSettings = {
+ global = {
+ data_dir = dataDir;
+ log_dir = dataDir;
+ ui_port = cfg.port;
+ fileserver_port = cfg.fileserverPort;
+ tor = if !cfg.tor then "disable" else if cfg.torAlways then "always" else "enable";
+ };
};
in with lib; {
options.services.zeronet = {
enable = mkEnableOption "zeronet";
- dataDir = mkOption {
- type = types.path;
- default = "/var/lib/zeronet";
- example = "/home/okina/zeronet";
- description = "Path to the zeronet data directory.";
- };
+ settings = mkOption {
+ type = with types; attrsOf (oneOf [ str int bool (listOf str) ]);
+ default = {};
+ example = literalExample "global.tor = enable;";
- logDir = mkOption {
- type = types.path;
- default = "/var/log/zeronet";
- example = "/home/okina/zeronet/log";
- description = "Path to the zeronet log directory.";
+ description = ''
+ <filename>zeronet.conf</filename> configuration. Refer to
+ <link xlink:href="https://zeronet.readthedocs.io/en/latest/faq/#is-it-possible-to-use-a-configuration-file"/>
+ for details on supported values;
+ '';
};
port = mkOption {
- type = types.nullOr types.int;
- default = null;
+ type = types.int;
+ default = 43110;
example = 43110;
description = "Optional zeronet web UI port.";
};
@@ -63,22 +58,13 @@ in with lib; {
default = false;
description = "Use TOR for all zeronet traffic.";
};
-
- extraConfig = mkOption {
- type = types.lines;
- default = "";
-
- description = ''
- Extra configuration. Contents will be added verbatim to the
- configuration file at the end.
- '';
- };
};
config = mkIf cfg.enable {
services.tor = mkIf cfg.tor {
enable = true;
controlPort = 9051;
+
extraConfig = ''
CacheDirectoryGroupReadable 1
CookieAuthentication 1
@@ -86,37 +72,25 @@ in with lib; {
'';
};
- systemd.tmpfiles.rules = [
- "d '${cfg.dataDir}' 750 zeronet zeronet - -"
- "d '${cfg.logDir}' 750 zeronet zeronet - -"
- ];
-
systemd.services.zeronet = {
description = "zeronet";
after = [ "network.target" (optionalString cfg.tor "tor.service") ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
- PrivateTmp = "yes";
User = "zeronet";
- Group = "zeronet";
- ExecStart = "${pkgs.zeronet}/bin/zeronet --config_file ${zConfFile}";
- };
- };
-
- users = {
- groups.zeronet.gid = config.ids.gids.zeronet;
-
- users.zeronet = {
- description = "zeronet service user";
- home = cfg.dataDir;
- createHome = true;
- group = "zeronet";
- extraGroups = mkIf cfg.tor [ "tor" ];
- uid = config.ids.uids.zeronet;
+ DynamicUser = true;
+ StateDirectory = "zeronet";
+ SupplementaryGroups = mkIf cfg.tor [ "tor" ];
+ ExecStart = "${pkgs.zeronet}/bin/zeronet --config_file ${configFile}";
};
};
};
+ imports = [
+ (mkRemovedOptionModule [ "services" "zeronet" "dataDir" ] "Zeronet will store data by default in /var/lib/zeronet")
+ (mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
+ ];
+
meta.maintainers = with maintainers; [ chiiruno ];
}
diff --git a/nixpkgs/nixos/modules/services/security/fprintd.nix b/nixpkgs/nixos/modules/services/security/fprintd.nix
index 5662ebc61d2..8ece1ca1901 100644
--- a/nixpkgs/nixos/modules/services/security/fprintd.nix
+++ b/nixpkgs/nixos/modules/services/security/fprintd.nix
@@ -50,13 +50,6 @@ in
systemd.packages = [ cfg.package ];
-
- # The upstream unit does not use StateDirectory, and will
- # fail if the directory it needs is not present. Should be
- # fixed when https://gitlab.freedesktop.org/libfprint/fprintd/merge_requests/5
- # is merged.
- systemd.services.fprintd.serviceConfig.StateDirectory = "fprint";
-
};
}
diff --git a/nixpkgs/nixos/modules/services/web-apps/documize.nix b/nixpkgs/nixos/modules/services/web-apps/documize.nix
index 37359869cb6..1b90299aa23 100644
--- a/nixpkgs/nixos/modules/services/web-apps/documize.nix
+++ b/nixpkgs/nixos/modules/services/web-apps/documize.nix
@@ -14,6 +14,15 @@ in {
options.services.documize = {
enable = mkEnableOption "Documize Wiki";
+ stateDirectoryName = mkOption {
+ type = types.str;
+ default = "documize";
+ description = ''
+ The name of the directory below <filename>/var/lib/private</filename>
+ where documize runs in and stores, for example, backups.
+ '';
+ };
+
package = mkOption {
type = types.package;
default = pkgs.documize-community;
@@ -132,6 +141,8 @@ in {
];
Restart = "always";
DynamicUser = "yes";
+ StateDirectory = cfg.stateDirectoryName;
+ WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}";
};
};
};
diff --git a/nixpkgs/nixos/modules/services/web-apps/shiori.nix b/nixpkgs/nixos/modules/services/web-apps/shiori.nix
new file mode 100644
index 00000000000..1817a203935
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/web-apps/shiori.nix
@@ -0,0 +1,50 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+ cfg = config.services.shiori;
+in {
+ options = {
+ services.shiori = {
+ enable = mkEnableOption "Shiori simple bookmarks manager";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.shiori;
+ defaultText = "pkgs.shiori";
+ description = "The Shiori package to use.";
+ };
+
+ address = mkOption {
+ type = types.str;
+ default = "";
+ description = ''
+ The IP address on which Shiori will listen.
+ If empty, listens on all interfaces.
+ '';
+ };
+
+ port = mkOption {
+ type = types.port;
+ default = 8080;
+ description = "The port of the Shiori web application";
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ systemd.services.shiori = with cfg; {
+ description = "Shiori simple bookmarks manager";
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ ExecStart = "${package}/bin/shiori serve --address '${address}' --port '${toString port}'";
+ DynamicUser = true;
+ Environment = "SHIORI_DIR=/var/lib/shiori";
+ StateDirectory = "shiori";
+ };
+ };
+ };
+
+ meta.maintainers = with maintainers; [ minijackson ];
+}
diff --git a/nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix
index 098160ee369..b0374d949fc 100644
--- a/nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -12,7 +12,7 @@ let
php = mainCfg.phpPackage.override { apacheHttpd = httpd.dev; /* otherwise it only gets .out */ };
- phpMajorVersion = head (splitString "." php.version);
+ phpMajorVersion = lib.versions.major (lib.getVersion php);
mod_perl = pkgs.apacheHttpdPackages.mod_perl.override { apacheHttpd = httpd; };
diff --git a/nixpkgs/nixos/modules/services/web-servers/nginx/default.nix b/nixpkgs/nixos/modules/services/web-servers/nginx/default.nix
index e597f34700a..eb90dae94df 100644
--- a/nixpkgs/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixpkgs/nixos/modules/services/web-servers/nginx/default.nix
@@ -61,7 +61,10 @@ let
${optionalString (cfg.httpConfig == "" && cfg.config == "") ''
http {
- include ${cfg.package}/conf/mime.types;
+ # The mime type definitions included with nginx are very incomplete, so
+ # we use a list of mime types from the mailcap package, which is also
+ # used by most other Linux distributions by default.
+ include ${pkgs.mailcap}/etc/nginx/mime.types;
include ${cfg.package}/conf/fastcgi.conf;
include ${cfg.package}/conf/uwsgi_params;
@@ -119,6 +122,14 @@ let
include ${recommendedProxyConfig};
''}
+ ${optionalString (cfg.mapHashBucketSize != null) ''
+ map_hash_bucket_size ${toString cfg.mapHashBucketSize};
+ ''}
+
+ ${optionalString (cfg.mapHashMaxSize != null) ''
+ map_hash_max_size ${toString cfg.mapHashMaxSize};
+ ''}
+
# $connection_upgrade is used for websocket proxying
map $http_upgrade $connection_upgrade {
default upgrade;
@@ -507,6 +518,23 @@ in
'';
};
+ mapHashBucketSize = mkOption {
+ type = types.nullOr (types.enum [ 32 64 128 ]);
+ default = null;
+ description = ''
+ Sets the bucket size for the map variables hash tables. Default
+ value depends on the processor’s cache line size.
+ '';
+ };
+
+ mapHashMaxSize = mkOption {
+ type = types.nullOr types.ints.positive;
+ default = null;
+ description = ''
+ Sets the maximum size of the map variables hash tables.
+ '';
+ };
+
resolver = mkOption {
type = types.submodule {
options = {
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 30c5250221c..20385c884b5 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -28,6 +28,8 @@ let
(pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n")
(defaultPackages ++ cfg.extraGSettingsOverridePackages)}
+ cp -f ${pkgs.gnome3.gnome-shell}/share/gsettings-schemas/*/glib-2.0/schemas/*.gschema.override $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
+
chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
[org.gnome.desktop.background]
@@ -155,10 +157,10 @@ in
environment.systemPackages = cfg.sessionPath;
- environment.variables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
+ environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
# Override GSettings schemas
- environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
+ environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
# If gnome3 is installed, build vim for gtk3 too.
nixpkgs.config.vim.gui = "gtk3";
@@ -209,14 +211,6 @@ in
networking.networkmanager.enable = mkDefault true;
- # Use the correct gnome3 packageSet
- networking.networkmanager.basePackages = {
- inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
- inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc
- networkmanager-openconnect networkmanager-fortisslvpn
- networkmanager-iodine networkmanager-l2tp;
- };
-
services.xserver.updateDbusEnvironment = true;
# Needed for themes and backgrounds
@@ -229,6 +223,7 @@ in
services.colord.enable = mkDefault true;
services.gnome3.chrome-gnome-shell.enable = mkDefault true;
services.gnome3.glib-networking.enable = true;
+ services.gnome3.gnome-initial-setup.enable = mkDefault true;
services.gnome3.gnome-remote-desktop.enable = mkDefault true;
services.gnome3.gnome-settings-daemon.enable = true;
services.gnome3.gnome-user-share.enable = mkDefault true;
@@ -236,7 +231,8 @@ in
services.gvfs.enable = true;
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
services.telepathy.enable = mkDefault true;
- systemd.packages = [ pkgs.gnome3.vino ];
+
+ systemd.packages = with pkgs.gnome3; [ vino gnome-session ];
services.avahi.enable = mkDefault true;
@@ -329,10 +325,10 @@ in
# Let nautilus find extensions
# TODO: Create nautilus-with-extensions package
- environment.variables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
+ environment.sessionVariables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
# Override default mimeapps for nautilus
- environment.variables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
+ environment.sessionVariables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
environment.pathsToLink = [
"/share/nautilus-python/extensions"
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix
index 4563583e070..fe63f36cf96 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix
@@ -85,6 +85,7 @@ in
pkgs.gtk3.out
pkgs.shared-mime-info
pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
+ pkgs.mate.mate-settings-daemon
];
programs.dconf.enable = true;
@@ -98,7 +99,7 @@ in
services.gnome3.at-spi2-core.enable = true;
services.gnome3.gnome-keyring.enable = true;
services.gnome3.gnome-settings-daemon.enable = true;
- services.gnome3.gnome-settings-daemon.package = pkgs.mate.mate-settings-daemon;
+ services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
services.gvfs.enable = true;
services.upower.enable = config.powerManagement.enable;
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/pantheon.nix
index d80ea9a53e8..80dab135ee2 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/pantheon.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/pantheon.nix
@@ -109,8 +109,9 @@ in
services.pantheon.files.enable = mkDefault true;
services.tumbler.enable = mkDefault true;
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
- services.dbus.packages = [
- pkgs.pantheon.switchboard-plug-power
+ services.dbus.packages = with pkgs.pantheon; [
+ switchboard-plug-power
+ elementary-default-settings
];
services.pantheon.contractor.enable = mkDefault true;
services.gnome3.at-spi2-core.enable = true;
@@ -119,7 +120,7 @@ in
# TODO: gnome-keyring's xdg autostarts will still be in the environment (from elementary-session-settings) if disabled forcefully
services.gnome3.gnome-keyring.enable = true;
services.gnome3.gnome-settings-daemon.enable = true;
- services.gnome3.gnome-settings-daemon.package = pkgs.pantheon.elementary-settings-daemon;
+ services.udev.packages = [ pkgs.pantheon.elementary-settings-daemon ];
services.gvfs.enable = true;
services.gnome3.rygel.enable = mkDefault true;
services.gsignond.enable = mkDefault true;
@@ -154,11 +155,6 @@ in
qt5.style = "adwaita";
networking.networkmanager.enable = mkDefault true;
- networking.networkmanager.basePackages =
- { inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
- inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc
- networkmanager-openconnect networkmanager-fortisslvpn
- networkmanager-iodine networkmanager-l2tp; };
# Override GSettings schemas
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
index b10755df4dc..b6fb7218da6 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -183,7 +183,8 @@ in
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
++ lib.optional config.powerManagement.enable powerdevil
++ lib.optional config.services.colord.enable colord-kde
- ++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ];
+ ++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ]
+ ++ lib.optional config.services.xserver.wacom.enable wacomtablet;
environment.pathsToLink = [
# FIXME: modules should link subdirs of `/share` rather than relying on this
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix
index 130e865a1fb..ffc99172e79 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce4-14.nix
@@ -91,7 +91,11 @@ in
++ optional config.powerManagement.enable xfce4-power-manager
++ optionals config.hardware.pulseaudio.enable [
pavucontrol
- xfce4-pulseaudio-plugin
+ # volume up/down keys support:
+ # xfce4-pulseaudio-plugin includes all the functionalities of xfce4-volumed-pulse
+ # but can only be used with xfce4-panel, so for no-desktop usage we still include
+ # xfce4-volumed-pulse
+ (if cfg.noDesktop then xfce4-volumed-pulse else xfce4-pulseaudio-plugin)
] ++ optionals cfg.enableXfwm [
xfwm4
xfwm4-themes
@@ -108,14 +112,6 @@ in
"/share/gtksourceview-4.0"
];
- # Use the correct gnome3 packageSet
- networking.networkmanager.basePackages = mkIf config.networking.networkmanager.enable {
- inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
- inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc
- networkmanager-openconnect networkmanager-fortisslvpn
- networkmanager-iodine networkmanager-l2tp;
- };
-
services.xserver.desktopManager.session = [{
name = "xfce4-14";
bgSupport = true;
diff --git a/nixpkgs/nixos/modules/services/x11/display-managers/gdm.nix b/nixpkgs/nixos/modules/services/x11/display-managers/gdm.nix
index 0a5d52e319e..597fb57a179 100644
--- a/nixpkgs/nixos/modules/services/x11/display-managers/gdm.nix
+++ b/nixpkgs/nixos/modules/services/x11/display-managers/gdm.nix
@@ -42,10 +42,7 @@ in
services.xserver.displayManager.gdm = {
enable = mkEnableOption ''
- GDM as the display manager.
- <emphasis>GDM in NixOS is not well-tested with desktops other
- than GNOME, so use with caution, as it could render the
- system unusable.</emphasis>
+ GDM, the GNOME Display Manager
'';
debug = mkEnableOption ''
@@ -153,6 +150,12 @@ in
mkdir -p /run/gdm/.config/pulse
ln -sf ${pulseConfig} /run/gdm/.config/pulse/default.pa
chown -R gdm:gdm /run/gdm/.config
+ '' + optionalString config.services.gnome3.gnome-initial-setup.enable ''
+ # Create stamp file for gnome-initial-setup to prevent run.
+ mkdir -p /run/gdm/.config
+ cat - > /run/gdm/.config/gnome-initial-setup-done <<- EOF
+ yes
+ EOF
'';
};
@@ -162,6 +165,16 @@ in
"rc-local.service"
"systemd-machined.service"
"systemd-user-sessions.service"
+ "getty@tty${gdm.initialVT}.service"
+ "plymouth-quit.service"
+ "plymouth-start.service"
+ ];
+ systemd.services.display-manager.conflicts = [
+ "getty@tty${gdm.initialVT}.service"
+ "plymouth-quit.service"
+ ];
+ systemd.services.display-manager.onFailure = [
+ "plymouth-quit.service"
];
systemd.services.display-manager.serviceConfig = {
@@ -171,6 +184,9 @@ in
BusName = "org.gnome.DisplayManager";
StandardOutput = "syslog";
StandardError = "inherit";
+ ExecReload = "${pkgs.coreutils}/bin/kill -SIGHUP $MAINPID";
+ KeyringMode = "shared";
+ EnvironmentFile = "-/etc/locale.conf";
};
systemd.services.display-manager.path = [ pkgs.gnome3.gnome-session ];
diff --git a/nixpkgs/nixos/modules/services/x11/display-managers/lightdm.nix b/nixpkgs/nixos/modules/services/x11/display-managers/lightdm.nix
index f105cb496e6..cf4c05acbcc 100644
--- a/nixpkgs/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixpkgs/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -220,6 +220,43 @@ in
exec ${lightdm}/sbin/lightdm
'';
+ # Replaces getty
+ systemd.services.display-manager.conflicts = [
+ "getty@tty7.service"
+ # TODO: Add "plymouth-quit.service" so LightDM can control when plymouth
+ # quits. Currently this breaks switching to configurations with plymouth.
+ ];
+
+ # Pull in dependencies of services we replace.
+ systemd.services.display-manager.after = [
+ "rc-local.service"
+ "systemd-machined.service"
+ "systemd-user-sessions.service"
+ "getty@tty7.service"
+ "user.slice"
+ ];
+
+ # user.slice needs to be present
+ systemd.services.display-manager.requires = [
+ "user.slice"
+ ];
+
+ # lightdm stops plymouth so when it fails make sure plymouth stops.
+ systemd.services.display-manager.onFailure = [
+ "plymouth-quit.service"
+ ];
+
+ systemd.services.display-manager.serviceConfig = {
+ BusName = "org.freedesktop.DisplayManager";
+ IgnoreSIGPIPE = "no";
+ # This allows lightdm to pass the LUKS password through to PAM.
+ # login keyring is unlocked automatic when autologin is used.
+ KeyringMode = "shared";
+ KillMode = "mixed";
+ StandardError = "inherit";
+ StandardOutput = "syslog";
+ };
+
environment.etc."lightdm/lightdm.conf".source = lightdmConf;
environment.etc."lightdm/users.conf".source = usersConf;
diff --git a/nixpkgs/nixos/modules/services/x11/hardware/cmt.nix b/nixpkgs/nixos/modules/services/x11/hardware/cmt.nix
index 95353e92098..5ac824c5e41 100644
--- a/nixpkgs/nixos/modules/services/x11/hardware/cmt.nix
+++ b/nixpkgs/nixos/modules/services/x11/hardware/cmt.nix
@@ -47,7 +47,12 @@ in {
assertions = [
{
assertion = !config.services.xserver.libinput.enable;
- message = "cmt and libinput are incompatible, you cannot enable both (in services.xserver).";
+ message = ''
+ cmt and libinput are incompatible, meaning you cannot enable them both.
+ To use cmt you need to disable libinput with `services.xserver.libinput.enable = false`
+ If you haven't enabled it in configuration.nix, it's enabled by default on a
+ different xserver module.
+ '';
}
];
};
diff --git a/nixpkgs/nixos/modules/services/x11/window-managers/cwm.nix b/nixpkgs/nixos/modules/services/x11/window-managers/cwm.nix
new file mode 100644
index 00000000000..03375a226bb
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/x11/window-managers/cwm.nix
@@ -0,0 +1,23 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.xserver.windowManager.cwm;
+in
+{
+ options = {
+ services.xserver.windowManager.cwm.enable = mkEnableOption "cwm";
+ };
+ config = mkIf cfg.enable {
+ services.xserver.windowManager.session = singleton
+ { name = "cwm";
+ start =
+ ''
+ cwm &
+ waitPID=$!
+ '';
+ };
+ environment.systemPackages = [ pkgs.cwm ];
+ };
+}
diff --git a/nixpkgs/nixos/modules/services/x11/window-managers/default.nix b/nixpkgs/nixos/modules/services/x11/window-managers/default.nix
index 2a1f22fa9a4..c17f3830d0e 100644
--- a/nixpkgs/nixos/modules/services/x11/window-managers/default.nix
+++ b/nixpkgs/nixos/modules/services/x11/window-managers/default.nix
@@ -11,6 +11,7 @@ in
./2bwm.nix
./afterstep.nix
./bspwm.nix
+ ./cwm.nix
./dwm.nix
./evilwm.nix
./exwm.nix
diff --git a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh
index 0fb07de10c0..c8b5bf2e61a 100644
--- a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh
+++ b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh
@@ -71,7 +71,7 @@ addEntry() {
local kernel=$(readlink -f $path/kernel)
local initrd=$(readlink -f $path/initrd)
- local dtb_path=$(readlink -f $path/kernel-modules/dtbs)
+ local dtb_path=$(readlink -f $path/dtbs)
if test -n "@copyKernels@"; then
copyToKernelsDir $kernel; kernel=$result
@@ -113,10 +113,18 @@ done
fwdir=@firmware@/share/raspberrypi/boot/
copyForced $fwdir/bootcode.bin $target/bootcode.bin
copyForced $fwdir/fixup.dat $target/fixup.dat
+copyForced $fwdir/fixup4.dat $target/fixup4.dat
+copyForced $fwdir/fixup4cd.dat $target/fixup4cd.dat
+copyForced $fwdir/fixup4db.dat $target/fixup4db.dat
+copyForced $fwdir/fixup4x.dat $target/fixup4x.dat
copyForced $fwdir/fixup_cd.dat $target/fixup_cd.dat
copyForced $fwdir/fixup_db.dat $target/fixup_db.dat
copyForced $fwdir/fixup_x.dat $target/fixup_x.dat
copyForced $fwdir/start.elf $target/start.elf
+copyForced $fwdir/start4.elf $target/start4.elf
+copyForced $fwdir/start4cd.elf $target/start4cd.elf
+copyForced $fwdir/start4db.elf $target/start4db.elf
+copyForced $fwdir/start4x.elf $target/start4x.elf
copyForced $fwdir/start_cd.elf $target/start_cd.elf
copyForced $fwdir/start_db.elf $target/start_db.elf
copyForced $fwdir/start_x.elf $target/start_x.elf
diff --git a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
index 1c8354e5269..337afe9ef62 100644
--- a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
+++ b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
@@ -59,7 +59,7 @@ in
version = mkOption {
default = 2;
- type = types.enum [ 0 1 2 3 ];
+ type = types.enum [ 0 1 2 3 4 ];
description = ''
'';
};
@@ -97,8 +97,8 @@ in
config = mkIf cfg.enable {
assertions = singleton {
- assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version == 3;
- message = "Only Raspberry Pi 3 supports aarch64.";
+ assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version >= 3;
+ message = "Only Raspberry Pi >= 3 supports aarch64.";
};
system.build.installBootLoader = builder;
diff --git a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix
index 9d4f8a93d28..1dc397e521b 100644
--- a/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix
+++ b/nixpkgs/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix
@@ -10,11 +10,13 @@ let
pkgs.ubootRaspberryPi
else if version == 2 then
pkgs.ubootRaspberryPi2
- else
+ else if version == 3 then
if isAarch64 then
pkgs.ubootRaspberryPi3_64bit
else
- pkgs.ubootRaspberryPi3_32bit;
+ pkgs.ubootRaspberryPi3_32bit
+ else
+ throw "U-Boot is not yet supported on the raspberry pi 4.";
extlinuxConfBuilder =
import ../generic-extlinux-compatible/extlinux-conf-builder.nix {
diff --git a/nixpkgs/nixos/modules/system/boot/plymouth.nix b/nixpkgs/nixos/modules/system/boot/plymouth.nix
index e4223bae7d3..fd43ea1620c 100644
--- a/nixpkgs/nixos/modules/system/boot/plymouth.nix
+++ b/nixpkgs/nixos/modules/system/boot/plymouth.nix
@@ -5,17 +5,20 @@ with lib;
let
inherit (pkgs) plymouth;
+ inherit (pkgs) nixos-icons;
cfg = config.boot.plymouth;
- breezePlymouth = pkgs.breeze-plymouth.override {
- nixosBranding = true;
- nixosVersion = config.system.nixos.release;
+ nixosBreezePlymouth = pkgs.breeze-plymouth.override {
+ logoFile = cfg.logo;
+ logoName = "nixos";
+ osName = "NixOS";
+ osVersion = config.system.nixos.release;
};
themesEnv = pkgs.buildEnv {
name = "plymouth-themes";
- paths = [ plymouth breezePlymouth ] ++ cfg.themePackages;
+ paths = [ plymouth ] ++ cfg.themePackages;
};
configFile = pkgs.writeText "plymouthd.conf" ''
@@ -35,7 +38,7 @@ in
enable = mkEnableOption "Plymouth boot splash screen";
themePackages = mkOption {
- default = [];
+ default = [ nixosBreezePlymouth ];
type = types.listOf types.package;
description = ''
Extra theme packages for plymouth.
@@ -52,10 +55,7 @@ in
logo = mkOption {
type = types.path;
- default = pkgs.fetchurl {
- url = "https://nixos.org/logo/nixos-hires.png";
- sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
- };
+ default = "${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png";
defaultText = ''pkgs.fetchurl {
url = "https://nixos.org/logo/nixos-hires.png";
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
diff --git a/nixpkgs/nixos/modules/system/boot/stage-1-init.sh b/nixpkgs/nixos/modules/system/boot/stage-1-init.sh
index b817a45deba..f520bf54ad1 100644
--- a/nixpkgs/nixos/modules/system/boot/stage-1-init.sh
+++ b/nixpkgs/nixos/modules/system/boot/stage-1-init.sh
@@ -183,6 +183,12 @@ for o in $(cat /proc/cmdline); do
copytoram)
copytoram=1
;;
+ findiso=*)
+ # if an iso name is supplied, try to find the device where
+ # the iso resides on
+ set -- $(IFS==; echo $o)
+ isoPath=$2
+ ;;
esac
done
@@ -442,6 +448,27 @@ if test -e /sys/power/resume -a -e /sys/power/disk; then
fi
fi
+# If we have a path to an iso file, find the iso and link it to /dev/root
+if [ -n "$isoPath" ]; then
+ mkdir -p /findiso
+
+ for delay in 5 10; do
+ blkid | while read -r line; do
+ device=$(echo "$line" | sed 's/:.*//')
+ type=$(echo "$line" | sed 's/.*TYPE="\([^"]*\)".*/\1/')
+
+ mount -t "$type" "$device" /findiso
+ if [ -e "/findiso$isoPath" ]; then
+ ln -sf "/findiso$isoPath" /dev/root
+ break 2
+ else
+ umount /findiso
+ fi
+ done
+
+ sleep "$delay"
+ done
+fi
# Try to find and mount the root device.
mkdir -p $targetRoot
diff --git a/nixpkgs/nixos/modules/system/boot/stage-2-init.sh b/nixpkgs/nixos/modules/system/boot/stage-2-init.sh
index 03daafa1ce4..d1de7920df9 100644
--- a/nixpkgs/nixos/modules/system/boot/stage-2-init.sh
+++ b/nixpkgs/nixos/modules/system/boot/stage-2-init.sh
@@ -142,7 +142,7 @@ fi
# Record the boot configuration.
ln -sfn "$systemConfig" /run/booted-system
-# Prevent the booted system form being garbage-collected If it weren't
+# Prevent the booted system from being garbage-collected. If it weren't
# a gcroot, if we were running a different kernel, switched system,
# and garbage collected all, we could not load kernel modules anymore.
ln -sfn /run/booted-system /nix/var/nix/gcroots/booted-system
diff --git a/nixpkgs/nixos/modules/system/boot/systemd-nspawn.nix b/nixpkgs/nixos/modules/system/boot/systemd-nspawn.nix
index db6e06b4107..3ddd45b1348 100644
--- a/nixpkgs/nixos/modules/system/boot/systemd-nspawn.nix
+++ b/nixpkgs/nixos/modules/system/boot/systemd-nspawn.nix
@@ -113,11 +113,21 @@ in {
config =
let
units = mapAttrs' (n: v: let nspawnFile = "${n}.nspawn"; in nameValuePair nspawnFile (instanceToUnit nspawnFile v)) cfg;
- in mkIf (cfg != {}) {
-
- environment.etc."systemd/nspawn".source = generateUnits "nspawn" units [] [];
-
- systemd.targets.multi-user.wants = [ "machines.target" ];
- };
-
+ in
+ mkMerge [
+ (mkIf (cfg != {}) {
+ environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits "nspawn" units [] []);
+ })
+ {
+ systemd.targets.multi-user.wants = [ "machines.target" ];
+
+ # Workaround for https://github.com/NixOS/nixpkgs/pull/67232#issuecomment-531315437 and https://github.com/systemd/systemd/issues/13622
+ # Once systemd fixes this upstream, we can re-enable -U
+ systemd.services."systemd-nspawn@".serviceConfig.ExecStart = [
+ "" # deliberately empty. signals systemd to override the ExecStart
+ # Only difference between upstream is that we do not pass the -U flag
+ "${pkgs.systemd}/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i"
+ ];
+ }
+ ];
}
diff --git a/nixpkgs/nixos/modules/system/boot/systemd.nix b/nixpkgs/nixos/modules/system/boot/systemd.nix
index 5cf437bfbcb..33b350902a1 100644
--- a/nixpkgs/nixos/modules/system/boot/systemd.nix
+++ b/nixpkgs/nixos/modules/system/boot/systemd.nix
@@ -546,6 +546,16 @@ in
'';
};
+ systemd.coredump.enable = mkOption {
+ default = true;
+ type = types.bool;
+ description = ''
+ Whether core dumps should be processed by
+ <command>systemd-coredump</command>. If disabled, core dumps
+ appear in the current directory of the crashing process.
+ '';
+ };
+
systemd.coredump.extraConfig = mkOption {
default = "";
type = types.lines;
@@ -861,8 +871,8 @@ in
"tmpfiles.d/journal-nocow.conf".source = "${systemd}/example/tmpfiles.d/journal-nocow.conf";
"tmpfiles.d/static-nodes-permissions.conf".source = "${systemd}/example/tmpfiles.d/static-nodes-permissions.conf";
"tmpfiles.d/systemd.conf".source = "${systemd}/example/tmpfiles.d/systemd.conf";
- "tmpfiles.d/systemd-nspawn.conf".source = "${systemd}/example/tmpfiles.d/system-nspawn.conf";
- "tmpfiles.d/systemd-tmp.conf".source = "${systemd}/example/tmpfiles.d/system-tmp.conf";
+ "tmpfiles.d/systemd-nspawn.conf".source = "${systemd}/example/tmpfiles.d/systemd-nspawn.conf";
+ "tmpfiles.d/systemd-tmp.conf".source = "${systemd}/example/tmpfiles.d/systemd-tmp.conf";
"tmpfiles.d/var.conf".source = "${systemd}/example/tmpfiles.d/var.conf";
"tmpfiles.d/x11.conf".source = "${systemd}/example/tmpfiles.d/x11.conf";
@@ -983,6 +993,10 @@ in
# Don't bother with certain units in containers.
systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container";
systemd.services.systemd-random-seed.unitConfig.ConditionVirtualization = "!container";
+
+ boot.kernel.sysctl = mkIf (!cfg.coredump.enable) {
+ "kernel.core_pattern" = "core";
+ };
};
# FIXME: Remove these eventually.
diff --git a/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix b/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
index 2ed8c5aa292..cfdc0a31020 100644
--- a/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
@@ -268,7 +268,12 @@ in
};
services.zfs.trim = {
- enable = mkEnableOption "Enables periodic TRIM on all ZFS pools.";
+ enable = mkOption {
+ description = "Whether to enable periodic TRIM on all ZFS pools.";
+ default = true;
+ example = false;
+ type = types.bool;
+ };
interval = mkOption {
default = "weekly";
diff --git a/nixpkgs/nixos/modules/tasks/network-interfaces-systemd.nix b/nixpkgs/nixos/modules/tasks/network-interfaces-systemd.nix
index 7c6604922cf..863072e33dc 100644
--- a/nixpkgs/nixos/modules/tasks/network-interfaces-systemd.nix
+++ b/nixpkgs/nixos/modules/tasks/network-interfaces-systemd.nix
@@ -38,6 +38,12 @@ in
} {
assertion = cfg.defaultGateway6 == null || cfg.defaultGateway6.interface == null;
message = "networking.defaultGateway6.interface is not supported by networkd.";
+ } {
+ assertion = cfg.useDHCP == false;
+ message = ''
+ networking.useDHCP is not supported by networkd.
+ Please use per interface configuration and set the global option to false.
+ '';
} ] ++ flip mapAttrsToList cfg.bridges (n: { rstp, ... }: {
assertion = !rstp;
message = "networking.bridges.${n}.rstp is not supported by networkd.";
@@ -56,9 +62,7 @@ in
genericNetwork = override:
let gateway = optional (cfg.defaultGateway != null) cfg.defaultGateway.address
++ optional (cfg.defaultGateway6 != null) cfg.defaultGateway6.address;
- in {
- DHCP = override (dhcpStr cfg.useDHCP);
- } // optionalAttrs (gateway != [ ]) {
+ in optionalAttrs (gateway != [ ]) {
routes = override [
{
routeConfig = {
@@ -97,7 +101,7 @@ in
networks."40-${i.name}" = mkMerge [ (genericNetwork mkDefault) {
name = mkDefault i.name;
DHCP = mkForce (dhcpStr
- (if i.useDHCP != null then i.useDHCP else cfg.useDHCP && interfaceIps i == [ ]));
+ (if i.useDHCP != null then i.useDHCP else false));
address = forEach (interfaceIps i)
(ip: "${ip.address}/${toString ip.prefixLength}");
networkConfig.IPv6PrivacyExtensions = "kernel";
diff --git a/nixpkgs/nixos/modules/tasks/network-interfaces.nix b/nixpkgs/nixos/modules/tasks/network-interfaces.nix
index 5bf7b0d227f..31e2ed1cd1e 100644
--- a/nixpkgs/nixos/modules/tasks/network-interfaces.nix
+++ b/nixpkgs/nixos/modules/tasks/network-interfaces.nix
@@ -305,7 +305,7 @@ let
optional (defined ipv6Address && defined ipv6PrefixLength)
{ address = ipv6Address; prefixLength = ipv6PrefixLength; }))
- ({ options.warnings = options.warnings; })
+ ({ options.warnings = options.warnings; options.assertions = options.assertions; })
];
};
@@ -903,6 +903,11 @@ in
Whether to use DHCP to obtain an IP address and other
configuration for all network interfaces that are not manually
configured.
+
+ Using this option is highly discouraged and also incompatible with
+ <option>networking.useNetworkd</option>. Please use
+ <option>networking.interfaces.&lt;name&gt;.useDHCP</option> instead
+ and set this to false.
'';
};
@@ -967,9 +972,9 @@ in
"net.ipv6.conf.default.disable_ipv6" = mkDefault (!cfg.enableIPv6);
"net.ipv6.conf.all.forwarding" = mkDefault (any (i: i.proxyARP) interfaces);
} // listToAttrs (flip concatMap (filter (i: i.proxyARP) interfaces)
- (i: forEach [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${i.name}.proxy_arp" true)))
+ (i: forEach [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${replaceChars ["."] ["/"] i.name}.proxy_arp" true)))
// listToAttrs (forEach (filter (i: i.preferTempAddress) interfaces)
- (i: nameValuePair "net.ipv6.conf.${i.name}.use_tempaddr" 2));
+ (i: nameValuePair "net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr" 2));
# Capabilities won't work unless we have at-least a 4.3 Linux
# kernel because we need the ambient capability
@@ -1092,7 +1097,7 @@ in
destination = "/etc/udev/rules.d/98-${name}";
text = ''
# enable and prefer IPv6 privacy addresses by default
- ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.procps}/bin/sysctl net.ipv6.conf.%k.use_tempaddr=2"
+ ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.bash}/bin/sh -c 'echo 2 > /proc/sys/net/ipv6/conf/%k/use_tempaddr'"
'';
})
(pkgs.writeTextFile rec {
@@ -1100,7 +1105,7 @@ in
destination = "/etc/udev/rules.d/99-${name}";
text = concatMapStrings (i: ''
# enable IPv6 privacy addresses but prefer EUI-64 addresses for ${i.name}
- ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.procps}/bin/sysctl net.ipv6.conf.${i.name}.use_tempaddr=1"
+ ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.procps}/bin/sysctl net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr=1"
'') (filter (i: !i.preferTempAddress) interfaces);
})
] ++ lib.optional (cfg.wlanInterfaces != {})
diff --git a/nixpkgs/nixos/modules/virtualisation/container-config.nix b/nixpkgs/nixos/modules/virtualisation/container-config.nix
index 604fb8a7593..f7a37d8c9f3 100644
--- a/nixpkgs/nixos/modules/virtualisation/container-config.nix
+++ b/nixpkgs/nixos/modules/virtualisation/container-config.nix
@@ -7,6 +7,7 @@ with lib;
config = mkIf config.boot.isContainer {
# Disable some features that are not useful in a container.
+ nix.optimise.automatic = mkDefault false; # the store is host managed
services.udisks2.enable = mkDefault false;
powerManagement.enable = mkDefault false;
diff --git a/nixpkgs/nixos/modules/virtualisation/containers.nix b/nixpkgs/nixos/modules/virtualisation/containers.nix
index 9c9f8fc0c21..691ee2c136e 100644
--- a/nixpkgs/nixos/modules/virtualisation/containers.nix
+++ b/nixpkgs/nixos/modules/virtualisation/containers.nix
@@ -824,5 +824,12 @@ in
'';
environment.systemPackages = [ pkgs.nixos-container ];
+
+ boot.kernelModules = [
+ "bridge"
+ "macvlan"
+ "tap"
+ "tun"
+ ];
});
}
diff --git a/nixpkgs/nixos/release.nix b/nixpkgs/nixos/release.nix
index a4b6b6bb91a..f40b5fa9bd7 100644
--- a/nixpkgs/nixos/release.nix
+++ b/nixpkgs/nixos/release.nix
@@ -180,6 +180,11 @@ in rec {
inherit system;
});
+ sd_image_raspberrypi4 = forMatchingSystems [ "aarch64-linux" ] (system: makeSdImage {
+ module = ./modules/installer/cd-dvd/sd-image-raspberrypi4.nix;
+ inherit system;
+ });
+
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
ova = forMatchingSystems [ "x86_64-linux" ] (system:
diff --git a/nixpkgs/nixos/tests/all-tests.nix b/nixpkgs/nixos/tests/all-tests.nix
index 5643da99e55..914b32f97c3 100644
--- a/nixpkgs/nixos/tests/all-tests.nix
+++ b/nixpkgs/nixos/tests/all-tests.nix
@@ -25,6 +25,7 @@ in
atd = handleTest ./atd.nix {};
automysqlbackup = handleTest ./automysqlbackup.nix {};
avahi = handleTest ./avahi.nix {};
+ babeld = handleTest ./babeld.nix {};
bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64
beanstalkd = handleTest ./beanstalkd.nix {};
beegfs = handleTestOn ["x86_64-linux"] ./beegfs.nix {}; # beegfs is unsupported on aarch64
@@ -35,6 +36,7 @@ in
boot-stage1 = handleTest ./boot-stage1.nix {};
borgbackup = handleTest ./borgbackup.nix {};
buildbot = handleTest ./buildbot.nix {};
+ caddy = handleTest ./caddy.nix {};
cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {};
cassandra = handleTest ./cassandra.nix {};
ceph = handleTestOn ["x86_64-linux"] ./ceph.nix {};
diff --git a/nixpkgs/nixos/tests/babeld.nix b/nixpkgs/nixos/tests/babeld.nix
new file mode 100644
index 00000000000..5242cf395d7
--- /dev/null
+++ b/nixpkgs/nixos/tests/babeld.nix
@@ -0,0 +1,148 @@
+
+import ./make-test.nix ({ pkgs, lib, ...} : {
+ name = "babeld";
+ meta = with pkgs.stdenv.lib.maintainers; {
+ maintainers = [ hexa ];
+ };
+
+ nodes =
+ { client = { pkgs, lib, ... }:
+ {
+ virtualisation.vlans = [ 10 ];
+
+ networking = {
+ useDHCP = false;
+ interfaces."eth1" = {
+ ipv4.addresses = lib.mkForce [ { address = "192.168.10.2"; prefixLength = 24; } ];
+ ipv4.routes = lib.mkForce [ { address = "0.0.0.0"; prefixLength = 0; via = "192.168.10.1"; } ];
+ ipv6.addresses = lib.mkForce [ { address = "2001:db8:10::2"; prefixLength = 64; } ];
+ ipv6.routes = lib.mkForce [ { address = "::"; prefixLength = 0; via = "2001:db8:10::1"; } ];
+ };
+ };
+ };
+
+ localRouter = { pkgs, lib, ... }:
+ {
+ virtualisation.vlans = [ 10 20 ];
+
+ boot.kernel.sysctl."net.ipv4.conf.all.forwarding" = 1;
+ boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
+
+ networking = {
+ useDHCP = false;
+ firewall.enable = false;
+
+ interfaces."eth1" = {
+ ipv4.addresses = lib.mkForce [ { address = "192.168.10.1"; prefixLength = 24; } ];
+ ipv6.addresses = lib.mkForce [ { address = "2001:db8:10::1"; prefixLength = 64; } ];
+ };
+
+ interfaces."eth2" = {
+ ipv4.addresses = lib.mkForce [ { address = "192.168.20.1"; prefixLength = 24; } ];
+ ipv6.addresses = lib.mkForce [ { address = "2001:db8:20::1"; prefixLength = 64; } ];
+ };
+ };
+
+ services.babeld = {
+ enable = true;
+ interfaces.eth2 = {
+ hello-interval = 1;
+ type = "wired";
+ };
+ extraConfig = ''
+ local-port-readwrite 33123
+
+ import-table 254 # main
+ export-table 254 # main
+
+ in ip 192.168.10.0/24 deny
+ in ip 192.168.20.0/24 deny
+ in ip 2001:db8:10::/64 deny
+ in ip 2001:db8:20::/64 deny
+
+ in ip 192.168.30.0/24 allow
+ in ip 2001:db8:30::/64 allow
+
+ in deny
+
+ redistribute local proto 2
+ redistribute local deny
+ '';
+ };
+ };
+ remoteRouter = { pkgs, lib, ... }:
+ {
+ virtualisation.vlans = [ 20 30 ];
+
+ boot.kernel.sysctl."net.ipv4.conf.all.forwarding" = 1;
+ boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
+
+ networking = {
+ useDHCP = false;
+ firewall.enable = false;
+
+ interfaces."eth1" = {
+ ipv4.addresses = lib.mkForce [ { address = "192.168.20.2"; prefixLength = 24; } ];
+ ipv6.addresses = lib.mkForce [ { address = "2001:db8:20::2"; prefixLength = 64; } ];
+ };
+
+ interfaces."eth2" = {
+ ipv4.addresses = lib.mkForce [ { address = "192.168.30.1"; prefixLength = 24; } ];
+ ipv6.addresses = lib.mkForce [ { address = "2001:db8:30::1"; prefixLength = 64; } ];
+ };
+ };
+
+ services.babeld = {
+ enable = true;
+ interfaces.eth1 = {
+ hello-interval = 1;
+ type = "wired";
+ };
+ extraConfig = ''
+ local-port-readwrite 33123
+
+ import-table 254 # main
+ export-table 254 # main
+
+ in ip 192.168.20.0/24 deny
+ in ip 192.168.30.0/24 deny
+ in ip 2001:db8:20::/64 deny
+ in ip 2001:db8:30::/64 deny
+
+ in ip 192.168.10.0/24 allow
+ in ip 2001:db8:10::/64 allow
+
+ in deny
+
+ redistribute local proto 2
+ redistribute local deny
+ '';
+ };
+
+ };
+ };
+
+ testScript =
+ ''
+ startAll;
+
+ $client->waitForUnit("network-online.target");
+ $localRouter->waitForUnit("network-online.target");
+ $remoteRouter->waitForUnit("network-online.target");
+
+ $localRouter->waitForUnit("babeld.service");
+ $remoteRouter->waitForUnit("babeld.service");
+
+ $localRouter->waitUntilSucceeds("ip route get 192.168.30.1");
+ $localRouter->waitUntilSucceeds("ip route get 2001:db8:30::1");
+
+ $remoteRouter->waitUntilSucceeds("ip route get 192.168.10.1");
+ $remoteRouter->waitUntilSucceeds("ip route get 2001:db8:10::1");
+
+ $client->succeed("ping -c1 192.168.30.1");
+ $client->succeed("ping -c1 2001:db8:30::1");
+
+ $remoteRouter->succeed("ping -c1 192.168.10.2");
+ $remoteRouter->succeed("ping -c1 2001:db8:10::2");
+ '';
+})
diff --git a/nixpkgs/nixos/tests/caddy.nix b/nixpkgs/nixos/tests/caddy.nix
new file mode 100644
index 00000000000..ab9d2fbf4d1
--- /dev/null
+++ b/nixpkgs/nixos/tests/caddy.nix
@@ -0,0 +1,82 @@
+import ./make-test.nix ({ pkgs, ... }: {
+ name = "caddy";
+ meta = with pkgs.stdenv.lib.maintainers; {
+ maintainers = [ xfix ];
+ };
+
+ nodes = {
+ webserver = { pkgs, lib, ... }: {
+ services.caddy.enable = true;
+ services.caddy.config = ''
+ http://localhost {
+ gzip
+
+ root ${
+ pkgs.runCommand "testdir" {} ''
+ mkdir "$out"
+ echo hello world > "$out/example.html"
+ ''
+ }
+ }
+ '';
+
+ nesting.clone = [
+ {
+ services.caddy.config = lib.mkForce ''
+ http://localhost {
+ gzip
+
+ root ${
+ pkgs.runCommand "testdir2" {} ''
+ mkdir "$out"
+ echo changed > "$out/example.html"
+ ''
+ }
+ }
+ '';
+ }
+
+ {
+ services.caddy.config = ''
+ http://localhost:8080 {
+ }
+ '';
+ }
+ ];
+ };
+ };
+
+ testScript = { nodes, ... }: let
+ etagSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-1";
+ justReloadSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-2";
+ in ''
+ my $url = 'http://localhost/example.html';
+ $webserver->waitForUnit("caddy");
+ $webserver->waitForOpenPort("80");
+
+ sub checkEtag {
+ my $etag = $webserver->succeed(
+ 'curl -v '.$url.' 2>&1 | sed -n -e "s/^< [Ee][Tt][Aa][Gg]: *//p"'
+ );
+ $etag =~ s/\r?\n$//;
+ my $httpCode = $webserver->succeed(
+ 'curl -w "%{http_code}" -X HEAD -H \'If-None-Match: '.$etag.'\' '.$url
+ );
+ die "HTTP code is not 304" unless $httpCode == 304;
+ return $etag;
+ }
+
+ subtest "check ETag if serving Nix store paths", sub {
+ my $oldEtag = checkEtag;
+ $webserver->succeed("${etagSystem}/bin/switch-to-configuration test >&2");
+ $webserver->sleep(1); # race condition
+ my $newEtag = checkEtag;
+ die "Old ETag $oldEtag is the same as $newEtag" if $oldEtag eq $newEtag;
+ };
+
+ subtest "config is reloaded on nixos-rebuild switch", sub {
+ $webserver->succeed("${justReloadSystem}/bin/switch-to-configuration test >&2");
+ $webserver->waitForOpenPort("8080");
+ };
+ '';
+})
diff --git a/nixpkgs/nixos/tests/ferm.nix b/nixpkgs/nixos/tests/ferm.nix
index b8e8663e3ad..edf9c8036ac 100644
--- a/nixpkgs/nixos/tests/ferm.nix
+++ b/nixpkgs/nixos/tests/ferm.nix
@@ -22,6 +22,8 @@ import ./make-test.nix ({ pkgs, ...} : {
{
networking = {
dhcpcd.enable = false;
+ useNetworkd = true;
+ useDHCP = false;
interfaces.eth1.ipv6.addresses = mkOverride 0 [ { address = "fd00::1"; prefixLength = 64; } ];
interfaces.eth1.ipv4.addresses = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ];
};
diff --git a/nixpkgs/nixos/tests/kafka.nix b/nixpkgs/nixos/tests/kafka.nix
index f526d18befe..48ca98da8fa 100644
--- a/nixpkgs/nixos/tests/kafka.nix
+++ b/nixpkgs/nixos/tests/kafka.nix
@@ -73,4 +73,5 @@ in with pkgs; {
kafka_2_0 = makeKafkaTest "kafka_2_0" apacheKafka_2_0;
kafka_2_1 = makeKafkaTest "kafka_2_1" apacheKafka_2_1;
kafka_2_2 = makeKafkaTest "kafka_2_2" apacheKafka_2_2;
+ kafka_2_3 = makeKafkaTest "kafka_2_3" apacheKafka_2_3;
}
diff --git a/nixpkgs/nixos/tests/mxisd.nix b/nixpkgs/nixos/tests/mxisd.nix
index 3d03a5a53e3..0039256f586 100644
--- a/nixpkgs/nixos/tests/mxisd.nix
+++ b/nixpkgs/nixos/tests/mxisd.nix
@@ -10,12 +10,22 @@ import ./make-test.nix ({ pkgs, ... } : {
services.mxisd.enable = true;
services.mxisd.matrix.domain = "example.org";
};
+
+ server_ma1sd = args : {
+ services.mxisd.enable = true;
+ services.mxisd.matrix.domain = "example.org";
+ services.mxisd.package = pkgs.ma1sd;
+ };
};
testScript = ''
startAll;
$server_mxisd->waitForUnit("mxisd.service");
$server_mxisd->waitForOpenPort(8090);
- $server_mxisd->succeed("curl -Ssf \"http://127.0.0.1:8090/_matrix/identity/api/v1\"")
+ $server_mxisd->succeed("curl -Ssf \"http://127.0.0.1:8090/_matrix/identity/api/v1\"");
+ $server_ma1sd->waitForUnit("mxisd.service");
+ $server_ma1sd->waitForOpenPort(8090);
+ $server_ma1sd->succeed("curl -Ssf \"http://127.0.0.1:8090/_matrix/identity/api/v1\"")
+
'';
})
diff --git a/nixpkgs/nixos/tests/networking.nix b/nixpkgs/nixos/tests/networking.nix
index 7452768033a..e0585d8f1bb 100644
--- a/nixpkgs/nixos/tests/networking.nix
+++ b/nixpkgs/nixos/tests/networking.nix
@@ -72,6 +72,7 @@ let
testCases = {
loopback = {
name = "Loopback";
+ machine.networking.useDHCP = false;
machine.networking.useNetworkd = networkd;
testScript = ''
startAll;
@@ -139,14 +140,16 @@ let
virtualisation.vlans = [ 1 2 ];
networking = {
useNetworkd = networkd;
- useDHCP = true;
+ useDHCP = false;
interfaces.eth1 = {
ipv4.addresses = mkOverride 0 [ ];
ipv6.addresses = mkOverride 0 [ ];
+ useDHCP = true;
};
interfaces.eth2 = {
ipv4.addresses = mkOverride 0 [ ];
ipv6.addresses = mkOverride 0 [ ];
+ useDHCP = true;
};
};
};
@@ -320,13 +323,19 @@ let
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = networkd;
+ useDHCP = false;
firewall.logReversePathDrops = true; # to debug firewall rules
# reverse path filtering rules for the macvlan interface seem
# to be incorrect, causing the test to fail. Disable temporarily.
firewall.checkReversePath = false;
- useDHCP = true;
macvlans.macvlan.interface = "eth1";
- interfaces.eth1.ipv4.addresses = mkOverride 0 [ ];
+ interfaces.eth1 = {
+ ipv4.addresses = mkOverride 0 [ ];
+ useDHCP = true;
+ };
+ interfaces.macvlan = {
+ useDHCP = true;
+ };
};
};
testScript = { ... }:
@@ -440,6 +449,8 @@ let
virtual = {
name = "Virtual";
machine = {
+ networking.useNetworkd = networkd;
+ networking.useDHCP = false;
networking.interfaces.tap0 = {
ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ];
ipv6.addresses = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ];
@@ -489,6 +500,7 @@ let
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true;
networking = {
useNetworkd = networkd;
+ useDHCP = false;
interfaces.eth1.ipv6.addresses = singleton {
address = "fd00:1234:5678:1::1";
prefixLength = 64;
@@ -514,11 +526,12 @@ let
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = networkd;
- useDHCP = true;
+ useDHCP = false;
interfaces.eth1 = {
preferTempAddress = true;
ipv4.addresses = mkOverride 0 [ ];
ipv6.addresses = mkOverride 0 [ ];
+ useDHCP = true;
};
};
};
@@ -526,11 +539,12 @@ let
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = networkd;
- useDHCP = true;
+ useDHCP = false;
interfaces.eth1 = {
preferTempAddress = false;
ipv4.addresses = mkOverride 0 [ ];
ipv6.addresses = mkOverride 0 [ ];
+ useDHCP = true;
};
};
};
diff --git a/nixpkgs/nixos/tests/predictable-interface-names.nix b/nixpkgs/nixos/tests/predictable-interface-names.nix
index 85047f66f23..194b4dafa77 100644
--- a/nixpkgs/nixos/tests/predictable-interface-names.nix
+++ b/nixpkgs/nixos/tests/predictable-interface-names.nix
@@ -16,6 +16,7 @@ in pkgs.lib.listToAttrs (pkgs.lib.crossLists (predictable: withNetworkd: {
networking.usePredictableInterfaceNames = lib.mkForce predictable;
networking.useNetworkd = withNetworkd;
networking.dhcpcd.enable = !withNetworkd;
+ networking.useDHCP = !withNetworkd;
};
testScript = ''
diff --git a/nixpkgs/nixos/tests/prometheus-exporters.nix b/nixpkgs/nixos/tests/prometheus-exporters.nix
index 9826b56b74d..676183f6356 100644
--- a/nixpkgs/nixos/tests/prometheus-exporters.nix
+++ b/nixpkgs/nixos/tests/prometheus-exporters.nix
@@ -229,6 +229,40 @@ let
'';
};
+ nextcloud = {
+ exporterConfig = {
+ enable = true;
+ passwordFile = "/var/nextcloud-pwfile";
+ url = "http://localhost/negative-space.xml";
+ };
+ metricProvider = {
+ systemd.services.nc-pwfile = let
+ passfile = (pkgs.writeText "pwfile" "snakeoilpw");
+ in {
+ requiredBy = [ "prometheus-nextcloud-exporter.service" ];
+ before = [ "prometheus-nextcloud-exporter.service" ];
+ serviceConfig.ExecStart = ''
+ ${pkgs.coreutils}/bin/install -o nextcloud-exporter -m 0400 ${passfile} /var/nextcloud-pwfile
+ '';
+ };
+ services.nginx = {
+ enable = true;
+ virtualHosts."localhost" = {
+ basicAuth.nextcloud-exporter = "snakeoilpw";
+ locations."/" = {
+ root = "${pkgs.prometheus-nextcloud-exporter.src}/serverinfo/testdata";
+ };
+ };
+ };
+ };
+ exporterTest = ''
+ waitForUnit("nginx.service")
+ waitForUnit("prometheus-nextcloud-exporter.service")
+ waitForOpenPort(9205)
+ succeed("curl -sSf http://localhost:9205/metrics | grep -q 'nextcloud_up 1'")
+ '';
+ };
+
nginx = {
exporterConfig = {
enable = true;
diff --git a/nixpkgs/nixos/tests/shiori.nix b/nixpkgs/nixos/tests/shiori.nix
new file mode 100644
index 00000000000..0022a7220fe
--- /dev/null
+++ b/nixpkgs/nixos/tests/shiori.nix
@@ -0,0 +1,17 @@
+import ./make-test.nix ({ lib, ...}:
+
+{
+ name = "shiori";
+ meta.maintainers = with lib.maintainers; [ minijackson ];
+
+ machine =
+ { ... }:
+ { services.shiori.enable = true; };
+
+ testScript = ''
+ $machine->waitForUnit('shiori.service');
+ $machine->waitForOpenPort('8080');
+ $machine->succeed("curl --fail http://localhost:8080/");
+ $machine->succeed("curl --fail --location http://localhost:8080/ | grep -qi shiori");
+ '';
+})
diff --git a/nixpkgs/nixos/tests/systemd-networkd-wireguard.nix b/nixpkgs/nixos/tests/systemd-networkd-wireguard.nix
index f1ce1e791ce..aa0ac54e796 100644
--- a/nixpkgs/nixos/tests/systemd-networkd-wireguard.nix
+++ b/nixpkgs/nixos/tests/systemd-networkd-wireguard.nix
@@ -2,6 +2,7 @@ let generateNodeConf = { lib, pkgs, config, privkpath, pubk, peerId, nodeId, ...
imports = [ common/user-account.nix ];
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
networking.useNetworkd = true;
+ networking.useDHCP = false;
networking.firewall.enable = false;
virtualisation.vlans = [ 1 ];
environment.systemPackages = with pkgs; [ wireguard-tools ];