Commit graph

106 commits

Author SHA1 Message Date
r-vdp
b7fe0a1c0c
nixos/test/installer: make sure we can build the nixos udev rules 2025-05-12 00:37:03 +02:00
r-vdp
51a43f8ad3
Reapply "nixos/udev: verify udev rules using udevadm"
This reverts commit 5d69558f0d.
2025-05-11 22:55:09 +02:00
K900
5d69558f0d
Revert "nixos/udev: verify udev rules using udevadm" 2025-05-10 00:50:36 +03:00
r-vdp
1278d56d71
nixos/udev: verify all udev rules using udevadm 2025-05-08 20:34:26 +02:00
Silvan Mosberger
374e6bcc40 treewide: Format all Nix files
Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:

  nix-build ci -A fmt.check

This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).

This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).

Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](8616af08d9/maintainers/scripts/auto-rebase).

If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
2025-04-01 20:10:43 +02:00
Andreas Fuchs
0c5719fe0e Don't stop systemd-{networkd,resolved,udevd} on config switch
These daemons should not be stopped, as they're foundational to a
proper functioning of the system. When switching configurations, they
only need a restart instead of that stop/start cycle.
2025-01-08 13:05:27 -05:00
Christian Kögler
5abdde9f60
udev: substitute /usr/bin/cat in rules (#370740) 2025-01-05 23:35:03 +01:00
Michael Livshin
b758495e5d udev: "--replace" -> "--replace-quiet" in substitutions
"--replace" is deprecated, and neither vocal new alternative is
appropriate in this case.
2025-01-05 17:28:42 +02:00
Will Fancher
15be453e9a
switch-to-configuration: Better handling of socket-activated units (#359724) 2025-01-04 11:51:21 -05:00
Michael Livshin
cdc84fcc96 udev: substitute /usr/bin/cat in rules
Used by alsa-utils 1.2.13.
2025-01-04 00:56:56 +02:00
Andreas Fuchs
878be9c20b Address review feedback: Attempt to fix wonky indentation 2024-12-18 08:17:04 -05:00
Jörg Thalheim
ace2b4c260 nixos/firmware: fix compression condition 2024-12-16 09:01:17 +01:00
Jörg Thalheim
0a9dd5612d nixos/firmware: make compression configurable
In nixos-images for nixos-anywhere, we optimize for the smallest
possible image size because our installer is loaded into RAM.
2024-12-13 15:52:21 +01:00
Andreas Fuchs
bf9c6c9861 switch-to-configuration-ng: Better handling of socket-activated units
Previously, if any unit had a socket associated with it, stc-ng
counted it as "socket-activated", meaning that the unit would get
stopped and the socket get restarted. That can wreak havoc on units
like systemd-udevd and systemd-networkd.

Instead, let units set the new flag notSocketActivated, which sets a
boolean on the unit indicating to stc-ng that the unit wants to be
treated like any other non-socket-activated unit instead. That will
stop/start or restart these units on upgrades, without unnecessarily
tearing down any machinery that the system needs to run.
2024-11-27 21:36:09 -05:00
Josh Hoffer
4080d35d2b nixos/udev: only restart when udev rules change
Only restart `systemd-udevd.service` if udev rules in `/etc/udev/rules`
actually changed. The paths of `services.udev.packages` may change
frequently but the resulting udev rules built by `udevRulesFor`
likely change less often.

This has the added benefit of not adding `services.udev.packages` to
the system closure if they are only used for their udev rules
(issue #308937).
2024-09-19 17:26:01 +02:00
Felix Buehler
b00fba5c63 nixos/services.udev: remove with lib; 2024-08-30 00:30:53 +02:00
Franz Pletz
985acc7254
Merge pull request #326224 from NickCao/udev-kvm 2024-07-28 07:01:48 +02:00
Nick Cao
5df12940bd
nixos/udev: remove rules for /dev/kvm
Permissions on /dev/kvm are already specified by tmpfiles.d rules

Reference: https://github.com/systemd/systemd/blob/v255/tmpfiles.d/static-nodes-permissions.conf.in#L18
2024-07-10 21:06:01 -04:00
Anders Kaseorg
1e68bdf3a4 nixos/udev: Fix grep: warning: stray \ before /
This reverts commit dbe2325603, which
was mistaken: `/` matches exactly the same things matched by `\/` but
without the warning.

Fixes #316561.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2024-06-29 17:38:25 -04:00
Maximilian Bosch
b6ef9ffdfd
nixos/udev: compress firmware with zstd if possible
Closes #267442

    $ nix path-info -Sh /nix/store/qj1dm7wfw5m3mxf1gn3fdm0az9y1h5ny-linux-firmware-20240312-xz
    /nix/store/qj1dm7wfw5m3mxf1gn3fdm0az9y1h5ny-linux-firmware-20240312-xz	440.3M
    $ nix path-info -Sh /nix/store/c3szcjxb3g990dbiz7llwmkaf0bi98j2-linux-firmware-20240312-zstd
    /nix/store/c3szcjxb3g990dbiz7llwmkaf0bi98j2-linux-firmware-20240312-zstd	460.6M

This is an increase of 4.4%, but OTOH zstd has a significantly higher
decompression speed[1].

[1] https://gregoryszorc.com/blog/2017/03/07/better-compression-with-zstandard/
2024-04-19 16:46:25 +02:00
Sandro
3814255973
Merge pull request #300995 from SuperSandro2000/udev-nixos-wsl
nixos/udev: make more NixOS WSL friendly
2024-04-17 22:39:10 +02:00
stuebinm
6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00
Bjørn Forsman
a29010fe79 nixos: improve many 'enable' descriptions 2024-04-09 07:10:17 +02:00
Sandro Jäckel
4677729c56
nixos/udev: only load firmware from udev when the nixos kernel is used
This is not the case for eg. NixOS in WSL
2024-04-02 18:14:50 +02:00
Sandro Jäckel
413f779bc0
nixos/udev: don't create modprobe config if modprobe is disabled 2024-04-02 18:14:25 +02:00
Florian Klink
fe446f8bb4 nixos/udev: allow /bin/sh in udev rules
Using `/bin/sh` in udev rules is fine (as it's guaranteed to point to a
(bash) shell on NixOS), and actually is better than hardcoding absolute
paths, at least in cases where these rules are also added to the
(systemd-based) initrd (via boot.initrd.services.udev.rules).

To allow this, we need to update the check routine that assembles the
list of files needing fixup, to explicitly exclude `/bin/sh` occurences.

To do this, we convert the pattern to a PCRE regex (which requires "/"
to be escaped), and add `(?!/bin/sh\b)` as a negative lookahead.

This subsequently allows udev rules to (start using) `/bin/sh` again, so
they'll work in-initrd.
2023-12-14 19:14:13 +02:00
Florian Klink
cb0fb74a2b nixos/udev: update description for services.udev.path
services.udev.path already contains some defaults, these are however
defined in the module implementation, not options.

Update the description to make this more clear.
2023-12-14 18:09:54 +02:00
Anthony Roussel
e30f48be94
treewide: fix redirected and broken URLs
Using the script in maintainers/scripts/update-redirected-urls.sh
2023-11-11 10:49:01 +01:00
Will Fancher
cca22054c0 systemd-stage-1: Add assertions for unsupported options. 2023-10-30 12:15:58 +01:00
Lily Foster
e9207b0501
nixos/*: unhide remaining systemd stage-1 options
These options were missed in NixOS/nixpkgs#226237, but they all were
specifically added for systemd stage-1.
2023-07-03 08:41:38 -04:00
rnhmjoj
dbcd187add
nixos/udev: silence harmless warnings
`udevRulesFor` generates a lot of warnings like:

  substituteStream(): WARNING: pattern '"/sbin/modprobe' doesn't match anything in file '/nix/store/.../95-dm-notify.rules'

due to the (preemptive) substitution of common paths in the default
udev rules. In this case a file having no matches is not unepected
and poses no issue at all.
2023-06-06 19:42:18 +02:00
Bruce Toll
0fce0749b5 nixos/udev: Fix hwdb conflict handling; build with systemdb-hwdb
Switch to systemdb-hwdb to build the udev hwdb.bin, as "udevadm hwdb" is
deprecated. This fixes an issue where the order of conflicting keys is
not respected.  The systemd-hwdb command creates a newer format (v3) of
hwdb.bin that respects the ordering of duplicate keys, with later
values replacing earlier occurrences.

A release note is included, as some mappings may be affected.
2023-04-21 19:08:37 -04:00
Will Fancher
dd392d7c76 systemd-initrd: networkd 2023-04-17 16:41:34 -04:00
Nick Cao
51e4bd298f
nixos/udev: enable initrd-udevadm-cleanup-db.service in systemd stage 1 2022-11-21 14:33:27 +08:00
Sandro Jäckel
7fe3f63da6
nixos/udev: add enable option 2022-10-26 19:24:14 +02:00
Nick Cao
309ea5a1af nixos/udev: allow marking firmware as not compressible 2022-10-07 19:40:58 +00:00
pennae
9547123258 nixos/*: convert internal option descriptions to MD
we'll have to do it eventually, may as well be now.
2022-08-31 16:32:54 +02:00
pennae
ef176dcf7e nixos/*: automatically convert option descriptions
conversions were done using https://github.com/pennae/nix-doc-munge
using (probably) rev f34e145 running

    nix-doc-munge nixos/**/*.nix
    nix-doc-munge --import nixos/**/*.nix

the tool ensures that only changes that could affect the generated
manual *but don't* are committed, other changes require manual review
and are discarded.
2022-08-31 16:32:53 +02:00
pennae
61e93df189 nixos/*: automatically convert option docs to MD
once again using nix-doc-munge (69d080323a)
2022-08-03 22:46:41 +02:00
pennae
3aebb4a2be nixos/*: normalize link format
make (almost) all links appear on only a single line, with no
unnecessary whitespace, using double quotes for attributes. this lets us
automatically convert them to markdown easily.

the few remaining links are extremely long link in a gnome module, we'll
come back to those at a later date.
2022-08-03 21:57:46 +02:00
pennae
9c8531c8a5 nixos/*: replace <replaceable>s with «thing»
we can't embed syntactic annotations of this kind in markdown code
blocks without yet another extension. replaceable is rare enough to make
this not much worth it, so we'll go with «thing» instead. the module
system already uses this format for its placeholder names in attrsOf
paths.
2022-08-03 21:08:58 +02:00
pennae
2e751c0772 treewide: automatically md-convert option descriptions
the conversion procedure is simple:

 - find all things that look like options, ie calls to either `mkOption`
   or `lib.mkOption` that take an attrset. remember the attrset as the
   option
 - for all options, find a `description` attribute who's value is not a
   call to `mdDoc` or `lib.mdDoc`
 - textually convert the entire value of the attribute to MD with a few
   simple regexes (the set from mdize-module.sh)
 - if the change produced a change in the manual output, discard
 - if the change kept the manual unchanged, add some text to the
   description to make sure we've actually found an option. if the
   manual changes this time, keep the converted description

this procedure converts 80% of nixos options to markdown. around 2000
options remain to be inspected, but most of those fail the "does not
change the manual output check": currently the MD conversion process
does not faithfully convert docbook tags like <code> and <package>, so
any option using such tags will not be converted at all.
2022-07-30 15:16:34 +02:00
Alyssa Ross
8aa8e0ce7f
nixos/udev: compress all firmware if supported
This should be a significant disk space saving for most NixOS
installations.  This method is a bit more complicated than doing it in
the postInstall for the firmware derivations, but this way it's
automatic, so each firmware package doesn't have to separately
implement its compression.

Currently, only xz compression is supported, but it's likely that
future versions of Linux will additionally support zstd, so I've
written the code in such a way that it would be very easy to implement
zstd compression for those kernels when they arrive, falling back to
xz for older (current) kernels.

I chose the highest possible level of compression (xz -9) because even
at this level, decompression time is negligible.  Here's how long it took
to decompress every firmware file my laptop uses:

	i915/kbl_dmc_ver1_04.bin                  	2ms
	regulatory.db                             	4ms
	regulatory.db.p7s                         	3ms
	iwlwifi-7265D-29.ucode                    	62ms
	9d71-GOOGLE-EVEMAX-0-tplg.bin             	22ms
	intel/dsp_fw_kbl.bin                      	65ms
	dsp_lib_dsm_core_spt_release.bin          	6ms
	intel/ibt-hw-37.8.10-fw-22.50.19.14.f.bseq	7ms

And since booting NixOS is a parallel process, it's unlikely (but
difficult to measure) that the time to user interaction was held up at
all by most of these.

Fixes (partially?) #148197
2022-05-13 14:36:34 +00:00
Janne Heß
89ace3967e
nixos/udev: systemd initrd improvements
First, add the builtin udev rules to /etc/udev/rules.d so they are used.
Then, add all networkd .link units to the initrd. This is done in the
old stage 1 as well so I assume this is needed even when networkd is not
used. I assume this is for things like changing the MAC address.

Also limit the number of udev/lib binaries that is put into the initrd
because the old initrd doesn't use all units either.
2022-04-30 14:17:29 +02:00
Lassulus
65cc198539
Merge pull request #167349 from helsinki-systems/feat/udev-systemd-stage-1
nixos/udev: Add systemd stage 1 support
2022-04-12 21:02:52 +01:00
Janne Heß
7024b4e5e3
nixos/udev: Put all initrd options into a namespace 2022-04-12 20:06:13 +01:00
Janne Heß
fb44ecd129
nixos/udev: Add systemd stage 1 support 2022-04-11 19:43:26 +01:00
Alyssa Ross
46a3a7b9a2 nixos/udev: remove rule for kqemu
kqemu was removed from Nixpkgs in 2013 in 181dc4032d ("Remove the old
KQEMU accelerator module"), so it should be safe to drop this rule
now.
2022-04-11 12:17:03 +00:00
Nikolay Amiantov
2b3f77b716 nixos/udev: set firmware path in a separate modprobe.d file
This way we don't bloat ramdisk with the whole Linux firmware packages.
2022-02-04 17:47:32 +03:00
rnhmjoj
8e59a682a5
nixos/udev: add option to install rules in initrd
Note: this moves the example rule used to rename network interfaces in
the new udev.initrdRules option, which is required since 115cdd1c.
2021-02-19 09:26:13 +01:00