Commit graph

302 commits

Author SHA1 Message Date
Robert Hensing 7b1af67486 nixos/journald: Link to journald manpage
This creates a link to https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html,
thanks to `doc/manpage-urls.json`.
2024-07-02 12:09:07 +02:00
Maximilian Bosch 749aec8444
nixos/nspawn: cgroupsv2 by default
That way you also get features like cgroup accounting for systemd units
when using systemd-nspawn w/o classic nixos containers.
2024-06-23 11:48:58 +02:00
Pol Dellaiera f2318b9d58
nixos/boot: use --replace-fail 2024-06-06 18:33:30 +02:00
Dawid Dziurla 156757eaf7
nixos/systemd-user: add generators option 2024-05-30 19:51:42 +02:00
Will Fancher 0415aec200
Merge pull request #297250 from NickCao/sysuser
nixos/systemd-sysusers: make uid/gid allocation stable
2024-05-26 20:17:06 -04:00
Will Fancher 4871a4e0da nixos/systemd-stage-1: Fix fsck.xfs needing bash's sh symlink 2024-05-05 06:01:03 -04:00
r-vdp 9258f57625
systemd: add a name option to all systemd units
This allows us to set things like dependencies in a way that we can
catch typos at eval time.
So instead of
```nix
systemd.services.foo.wants = [ "bar.service" ];
```
we can write
```nix
systemd.services.foo.wants = [ config.systemd.services.bar.name ];
```
which will throw an error if no such service has been defined.

Not all cases can be done like this (eg template services), but in a lot
of cases this will allow to avoid typos.

There is a matching option on the unit option
(`systemd.units."foo.service".name`) as well.
2024-04-15 11:32:45 +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
nikstur 4c397ea6de systemd-lib: include GPTMaxLabelLength constant 2024-04-08 16:42:25 +02:00
Florian Klink fd61db7a32
Merge pull request #299717 from ElvishJerricco/systemd-debug-shell
nixos/systemd: Enable debug-shell.service.
2024-04-01 17:20:24 +02:00
Will Fancher df32b558b5 nixos/systemd: Enable debug-shell.service. 2024-03-29 17:32:38 -04:00
Philip Taron e2e43f6ce7
nixos/systemd/initrd: make systemd mount root as rw if gpt-auto is set 2024-03-22 16:08:29 -07:00
Nick Cao e339f0a1fb
nixos/systemd-sysusers: make uid/gid allocation stable 2024-03-19 15:05:45 -04:00
Will Fancher f0701b576a
Merge pull request #290061 from SuperSandro2000/kernel-modules-package-name
nixos/boot: move name overwrite to pkgs.aggregateModules to option
2024-03-19 13:04:19 -04:00
Will Fancher 99587a3411
Merge pull request #209964 from Majiir/fix-initrd-systemd-closure
nixos/systemd/initrd: follow init param symlinks
2024-03-18 14:39:37 -04:00
Will Fancher f1731f2e28 nixos: Support systemd-gpt-auto-root 2024-03-15 18:22:04 -04:00
Silvan Mosberger cd5dc76d83 substitute: Deprecate replacements, introduce replacementsList
Also:
- Add tests
- Treewide update
- Improve docs
2024-02-29 00:35:27 +01:00
WilliButz 4d59ace14f
nixos/systemd-repart: add assertion for partition label length
The maximum length for a GPT label supported by systemd is 36
characters. When a repart definition contains a label that is longer
than the supported maximum length, it is ignored by systemd-repart and
a log message is produced.

The new assertion makes this obvious to the user at evaluation time,
allowing them to either drop the property entirely or choose a supported
label within the length limit instead.
2024-02-27 17:38:14 +01:00
Florian Klink 8b025e80dc
Merge pull request #288690 from maralorn/drop-unused-fs-binding
nixos: Drop unused variable in systemd/initrd.nix
2024-02-20 14:12:58 +07:00
Sandro Jäckel 191e258e6c
nixos/boot: move name overwrite to pkgs.aggregateModules to option
Before there was a kernel modules path named kernel-modules which then got turned
into linux-X.X.XX-modules-shrunk. Now the unshrunk package is called linux-X.X.XX-modules
and gets turned into X.X.XX-modules-shrunk.
2024-02-20 00:13:16 +01:00
Majiir Paktu 58a373809a nixos/systemd/initrd: follow init param symlinks 2024-02-18 14:57:12 -05:00
Jade Lovelace 5d1feba540 nixos/systemd.oomd: set the memory pressure thresholds as mkDefault
These should be defaults as they're pretty reasonable to want to
override as a user. Unsure how to change the slice defaults to be
overridable, that should probably be a later conversation.
2024-02-15 09:41:26 -08:00
maralorn 6634b86601 nixos: Drop unused variable in systemd/initrd.nix 2024-02-14 01:22:58 +01:00
Will Fancher ee9becfdfb
Merge pull request #285315 from jmbaur/sysupdate-fixes
nixos/sysupdate: allow lists in sysupdate config
2024-02-07 03:01:49 -05:00
Florian Klink 7c0a129076
Merge pull request #256652 from giorgiga/rateLimitBurst-documentation
Clarify journal size limit defaults in documentaiton of services.journald.rateLimitBurst
2024-02-06 13:26:35 +01:00
Jared Baur 50866dc20f
nixos/sysupdate: allow lists in sysupdate config
Lists are convenient to have in sysupdate configuration when using
multiple `MatchPattern` under `Target` when the target can have multiple
filenames. This use-case is helpful for BootLoaderSpec bootcounting where the target file on
disk can have multiple filenames, and in order for sysupdate to properly
ensure only N number of instances of this target exist at one time, we
need to have multiple match patterns.
2024-01-31 09:12:28 -08:00
Will Fancher 6f1b17d4b8 systemd-stage-1: Fix hibernate-resume with systemd v255 2024-01-28 06:52:21 -05:00
github-actions[bot] 3a8094730e
Merge master into staging-next 2024-01-22 12:01:10 +00:00
nikstur eec1845744 nixos/systemd-sysusers: init 2024-01-18 23:08:14 +01:00
github-actions[bot] dc4a7c97b0
Merge master into staging-next 2024-01-18 18:00:55 +00:00
Janne Heß 15c31afd8a
Merge pull request #271067 from nikstur/sysinit-reactivation
nixos/switch-to-configuration: add sysinit-reactivation.target
2024-01-18 16:13:32 +01:00
nikstur e6b66f08a5 nixos/switch-to-configuration: add sysinit-reactivation.target 2024-01-18 00:46:30 +01:00
nikstur 748378a3ec systemd: 254.6 -> 255.2
Removed patches:

- 0007-Fix-hwdb-paths.patch

  The directory we want seems to already be included in the list. Is there
  a reason why we want to restrict it further?

- 0010-build-don-t-create-statedir-and-don-t-touch-prefixdi.patch

  This patch has little to do with how the meson.build file looks now. The
  new patch 0017 is the successor to this one.

- 0015-pkg-config-derive-prefix-from-prefix.patch

  This is fixed upstream. We don't need this anymore.
2024-01-17 14:13:46 +01:00
Will Fancher bf54848f3b
Merge pull request #280232 from jmbaur/sysupdate-example-fix
nixos/sysupdate: fix example text
2024-01-16 15:43:05 -05:00
Will Fancher 66e3ec7d30
Merge pull request #278895 from jmbaur/repart-initrd-loopback
nixos/repart: add loop module to initrd
2024-01-16 15:40:19 -05:00
Jared Baur d177e2ef06
nixos/sysupdate: fix example text
The example systemd-sysupdate transfer name has a ".conf" suffix,
although the files on the final system are already appended with this
suffix, so the file ends up being "transfer-name.conf.conf". Remove the
suffix in the example so that users will get a transfer filename they
expect.
2024-01-11 01:47:36 -08:00
Jared Baur 1dad7f6821
nixos/repart: add loop module to initrd
Systemd-repart will use loopback devices for partition creation if it is
able to, and will fallback to doing "offline" partition creation writing
data directly to files. From what I see looking at the repart code,
there are specific features that cannot be taken advantage of when not
using loopback devices (e.g. no BTRFS subvolumes in systemd v255) and in
certain places they have to perform some manual re-sizing work that can
otherwise be avoided.
2024-01-05 01:04:30 -08:00
github-actions[bot] dc84f21849
Merge master into staging-next 2024-01-03 12:01:04 +00:00
Will Fancher 05706b850a
Merge pull request #273695 from lopsided98/initrd-systemd-lib-firmware
systemd-stage-1: allow non-existent /lib/firmware
2024-01-03 04:30:27 -05:00
Sandro Jäckel 27468aae96
nixos/oomd: add missing section to use slice 2024-01-03 02:45:38 +01:00
Sandro Jäckel 0a1d1907a5
nixos/oomd: use mkRenamedOptionModule like mentioned in the changelog 2024-01-01 22:33:00 +01:00
Jan Tojnar 80020c7db4 Merge branch 'master' into staging-next
; Conflicts:
;	pkgs/development/lua-modules/generated-packages.nix
;	pkgs/development/lua-modules/overrides.nix
2023-12-31 02:31:32 +01:00
Will Fancher 9cab49c71b
Merge pull request #273921 from SaltyKitkat/oomd
nixos/systemd: update oomd configuration
2023-12-29 18:47:49 -05:00
github-actions[bot] 04686e4ee3
Merge master into staging-next 2023-12-27 12:00:55 +00:00
nikstur c9569af3e0
Merge pull request #271326 from philiptaron/shutdown.target
treewide: depend on `shutdown.target` if `DefaultDependencies=no` in almost every case
2023-12-27 08:33:26 +01:00
github-actions[bot] 782f18b6fe
Merge staging-next into staging 2023-12-19 12:01:35 +00:00
Florian Klink 5a57cde110 nixos/systemd/initrd: add systemd-makefs unconditionally
As discussed in
https://github.com/NixOS/nixpkgs/issues/274310#issuecomment-1861842634,
the size increase is negligible, and this might be triggered via fstab
options or the cmdline too.

systemd-growfs is an online operation, so it's taken care of in stage 2.

Fixes https://github.com/NixOS/nixpkgs/issues/274310.
2023-12-19 08:38:03 +02:00
SaltyKitkat 679a417a7a Declare removed option with mkRemovedOptionModule 2023-12-13 16:43:34 +08:00
SaltyKitkat b2d6b30648 update oomd.nix
due to 7665e1796f
and 806c95e1c7
2023-12-13 16:35:39 +08:00
Ben Wolsieffer a514d8c148 systemd-stage-1: allow non-existent /lib/firmware
Since 1557027, makeModulesClosure doesn't create a lib/firmware
directory if there is no firmware in the initramfs. If this happens,
systemd-stage-1 fails to build.

/lib only contains /lib/modules and /lib/firmware, both of while are
from modulesClosure. Therefore, we can just add the entirety of
${modulesClosure}/lib to the initramfs to allow for the possibility that
lib/firmware doesn't exist. This also brings systemd-stage-1 in line
with the traditional stage-1.
2023-12-11 21:00:08 -05:00
Raito Bezarius eecfbe397a nixos/(tests/)journald-(remote|upload|gateway): add raitobezarius as a maintainer 2023-12-09 13:57:08 +01:00
Minijackson 2fb8bd4baf nixos/journald-upload: init 2023-12-09 01:50:23 +01:00
Minijackson 6410e72fd2 nixos/journald-remote: init 2023-12-09 01:50:23 +01:00
Minijackson 9ab63e1ad5 nixos/journald-gateway: init
move services.journald.enableHttpGateway -> services.journald.gateway.enable
2023-12-09 01:50:23 +01:00
Philip Taron 1f73c2a7b6
nixos/initrd-secrets: ensure correct ordering w.r.t. shutdown.target 2023-11-30 15:18:23 -08:00
K900 9ad22d35b6
Revert "nixos/switch-to-configuration: remove explicit tmpfiles invocation" 2023-11-29 09:38:27 +03:00
nikstur fa41730b86 nixos/switch-to-configuration: remove explicit tmpfiles invocation 2023-11-25 21:39:10 +01:00
zzywysm 3f4c802d26 initrd/autofs4: remove legacy references to autofs4 kernel module
Back in 2018, the kernel decided to remove the autofs4 module.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a2225d931f75ddd3c39f4d0d195fad99dfd68671

This caused immediate problems with systemd, so the kernel allowed autofs4 as a config option that would simply map back to autofs.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d02d21ea007b6b33cdaf15c2f84fb1fea996ecc2

Earlier this year, in July 2023, the kernel got tired of people not adapting to the autofs change, and forced the issue by fixing it within the kernel defconfigs, which NixOS uses as a starting point for their own kernel configs.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1f2190d6b7112d22d3f8dfeca16a2f6a2f51444e

This commit reflects the post-2018 reality by changing the remaining autofs4 references to autofs. Since this change initially happened in kernel 4.18 and we no longer support 4.x kernels, we don't need any backwards-compatibility tweaks.
2023-11-14 15:37:50 -05:00
Will Fancher 2f73652c34
Merge pull request #240651 from accelbread/postresumecommands
nixos/boot: add postResumeCommands option
2023-11-09 04:22:05 -05:00
Maximilian Bosch 0597d1d179 nixos/journald: add storage option
While this can be added via `services.journald.extraConfig`, this option
provides proper type-checking and other modules can determine
where journal data is stored. This is relevant when using e.g. promtail
to send logs to Loki and it should read from `/run/log/journal` if
volatile storage is used.
2023-11-07 14:06:27 +01:00
Archit Gupta 2a4b82c461 nixos/boot: add postResumeCommands option
Adds a postResumeCommands option to the initramfs to allow inserting
code to execute after the device has attempted to resume, and before
filesystems are mounted. This allows to inject code for operations like
wiping the rootfs on boot; if those were instead put in
postDeviceCommands, on a hibernated device, they would execute before
the device resumes from hibernation.
2023-11-06 09:50:11 -08:00
K900 998720bf94
Merge pull request #263849 from ElvishJerricco/sd-initrd-not-experimental
systemd-stage-1: No longer experimental
2023-10-30 20:04:20 +03:00
Will Fancher cca22054c0 systemd-stage-1: Add assertions for unsupported options. 2023-10-30 12:15:58 +01:00
Will Fancher a906632245 systemd-stage-1: No longer experimental 2023-10-27 16:46:47 -04:00
Lassulus 95a366309a
Merge pull request #262731 from Lassulus/tmpfiles
nixos/systemd-tmpfiles: add settings option
2023-10-26 09:29:46 +01:00
DavHau cae154a67e nixos/systemd-tmpfiles: add settings option 2023-10-23 00:34:23 +02:00
nikstur 9b20e22b88
Merge pull request #262573 from ElvishJerricco/systemd-repart-stage-1-assertion
nixos/systemd-repart: Add assertion requiring systemd in initrd
2023-10-22 11:53:59 +02:00
Will Fancher b57c850790 nixos/systemd-repart: Add assertion requiring systemd in initrd 2023-10-21 12:29:34 -04:00
nikstur 6958acea7e
Merge pull request #262179 from ElvishJerricco/systemd-stage-1-specific-fs-packages
systemd-stage-1: Use specific fs packages
2023-10-21 13:25:42 +02:00
Bjørn Forsman 142074c2a8 nixos: fix bad mkEnableOption descriptions
Fix descriptions that don't account for (1) the "Whether to enable"
prefix or (2) the automatically added trailing dot.
2023-10-20 16:22:40 +01:00
Will Fancher 18013cc71e systemd-stage-1: Use specific fs packages 2023-10-19 21:13:22 -04:00
Will Fancher 710b96b191 systemd-stage-1: Default to full systemd build. 2023-10-04 04:21:35 -04:00
Giorgio Gallo fed5af2d15
nixos/systemd: update rateLimitBurst documentaion.
This updates the documentation for the services.journald.rateLimitBurst
option, clarifying that the journal size limit may very well default to
a lot less than 4GB with small disks or disk with not much free space
(eg: virtualized machines)
2023-09-22 16:34:59 +02:00
Raito Bezarius fe6e299381 systemd: 253.5 -> 254-rc1
This is an early preparation for systemd v254 which causes some patch reflows
and EFI-related cleanups to their new build system with elf2efi, requiring pyelftools
as a Python packge.
2023-09-13 12:02:39 +02:00
Jared Baur c47f423a9d
nixos/systemd-initrd: disable tpm-crb if on armv7l-linux
In addition to the existing riscv64 exception, also disable adding the
tpm-crb module to the initrd if the host platform is armv7.
2023-09-07 00:38:55 +02:00
Florian Klink 0a49365db9
Merge pull request #253498 from elohmeier/tpmfix
boot.initrd.systemd: make TPM2 modules optional
2023-09-06 11:49:47 +03:00
Jared Baur e39c9f13bc
nixos/systemd-user: call systemd-tmpfiles during activation
Just like with system-wide tmpfiles, call `systemd-tmpfiles --create
--remove` for users during activation. This fixes an issue where new
entries in a user's tmpfiles are not reflected after activation, only at
boot when the user service systemd-tmpfiles-setup.service runs or only
after running systemd-tmpfiles manually.
2023-08-29 10:46:44 -07:00
Enno Richter 3f52185de8 boot.initrd.systemd: make TPM2 modules optional 2023-08-14 09:34:29 +02:00
Will Fancher 4ecd0c119a systemd shutdownRamfs: Fix infinite shutdown loop 2023-07-29 13:52:52 -04:00
nikstur a662dc8b73 nixos/lib: systemd definition files function
Add a re-usable function that converts an attrset to a directory
containing systemd definition files.
2023-07-26 23:30:08 +02:00
nikstur 9b4d3b840e nixos/systemd-sysupdate: init 2023-07-26 20:33:31 +02:00
Felix Buehler f3719756b5 treewide: use optionalString instead of 'then ""' 2023-06-24 20:19:19 +02:00
zi3m5f 67f5dcfd94 nixos/nspawn: fix spelling of systemd.nspawn MachineID option
This changes option systemd.nspawn.execConfig.MachineId to MachineID.
See man page systemd.nspawn(5)
2023-06-12 12:08:15 +02:00
Will Fancher b497502357 nixos: Use systemd-growfs for autoResize 2023-06-04 22:57:22 -04:00
Will Fancher 76d668fae7
Merge pull request #227628 from m-bdf/logind-handle-keys
nixos/logind: Add key handling options
2023-05-29 14:31:43 -04:00
Will Fancher 636e03bef3
Merge pull request #232533 from nikstur/systemd-repart-create-root
nixos/systemd-repart: enable creating root partition
2023-05-22 09:13:00 -04:00
nikstur ef80e11032 nixos/systemd-repart: enable creating root partition 2023-05-19 15:54:55 +02:00
nikstur 1bd62f43eb nixos/systemd-repart: add myself as maintainer 2023-05-12 18:55:09 +02:00
nikstur d85abd2764 nixos/systemd-repart: definition files in initrd
Store the definition files in the initrd instead of reading them from
the Nix store in /sysroot.

This way, the initrd has to be re-generated every time the definition
files change. When the path to the defintion files instead of the
definition files themselves are embedded in the initrd, however, the
initrd also has to be re-generated every time. In this regard, this
change does not improve the status quo.

However, now systemd-repart also works reliable when the Nix store is
mounted separately from the root partition.

This change also enables new use-cases like creating partitions
necessary to boot the system. However, by default, the root partition
cannot be created on first boot because the systemd-repart service
requires a /sysroot to be mounted. Otherwise, systemd-repart cannot
determine the device to operate on.
2023-05-09 00:11:21 +02:00
nikstur 5c2a7490cf nixos/systemd-repart: fix
Since v253, systemd-repart tries to create temporary directories in
/var/tmp. However, this directory doesn't exist in the initrd. This
commit adds an enviroment variable to re-use the existing /tmp directory
instead of /var/tmp.
2023-05-08 23:12:59 +02:00
Maëlys Bras de fer 520150fa89
nixos/logind: Add key handling options 2023-04-22 14:41:36 +00:00
Will Fancher e56084d2a0 systemd-stage-1: Revert assertions about initrd commands 2023-04-22 10:25:16 -04:00
Will Fancher 5c46e6f4e3 systemd-stage-1: Add assertions for unsupported options. 2023-04-21 13:05:12 -04:00
Will Fancher 8f9416e9e3 systemd-stage-1: Unhide documentation 2023-04-21 13:04:15 -04:00
Will Fancher dd392d7c76 systemd-initrd: networkd 2023-04-17 16:41:34 -04:00
Will Fancher e70b42bf61 systemd-initrd: Add users and groups with static IDs. 2023-04-12 13:55:50 -04:00
Will Fancher fef26d88e2 systemd-initrd: Support secrets when boot loader doesn't
initrd-secrets: Fix service config with systemd-stage-1
2023-04-11 15:20:47 -04:00
Will Fancher 71983a6eb5 systemd-initrd: Don't use SYSTEMD_SULOGIN_FORCE 2023-04-11 15:20:47 -04:00
Дамјан Георгиевски 83f65146ab nixos/systemd: systemd-growfs* units are real files now
`systemd-growfs@.service` and `systemd-growfs-root.service` became real units since:
50072ccf1b

we need to add them to the nixos module so growfs works again
2023-03-05 20:05:00 +01:00
Дамјан Георгиевски d2837a9cb3 nixos/systemd-initrd: create the /tmp mount point in the initrd
systemd now requires the /tmp mount point in the initrd cpio archive
since https://github.com/systemd/systemd/pull/25723

setting `"/tmp/.keep".text` will create the directory.

this fixes a boot failure:
```
(sd-gens): Failed to overmount /tmp/: No such file or directory
```
2023-03-05 04:41:08 +01:00