Commit Graph

40877 Commits

Author SHA1 Message Date
Florian Klink
aff6a121a3
Merge pull request #311039 from DavHau/pr_smokeping
nixos/smokeping: use nginx instead of thttpd
2024-05-13 01:11:59 +02:00
Danielle Lancashire
f26c2aa2fc
nixos/fish: fix reference to mapAttrsFlatten 2024-05-13 00:58:30 +02:00
aszlig
e4bd1e8f92
nixos/confinement: Use prio 100 for RootDirectory
One of the module that already supports the systemd-confinement module
is public-inbox. However with the changes to support DynamicUser and
ProtectSystem, the module will now fail at runtime if confinement is
enabled (it's optional and you'll need to override it via another
module).

The reason is that the RootDirectory is set to /var/empty in the
public-inbox module, which doesn't work well with the InaccessiblePaths
directive we now use to support DynamicUser/ProtectSystem.

To make this issue more visible, I decided to just change the priority
of the RootDirectory option definiton the default override priority so
that whenever another different option is defined, we'll get a conflict
at evaluation time.

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:41 +02:00
aszlig
0a9cecc35a
nixos/systemd-confinement: Make / read-only
Our more thorough parametrised tests uncovered that with the changes for
supporting DynamicUser, we now have the situation that for static users
the root directory within the confined environment is now writable for
the user in question.

This is obviously not what we want and I'd consider that a regression.
However while discussing this with @ju1m and my suggestion being to
set TemporaryFileSystem to "/" (as we had previously), they had an even
better idea[1]:

> The goal is to deny write access to / to non-root users,
>
>   * TemporaryFileSystem=/ gives us that through the ownership of / by
>     root (instead of the service's user inherited from
>     RuntimeDirectory=).
>   * ProtectSystem=strict gives us that by mounting / read-only (while
>     keeping its ownership to the service's user).
>
> To avoid the incompatibilities of TemporaryFileSystem=/ mentioned
> above, I suggest to mount / read-only in all cases with
> ReadOnlyPaths = [ "+/" ]:
>
>   ...
>
> I guess this would require at least two changes to the current tests:
>
>   1. to no longer expect root to be able to write to some paths (like
>      /bin) (at least not without first remounting / in read-write
>      mode).
>   2. to no longer expect non-root users to fail to write to certain
>      paths with a "permission denied" error code, but with a
>      "read-only file system" error code.

I like the solution with ReadOnlyPaths even more because it further
reduces the attack surface if the user is root. In chroot-only mode this
is especially useful, since if there are no other bind-mounted paths
involved in the unit configuration, the whole file system within the
confined environment is read-only.

[1]: https://github.com/NixOS/nixpkgs/pull/289593#discussion_r1586794215

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:40 +02:00
aszlig
27f36b5e57
nixos/tests/confinement: Parametrise subtests
This is to make sure that we test all of the DynamicUser/User/Group and
PrivateTmp options in a uniform way. The reason why we need to do this
is because we recently introduced support for the DynamicUser option and
since there are some corner cases where we might end up with more
elevated privileges (eg. writable directories in some cases), we want to
make sure that the environment is as restrictive as with a static
User/Group assignment.

I also removed various checks that try to os.chown(), since with our new
recursive checker those are redundant.

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:38 +02:00
aszlig
51d3f3475c
nixos/tests/confinement: Run test probes in Python
So far the architecture for the tests was that we would use a systemd
socket unit using the Accept option to start a small shell process where
we can pipe commands into by connecting to the socket created by the
socket unit.

This is unnecessary since we can directly use the code snippets from the
individual subtests and systemd will take care of checking the return
code in case we get any assertions[^1].

Another advantage of this is that tests now run in parallel, so we can
do rather expensive things such as looking in /nix to see whether
anything is writable.

The new assert_permissions() function is the main driver behind this and
allows for a more fine-grained way to check whether we got the right
permissions whilst also ignoring irrelevant things such as read-only
empty directories.

Our previous approach also just did a read-only check, which might be
fine in full-apivfs mode where the attack surface already is large, but
in chroot-only mode we really want to make sure nothing is every
writable.

A downside of the new approach is that currently the unit names are
numbered via lib.imap1, which makes it annoying to track its definition.

[^1]: Speaking of assertions, I wrapped the code to be run with pytest's
      assertion rewriting, so that we get more useful AssertionErrors.

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:36 +02:00
aszlig
f7d026b431
nixos/tests/confinement: Move to dedicated dir
When experimenting on ways how to refactor the test, I wrote a
significant enough amount of Python to warrant a dedicated Python file.

This commit is mainly to prepare for that and make it easier to track
renames.

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:34 +02:00
aszlig
ba31b3753e
nixos/tests/confinement: Re-add description attr
The reason why I originally used the "description" attribute was that it
can be easily used to parametrise the tests so that we can specify
common constraints and apply it across a number of different
configurations.

When porting the tests to Python, the description attribute was replaced
by inlining it into the Python code, most probably because it was easier
to do in bulk since using Nix to generate the subtest parts would be
very complicated to do since we also had to please Black (a Python code
formatter that we no longer use in test scripts).

Since we now also want to support DynamicUser in systemd-confinement,
the need to parametrise the tests became apparent again because it's now
easier to refactor our subtests to run both with *and* without
DynamicUser set to true.

Signed-off-by: aszlig <aszlig@nix.build>
2024-05-13 00:40:32 +02:00
Julien Moutinho
0a5542c766
nixos/systemd-confinement: support ProtectSystem=/DynamicUser=
See https://discourse.nixos.org/t/hardening-systemd-services/17147/14
2024-05-13 00:40:25 +02:00
Jade Lovelace
553dab119b
Merge pull request #311158 from lf-/jade/remove-outdated-maintainership
nixos: remove historical maintainership of modules by eelco
2024-05-12 13:26:25 -07:00
Franz Pletz
ef26d99b37
Merge pull request #310873 from ivan/radvd-debuglevel
nixos/radvd: add debugLevel option
2024-05-12 22:23:24 +02:00
Pol Dellaiera
378c5c67ed
Merge pull request #310348 from ehmry/nginx-validateConfigFile
nixos/nginx: add validateConfigFile option
2024-05-12 21:58:59 +02:00
Weijia Wang
4433bbfd2a
Merge pull request #304773 from acid-bong/no-libs
treewide: remove file-wide `with lib;` uses in nixos/modules/programs
2024-05-12 21:52:15 +02:00
Jade Lovelace
3fd324f823 nixos: remove historical maintainership of modules by eelco
Eelco has made several early contributions to NixOS including writing
the samba module among other things, but is more or less inactive these
days.

By my brief inspection, he has not committed to the nixos/ tree since
releasing Nix 2.13 in early 2023 and merging a PR to networking tests
slightly before that. A lot of these tests/modules are actually
unmaintained in practice, so we should update the code to reflect the
practical reality so someone can consider picking them up.
2024-05-12 12:48:57 -07:00
Andreas Rammhold
d157db3480
Merge pull request #307051 from hax404/modules/tayga/mappings
nixos/tayga: add mappings option
2024-05-12 21:16:26 +02:00
Martin Weinelt
6ce8bb794d
Merge pull request #311085 from mweinelt/knot-test-xfr
nixos/tests/knot: wait for successful zone transfers
2024-05-12 21:01:40 +02:00
Marek Fajkus
cf1e14e8a9
Merge pull request #310880 from presto8/warn-xss-lock
nixos/xss-lock: add warning for startx
2024-05-12 19:53:52 +02:00
Raito Bezarius
b35ccb7fda nixos/tests/misc: call the tester test to be callTest-ed
Otherwise, this will destroy the release machinery to collect all the
systems.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-05-12 18:15:52 +02:00
K900
cd682e0a15
Merge pull request #311089 from RaitoBezarius/sowwy
nixos/release-`*`: fix `nixos.tests.misc` which was split into multiple tests
2024-05-12 18:29:54 +03:00
Raito Bezarius
64e51577b7 nixos/release-*: fix nixos.tests.misc which was split into multiple tests
Now, it's `nixos.tests.misc.default` and `nixos.tests.misc.lix` since
Lix introduction in #310194.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-05-12 17:22:51 +02:00
Vladimír Čunát
9447fd7bc8
Merge #309297: staging-next 2024-05-05 2024-05-12 17:09:49 +02:00
Martin Weinelt
c1b293ca0c
nixos/tests/knot: wait for successful zone transfers
Depending on the startup order of the two machines it might take a few
moments to get both zones transfered, which can lead to SERVFAIL
responses on busy machines.
2024-05-12 16:40:23 +02:00
Bobby Rong
e466c02ac3
Merge pull request #311074 from bobby285271/upd/mate-glib-networking
nixos/mate: enable services.gnome.glib-networking

cc #53700
2024-05-12 22:39:17 +08:00
Ryan Lahfa
df0bced725
Merge pull request #310194 from RaitoBezarius/lix
lix: init at 2.90-beta.1
2024-05-12 16:28:36 +02:00
Bobby Rong
3de41ce7a8
nixos/mate: enable services.gnome.glib-networking
This is already done in the 5 other desktop environments I maintain, I decided that I don't mind adding another one.
2024-05-12 22:05:22 +08:00
github-actions[bot]
971c61f4d8
Merge master into staging-next 2024-05-12 12:01:24 +00:00
DavHau
0b6c484848 nixos/smokeping: use nginx instead of thttpd
Motivation:
fixes #265953

Changes:
- deprecate `services.smokeping.port` in favor of the niginx native option
- mention in release notes
2024-05-12 13:31:11 +02:00
Pol Dellaiera
8949291221
Merge pull request #305586 from drupol/private-gpt/init
private-gpt: init at 0.5.0
2024-05-12 12:53:53 +02:00
Acid Bong
49f6869f71
treewide: remove file-wide with lib; in nixos/modules/programs 2024-05-12 10:11:06 +03:00
github-actions[bot]
ab6da4a615
Merge master into staging-next 2024-05-12 00:02:26 +00:00
Bjørn Forsman
7909e0f7d6 nixos/pixiecore: fix apiServer example
Add missing http:// scheme. Without it pixiecore logs this and never
contacts the API server:

  [DHCP] Couldn't get bootspec for [REDACTED_MAC_ADDR]: Get "localhost:8080/v1/boot/[REDACTED_MAC_ADDR]": unsupported protocol scheme "localhost"
2024-05-11 23:01:35 +02:00
Pol Dellaiera
aff1950a3f
nixos/private-gpt: init 2024-05-11 22:42:04 +02:00
Raito Bezarius
81854ca604 nixos/tests/misc: rework and take ownership
`nixosTests.misc` is an interesting smoketest as a last (cheap) line of
defense against Nix regressions.

We rework it to accept any arbitrary package manager for Lix.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-05-11 21:33:25 +02:00
Preston Hunt
7f0158313d nixos/xss-lock: add warning for startx 2024-05-11 08:47:11 -07:00
Ivan Kozik
0482e54050 nixos/radvd: add debugLevel option 2024-05-11 14:59:09 +00:00
Jan Tojnar
4be4408157 Merge branch 'master' into staging-next
; Conflicts:
;	maintainers/scripts/luarocks-packages.csv
;	pkgs/development/lua-modules/generated-packages.nix
2024-05-11 12:47:40 +02:00
superherointj
602a9cec5b
Merge pull request #309904 from superherointj/k3s-format-rfc
k3s: enforce rfc 0166 format
2024-05-10 20:25:35 -03:00
Martin Weinelt
e21dccc5a1
Merge pull request #310645 from gepbird/fix-firefox-test
nixosTests.firefox-{beta,devedition,esr,esr-115}: unbreak
2024-05-11 00:07:56 +02:00
superherointj
6cfcd3c754 k3s: format with nixfmt-rfc-style 2024-05-10 18:55:54 -03:00
Gutyina Gergő
e1d179e36e
nixosTests.firefox-{beta,devedition,esr,esr-115}: unbreak 2024-05-10 19:28:41 +02:00
Emily
3a8dd0415a
Merge pull request #310209 from emilylange/chromium-disable-drm-auto-download
chromium: prevent automatic Widevine DRM download
2024-05-10 18:01:47 +02:00
emilylange
e4f185cfaf
nixos/rl-2405: mention chromium DRM change 2024-05-10 17:33:17 +02:00
Adam C. Stephens
6878d98e5c
Merge pull request #310341 from adamcstephens/incus/6.1.0
incus: 6.0.0 -> 6.1.0, enable non-LTS testing
2024-05-10 10:17:20 -04:00
K900
4733c9feec nixos/tests: set non-conflicting priority for logrotate disabling
CC https://github.com/NixOS/nixpkgs/pull/267880
2024-05-10 16:25:51 +03:00
Martin Weinelt
7da17ece76
Merge pull request #310366 from mweinelt/pretix-pretalx-homemode
pretix, pretalx: fixes, hardening
2024-05-10 14:50:24 +02:00
Jacek Generowicz
6f048ef50b
doc/release-notes: another batch of release note edits (#310538)
* Another batch of release not edits

* Elide mention of dub lockfiles

Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com>

* Qualify qtmultimedia with qt6

Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com>

---------

Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com>
2024-05-10 14:29:04 +02:00
Franz Pletz
fb382c2628
Merge pull request #310452 from fpletz/nginx-acme-servername
nixos/nginx: fix reference to acme cert hostname
2024-05-10 14:04:24 +02:00
nu-nu-ko
1c0d10e4f4
nixos/navidrome: add nu-nu-ko to maintainers 2024-05-10 21:16:30 +12:00
nu-nu-ko
7519d230b5
nixos/navidrome: ensure data & cache dirs exist with valid permissions 2024-05-10 21:16:30 +12:00
nu-nu-ko
ffc0d8bf58
nixos/navidrome: remove apply from settings option 2024-05-10 21:16:30 +12:00