Commit graph

2898 commits

Author SHA1 Message Date
nikstur 9b4d3b840e nixos/systemd-sysupdate: init 2023-07-26 20:33:31 +02:00
Pol Dellaiera 07fd6694b5
Merge pull request #236368 from SuperSandro2000/etc-dir-names
nixos/etc: keep directories in derivation name
2023-07-25 03:02:47 +02:00
oddlama d073105d6b
nixos/switch-to-configuration: fix ignoring of template unit specialization dropins 2023-07-23 13:16:58 +02:00
Felix Bühler 0a2745684e
Merge pull request #239624 from Stunkymonkey/use-optionalString-then
treewide: use optionalString instead of 'then ""'
2023-07-22 13:02:47 +02:00
Matt Layher 93efcdac79
nixos/networkd: add DHCPServer PXE boot options
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2023-07-21 16:59:21 -04:00
Artturi dbef093f84
Merge pull request #244449 from Artturin/fixsrip1 2023-07-21 01:44:33 +03:00
Andrew Marshall 3d774b4453 util-linux: Fix build on non-Linux
Build logs show:

> configure: WARNING: non-linux system; not building mount
> configure: WARNING: non-linux system; not building swapon

So skip these on non-Linux

Using getOutput prevents eval failures on other platforms.
Things should stay eval'able with NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1

Co-authored-by: Artturin <Artturin@artturin.com>
2023-07-20 22:03:15 +03:00
Artturin 69267c22f1 nixos/stage-1: fix stripping
got broken in 6ea1a2a1be which changed
runCommandCC to runCommand but was not
noticed because it was failing silently

runCommand doesn't include CC or bintools
2023-07-20 21:26:38 +03:00
Will Fancher 22bcc32f63
Merge pull request #244033 from SuperSandro2000/issue-243820
nixos/stage-1: fix mount replacement in extra-utils
2023-07-20 00:43:33 -04:00
Will Fancher 2e60058b95
Revert "nixos/boot/stage-1: chase symlinks when copying binaries" 2023-07-20 00:03:50 -04:00
Florian Klink 8f15fe7914
Merge pull request #241370 from RaitoBezarius/vxlan-independent
nixos/networkd: support `Independent` flag for VXLAN netdevs
2023-07-19 23:18:54 +03:00
Florian Klink 6f66c57acc
Merge pull request #241365 from RaitoBezarius/macaddrs-netdevs
nixos/networkd: support netdev MAC addresses
2023-07-19 23:03:34 +03:00
Linus Heckemann dd2a892144 nixos/boot/stage-1: chase symlinks when copying binaries
The split of util-linux into further outputs (#236463) resulted in
${util-linux.bin}/bin/mount becoming a symlink. This broke zfs in some
cases.
2023-07-17 22:13:49 +02:00
Sandro Jäckel 222222bedb
nixos/stage-1: fix mount replacement in extra-utils 2023-07-17 21:12:39 +02:00
Linus Heckemann 7d2124f9e3 stage-1: Only copy mdadm and mdmon into initramfs if enabled 2023-07-10 20:31:13 +02:00
Linus Heckemann c0f963a338 boot.initrd.services.swraid -> boot.swraid
Since the option affects both stage-1 and stage-2, it does not make
sense to keep it within the boot.initrd namespace.
2023-07-10 20:20:08 +02:00
Lily Foster 5c1583bfd7
nixos/plymouth: fix minor doc rendering issue 2023-07-09 02:31:05 -04:00
K900 8533b23159 nixos/networkd: fix mismerge of #240969 and #241362 2023-07-09 07:34:42 +03:00
Will Fancher 0b25b4c7c9
Merge pull request #237908 from lilyinstarlight/upd/plymouth-2023-06-05
plymouth: unstable-2021-10-18 -> unstable-2023-06-05
2023-07-08 16:57:31 -04:00
Ryan Lahfa 186edce0a0
Merge pull request #241362 from RaitoBezarius/macvtap-networkd 2023-07-08 20:00:52 +02:00
Robert Hensing 3fd4ac8e82
Merge pull request #237040 from roberth/flexible-activation
nixos/system: Support pre-activated images
2023-07-08 16:06:25 +02:00
Raito Bezarius 6b9e49230d nixos/networkd: add MACVTAP= option for networks
Example 10. of man page of systemd.network(5) shows:
```

       Example 10. MacVTap

       This brings up a network interface "macvtap-test" and attaches it to "enp0s25".

           # /usr/lib/systemd/network/25-macvtap.network
           [Match]
           Name=enp0s25

           [Network]
           MACVTAP=macvtap-test
```

Which is a MACVTAP example and is currently unsupported in NixOS.
This is useful for people using "modern" technologies with virtual machines.
2023-07-08 15:42:10 +02:00
Ryan Lahfa 828633d36a
Merge pull request #241534 from samueldr/fix/finally-deprecate-boot-loader-raspberrypi 2023-07-08 14:16:27 +02:00
Samuel Dionne-Riel a6e61a1ea9 nixos: Formally deprecate boot.loader.raspberryPi
The whole option set was recommended against since mid-2019, and never
worked with the Raspberry Pi 4 family of devices.

We should have deprecated it in early 2020 for removal by 2021. At the
time I did not feel confident in making such a decision, and never
ended-up getting around to it.

The ***only*** supported-by-NixOS boot methods for AArch64 are
standards-based boot methods, namely UEFI or the pragmatically
almost-standard extlinux-compatible for U-Boot.

You can quote me on that.
2023-07-04 13:42:57 -04:00
Raito Bezarius faba775beb nixos/networkd: support Independent flag for VXLAN netdevs
According to networkd netdev's manpage:
```
       Independent=
           Takes a boolean. When true, the vxlan interface is created without any underlying network interface. Defaults to false, which means that a .network
           file that requests this VXLAN interface using VXLAN= is required for the VXLAN to be created.
```

is a valid option for [VXLAN] section.
2023-07-04 01:53:34 +02:00
Raito Bezarius 4d38fa043b nixos/networkd: support netdev MAC addresses
According to systemd.netdev manpage:

```
MACAddress=
           Specifies the MAC address to use for the device, or takes the special value "none". When "none", systemd-networkd does not request the MAC address for
           the device, and the kernel will assign a random MAC address. For "tun", "tap", or "l2tp" devices, the MACAddress= setting in the [NetDev] section is
           not supported and will be ignored. Please specify it in the [Link] section of the corresponding systemd.network(5) file. If this option is not set,
           "vlan" device inherits the MAC address of the master interface. For other kind of netdevs, if this option is not set, then the MAC address is
           generated based on the interface name and the machine-id(5).

           Note, even if "none" is specified, systemd-udevd will assign the persistent MAC address for the device, as 99-default.link has
           MACAddressPolicy=persistent. So, it is also necessary to create a custom .link file for the device, if the MAC address assignment is not desired.
```

Therefore, `none` is an acceptable value.
2023-07-04 01:21:35 +02:00
mutantmell d51ebb6173 nixos/networkd: refactor
Reduces size of networkd module by moving unit file generation code into a util.
2023-07-01 17:17:51 -07:00
pennae 969b4d7ba9
Merge pull request #232454 from quentinmit/bridge-vlan
nixos/networkd: Fix typo in BridgeVLAN options
2023-07-01 00:19:37 +02:00
Robert Hensing 772d6076e8 nixos: Add system.activatable flag for images that are pre-activated 2023-06-28 14:06:28 +02:00
Robert Hensing 9edad17d29 nixos/top-level: Remove unused builder variables
These variables were previously used by the activation script
build commands, but are now embedded into those commands for
to improve reusability for an upcoming addition.
2023-06-28 12:49:34 +02:00
Robert Hensing 7891c8cdaf nixos/activatable-system: Move legacy variables to top-level 2023-06-28 12:48:59 +02:00
Robert Hensing 990b72f6af nixos/activatable-system: Make system builder commands env independent
This way it will be easier to reuse in a different context, such as
a separate build of the activation script by itself (TBD).
2023-06-28 12:42:51 +02:00
Lily Foster 35337085ea
Merge pull request #237820 from lilyinstarlight/fix/systemd-initrd-network-default-package
nixos/networkd: make overriding boot.initrd.systemd.package a little easier by using mkDefault
2023-06-27 15:58:57 -04:00
Naïm Favier 0179d9f7e6
nixos/top-level: change extraDependencies from package to pathInStore
Allows adding subdirectory flake inputs that aren't top-level store paths.
2023-06-27 11:48:08 +02:00
iliana etaoin 53135cc8c7 nixos/grub: don't die on EFI-only systems if devices != ["nodev"]
Without this change, GRUB installation on non-PC systems (such as
aarch64-linux) only works if boot.loader.grub.devices is set to exactly
`["nodev"]`. If boot.loader.grub.devices was any other value (including
the default `[]`), users got the error:

    Died at /nix/store/an9ngv2vg95bdcy0ifsxlbkasprm4dcw-install-grub.pl line 586.

install-grub.pl verifies that if both $grub and $grubEfi are set, then
$grubTarget (e.g. i386-pc) and $grubTargetEfi (e.g. x86_64-efi) must
both be set, or the script will `die`. On non-PC systems, $grubTarget
is "".

When boot.loader.grub.devices is ["nodev"], $grub is set to null,
disabling non-EFI installation. But if a user has devices set for an
x86_64 config, or is using only mirroredBoots without setting devices,
they will hit this `die`.

This change sets $grub to "" if $grubTarget is "".
2023-06-25 17:46:12 +00:00
Felix Buehler 933a41a73f treewide: use optional instead of 'then []' 2023-06-25 09:11:40 -03:00
Felix Buehler f3719756b5 treewide: use optionalString instead of 'then ""' 2023-06-24 20:19:19 +02:00
Ryan Lahfa 230a3705fc
Merge pull request #234223 from alyssais/stage-1-bind-file 2023-06-22 21:47:30 +02:00
Sandro Jäckel 900104fc52
nixos/grub: remove grub 1 from descriptions 2023-06-20 22:34:25 +02:00
r-vdp c3fa4f9170
nixos/systemd: Make the fsck unit depend only on FS packages.
This means that this unit no longer need to be rebuilt when the system path is changed.
2023-06-18 12:46:13 +02:00
Lily Foster 7fb3975256
nixos/plymouth: add actual logo defaultText and move existing to example
Fixes #221391
2023-06-15 10:42:40 -04:00
Lily Foster ef0c0d5c2f
nixos/plymouth: use new runtime paths for plugins and themes 2023-06-15 10:42:37 -04:00
Lily Foster be48010eb2
nixos/networkd: make overriding boot.initrd.systemd.package a little easier by using mkDefault 2023-06-14 16:09:25 -04:00
Wout Mertens a97fe8990d
switch-to-configuration.pl: fix inverted dry-activate logic for swap 2023-06-14 12:11:45 +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 e23693e129 systemd stage 1 networking: Use KeepConfiguration 2023-06-11 13:59:00 -04:00
Robert Hensing 193f4fea90 nixos/activatable-system: Make substitutions explicit
This helps with understanding the code.
We might make this not depend on environment variables later.
systemBuilderArgs is a form of global state, which isn't helpful.
2023-06-10 19:15:00 +02:00
Robert Hensing a16986f1a3 nixos: Move installBootLoader to activation script modules 2023-06-10 19:15:00 +02:00
Robert Hensing 61d43dee5f nixos: Extract module for activation script inclusion into toplevel
Allows omission of this functionality through disabledModules, e.g.
for image building.
2023-06-10 19:15:00 +02:00
Will Fancher 90d69b1634
Merge pull request #236388 from ElvishJerricco/sd-s1-networkd-stop-on-switch-root
systemd stage 1 networking: Stop systemd-networkd on switch-root
2023-06-10 00:35:56 -04:00
Will Fancher 5d6ea734a1 systemd stage 1 networking: Stop systemd-networkd on switch-root
This essentially backports
https://github.com/systemd/systemd/pull/27791. `systemd-networkd.service`
is sent the `SIGTERM` signal, but it is not required to be stopped
before `initrd-switch-root.target` is reached, despite the use of
`systemctl isolate initrd-switch-root.target`. This is because when
there is no ordering at all between two units, and a transaction stops
one and starts the other, the two operations can happen
simultaneously. This means the service could still be running when
`switch-root` actually occurs. Then, stage 2 systemd will see the
service still running and decide it doesn't need to add a start
operation for it to its initial transaction. Finally, the service
exits, but only after it's already too late. If, however, there is any
ordering at all between a stopping unit and a starting unit, then the
stop operation will be done first. This way, we ensure that the
service is properly exited before doing `switch-root`.

This is something to keep in mind going forward. There may be other
services that need this treatment. These `before` and `conflicts`
definitions are the correct way to ensure a unit is actually stopped
before you reach initrd-switch-root
2023-06-08 00:25:15 -04:00
Victor Engmark 8deaa732a8 refactor: Split mkdir -m … into mkdir + chmod
As recommended by ShellCheck
<https://www.shellcheck.net/wiki/SC2174>.
2023-06-08 15:55:40 +12:00
Sandro Jäckel fadc824f20
nixos/etc: keep directories in derivation name
This changes eg. etc-timesyncd.conf to etc-systemd-timesyncd.conf which
better reflects the actual location of the config file.
2023-06-07 00:08:43 +02:00
Will Fancher b497502357 nixos: Use systemd-growfs for autoResize 2023-06-04 22:57:22 -04:00
Will Fancher 5176a4f113 nixos: Use systemd-makefs for autoFormat 2023-06-04 22:57:20 -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
Graham Christensen 479712af11
networkd: support specifying the ClientIdentifier for DHCPv4 options 2023-05-27 15:06:06 +02:00
Alyssa Ross a92bc576b1
nixos/stage-1: support bind mounts of files
On my system, / is tmpfs, and /etc/machine-id is bind mounted from
/persist.
2023-05-26 13:26:48 +00:00
Will Fancher fe43923a70
Merge pull request #229767 from mberndt123/mberndt123/stratis-rootfs
nixos/stratis: initrd support for stratis root volumes
2023-05-25 14:06:31 -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
figsoda 701bcdbead nixos: fix typos 2023-05-19 22:31:04 -04:00
Bjørn Forsman ef85c3fe51 nixos: use passAsFile to avoid "Argument list too long" error
This patch fixes "Argument list too long" build failure when passing a
list of store paths to system.extraDependencies that exceeds Linux'
MAX_ARG_STRLEN limit of 128 KiB. With the shortest possible derivation
names (one byte), the 128 KiB limit is equivalent to about 2850
derivations. With longer derivations names, the limit is hit earlier.
Fix this restriction.
2023-05-19 22:31:31 +02:00
Matthias Berndt 765349d345 minor refactoring 2023-05-19 10:22:45 -04:00
nikstur ef80e11032 nixos/systemd-repart: enable creating root partition 2023-05-19 15:54:55 +02:00
Matthias Berndt cb410a8c59 Merge remote-tracking branch 'upstream/master' into mberndt123/stratis-rootfs 2023-05-17 21:47:19 -04:00
Matthias Berndt 92814241a8 improve stratis initrd support
it is now possible to supply a stratis pool uuid
for every filesystem, and if that filesystem
is required for boot, the relevant pool will be
started in the initramfs.
2023-05-16 22:48:36 -04:00
Quentin Smith ad7b199d5d
nixos/networkd: Fix typo in BridgeVLAN options 2023-05-16 19:33:34 -04:00
Robert Hensing 25f227fc67
Merge pull request #231316 from hercules-ci/nixos-system.checks
NixOS: add `system.checks`
2023-05-15 23:16:29 +02:00
Ryan Lahfa 1ee11b8a31
Merge pull request #231283 from nikstur/filesystems-erofs
nixos/filesystems: init erofs
2023-05-14 18:54:37 +02:00
Florian Klink e9c6179ad0
Merge pull request #231504 from nikstur/systemd-repart-add-maintainer
nixos/systemd-repart: add myself as maintainer
2023-05-13 10:51:11 +03:00
nikstur fa09e0a3c7 nixos/filesystems: init erofs
Enable using an erofs filesystem as one of the filesystems needed to
boot the system. This is useful for example in image based deployments
where the Nix store is mounted read only.
[erofs](https://docs.kernel.org/filesystems/erofs.html) offers multiple
benefits over older filesystems like squashfs. Skip fsck.erofs because
it is still experimental.
2023-05-12 19:55:32 +02:00
nikstur 1bd62f43eb nixos/systemd-repart: add myself as maintainer 2023-05-12 18:55:09 +02:00
Robert Hensing 5bdf63819b nixos/top-level.nix: Add system.checks
Note that this does not add to the `forbiddenDependenciesRegex`
code because that code check should be unaffected as it only checks
output dependencies, not build dependencies.
Build deps are added after that check, if those are enabled in the
first place.
2023-05-11 21:18:38 +02:00
ajs124 96fbdcedcd trustedGrub: remove 2023-05-10 22:17:56 +02:00
ajs124 1319323458 nixos/grub: turn definition of version option from an error into a warning
because a lot of configurations (generated by nixos-generate-config) contain it
2023-05-10 21:51:26 +02:00
ajs124 30bea8d82d nixos/*: remove boot.grub.version 2023-05-10 21:51:26 +02:00
Lin Yinfeng 1e05869917
nixos/networkd: fix typo of tokenBucketFilterConfig 2023-05-09 23:06:47 +08: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
Matthias Berndt 8aa320b4c2 address code review issues 2023-05-08 23:18:55 +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
Matthias Berndt 9f1bc0fa02 address review comments 2023-05-07 18:48:28 +02:00
Matthias Berndt 1632e73b19 nixos/stratis: enable booting from stratis volume 2023-05-07 18:48:28 +02:00
Bernardo Meurer aa8eff129d
nixos/networkd: add TransmitQueues and TransmitQueueLength
These are relevant when using networkd to configure CAN networks

Co-authored-by: Martin Weinelt <mweinelt@users.noreply.github.com>
2023-05-06 21:55:09 -04:00
Ryan Lahfa 0b0c5fdf95
Merge pull request #230027 from jmbaur/fix-cross-nixos-system
nixos/bootspec: Fix cross for nixos-system systemBuilder
2023-05-05 22:05:44 +02:00
Ryan Lahfa 275a6e3d8d
Merge pull request #193469 from minijackson/mount-options-stage-1
nixos/stage-1: follow mount options
2023-05-05 17:05:48 +02:00
Jared Baur 67561dcc59
nixos/bootspec: Fix cross for nixos-system systemBuilder
When `nixpkgs.hostPlatform` != `nixpkgs.buildPlatform`, building the
top-level attribute fails since the bootspec portion of the system
builder tries to reference the host platform's `jq`. Change this to
reference the build platform's `jq`.
2023-05-04 20:09:16 -07:00
Rene Hollander a70c7aba36 nixos/networkd: Fix typo in usage sectionBridgeVLAN
The `B` in bridge should be capitalized.

It currently leads to an evuluation error: 
```
error: attribute 'sectionbridgeVLAN' missing

       at /nix/store/7wmrwj0sgwg1iivxk43lpkqjhji57mq7-source/nixos/modules/system/boot/networkd.nix:2386:56:

         2385|       example = { VLAN = "10-20"; };
         2386|       type = types.addCheck (types.attrsOf unitOption) check.network.sectionbridgeVLAN;
             |                                                        ^
         2387|       description = lib.mdDoc ''
       Did you mean sectionBridgeVLAN?
```
2023-05-04 16:20:56 +02:00
Jörg Thalheim be8e3128b9
Merge pull request #223418 from Mic92/grub
nixos/grub-install: don't rely on shell to run commands
2023-05-04 09:48:41 +01:00
Raito Bezarius bc502d0a14 nixos/bootspec: adopt the merged RFC-0125
This removes the feature preview warning, enable by default bootspec,
adds a validation flag to prevent Go to go into build-time closure.

This will break all downstream users of bootspec as those changes are
not backward-compatible.
2023-04-28 18:26:11 -07:00
Weijia Wang b2ef7956b6
Merge pull request #227560 from jackyliu16/loongnix-commit
lib.platforms.loongarch64: init
2023-04-28 13:21:42 +03:00
jackyliu16 15e3a50bd3 nixos/binfmt: add loongarch64-linux 2023-04-28 12:11:58 +03:00
Minijackson b25259e021
nixos/stage-1: follow mount options
For fileSystems needed for boot which are bind mounts, busybox tend to
ignore mount options, so we remount right afterwards
2023-04-25 12:47:39 +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 1598338521 systemd-stage-1: Make networkd options shallow 2023-04-21 21:52:38 -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
Florian Klink 6b27ed3229
Merge pull request #169116 from ElvishJerricco/systemd-stage-1-networkd
Systemd stage 1 networkd
2023-04-21 18:40:59 +02:00
Artturi b83db86a9e
Merge pull request #222080 from Stunkymonkey/nixos-optionalString 2023-04-20 16:07:30 +03:00
Will Fancher 3cb9534df6 systemd-initrd: Flush networkd 2023-04-17 16:41:36 -04:00
Will Fancher 8598234651 systemd-initrd: dbus 2023-04-17 16:41:36 -04:00
Will Fancher 834ec135ce systemd-initrd: OpenVPN 2023-04-17 16:41:35 -04:00
Will Fancher 0698a1cf04 systemd-initrd: sshd 2023-04-17 16:41:35 -04:00
Will Fancher dd392d7c76 systemd-initrd: networkd 2023-04-17 16:41:34 -04:00
lewo ff24a05847
Merge pull request #206445 from nlewo/ssytemd-boot-fail
systemd-boot-builder only ignores OSError "invalid argument"
2023-04-16 22:17:28 +02:00
Sandro 603320b64f
Merge pull request #204534 from SuperSandro2000/boot-tmp 2023-04-12 21:37:47 +02:00
Will Fancher e70b42bf61 systemd-initrd: Add users and groups with static IDs. 2023-04-12 13:55:50 -04:00
Will Fancher 762b69f2ff systemd-initrd: Fix up root directory mode 2023-04-11 15:20:47 -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
Felix Buehler 327b0cff7a treewide: use more lib.optionalString 2023-04-07 13:38:33 +02:00
Robert Hensing bcd2d49d85 nixos: Make services.resolved discoverable via "systemd-resolved" search
This query yielded no results on search.nixos.org.
I don't think I can make all options magically appear, but you can
the other options by reading the text.
2023-04-07 01:09:05 +02:00
Antoine Eiche 2638fb722e systemd-boot-builder only ignores OSError "invalid argument"
In order to fix
https://github.com/NixOS/nixpkgs/issues/114552 (profile name with
special characters), all OSError have been ignored while only the OSError
with errno 22 (invalid argument) could has been ignored.

The drawback of ignoring all OSError is that the "No space left on
device" error is also ignored. When the /boot doesn't have enough
available disk space, the switch-to-configuration script succeeds
while the boot menu has not been updated: the user thinks it's system
has been updated, but on the next reboot it is actually rollbacked.
2023-04-04 09:16:41 +02:00
K900 48b2f723f5 nixos/system: disallow system.copySystemConfiguration in pure eval mode
This is already broken, so let's give it a better error message.
2023-03-29 17:49:30 +03:00
Jörg Thalheim d9c92360a8 nixos/install-grub: stop using bare file handles for readFile/WriteFile 2023-03-27 19:25:46 +02:00
Jörg Thalheim 5a23a24ba2 nixos/grub-install: don't rely on shell to run commands
data passed to these programs might be accidentially interpreted as
shell. Discovered in https://github.com/Mic92/envfs/issues/111
2023-03-27 19:21:55 +02:00
Vladimír Čunát 12dd95fbb1
Merge branch 'master' into staging-next 2023-03-24 09:07:41 +01:00
Will Fancher 5a9b9e620d
Merge pull request #176828 from therishidesai/luks-multi-key-files
nixos/luksroot: add tryEmptyPassphrase option
2023-03-24 03:02:20 -04:00
github-actions[bot] 6a3714135d
Merge master into staging-next 2023-03-23 00:02:14 +00:00
pennae 31f422d95f
Merge pull request #218721 from apfelkuchen6/nw
nixos/networkd: add some missing options
2023-03-22 22:22:03 +01:00
Rishi Desai cccc3f8a8e nixos/luksroot: add tryEmptyPassphrase option 2023-03-22 09:17:23 -05:00
Sandro Jäckel 3a5de0e725
nixos/tmp: add a note to useTmpfs on potential issues 2023-03-20 17:27:06 +01:00
Sandro Jäckel a5d95ac5fc
nixos/tmp: move /tmp options under boot.tmp 2023-03-19 18:49:37 +01:00
apfelkuchen06 0ddfb0a5df nixos/networkd: add BridgeVLAN options 2023-03-16 03:31:04 +01:00
apfelkuchen06 cd650b3fa3 nixos/networkd: add QuickFairQueueingClass options 2023-03-16 03:31:04 +01:00
apfelkuchen06 fde806d5a5 nixos/networkd: add QuickFairQueueing options 2023-03-16 03:31:04 +01:00
apfelkuchen06 493ed75418 nixos/networkd: add HeavyHitterFilter options 2023-03-16 03:31:04 +01:00
apfelkuchen06 88d99a3630 nixos/networkd: add HierarchyTokenBucketClass options 2023-03-16 03:31:04 +01:00
apfelkuchen06 24df07c786 nixos/networkd: add HierarchyTokenBucket options 2023-03-16 03:31:03 +01:00
apfelkuchen06 29e5451963 nixos/networkd: add TrivialLinkEqualizer options 2023-03-16 03:31:03 +01:00
apfelkuchen06 cf470ebd88 nixos/networkd: add FairQueueing options 2023-03-16 03:31:03 +01:00
apfelkuchen06 dbc14e5a44 nixos/networkd: add FairQueueingControlledDelay options 2023-03-16 03:31:03 +01:00
apfelkuchen06 5b5c79c6a0 nixos/networkd: add GenericRandomEarlyDetection options 2023-03-16 03:28:23 +01:00
apfelkuchen06 ca496f8754 nixos/networkd: add EnhancedTransmissionSelection options 2023-03-16 03:28:23 +01:00
apfelkuchen06 3cde7aaa36 nixos/networkd: add DeficitRoundRobinSchedulerClass options 2023-03-16 03:28:23 +01:00
apfelkuchen06 0d06e85996 nixos/networkd: add DeficitRoundRobinScheduler options 2023-03-16 03:28:23 +01:00
apfelkuchen06 49df6bc669 nixos/networkd: add ControlledDelay options 2023-03-16 03:28:23 +01:00
apfelkuchen06 728108555e nixos/networkd: add CAKE options 2023-03-16 03:28:23 +01:00
apfelkuchen06 7a6cae0e15 nixos/networkd: add PFIFOFast options 2023-03-16 03:28:23 +01:00
apfelkuchen06 f75ec30fee nixos/networkd: add PFIFOHeadDrop options 2023-03-16 03:28:23 +01:00
apfelkuchen06 d9e1963a15 nixos/networkd: add BFIFO options 2023-03-16 03:28:22 +01:00
apfelkuchen06 f2ca28f658 nixos/networkd: add PFIFO options 2023-03-16 03:28:22 +01:00
apfelkuchen06 51689e86b9 nixos/networkd: add StochasticFairnessQueueing options 2023-03-16 03:28:22 +01:00
apfelkuchen06 736650ccf1 nixos/networkd: add StochasticFairBlue options 2023-03-16 03:28:22 +01:00
apfelkuchen06 872a4823cf nixos/networkd: add FlowQueuePIE options 2023-03-16 03:28:22 +01:00
apfelkuchen06 2784862e41 nixos/networkd: add PIE options 2023-03-16 03:28:22 +01:00
apfelkuchen06 d63035329e nixos/networkd: add TokenBucketFilter options 2023-03-16 03:28:21 +01:00
apfelkuchen06 55cd970d73 nixos/networkd: add NetworkEmulator options 2023-03-16 03:28:21 +01:00
apfelkuchen06 b08e5be98d nixos/networkd: add QDisc options 2023-03-16 03:28:21 +01:00
apfelkuchen06 09e745c784 nixos/networkd: add IPoIB options 2023-03-16 03:28:21 +01:00
apfelkuchen06 df14953724 nixos/networkd: add CAN options 2023-03-16 03:28:21 +01:00
apfelkuchen06 a7724b8f91 nixos/networkd: add LLDP options 2023-03-16 03:28:21 +01:00
apfelkuchen06 ae15b86d4d nixos/networkd: add BridgeMDB option 2023-03-16 03:28:21 +01:00
apfelkuchen06 d646f7c7f2 nixos/networkd: add BridgeFDB options 2023-03-16 03:28:21 +01:00
apfelkuchen06 28ddd570f7 nixos/networkd: add Bridge options 2023-03-16 03:28:20 +01:00
apfelkuchen06 590ccae1f8 nixos/networkd: add L2TP options 2023-03-16 03:28:20 +01:00
github-actions[bot] 795332a826
Merge staging-next into staging 2023-03-15 18:01:44 +00:00
Vladimír Čunát a86610144f
Merge #219444: staging-next 2023-03-04 2023-03-15 17:35:39 +01:00
Sandro c817b58614
Merge pull request #220278 from bdd/fix-binfmt-x86_64-windows-extension
nixos/binfmt: fix extension for Windows binaries
2023-03-15 16:15:47 +01:00
Martin Weinelt 1c52b361a8
Merge remote-tracking branch 'origin/master' into staging-next 2023-03-15 14:36:40 +01:00
Robert Hensing c3b245d540
Merge pull request #195511 from DeterminateSystems/include-build-deps
nixos/top-level: add includeBuildDependencies option
2023-03-15 13:33:24 +01:00
Linus Heckemann eb45cd5108 nixos/top-level: add includeBuildDependencies option
This option allows adding the build closure of the system to its
runtime closure, enabling fully-offline rebuilds (as long as no new
packages are added).
2023-03-14 11:55:13 +01:00
Florian Klink 504d66bae9
Merge pull request #216826 from gdamjan/systemd-253
systemd: 252.5 -> 253
2023-03-13 17:37:39 +01:00
Martin Weinelt d03d74aa67
Merge remote-tracking branch 'origin/master' into staging-next
Conflicts:
- pkgs/development/python-modules/aiopulse/default.nix
- pkgs/development/python-modules/identify/default.nix
- pkgs/development/python-modules/spur/default.nix
2023-03-12 23:28:23 +01:00
Guillaume Girol db901673ea
Merge pull request #209156 from pwaller/issue-114594
nixos/grub: Name initrd-secrets by system, not by initrd
2023-03-12 18:50:33 +00:00
Vladimír Čunát 1dd94ad62f
Merge branch 'master' into staging-next 2023-03-12 09:06:28 +01:00
Ryan Lahfa ac93edb3ac
Merge pull request #209829 from notgne2/fix/systemd-boot-always-profile-path
nixos/systemd-boot: always use profile_path() for system closure paths
2023-03-11 22:08:18 +01:00
github-actions[bot] 39f6788067
Merge master into staging-next 2023-03-09 12:01:27 +00:00
Berk D. Demir 147186a95b nixos/binfmt: fix extension for Windows binaries
Extension based matching for Windows targets define it '.exe' but kernel
documentation explicitly states it should be passed "without the .".

From https://docs.kernel.org/admin-guide/binfmt-misc.html
> * magic:
>   [...] If you chose filename extension matching, this is the
>   extension to be recognised (without the ., the \x0a specials are not
>   allowed).
2023-03-08 21:07:31 -08:00
Aaron Andersen 374fc068ec nixos/systemd-oomd: disable systemd-oomd when enableUnifiedCgroupHierarchy is false
fixup for https://github.com/NixOS/nixpkgs/pull/203596
2023-03-08 18:39:18 -05: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
notgne2 ca9f0682fd
nixos/systemd-boot: always use profile_path() for system closure paths 2023-03-05 06:13:45 -07: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
github-actions[bot] 8480c21d06
Merge master into staging-next 2023-03-04 12:01:17 +00:00
Naïm Favier 45e44c56f1
Merge pull request #217342 from pennae/nrd-html-manual
nixos-render-docs: add manual html renderer, use it for the nixos manual
2023-03-04 12:58:38 +01:00
github-actions[bot] 387a5e220d
Merge staging-next into staging 2023-02-28 00:03:08 +00:00
Will Fancher ace4d26ccc
Merge pull request #217887 from lilyinstarlight/fix/allow-overriding-systemd-initrd-bins
nixos/systemd-initrd: allow overriding initrdBin with extraBin
2023-02-27 17:43:30 -05:00
github-actions[bot] de3f71e277
Merge staging-next into staging 2023-02-26 06:02:30 +00:00
Winter 15f1369b95 Revert "nixos/systemd-coredump: guard static gid for systemd-coredump behind state version"
This reverts commits f5483464d5 and
6b9583e5e1.

Ideally, we shouldn't cause friction for users that bump `stateVersion`,
and I'd consider having to switch and/or manually hardcode a UID/GID
to supress the warning friction. I think it'd be more beneficial to, in
this rare case of an ID being missed, just let it be until more
discussion happens surrounding this overall issue.

See https://github.com/NixOS/nixpkgs/pull/217785 for more context.
2023-02-25 22:31:56 -05:00
Lily Foster 5210ddc701
nixos/systemd-initrd: allow overriding initrdBin with extraBin
Being able to override `boot.initrd.systemd.initrdBin` with `boot.initrd.systemd.extraBin` is a desirable behavior, so this PR changes the `ln -s` command to `ln -sf` to force link even if the file already exists.
2023-02-23 13:23:15 -05:00
Nick Cao f5483464d5
nixos/systemd-coredump: guard static gid for systemd-coredump behind state version 2023-02-23 17:07:50 +08:00
pennae 3794c04d79 nixos/manual: fix manpage links
{manpage} already exapnds to a link but akkoma wants to link to
a specific setting. split the mention for clarity.

networkd just straight up duplicated what {manpage} generates anyway, so
that link can go away completely.
2023-02-21 18:26:39 +01:00
github-actions[bot] fc3641aa1e
Merge staging-next into staging 2023-02-21 00:03:04 +00:00
Will Fancher bb7cd63150
Merge pull request #215381 from lilyinstarlight/fix/make-initrd-ng-wrapped-executables
make-initrd-ng: support wrapped executables
2023-02-20 14:11:48 -05:00
Lily Foster 1fa1b58c25
nixos/console,nixos/systemd-initrd: remove now-unnecessary wrapped bin inclusions 2023-02-20 07:02:55 -05:00
github-actions[bot] 0e856cc7de
Merge staging-next into staging 2023-02-18 18:01:58 +00:00
Florian Klink 4bfb6411e3
Merge pull request #215188 from ElvishJerricco/binfmt-bad-setting-fix
binfmt: Don't create invalid service with no registrations
2023-02-18 15:39:46 +01:00
github-actions[bot] 3b5c06282d
Merge staging-next into staging 2023-02-17 12:01:58 +00:00
Arian van Putten 98042fc6d3
Merge pull request #216357 from nikstur/systemd-repart-after-activation
nixos/systemd-repart: enable running after initrd
2023-02-17 12:56:24 +01:00
Florian Klink ab566b8656
Merge pull request #208269 from ElvishJerricco/systemd-stage-1-fsck
Systemd stage 1 fsck
2023-02-17 10:06:39 +02:00
nikstur b1ff1e1658 nixos/systemd-repart: enable running after initrd 2023-02-14 19:42:32 +01:00
K900 2bbd450b8b
Merge pull request #210505 from notgne2/fix/systemd-initrd-allow-symlink
nixos/systemd-initrd: allow symlink into when checking for `/prepare-root`
2023-02-14 21:10:31 +03:00
Arian van Putten 5b23d0e51c
Merge pull request #214396 from nikstur/systemd-repart
systemd-repart
2023-02-10 20:03:09 +01:00
nikstur 4700198654 nixos/systemd-repart: init 2023-02-10 14:05:44 +01:00
Izorkin 6b9583e5e1
nixos/systemd-coredump: fix group id 2023-02-08 20:48:13 +03:00
pennae bf4c0c1900 nixos/*: remove trailing period in mkEnableOptions
those are added by mkEnableOption, and .. is replaced to … by markdown
processing.
2023-02-08 15:23:34 +01:00
Will Fancher 14b77582da systemd-stage-1: fsck 2023-02-08 00:43:10 -05:00
Winter b2d04c1155 nixos/luksroot: build pbkdf2-sha512 binary in its own derivation
Since this feature's inception, we've compiled a binary that uses OpenSSL
to perform PBKDF-SHA512 during the extra-utils build. In addition to this
being inefficient, it broke as of 6ea1a2a1be,
which switched the extra-utils derivation to use stdenvNoCC.

For now, I think the path of least resistence is to move the pbkdf-sha512
build to its own derivation, to fix the breakage, as well as improving
the efficiency of the extra-utils build.

(I do believe that at some point, we should revisit this binary -- perhaps
rewriting it -- as Clang even just on its default settings emits more
warnings than you'd want to see in a security-related codebase when
compiling it.)
2023-02-07 23:06:11 -05:00
Will Fancher 1b39491326 systemd-stage-1: Use x-initrd.mount for better unit dependencies 2023-02-07 22:22:39 -05:00
Will Fancher 988184ca82 systemd-stage-1: managerEnvironment option 2023-02-07 22:22:39 -05:00
Will Fancher b3a27afb7c binfmt: Don't create invalid service with no registrations
We shouldn't be creating a systemd.services.systemd-binfmt value when
the upstream unit isn't being pulled in, because it results in a
service unit file with no ExecStart line
2023-02-07 17:02:26 -05:00
Will Fancher eec740325c initrd-ssh: New sshd settings names 2023-02-07 13:56:02 -05:00
Nick Cao 96339d786a
Merge pull request #213782 from SuperSandro2000/stage1-extraUtils
nixos/stage-1: build extraUtils without compiler
2023-02-03 08:59:08 +08:00
Sandro c3b1fd8ba1
Merge pull request #199784 from Majiir/fix-plymouth-start
nixos/plymouth: don't start Plymouth on config switch
2023-01-31 15:47:45 +01:00
Sandro Jäckel 6ea1a2a1be
nixos/stage-1: build extraUtils without compiler 2023-01-31 14:45:39 +01:00
Florian Klink cd47b8e423
Merge pull request #213445 from Majiir/fix-systemd-coredump-truncation
nixos/systemd/coredump: fix kernel.core_pattern truncation
2023-01-30 21:26:21 +01:00
Majiir Paktu 7f35c8b2ac nixos/systemd/coredump: fix kernel.core_pattern truncation
Fixes #213408
2023-01-29 15:49:16 -05:00
pennae 0a6e6cf7e6 nixos/manual: render module chapters with nixos-render-docs
this converts meta.doc into an md pointer, not an xml pointer. since we
no longer need xml for manual chapters we can also remove support for
manual chapters from md-to-db.sh

since pandoc converts smart quotes to docbook quote elements and our
nixos-render-docs does not we lose this distinction in the rendered
output. that's probably not that bad, our stylesheet didn't make use of
this anyway (and pre-23.05 versions of the chapters didn't use quote
elements either).

also updates the nixpkgs manual to clarify that option docs support all
extensions (although it doesn't support headings at all, so heading
anchors don't work by extension).
2023-01-27 20:07:34 +01:00
Jörg Thalheim 86d5b67260 disable tpm-crb on riscv64 2023-01-23 15:00:41 +01:00
Nick Cao a7a0d03ecc
Merge pull request #211229 from Luflosi/fix-modprobeConfig-typo
nixos/modprobe: fix typo in boot.modprobeConfig.enable documentation
2023-01-23 16:02:09 +08:00
Nick Cao b9576dd927
Merge pull request #211723 from tpwrules/fix-systemd-boot-more
nixos/systemd-boot: fix tests and upgrade issues
2023-01-23 15:55:57 +08:00
Peter Waller 678eed323f nixos/grub: Name initrd-secrets by system, not by initrd
Previously, secrets were named according to the initrd they were
associated with. This created a problem: If secrets were changed whilst
the initrd remained the same, there were two versions of the secrets
with one initrd. The result was that only one version of the secrets would
by recorded into the /boot partition and get used. AFAICT this would
only be the oldest version of the secrets for the given initrd version.

This manifests as #114594, which I found frustrating while trying to use
initrd secrets for the first time. While developing the secrets I found
I could not get new versions of the secrets to take effect.
Additionally, it's a nasty issue to run into if you had cause to change
the initrd secrets for credential rotation, etc, if you change them and
discover you cannot, or alternatively that you can't roll back as you
would expect.

Additional changes in this patch.

* Add a regression test that switching to another grub configuration
  with the alternate secrets works. This test relies on the fact that it
  is not changing the initrd. I have checked that the test fails if I
  undo my change.

* Persist the useBootLoader disk state, similarly to other boot state.
  * I had to do this, otherwise I could not find a route to testing the
    alternate boot configuration. I did attempt a few different ways of
    testing this, including directly running install-grub.pl, but what
    I've settled on is most like what a user would do and avoids
    depending on lots of internal details.
  * Making tests that test the boot are a bit tricky (see hibernate.nix
    and installer.nix for inspiration), I found that in addition to
    having to copy quite a bit of code I still couldn't get things to
    work as desired since the bootloader state was being clobbered.

My change to persist the useBootLoader state could break things,
conceptually. I need some help here discovering if that is the case,
possibly by letting this run through a staging CI if there is one.

Fix #114594.

cc potential reviewers:

@lopsided98 (original implementer) @joachifm (original reviewer),
@wkennington (numerous fixes to grub-install.pl), @lheckemann (wrote
original secrets test).
2023-01-21 17:19:26 +00:00
Jan Tojnar 5c87c72c1f nixos/init-script: fix eval
error: attribute 'nixos' missing

This was missed in d3528cdc3d
2023-01-21 13:26:47 +01:00
Luflosi 2dfc86b838
nixos/modprobe: fix typo in boot.modprobeConfig.enable documentation
This typo was introduced in f4d8e64bed.
Also remove the dot at the end of the sentence since otherwise there would be two dots in the documentation.
2023-01-20 13:58:15 +01:00
Thomas Watson 8f2babd032 nixos/systemd-boot: pass EFI variable flags during update too
On some systems, EFI variables are not supported or otherwise wonky.
bootctl attempting to access them causes failures during bootloader
installations and updates. For such systems, NixOS provides the options
`boot.loader.efi.canTouchEfiVariables` and
`boot.loader.systemd-boot.graceful` which pass flags to bootctl that
change whether and how EFI variables are accessed.

Previously, these flags were only passed to bootctl during an install
operation. However, they also apply during an update operation, which
can cause the same sorts of errors. This change passes the flags during
update operations as well to prevent those errors.

Fixes https://github.com/NixOS/nixpkgs/issues/151336
2023-01-19 23:52:57 -06:00
rnhmjoj 4ed9893770
nixos/systemd-boot: improve initrd-secrets error messages
This is the equivalent of eccc1e5b but for systemd-boot
2023-01-19 20:50:17 +01:00
Martin Weinelt 5770984a95
Merge pull request #211252 from schnusch/systemd-user-tmpfiles-rules
nixos: systemd: systemd.user.tmpfiles.users add default
2023-01-17 17:41:41 +00:00
schnusch f0f2c6bec9 nixos: systemd: systemd.user.tmpfiles.users add default 2023-01-17 16:53:45 +01:00
Florian Klink 24b4189619
Merge pull request #207468 from schnusch/systemd-user-tmpfiles-rules
nixos: systemd: add systemd.user.tmpfiles.rules, systemd.user.tmpfiles.users.<name>.rules
2023-01-17 14:39:44 +01:00
schnusch 34ad8447c3 nixos: systemd: add systemd.user.tmpfiles 2023-01-17 12:19:40 +01:00
rnhmjoj eccc1e5bf4
install-grub.pl: improve initrd-secrets error messages
The build of initrd-secrets can routinely fail for old boot entries
if the secrets have been removed or renamed in a later generation.
This always happens for generation 1, because it's built from the
NixOS installer and the paths differs by the mount point (i.e. /mnt).

The error is very confusing because it fails to mention it's about
an older generation and that it's somewhat harmless.

This commit turns the error into a warning for all generations but the
current, adds the name of the failed entry to the message and a note
explaining why it can happen.
2023-01-16 02:30:39 +01:00
Maximilian Bosch 9aa1391bdf
Merge pull request #208803 from Ma27/revert-kmod-stage-1-hack
Revert "nixos/stage-1: fix `modprobe` in initial ramdisk on systems w/glibc-2.34"
2023-01-15 19:10:10 +01:00
Ryan Lahfa b42ea74b96
Merge pull request #206655 from vlinkz/distroname
nixos/version: add system.nixos.distroName and system.nixos.distroId options
2023-01-15 17:39:55 +01:00
Victor Fuentes d3528cdc3d
nixos/version: add config.system.nixos.distroName and config.system.nixos.distroId 2023-01-14 16:19:06 -05:00
github-actions[bot] 49722fd14a
Merge master into staging-next 2023-01-13 18:01:34 +00:00
pennae d6e464b4c5
Merge pull request #208983 from pennae/nixos-manual-md
nixos/manual: convert module chapters to markdown
2023-01-13 13:29:01 +01:00
notgne2 fd06c8fc9f
nixos/systemd-initrd: allow symlink into when checking for /prepare-root 2023-01-13 02:18:28 -07:00
Martin Weinelt 2895576165 Merge remote-tracking branch 'origin/master' into staging-next 2023-01-11 15:37:38 +01:00
K900 b2a819f15f nixos/kernel: fix docs typo 2023-01-11 10:18:28 +03:00
Martin Weinelt c1e6c6af69 Merge remote-tracking branch 'origin/master' into staging-next 2023-01-11 03:51:33 +01:00
K900 cd1c574ebe nixos/kernel: better docs for boot.kernelPatches 2023-01-10 23:13:46 +03:00
pennae 53fc887582 nixos/manual: move "edit the MD file" comments to generated XML 2023-01-10 12:34:37 +01:00
pennae bf92eaebe4 nixos/manual: generate module chapters with md-to-db.sh 2023-01-10 10:32:00 +01:00
pennae dc7788efb8 nixos/manual: regenerate chapter xml files
apparently pandoc has changed behavior over the past releases, so the
files are no longer in sync. occasionally this requires edits
to the markdown source to not remove an anchor that was there
before (albeit wth a very questionable id), or where things were simply
being misrendered due to syntax errors.
2023-01-10 10:31:59 +01:00
github-actions[bot] e4fc9a910a
Merge master into staging-next 2023-01-09 12:01:24 +00:00
Naïm Favier aa3dc8b8c3
Merge pull request #208694 from ncfavier/resolvconf-nixos-enter 2023-01-09 12:58:31 +01:00
Naïm Favier bff4bb5540
Merge pull request #208762 from ncfavier/link-manpages-options-doc 2023-01-09 11:57:01 +01:00
github-actions[bot] 0c8280b1c4
Merge staging-next into staging 2023-01-05 06:01:39 +00:00
pennae 9da5f12ecf modules: add mkPackageOptionMD
another transitional option factory, like mkAliasOptionModuleMD.
2023-01-05 02:33:13 +01:00
Naïm Favier 4fb500d629
nixos/doc: fix some manpage references 2023-01-03 14:03:35 +01:00
Maximilian Bosch 865723cd53
Revert "nixos/stage-1: fix modprobe in initial ramdisk on systems w/glibc-2.34"
This reverts commit da905d4cf9.

See the commit linked above for further information on why this was
needed. Apparently this is not needed anymore because the need for
LD_LIBRARY_PATH (which is needed for `modprobe(8)` to find
`libpthread.so.0`) doesn't exist anymore.

Since d33e52b253 the library path of each
binary in extra-utils is patched correctly.
2023-01-02 21:35:35 +01:00
Jan Tojnar 5810109b42 Merge branch 'staging-next' into staging
- readline6 attribute removed from all-packages.nix in d879125d61
- readline attribute was bumped to readline82 in 50adabdd60
2023-01-02 03:04:32 +01:00
Naïm Favier 37e42d01a0
nixos/etc: skip resolv.conf in nixos-enter chroot
nixos-enter sets up /etc/resolv.conf as a bind mount from the host
system, so trying to activate a system that sets
`environment.etc."resolv.conf"` (e.g. with systemd-resolved enabled)
results in an unhelpful warning.

Skip linking /etc/resolv.conf if we're in a nixos-enter environment, as
determined by the IN_NIXOS_ENTER environment variable.

Make the warnings more helpful, indicating which file we failed to link.

Unlink temporary files in case of failure.
2023-01-02 01:41:29 +01:00
Naïm Favier fe51ed28f3
Merge pull request #208033 from ncfavier/systemd-boot-skip-regression 2022-12-30 20:45:56 +01:00
Naïm Favier 80665d606a
nixos/systemd-boot: skip EFI update to 252
That version has a regression that leaves some machines unbootable.
While we wait for the fix (252.2) to land in master, this is a workaround that
should save people some pain.
2022-12-29 14:06:40 +01:00
github-actions[bot] 351a07ba79
Merge staging-next into staging 2022-12-29 00:03:11 +00:00
Anderson Torres 5f5b7824cb
Merge pull request #132694 from arcnmx/binfmt-interp-sandbox
nixos/binfmt: add interpreter path to sandbox
2022-12-28 17:33:46 -03:00
github-actions[bot] aaaeebad7a
Merge staging-next into staging 2022-12-28 18:01:50 +00:00
Jörg Thalheim d165c5dcad
Merge pull request #204254 from raphaelr/initrd-openvpn
nixos/tests/initrd-network-openvpn: fix
2022-12-28 12:36:27 +00:00
Sergei Trofimovich 092d57c076 Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
    pkgs/development/tools/language-servers/ansible-language-server/default.nix
2022-12-28 09:35:37 +00:00
Will Fancher 9a497aab1b systemd-stage-1: Improve test-instrumentation output 2022-12-24 19:36:29 -05:00
Jan Tojnar 72c37eddec Merge branch 'staging-next' into staging 2022-12-25 01:30:47 +01:00
Florian Klink 6b1a896570
Merge pull request #205121 from alaviss/homed
nixos: systemd-homed support
2022-12-23 13:09:17 +01:00
Ryan Lahfa e2e8dfcf44
Merge pull request #207163 from NixOS/rfc0125-improvements
nixos/activation/bootspec: make initrd optional, serialize system, precise extensions' type
2022-12-23 00:43:29 +01:00
Cole Helbling 21f4afd799 nixos/activation/bootspec: fix document output path
The RFC currently stipulates the document will be available at
`$out/boot.json`.
2022-12-22 07:56:09 -08:00
Raito Bezarius 5dd2e60371 nixos/activation/bootspec: make initrd optional, serialize system, precise extensions' type 2022-12-21 23:28:21 +01:00
Thomas Watson af25692214 nixos/stage-1: Examine binaries for libraries in a consistent order
To reduce size, stage 1 (the initrd) is populated by copying specific
binaries in, then copying the libraries specifically needed by those
binaries. `patchelf` is then used to make the binaries search in the
directory where these libraries are copied to instead of their original
store paths.

Some filesystems (e.g. ZFS) do not guarantee that copying the same files
in the same order into a given directory will result in `find` returning
them in any particular order (though the order appears consistent so
long as the directory is not modified).

Therefore, when the binaries are scanned for libraries to copy in, they
might be scanned in a different order each time the derivation is built.
If two binaries need two different libraries with the same name, then a
different instance of the library might be copied in first, changing the
derivation contents and breaking reproducibility.

This turns out to be the case with `libudev.so.1` from both `systemd`
(needed by e.g. `mdadm`) and `systemdMinimal` (needed by e.g.
`dmsetup`). This issue is fixed by sorting the list of binaries to be
scanned instead of relying on filesystem order so that the same instance
always gets seen and copied first.

Both before this change (at least on ext4) and after this change
(without any options that affect stage 1), this is the `libudev.so.1`
from `systemdMinimal` by way of `dmsetup`. Whether this is appropriate
and how much the two different systemd configurations and udev libraries
need to be involved is a topic left for future work.
2022-12-20 08:24:19 +01:00
Jörg Thalheim 668a2b2f33
Merge pull request #172237 from DeterminateSystems/bootspec-rfc
Support external bootloader backends (RFC-0125)
2022-12-17 08:35:53 +00:00
Artturin 05a2dfd674 lib.replaceChars: warn about being a deprecated alias
replaceStrings has been in nix since 2015(nix 1.10)

so it is safe to remove the fallback

d6d5885c15
2022-12-15 22:25:51 +02:00
Leorize 05420f34cf nixos: add systemd-homed support
As a start, it's not very configurable, but works pretty well.
2022-12-09 12:10:51 -06:00
Maximilian Bosch 539954efab
Merge pull request #204780 from Ma27/kernel-maintenance-docs
nixos/manual: document kernel backporting policy and implications of it
2022-12-09 11:53:53 +01:00
Artturi 8ffe22e286
Merge pull request #203956 from Artturin/addforbiddendependenciesregex
nixos/top-level.nix: add forbiddenDependenciesRegex option
2022-12-09 07:54:00 +02:00
Cole Helbling 5af481f67f nixos/activation/bootspec: fixup improper $out substitution 2022-12-08 13:50:05 -08:00
Cole Helbling dce9add02b nixos/activation/bootspec: refactor the generator script
We separate the different steps (injecting the toplevel and injecting
the specialisations) so that it's easy to document what each snippet is
actually doing.
2022-12-08 13:50:05 -08:00
Cole Helbling 38e5089814 nixos/activation/bootspec: drop problematic comment, only generate bootspec when bootspec is enabled 2022-12-08 13:50:05 -08:00
Cole Helbling 97f657c742 nixos/activation/bootspec: DocBook -> Markdown, add description for extensions field 2022-12-08 13:50:05 -08:00
Cole Helbling cc63293b50 nixos/boot/external: fixup typo in generated docs, regenerate docs 2022-12-08 13:50:05 -08:00
Cole Helbling ad6ea546b4 nixos/boot/external: DocBook -> Markdown 2022-12-08 13:50:05 -08:00
Raito Bezarius 680369e504 nixos/activation/bootspec: add some comments to explain the delicate manipulations 2022-12-08 13:50:05 -08:00
Raito Bezarius 11dfbee0a4 nixos/activation/bootspec: add bootspec chapter in NixOS manual 2022-12-08 13:50:05 -08:00
Raito Bezarius 9832e3e9b9 nixos/activation/bootspec: remove SB extension example in Cue schema 2022-12-08 13:50:04 -08:00
Raito Bezarius 980f50124f nixos/boot/external: add @raitobezarius as maintainer and allow initrd secrets 2022-12-08 13:50:04 -08:00
Raito Bezarius 348ba1b33c nixos/activation/bootspec: module-ify
This does the following:

* turns bootspec into a NixOS module
* validates bootspecs with Cue
* exposes internal knobs
2022-12-08 13:50:04 -08:00
Raito Bezarius ee27291b34 nixos/activation/bootspec: fix slurping specialisation bootspecs 2022-12-08 13:50:04 -08:00
K900 e69c37eae9 nixos/activation: don't generate bootspec for containers 2022-12-08 13:50:04 -08:00
Graham Christensen e9c85d6d0f nixos/activation/bootspec: embed the document into a bootspec subdir 2022-12-08 13:50:04 -08:00
Graham Christensen 6c0e4e892f nixos/activation/bootspec: embed the entire contents of specialisation's bootspecs into the parent
See: https://github.com/NixOS/rfcs/pull/125#discussion_r871222614
2022-12-08 13:50:04 -08:00
Cole Helbling 83d06ce16d nixos/boot/external: init
This allows supporting external bootloader backends.
2022-12-08 13:50:04 -08:00
Cole Helbling 942dcd238b nixos/activation/bootspec: init bootspec support (RFC-0125) 2022-12-08 13:50:03 -08:00
Leorize 0cc87ab901 nixos/systemd/userdbd: add method to enable service
This is recommended to enable in conjunction with systemd-homed.
2022-12-08 10:28:41 -06:00
Maximilian Bosch fa257ecb33
nixos/kernel: link manual (with backport policies) from boot.kernelPackages
Yes I know it's dirty to link the rendered HTML, but linking
`#sec-kernel-config` breaks the manual build for me with the following
error:

    element link: validity error : IDREF attribute linkend references an unknown ID "sec-kernel-config"

This is something that should probably be fixed, but for the current
change I'd argue that this is good enough (in fact even the
`nix.settings`-option uses that hack).
2022-12-06 14:38:16 +01:00
Naïm Favier 98a5ae3e5d
Merge pull request #202956 from arcnmx/systemd-networkd-wait-online 2022-12-05 17:53:26 +01:00
Naïm Favier 170a98ba73
Merge pull request #167871 from asymmetric/doc-networkd 2022-12-04 16:24:02 +01:00
Lorenzo Manacorda 2ae17515e0 nixos/networkd: doc activation of systemd.networkd 2022-12-04 16:18:48 +01:00
phaer 3c1906b202 initrd-ssh: add ignoreEmptyHostKeys option 2022-12-03 15:10:43 +01:00
Raphael Robatsch 9f874dd95e nixos/tests/initrd-network-openvpn: fix
- The default cipher is BF-CBC, which openvpn refuses to use by default.
  Switched to AES-256-CBC.
- openvpn does not require an external "ip" executable anymore, and does
  not support the "ipconfig" option by default, so remove that option.
2022-12-03 10:32:38 +01:00
arcnmx 51b5602b45 nixos/networkd: add wait-online.enable option
When no interfaces are managed by systemd-networkd, it will
unconditionally fail. This option allows it to be disabled in those
situations where it prevents system switches from succeeding.
2022-12-02 19:00:31 -08:00
Artturin a34d7b67fd nixos/top-level.nix: add forbiddenDependenciesRegex option
useful for making sure that there's no dev outputs in the system
2022-12-02 21:15:24 +02:00
arcnmx 0e89c822af nixos/binfmt: mkDefault auto-detected interpreter 2022-12-01 14:57:59 -08:00
arcnmx 873074ac60 nixos/binfmt: add interpreter path to sandbox 2022-12-01 14:57:59 -08:00
Andrew Marshall c88944f025 nixos: nix.readOnlyStore -> boot.readOnlyNixStore
The placement of this option under `nix` was misleading, as it is not
configuration of the Nix daemon, but rather configuration of the NixOS
boot process and how it mounts the Nix store. As such, make it an option
of `boot` to clarify what it actually affects, and imply that it will
only take effect on a reboot.

Since it no longer has the context of nix, adjust the name to include
it.
2022-11-30 22:57:08 -05:00
Bjørn Forsman 19a6b85e8f nixos: disable systemd-oomd when enableUnifiedCgroupHierarchy is false
Or else systemd-oomd gets marked as failed due to
"Userspace Out-Of-Memory (OOM) Killer was skipped because of a failed condition check (ConditionControlGroupController=v2)."
and cause the system to enter degraded state.

Ref https://github.com/NixOS/nixpkgs/issues/195085
2022-11-29 20:39:05 +01:00
Sandro Jäckel f4d8e64bed
nixos/modprobe: replace boot.isContainer with boot.modprobeConfig.enable 2022-11-24 14:07:46 +01:00
Martin Weinelt c021df5792
Merge pull request #197254 from Atemu/fstab-escape-options 2022-11-19 18:08:40 +01:00
Will Fancher b28ecff1e6 nixos: Add util-linux to systemd PATH to fix fsck with systemd 251.6
This is an alternative to the reverted
d9b1bde390, which broke systemd stage 1
2022-11-15 17:54:32 -05:00
Markus Partheymueller 5bc1b01a40
boot.loader.systemd-boot: add extraInstallCommands option (#200715) 2022-11-14 14:20:58 +01:00
Sandro 9477fa1e44
Merge pull request #197917 from SuperSandro2000/kernel-enable 2022-11-12 21:12:56 +01:00
Daniel Nagy 095269c862
treewide: use types.port in nixos modules 2022-11-10 09:30:00 +01:00
Sandro Jäckel 182575a60d
nixos/kernel: replace boot.isContainer with boot.kernel.enable 2022-11-09 23:45:33 +01:00
Robert Hensing 59f6a93082
Merge pull request #199595 from hercules-ci/nixos-toplevel-maintenance
nixos/top-level: maintenance
2022-11-09 13:54:36 +01:00
Majiir Paktu ad83bff008 nixos/binfmt: restart systemd-binfmt when registrations change 2022-11-07 11:28:47 +01:00
Atemu 753f883c35 stage-1: escape mount points and options
mountFS adds these strings to fstab and then relies on `mount` parsing fstab. If
they have spaces or tabs in them, that would break fstab and therefore not mount
with the unhelpful error: No such file or directory.

Co-authored-by: Lily Foster <lily@lily.flowers>

Co-authored-by: Luflosi <Luflosi@users.noreply.github.com>
2022-11-06 22:15:31 +01:00
Majiir Paktu bd99b3b8ff nixos/plymouth: don't start Plymouth on config switch 2022-11-05 19:52:42 -04:00
mangoiv 73f666a204 nixos/modules/system/boot/stage-1.nix: add documentation for moved secrets in past system generations 2022-11-05 22:16:07 +01:00
Robert Hensing 9299483604 nixos/top-level.nix: Move configurationName to grub.nix
The configuration-name file is grub specific, so it should not be
in top-level.nix.
2022-11-05 00:25:46 +01:00
Robert Hensing 37fa46a224 nixos/top-level.nix: Remove workaround for #156533 2022-11-05 00:25:46 +01:00
Robert Hensing 0b05ed2c78 nixos/specialisation.nix: Extract module 2022-11-05 00:25:46 +01:00
Robert Hensing d3ac0938a7 nixos/top-level.nix: Make extensible
(cherry picked from commit 4ec415cff9)
2022-11-05 00:05:26 +01:00
ajs124 32cf6b29ab
Merge pull request #194291 from bronson/sort-etc-clean
Sort /etc/.clean to reduce spurious file changes
2022-10-28 00:47:15 +02:00
Daniel Barter fde313902f networkd: allow setting RouteMetric in Address section of a network config file 2022-10-26 21:53:32 -07:00
lucasew d31cf8ca0c nixos/uvesafb: init
Signed-off-by: lucasew <lucas59356@gmail.com>
2022-10-23 11:47:11 -03:00
github-actions[bot] 71e4896d63
Merge master into staging-next 2022-10-22 12:01:25 +00:00
markuskowa 79638604bb
Merge pull request #189703 from ck3d/remove-incomplient-nspawn-options
nixos/nspawn: Remove not compliant options
2022-10-22 12:19:49 +02:00
Martin Weinelt 51fcbf5bb7 Merge remote-tracking branch 'origin/master' into staging-next 2022-10-16 00:18:40 +02:00
Jörg Thalheim 8324b6efd3
Merge pull request #196147 from Mic92/systemd-boot-delete-old-specialisation
Systemd boot delete old specialisation
2022-10-15 17:36:28 +02:00
Jörg Thalheim 42c9492829 nixos/systemd-boot: decrease catch scope for ValueError 2022-10-15 16:41:38 +02:00
Martin Weinelt c728598b84 Merge remote-tracking branch 'origin/staging-next' into staging 2022-10-13 23:29:04 +02:00
Florian Klink d90ffb83c2
Merge pull request #195154 from veehaitch/networkd-ipv6-pd
nixos/networkd: add/adopt IPv6 options
2022-10-13 23:00:26 +02:00
Vladimír Čunát 00a757ed3f
Merge branch 'master' into staging 2022-10-13 08:27:55 +02:00
Robert Hensing 129fd1ab27
Merge pull request #194530 from colemickens/stage-1-systemd-luksroot-toString-fix
nixos: luksroot: toString-ify keyFileSize usage
2022-10-12 00:00:35 +01:00
Vincent Haupert 4f442dde0e nixos/networkd: add new options
Systemd 250:

> DHCPv4 client support in systemd-networkd learnt a new Label= option
> for configuring the address label to apply to configure IPv4
> addresses.

> The [IPv6AcceptRA] section of .network files gained support for a new
> UseMTU= setting that may be used to control whether to apply the
> announced MTU settings to the local interface.

> The [DHCPv4] section in .network file gained a new Use6RD= boolean
> setting to control whether the DHCPv4 client request and process the
> DHCP 6RD option.

> The [DHCPv6] section in .network file gained a new setting
> UseDelegatedPrefix= to control whether the delegated prefixes will be
> propagated to the downstream interfaces.

> The [IPv6AcceptRA] section of .network files now understands two new
> settings UseGateway=/UseRoutePrefix= for explicitly configuring
> whether to use the relevant fields from the IPv6 Router Advertisement
> records.

> The [RoutingPolicyRule] section of .network file gained a new
> SuppressInterfaceGroup= setting.

> The IgnoreCarrierLoss= setting in the [Network] section of .network
> files now allows a duration to be specified, controlling how long to
> wait before reacting to carrier loss.

Systemd 246:

> systemd-networkd's [DHCPv4] section gained a new setting UseGateway=
> which may be used to turn off use of the gateway information provided
> by the DHCP lease. A new FallbackLeaseLifetimeSec= setting may be
> used to configure how to process leases that lack a lifetime option.
2022-10-09 00:54:42 +02:00
Vincent Haupert 4367b782bc nixos/networkd: deprecate IPv6Token=
> The IPv6Token= section in the [Network] section is deprecated, and
>> the [IPv6AcceptRA] section gained the Token= setting for its
>> replacement. The [IPv6Prefix] section also gained the Token= setting.
>> The Token= setting gained 'eui64' mode to explicitly configure an
>> address with the EUI64 algorithm based on the interface MAC address.
>> The 'prefixstable' mode can now optionally take a secret key. The
>> Token= setting in the [DHCPPrefixDelegation] section now supports all
>> algorithms supported by the same settings in the other sections.
2022-10-09 00:52:55 +02:00
Vincent Haupert 036489ffaa nixos/networkd: adapt dhcpV6Config
* Remove `ForceDHCPv6PDOtherInformation=`
* Add a missing `WithoutRA=` option

Systemd 250:

> The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
> has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
> settings in the [DHCPv6] section and the DHCPv6Client= setting in the
> [IPv6AcceptRA] section to control when the DHCPv6 client is started
> and how the delegated prefixes are handled by the DHCPv6 client.
2022-10-09 00:21:05 +02:00
Vincent Haupert bc8d6d8f96 nixos/networkd: DHCPv6PrefixDelegation -> DHCPPrefixDelegation
Adapt to changes introduced in Systemd 250:

> The [DHCPv6PrefixDelegation] section in .network file is renamed to
> [DHCPPrefixDelegation], as now the prefix delegation is also
> supported with DHCPv4 protocol by enabling the Use6RD= setting.

Replaces the `dhcpV6PrefixDelegationConfig` with
`dhcpPrefixDelegationConfig` and throws an error if the old option is
used.

Also adapt the respective IPv6 prefix delegation test.
2022-10-09 00:11:52 +02:00
Lin Jian 437f73dd54
nixos/systemd-boot: fix entry match condition in remove_old_entries
Before this patch, the entry match condition always fails, causing all
entries being removed. The error is not noticed because later they are
re-generated.
2022-10-07 20:43:48 +08:00
Lin Jian 642323930e
nixos/systemd-boot: correctly find gen_number for specialisation
Before this patch, the gen_number found by regex contains
"-specialisation-foo" if specialisation is used. As a result, applying
int() to gen_number raises ValueError, causing entries containing
a specialisation part not being removed.
2022-10-07 19:28:43 +08:00
Cole Mickens 3d5d6fc78c
nixos: luksroot: toString-ify keyFileSize usage 2022-10-06 15:06:50 -07:00
Zhaofeng Li b9b454820a systemd/initrd: Add TPM modules into initrd
This improves the out-of-box experience of TPM2 unlocking at a
small (50K) overhead.
2022-10-05 08:22:53 -06:00
Zhaofeng Li 21bbef9548 nixos/luksroot: Reword message on FIDO2 support with systemd stage 1 2022-10-05 08:22:53 -06:00
Zhaofeng Li 19c34ac44b systemd/initrd: Add files required by TPM2 and FIDO2 support to the initramfs 2022-10-05 08:22:14 -06:00
Zhaofeng Li 570824e102 systemd: Wrap in LUKS2 tokens
Update pkgs/os-specific/linux/systemd/default.nix

Co-authored-by: Janne Heß <janne@hess.ooo>
Co-authored-by: Ilan Joselevich <personal@ilanjoselevich.com>
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2022-10-05 08:22:14 -06:00
github-actions[bot] 855f2990f1
Merge staging-next into staging 2022-10-05 12:02:14 +00:00
Florian Klink c1c406bc87
Merge pull request #191491 from oxalica/fix/systemd-initrd-modprobe
nixos/systemd-stage-1: include modprobe confg in initrd
2022-10-05 10:39:58 +02:00
github-actions[bot] d426366b62
Merge staging-next into staging 2022-10-05 00:05:03 +00:00
Scott Bronson 4db7061162
Sort the /etc/.clean file
Without sorting, the contents of /etc/.clean are likely to change on
every nixos-rebuild due to Perl's nondeterministic hash key ordering.
2022-10-03 14:11:17 -07:00
Gabriel Arazas 292aab9822 nixos/systemd: update extraConfig description 2022-10-03 11:17:41 +08:00
phaer fcd5087046 systemd: build with portabled by default. 2022-09-30 14:53:50 +02:00
Robert Hensing d1f0a6d972 nixos/systemd/oomd: mdDoc fix 2022-09-28 16:07:42 +02:00
Bernardo Meurer 2e0cca58f0
Merge pull request #169613 from helsinki-systems/feat/systemd-oomd 2022-09-28 09:53:49 -03:00
Franz Pletz 1f41992899
Merge pull request #187073 from penglei/master 2022-09-27 05:33:22 +02:00
Sandro Jäckel 03b6d5111a
nixos/systemd: remove not required or true 2022-09-19 13:45:01 +02:00
oxalica c5c42d4fbe nixos/systemd-stage-1: include modprobe confg in initrd 2022-09-16 20:54:04 +08:00
Yureka 19686a4452 nixos/systemd: conditionally include systemd-update-utmp upstream unit 2022-09-13 10:34:28 +02:00
Christian Kögler cfbf9bd15c nixos/nspawn: Fix configuration name PrivateUsersOwnership
Fix #189046
2022-09-11 13:08:36 +02:00
Christian Kögler 0ea763fab6
Merge pull request #188009 from martiert/fido2luks
nixos/luksroot: Support adding a list of credentials to fido2luks
2022-09-11 07:42:57 +02:00
pennae d98322834b nixos/*: fix docbook deprecation notices
mostly no rendering changes except in buildkite, which used markdown
where docbook was expected without marking up its markdown.
2022-09-10 18:23:13 +02:00
Christian Kögler d44b9d665c
Merge pull request #189201 from jmbaur/ipv6-route-prefix-example
nixos/systemd.network: Fix `ipv6RoutePrefixes` example
2022-09-09 17:05:36 +02:00
Christian Kögler 7d731f3bca nixos/nspawn: Remove not compliant options
The attribute set sharedOptions pulls in not compliant unit options:
- requiredBy
- wantedBy
- aliases

see man5 systemd.nspawn
2022-09-05 17:01:23 +02:00
penglei 6393cb765e nixos/boot/stage-1-init: umount /findiso in stage-1 2022-09-05 08:59:29 +08:00
pennae 3bddcf5f90
Merge branch 'master' into option-docs-md 2022-09-01 16:10:09 +02:00
Martin Ertsås 5e4921013b nixos/luksroot: Support adding a list of credentials to fido2luks
This adds support for using multiple fido2 keys for luks decryption
2022-09-01 08:55:46 +02:00
Jared Baur 51a1c73542 nixos/systemd.network: Fix ipv6RoutePrefixes example
The example doesn't have the top-level attribute `ipv6RoutePrefixConfig`
in each attrset of the list.
2022-08-31 17:04:18 -07:00
pennae 1d41cff3dc nixos/*: convert straggler options to MD 2022-08-31 17:27:38 +02:00
pennae f2ea09ecbe nixos/*: convert options with listings
minor rendering changes.
2022-08-31 17:27:36 +02:00
pennae 722b99bc0e nixos/*: convert options with admonitions to MD
rendering changes only slightly, most changes are in spacing.
2022-08-31 16:36:16 +02:00
pennae bd56368848 nixos/*: md-convert hidden plaintext options
most of these are hidden because they're either part of a submodule that
doesn't have its type rendered (eg because the submodule type is used in
an either type) or because they are explicitly hidden. some of them are
merely hidden from nix-doc-munge by how their option is put together.
2022-08-31 16:32:54 +02:00
pennae 515c4727fa nixos/*: md-"convert" empty descriptions
for some reason these are not picked up properly by nix-doc-munge, so
we'll do this instead.
2022-08-31 16:32:54 +02: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 c915b915b5 nixos/*: md-convert options with unordered lists
mostly no rendering changes. some lists (like simplelist) don't have an
exact translation to markdown, so we use a comma-separated list of
literals instead.
2022-08-31 16:32:53 +02:00
pennae 0cfcb5908c nixos/*: <screen> -> <programlisting>
most of the screen tags used in option docs are actually listings of
some sort. nsd had a notable exception where its screen usage was pretty
much a raw markdown block that made most sense to convert into docbook lists.
2022-08-31 16:27:24 +02:00
pennae 5841c386a0 nixos/*: remove indentation from long enable options
the way these are written they introduce lots of whitespace in each
line, which will cause those lines to render as code when converted to
markdown. override the whole description instead.
2022-08-31 16:21:14 +02:00
Janne Heß 3284f4fa19
nixos/systemd-oomd: Add a new module + test 2022-08-31 13:24:32 +02:00
Will Fancher 78e892c44d
Merge pull request #187222 from winterqt/systemd-boot-esp-path
nixos/systemd-boot: use esp-path instead of path when calling bootctl
2022-08-30 12:57:40 -04:00
Florian Klink 087fa6565d
Merge pull request #184340 from jmbaur/ipv6routeprefix
nixos/systemd.network: Add `IPv6RoutePrefix` options
2022-08-30 11:10:47 +02:00
pennae 51a11254a7 nixos/*: literalDocBook -> literalMD
no change to rendered output
2022-08-27 19:18:29 +02:00
Will Fancher 037cf37ad2
Merge pull request #185085 from ElvishJerricco/shutdown-ramfs-protection
shutdown: Protect system from make-initrd-ng
2022-08-26 13:25:31 -04:00
Martin Weinelt 2ae8a945fb
Merge pull request #188309 from Sohalt/systemd-networkd-dhcpserver-missing-options 2022-08-26 11:50:50 +02:00
sohalt 8b74b21d23 nixos/networkd: add missing options for DHCPServer and IPV6SendRA 2022-08-26 11:42:58 +02:00
Martin Weinelt e7454ee38b
Merge pull request #187444 from peigongdsd/test 2022-08-26 08:17:46 +02:00
Stig 8c4a3b279b
Merge pull request #186503 from Weathercold/patch-1
nixos/switch-to-configuration: fix units starting with dash not being able to reload
2022-08-21 17:31:52 +02:00
Will Fancher 2239c5d55f
Merge pull request #186163 from lilyinstarlight/feature/systemd-stage-1-fs-label
nixos/systemd-stage-1: unify initrd fstab generation logic with system fstab
2022-08-20 18:29:07 -04:00
pennae 6039648c50 nixos/*: automatically convert option docs 2022-08-19 22:40:58 +02:00
pennae 7e7d68a250 nixos/*: mark pre-existing markdown descriptions as mdDoc 2022-08-19 22:40:58 +02:00
pennae e4ed177f82 nixos/* eliminate inner whitespace in tags that was missed earlier
nix-doc-munge won't match tags that contain newlines anywhere. most of
these have already been removed, but a few obviously made it through.
2022-08-19 22:40:58 +02:00
peigongdsd 506cb62c4e modified: nixos/modules/system/boot/networkd.nix 2022-08-19 21:00:18 +08:00
peigongdsd 90de9ee689 nixos/modules/system/boot/networkd.nix: added Group= option in sectionLink of systemd.networkd config
see also: systemd.network(5)
2022-08-19 20:53:08 +08:00
Lily Foster 69d7943101 nixos/systemd-stage-1: unify initrd fstab generation logic with system fstab 2022-08-18 13:33:43 -04:00
Winter 771ef9f738 nixos/systemd-boot: use esp-path instead of path when calling bootctl
`path` has been aliased to `esp-path` for over 3 years (see fbf45d22da).
2022-08-18 01:08:07 -04:00
Jared Baur 4f58def5e6
Merge branch 'NixOS:master' into ipv6routeprefix 2022-08-17 15:08:31 -07:00
Weathercold 8fb63401af
nixos/switch-to-configuration: fix units starting with dash
Fix units starting with `-` being recognized as options.
2022-08-12 18:36:15 -04:00
pennae 50f9b3107a
Merge pull request #185474 from pennae/option-docs-md
nixos/*: more options md conversion
2022-08-12 23:23:26 +02:00
Sergei Trofimovich 925a9bb753
Merge pull request #185530 from trofi/restore-stage-1-strip
nixos/stage-1: srestore striping of bin/ and lib/
2022-08-11 08:50:45 +01:00
Jörg Thalheim 5a436f538f
Merge pull request #179619 from Informatic/plymouth-systemd-stage1-themes
nixos/plymouth: fix theme dependency resolution in systemd stage 1
2022-08-11 08:38:33 +01:00
Janne Heß 1120326a5b
Merge pull request #185067 from stigtsp/refactor/stc-no-net-debus
nixos/switch-to-configuration: replace Net::DBus with busctl
2022-08-09 20:28:49 +02:00
Robert Hensing 661c29c806
Merge pull request #181222 from hercules-ci/module-specialArgs
`_module.specialArgs` + unit test for nixos/documentation module
2022-08-08 11:53:10 +02:00
Sergei Trofimovich fb324910bf nixos/stage-1: srestore striping of bin/ and lib/
commit 0507725061 ("setup-hooks/strip.sh: run RANLIB on static
archives after stripping") added an extra argument to `stripDirs()`
helper.

I did not realize it's used outside the strip hook itself. Restore
stripping by passing $RANLIB as a new argument.
2022-08-07 11:05:29 +01:00
pennae 087472b1e5 nixos/*: automatically convert option docs 2022-08-06 20:39:12 +02:00
Bernardo Meurer 5b3a9a815d
Merge pull request #185089 from NickCao/bind
nixos/stage-1-systemd: fix initrd-fstab generation for bind mounts
2022-08-05 14:25:11 -07:00
pennae 423545fe48 nixos/*: normalize manpage references to single-line form
now nix-doc-munge will not introduce whitespace changes when it replaces
manpage references with the MD equivalent.

no change to the manpage, changes to the HTML manual are whitespace only.
2022-08-05 18:34:50 +02:00
pennae 93c57a9884
Merge pull request #185056 from pennae/option-docs-md
nixos/*: more option docs conversions
2022-08-05 17:36:49 +02:00
Christian Kögler 04d94dc8ff
Merge pull request #183897 from amarshall/networkd-fix-ipv6prefixes-example
nixos/networkd: Fix some invalid examples
2022-08-04 23:02:40 +02:00
Sandro 6c55138d9b
Merge pull request #184786 from danc86/fido2luks-discard 2022-08-04 15:08:58 +02:00
Dan Callaghan da26caad10
nixos/luksroot: allow discards with fido2luks 2022-08-04 19:32:14 +10:00
Nick Cao ce39bee9dd
nixos/stage-1-systemd: fix initrd-fstab generation for bind mounts 2022-08-04 10:26:37 +08:00
Will Fancher a454a706b5 shutdown: Protect system from make-initrd-ng 2022-08-03 22:18:47 -04:00
Stig Palmquist 4c2764c69c
nixos/switch-to-configuration: replace Net::DBus with busctl
Call dbus by using `$cur_systemd/busctl --json=...` and core modules
JSON::PP and IPC::Cmd to slim down dependencies for baseSystem.

perlPackages.NetDBus pulls in quite a few other dependencies, like
XML::Twig, LWP, and HTTP::Daemon. These are not really neccecary for
s-t-c, and some of them have caused issues particularly with cross
builds after updates to perlPackages.
2022-08-04 00:08:26 +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 694d5b19d3 nixos/*: replace </para><para> with double linebreaks
our xslt already replaces double line breaks with a paragraph close and
reopen. not using explicit para tags lets nix-doc-munge convert more
descriptions losslessly.

only whitespace changes to generated documents, except for two
strongswan options gaining paragraph two breaks they arguably should've
had anyway.
2022-08-03 20:39:21 +02:00
K900 eabbad8af1
Merge pull request #185036 from K900/goblinization
make-initrd-ng: parse ELFs ourselves instead of shelling out to patchelf and friends
2022-08-03 19:57:55 +03:00
Janne Heß bc7ff29bdf
Merge pull request #184822 from snpschaaf/networkd-link-add-promiscious
add Promiscuous as valid value for linkConfig
2022-08-03 11:05:32 +02:00
Philippe Schaaf d5e7f6a613 add Promiscuous as valid value for linkConfig
configuring a network via
`systemd.network.networks.<name>.linkConfig`
does not allow to set the attr Promiscuous = "true";

This referes to:
https://www.freedesktop.org/software/systemd/man/systemd.network.html#Promiscuous=

Signed-off-by: Philippe Schaaf <philippe.schaaf@secunet.com>
2022-08-03 09:05:42 +02:00
Vladimír Čunát a0ebaa7431
Merge #183748: staging-next 2022-07-29 2022-08-03 09:04:16 +02:00
Florian Klink dfda3c3e04
Merge pull request #182577 from squalus/coredump
nixos: systemd-coredump: improve disabled state
2022-08-03 13:32:11 +07:00
Linus Heckemann 6fc909a1cc makeInitrdNG: make stripping fully optional
Now the tool will only strip binaries if a strip executable is passed
via the STRIP environment variable. This is exposed via the strip
option for makeInitrdNG and the NixOS option boot.initrd.systemd.strip.
2022-08-02 10:19:48 +03:00
github-actions[bot] 0f0010fda3
Merge master into staging-next 2022-08-02 06:02:34 +00:00
squalus 257db1dd4a nixos: systemd-coredump: improve disabled state
The systemd-coredump module required systemd to be built with
withCoredump=true, even if the module was disabled.

- allow systemd to be missing systemd-coredump if the module is disabled
- switch to mkDefault for the sysctl config to allow user overrides when
  the module is disabled
- add nixos tests for both the enabled and disabled cases
2022-08-01 09:52:56 -07:00
Jared Baur b1bb3bcad8 nixos/systemd.network: Add IPv6RoutePrefix options 2022-07-31 14:11:01 -07: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
Andrew Marshall 51adf865a3 nixos/networkd: Fix example for dhcpServerStaticLeaseOptions option
The example was not valid, and would raise an error.
2022-07-30 00:55:56 -04:00
Andrew Marshall a9fbd07f56 nixos/networkd: Fix example for ipv6Prefixes option
The example was not valid, and would raise an error.
2022-07-30 00:55:56 -04:00
github-actions[bot] c5298a170d
Merge staging-next into staging 2022-07-27 18:02:13 +00:00
pennae a16b25432e
Merge pull request #182685 from pennae/invariant-option-conversions
treewide: invariant option conversions to MD
2022-07-27 15:39:47 +02:00
github-actions[bot] 52e7c12c41
Merge staging-next into staging 2022-07-26 06:02:58 +00:00
Jared Baur 777e914c20 nixos/systemd.network: Add RequiredFamilyForOnline to linkConfig
While writing a configuration, I found a usage for this field and
noticed it was missing when building the configuration.
2022-07-26 04:11:33 +02:00
github-actions[bot] 4a6e124c33
Merge staging-next into staging 2022-07-24 12:02:06 +00:00
pennae ff56c775c8
Merge pull request #182098 from pennae/option-doc-md
convert some varlists in option docs to MD
2022-07-24 13:14:40 +02:00
pennae 860a0449ce nixos/system: invariant option docs MD conversions 2022-07-24 13:01:47 +02:00
github-actions[bot] b4832bac52
Merge staging-next into staging 2022-07-22 15:34:59 +00:00
Maximilian Bosch 779853b52b
Merge pull request #182413 from NetaliDev/pam-mount-fix-refactor
nixos/pam: refactor pam_mount unmounting fix
2022-07-22 14:05:44 +02:00
github-actions[bot] dec2508b80
Merge staging-next into staging 2022-07-22 12:02:21 +00:00
Florian Klink 7c119675a3
Merge pull request #179002 from klemensn/move-passwdEntry-type
move passwdEntry type
2022-07-22 14:16:57 +07:00
K900 c9183d3738 nixos/systemd: make sure all the device nodes are created in stage1
The ConditionFileNotEmpty override patch wasn't correct for stage1, which
does have the modules in /lib. So, remove the patch and set
the right path with overrides in the final system.

Also, make sure systemd-tmpfiles-setup-dev is pulled in to create
all the necessary symlinks.
2022-07-22 10:01:21 +03:00
Netali 93132dc09c
nixos/pam: refactor pam_mount unmounting fix 2022-07-22 04:17:14 +02:00
Robert Hensing ec3e1c6a3a nixos/documentation: Remove systemd/initrd dependency
Working towards a unit-testable documentation module.
2022-07-21 15:32:10 +02:00
pennae 7388711363 nixos/resolved: convert option docs to MD 2022-07-19 16:23:57 +02:00
Sandro Jäckel 4396fd615c
nixos/systemd-boot: remove default log message if nothing changes 2022-07-17 21:46:50 +02:00
Bernardo Meurer c6b0888a86
Merge pull request #180991 from aij/raspberrypi-bootloader-config.txt
raspberrypi-bootloader: Update doc URL for config.txt options
2022-07-10 14:09:43 -07:00
Sandro 366683965e
Merge pull request #166308 from ncfavier/wg-resolvconf
nixos/resolvconf: allow different implementations
2022-07-10 21:00:00 +02:00
Ivan Jager 34aa4fe7a9 raspberrypi-bootloader: Update doc URL for config.txt options
The old URL was redirecting to more generic Rasbperry Pi documentation.
2022-07-10 06:58:32 -05:00
Et7f3 6b820ecfab
nixos: systemd: add missing sliceToUnit (#179841)
Seem to be omitted in 022b4209a3 (diff-5ea4693beb4bdd8f7efcdd3204ceea67c86f59b3d1c28cde063ddf03e1d20fbfL29).
2022-07-02 18:56:53 +03:00
Piotr Dobrowolski 348b88545c nixos/plymouth: fix theme dependency resolution in systemd stage 1
Some plymouth themes use assets of others, like is the case with our
default bgrt depending on spinner. Missing assets would cause the
splashscreen to not render at all in stage 1.

Preliminary dependency resolution code seemed to be broken, and this
should fix it.

Only direct dependencies of selected theme are pulled in.
2022-06-29 21:38:34 +02:00
Klemens Nanni 30c36b4706 nixos/systemd-stage-1: use types.passwdEntry in emergencyAccess
`boot.initrd.systemd.emergencyAccess` expects passwd(5) formatted
strings, hence `singleLineStr` is too broad.

Use the same type as `users.users.*.hashedPassword` to ensure
consistency across all options where password hashes are used.

From `modules/config/users-groups.nix`:
```
       hashedPassword = mkOption {
         type = with types; nullOr (passwdEntry str);
       ...
       };
```
2022-06-25 16:34:49 +04:00
Naïm Favier 203696f098
nixos/resolvconf: add package
Expose the package that provides the system-wide `resolvconf` command
(either openresolv or systemd) to allow implementation-agnostic modules.
2022-06-21 22:58:43 +02:00
Sandro Jäckel 3df045e6d5
nixos/systemd: use cfg.package in systemPackages to avoid confusion 2022-06-09 22:44:28 +02:00
Matthias Treydte ff24f484af nixos/systemd-boot: fix systemd-boot-builder refusing to update
Handling of the string length condition in should_update
was broken, as evident with the log message

> leaving systemd-boot 246 in place (250.4 is not newer)

Discussion with @mweinelt came to the conclusion
that Python's "<" operator already does what we need,
so the should_update function can be dropped.

Fixes a30de3b849
2022-06-01 11:49:07 +02:00
Florian Klink f12a263b69
Merge pull request #172707 from klemensn/init-zfs-mount-options
nixos/stage-1: Fix library path in libraries, fix ZFS mount options
2022-05-30 10:51:17 +02:00
Matthias Treydte a30de3b849 nixos/systemd-boot: fix systemd-boot-builder dowgrade to fail
Since, 4ddc78818e systemd-boot-builder
is broken in two ways:

  * if no systemd-boot is currently installed *and* the NIXOS_INSTALL_BOOTLOADER
    env variable is not set, it will try to run "bootctl update", which will fail
  * if the currently installed systemd-boot version is newer than the version
    we're about to install, it will also try to run "bootctl update", which will fail

This patch changes the behaviour,

  * for the first case to still fail, but not even bother to try running
    "bootctl update" and instead erroring out with an exception
  * for the second case to leave the newer version in place, restoring
    the pre - 4ddc78818e behaviour

To do the proper version check a new "should_update" helper function was introduced,
mimicing the compare_product C function from bootctl. If the following systemd
issue gets resolved, we would have a nice way to get rid of this function:

> https://github.com/systemd/systemd/issues/23450

This change allows to again switch to a different NixOS configuration which contains
an older systemd-boot.

Co-authored-by: Martin Weinelt <mweinelt@users.noreply.github.com>
2022-05-28 13:18:21 +02:00
Klemens Nanni 9eb704b65a nixos/stage-1: Zap no longer needed LD_LIBRARY_PATH
The previous commit properly adjusts all library paths, thus no need to
forcefully adjust the path at runtime any longer.
2022-05-26 22:17:02 +02:00
Klemens Nanni d33e52b253 nixos/stage-1: Fix library path in libraries also
`extra-utils` composes the set of programs and libraries needed by

1. copying over all programs
2. copying over all libraries any program directly links against
3. set the runtime path for every program to the library directory

It seems that this approach misses the case where a library itself links
against another library.  That is to say, `extra-utils` assumes that
either only progams link against libraries or that every library linked
to by a library is already linked to by a program.

`mount.zfs` linking against `libcrypto`, in turn linking against `libdl`
shows how the current approach falls short:

```
$ objdump -p $(which mount.zfs) | grep NEEDED | grep -e libdl -e libcrypto
  NEEDED               libcrypto.so.1.1
$ ldd (which mount.zfs) | grep libdl
        libdl.so.2 => /nix/store/ybkkrhdwdj227kr20vk8qnzqnmj7a06x-glibc-2.34-115/lib/libdl.so.2 (0x00007f9967a9a000
```

Using `mount.zfs` directly in stage 1 init still works since
`LD_LIBRARY_PATH` overrides this (as intended).

util-linux's `mount` however executes `mount.zfs` with LD_LIBRARY_PATH
removed from its environment as can be seen with strace(1) in an
interactive stage 1 init shell (`boot.shell_on_fail` kernel parameter):

```
 # env -i LD_LIBRARY_PATH=$LD_LIBRARY_PATH $(which strace) -ff -e trace=/exec -v -qqq $(which mount) /mnt-root
execve("/nix/store/3gqbb3swgiy749fxd5a4k6kirkr2jr9n-extra-utils/bin/mount", ["/nix/store/3gqbb3swgiy749fxd5a4k"..., "/mnt-root"], ["LD_LIBRARY_PATH=/nix/store/3gqbb"...]) = 0
[pid  1026] execve("/sbin/mount.zfs", ["/sbin/mount.zfs", "<redacted>", "/mnt-root", "-o", "rw,zfsutil"], []) = 0
/sbin/mount.zfs: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1026, si_uid=0, si_status=127, si_utime=0, si_stime=0} ---
```

env(1) is used for clarity (hence subshells for absoloute paths).

While `mount` uses the right library path, `mount.zfs` is stripped of
it, so ld.so(8) fails resolve `libdl` (as required by `libcrypto`).

To fix this and not rely on `LD_LIBRARY_PATH` to be set, fix the library
path inside libraries as well.

This finally mounts all ZFS filesystems using `zfsutil` with correct and
intended mount options.
2022-05-26 22:17:02 +02:00
Klemens Nanni 4b045c7066 nixos/stage-1: Remove redundant symlink check
find(1)'s test `-type f` already excludes symbolic links, so `test -L`
will never return false for found files.
2022-05-26 22:17:02 +02:00
Klemens Nanni de77849ad6 nixos/stage-1: Account for hardcoded executable paths
At least pkgs/os-specific/linux/util-linux/default.nix uses
```
    "--enable-fs-paths-default=/run/wrappers/bin:/run/current-system/sw/bin:/sbin"
```

which does not cover stage 1 init's PATH as all executables are put
under /bin/.

Fix util-linux's `mount` usage by symlinking /sbin to it.
2022-05-26 22:17:02 +02:00
Klemens Nanni 9553106832 nixos/stage-1: Ensure correct ZFS mount options
Consider ZFS filesystems meant to be mounted with zfs.mount(8), e.g.
```
config.fileSystems."/media".options = [ "zfsutil" ];
config.fileSystems."/nix".options = [ "zfsutil" ];
```

`zfsutil` uses dataset properties as mount options such that zfsprops(7)
do not have to be duplicated in fstab(5) entries or manual mount(8)
invocations.

Given the example configuation above, /media is correctly mounted with
`setuid=off` translated into `nosuid`:

```
$ zfs get -Ho value setuid /media
off
$ findmnt -t zfs -no options /media
rw,nosuid,nodev,noexec,noatime,xattr,posixacl
```

/nix however was mounted with default mount(8) options:
```
$ zfs get -Ho value setuid /nix
off
$ findmnt -t zfs -no options /nix
rw,relatime,xattr,noacl
```

This holds true for all other ZFS properties/mount options, including
`exec/[no]exec`, `devices/[no]dev`, `atime/[no]atime`, etc.

/nix is mounted using BusyBox's `mount` during stage 1 init while /media
is mounted later using proper systemd and/or util-linux's `mount`.

Tracing stage 1 init showed that BusyBox never tried to execute
mount.zfs(8) as intended by `zfsutil`.

Replacing it with util-linux's `mount` and adding the mount helper
showed attempts to execute mount.zfs(8).

Ensure ZFS filesystems are mounted with correct options iff `zfsutil` is
used.
2022-05-26 22:16:53 +02:00
Martin Weinelt 6d8f8a7b46
Merge pull request #174090 from helsinki-systems/fix/plymouth
nixos/plymouth: Fix non-systemd initrd boot
2022-05-23 17:08:02 +02:00
Janne Heß 2cc4bf9427
nixos/plymouth: Fix non-systemd initrd boot 2022-05-23 11:17:21 +02:00
Klemens Nanni cbcc746f8f nixos/systemd: Package only built component units
Account for all `with*` options causing their respective unit files to
not be built, just like the current code `withCryptsetup` already does.

This fixes build errors like the following:
```
missing /nix/store/5fafsfms64fn3ywv274ky7arhm9yq2if-systemd-250.4/example/systemd/system/systemd-importd.service
error: builder for '/nix/store/67rdli5q5akzwmqgf8q0a1yp76jgr0px-system-units.drv' failed with exit code 1
```

Found by using a customised systemd package as follows:
```
systemd.package = pkgs.systemd-small;

nixpkgs.config.packageOverrides = pkgs: {

  "systemd-small" = pkgs.systemd.override {
    withImportd = false;
    withMachined = false;
    ...
  };

};
```
2022-05-16 16:52:25 +02:00
Alyssa Ross 85d792a928
nixos: don't put non-firmware in hardware.firmware
These two packages don't have a lib/firmware directory, so putting
them in hardware.firmware has no effect.  This will become a hard
error once firmware compression is implemented.

(In the case of Linux, the firmware was all moved to linux-firmware.)
2022-05-12 15:17:51 +00:00
Janne Heß e6fb1e63d1
Merge pull request #171650 from helsinki-systems/feat/config-systemd-package
treewide: pkgs.systemd -> config.systemd.package
2022-05-09 10:23:04 +02:00
Maximilian Bosch f0bb39d4b7
Merge pull request #167327 from lheckemann/networkd-usedhcp
nixos/networkd: reimplement useDHCP in a sensible way
2022-05-07 00:05:44 +02:00
Bernardo Meurer c4ad7519ef
Merge pull request #170136 from helsinki-systems/feat/systemd-stage-1-plymouth
nixos/plymouth: Add systemd stage 1 support
2022-05-05 14:49:26 -07:00
Sandro 836c52e625
Merge pull request #167208 from devplayer0/fix/missing-systemd-nspawn-options
nixos/systemd/nspawn: Add missing nspawn unit options
2022-05-05 22:58:59 +02:00
Janne Heß 57cd07f3a9
treewide: pkgs.systemd -> config.systemd.package
This ensures there is only one systemd package when e.g. testing the
next systemd version.
2022-05-05 20:00:31 +02:00
Rick van Schijndel ec4686ee14
Merge pull request #171247 from K900/systemd-boot-coreutils-mktemp
systemd-boot: use mktemp from coreutils in installer
2022-05-03 19:15:55 +02:00
Luflosi deed4a3d6c
nixos/stage-1: remove dead code
This special case for Btrfs was added in 51bc82960a. One year later beddd36c95 added code to skip the fsck entirely if the filesystem is Btrfs. This made the `if` statement unnecessary.
2022-05-03 16:15:51 +02:00
Janne Heß 2edce50847
Merge pull request #171134 from helsinki-systems/feat/make-initrd-ng-strip
makeInitrdNG: Strip more and remove output
2022-05-03 09:41:22 +02:00
K900 5a2f238b9a systemd-boot: use mktemp from coreutils in installer
People running nixos-install in non-NixOS environments
occasionally run into the mktemp builtin not being loaded
into bash (yes, even NixOS' bash). Rather than try and
figure out why exactly that is happening, just use a known
good mktemp from coreutils.
2022-05-02 15:44:55 +03:00
K900 5d02b86888 systemd-in-stage1: include firmware in initrd
duh.
2022-05-02 15:41:14 +03:00
Janne Heß bc53ac7753
nixos/systemd-shutdown: Remove unneeded binaries 2022-05-01 17:06:15 +02:00
Bernardo Meurer 78f6f77962
Merge pull request #169113 from ElvishJerricco/systemd-stage-1-installer-tests
nixos: Installer tests for systemd stage 1
2022-04-30 13:18:57 -07:00
Bernardo Meurer e1aa795705
Merge pull request #171024 from helsinki-systems/feat/systemd-stage-1-less-binaries
nixos/systemd-stage-1: Remove unnecessary binaries
2022-04-30 11:30:43 -07:00
Janne Heß 0411b51a00
nixos/systemd-stage-1: Remove unnecessary binaries
We can make the growfs and makefs binaries conditional because we know
if we'll need them. Also move the cryptsetup generator to the luksroot
so it's not included when not needed.

We drop some generators altogether: systemd-getty-generator because we
don't have getty anyway in stage 1, systemd-system-update-generator
because we don't use that logic in NixOS and
systemd-veritysetup-generator because stage 1 has no veritysetup support
(yet) and if it had, we still wouldn't want to include the generator
unconditionally.
2022-04-30 14:50:02 +02:00
Janne Heß fa2c9b41d4
nixos/systemd-stage-1: Add initrd secrets support 2022-04-30 11:41:27 +02:00
Maximilian Bosch 9c18662612
nixos/networkd: allow RouteMetric for IPv6AcceptRA
According to `systemd.network(5)` of systemd v249 this is a valid
option.

Fixes evaluation of the wildcard network definitions.
2022-04-30 00:30:04 +02:00
Will Fancher 2e96b64e02
Merge pull request #170123 from ElvishJerricco/systemd-shutdown-ramfs-fixup
Systemd shutdown ramfs fixup
2022-04-28 20:17:23 -04:00
Will Fancher 69d8047516 nixos: Fix up systemd shutdown ramfs 2022-04-28 14:12:14 -04:00
Bernardo Meurer 59aa6e4988
Merge pull request #170099 from helsinki-systems/feat/systemd-stage-1-no-random-seed
nixos/systemd-stage-1: Get rid of random-seed
2022-04-25 14:56:45 -07:00
Janne Heß 45494fab68
nixos/systemd-stage-1: Get rid of random-seed
This is not used at all since the unit has
ConditionPathExists=!/etc/initrd-release
2022-04-24 21:59:59 +01:00
Janne Heß acca3f4b81
nixos/plymouth: Add systemd stage 1 support 2022-04-24 21:47:49 +01:00
Janne Heß dc4b2812e4
nixos/stage-1-systemd: Also accept packages as store paths 2022-04-24 21:47:34 +01:00
Jack O'Sullivan 568cb2d6ab nixos/systemd/nspawn: Add missing nspawn unit options
A few options have been added to the `systemd.nspawn` unit type are
missing from `systemd.nspawn.*.*Config`. See systemd.nspawn(5).
2022-04-24 21:20:59 +01:00
Bernardo Meurer b23ec41f14
Merge pull request #168554 from helsinki-systems/feat/systemd-stage-1-luks
nixos/systemd-stage-1: Add basic LUKS support
2022-04-22 12:37:25 -07:00
Artturi 98ff3e401c
Merge pull request #165892 from tpwrules/fix-initrd-dirlinks
make-initrd: fix reproducibility problems
2022-04-21 20:51:35 +03:00
Janne Heß 1bea49d3bf
nixos/stage-1-systemd: Add LUKS w/ password support 2022-04-18 11:42:45 +01:00
Florian Klink 52e346d6dd
Merge pull request #168774 from helsinki-systems/feat/systemd-shutdown
nixos/systemd: Properly shut down the system
2022-04-18 09:52:07 +02:00
Will Fancher 9e8b463cce nixos: Handle panic_on_fail in systemd stage 1 2022-04-17 18:31:35 -04:00
Sandro b4e7303ddf
nixos/specialisation: fix curly brackets 2022-04-17 05:48:33 +02:00
Janne Heß 30a00c29c4
nixos/systemd: Properly shut down the system 2022-04-16 21:17:36 +01:00
Janne Heß 031b95e587
Merge pull request #168814 from helsinki-systems/feat/systemd-stage-1-pass-vars
nixos/systemd-stage-1: Pass more vars to the builder
2022-04-16 22:02:26 +02:00
Janne Heß b9bf28fd70
nixos/stage-1-init: Pass all parameters to the builder
This is for compatiblity with the old builder to get compat with uboot
support and to prepend microcode updates to the initrd
2022-04-16 20:36:18 +01:00
Janne Heß 01bc138a8e
nixos/stage-1-init: Merge mdraid module into swraid 2022-04-15 19:57:16 +01:00
Thomas Watson 7fd6cea253 make-initrd: fix reproducibility problems
cpio includes the number of directory hard links in archives it creates.
Some filesystems, like btrfs, do not count directory hard links the same
way as more common filesystems like ext4 or tmpfs, so archives built
when /tmp is on such a filesystem do not reproduce. This patch replaces
cpio with bsdtar, which does not have this issue. The specific
invocation is from this page:
https://reproducible-builds.org/docs/archives/
2022-04-14 19:06:30 -05:00
Lassulus 15b5c29a41
Merge pull request #168600 from helsinki-systems/feat/systemd-stage-1-keymap
nixos/stage-1-systemd: Add keymap support
2022-04-14 21:50:52 +01:00
Janne Heß 289f38a65b
Merge pull request #168301 from helsinki-systems/feat/systemd-stage-1-mdadm
nixos/stage-1-systemd: Add mdraid support (+ test)
2022-04-14 17:56:36 +02:00
Janne Heß dda7e9e3ee
nixos/stage-1-systemd: Add mdraid support (+ test) 2022-04-14 11:39:57 +01:00
Janne Heß 0581d31bf9
Merge pull request #167393 from iblech/patch-docs-cc
nixos-rebuild, switch-to-configuration: document and protect against cross compilation subtlety
2022-04-14 12:30:39 +02:00
Janne Heß 6d6c1c341c
nixos/stage-1-systemd: Add keymap support
Makes my life a lot easier with my non-american keyboard layout
2022-04-14 10:25:04 +01:00
Janne Heß aeb75b3b69
nixos/stage-1-systemd: Implement hibernation + test 2022-04-13 23:02:13 +01:00
Janne Heß ffb320378b
nixos/stage-1-systemd: Fix booting grub tests 2022-04-13 23:02:10 +01: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
Lassulus c0139fe5c3
Merge pull request #167168 from helsinki-systems/feat/systemd-stage-1-proper-handover
nixos/stage-1-systemd: Handover between the systemds directly
2022-04-11 22:26:11 +01:00
Janne Heß 3df2691e6b
nixos/stage-1-systemd: Handover between the systemds directly 2022-04-11 20:04:33 +01:00
Janne Heß fb44ecd129
nixos/udev: Add systemd stage 1 support 2022-04-11 19:43:26 +01:00
Erik Arvstedt 63528cb1a6
nixos/systemd: remove duplicate definition of systemd.user.timers
It's already defined in `systemd/user.nix`.
This is a leftover from commit b6d50528dd
where all `systemd.user` settings were moved to `systemd/user.nix`.
2022-04-11 13:01:40 +02:00
Janne Heß adab6ce552
nixos/systemd-stage-1: Minor fixups
- Fix the name of the env
- Add the correct kmod to the initrd
- Add `less` to make journalctl usable
- Fix SYSTEMD_SULOGIN_FORCe for rescue.target
- Add some missing binaries
2022-04-11 11:13:01 +01:00
Luke Granger-Brown 4ea239aa70
Merge pull request #163958 from lukegb/networkd-main
nixos/networkd: configure /etc/systemd/networkd.conf
2022-04-11 02:01:19 +01:00
Luke Granger-Brown f47caf769b nixos/networkd: configure /etc/systemd/networkd.conf
The networkd.conf file controls a variety of interesting settings
which don't seem to be configurable at the moment, including
adding names to route tables (for networkd only, although this commit
also exports them into iproute2 for convenience's sake), and
the speed metering functionality built into networkd.

Importantly, however, this also allows disabling the systemd
functionality where it likes to delete all the routes and routing rules
that haven't been configured through networkd whenever something causes
it to perform a reconfiguration.
2022-04-11 00:28:33 +00:00
Thiago Kenji Okada d1f7cc85b5
Merge pull request #161272 from dmadisetti/master
nixos/grub: module options to modify entry classes
2022-04-06 23:14:15 +01:00
Ingo Blechschmidt c3428419e0 nixos/switch-to-configuration: Provider better error message in cross-compiling situations 2022-04-05 16:52:09 +02:00
github-actions[bot] 27a4e52731
Merge master into staging-next 2022-04-05 12:05:41 +00:00
Lassulus b69bd66518
Merge pull request #167242 from helsinki-systems/feat/systemd-stage-1-variable-bin
nixos/systemd-stage-1: Softcode bin tools...
2022-04-05 09:39:19 +01:00
Janne Heß acf089edef
nixos/systemd-stage-1: Softcode bin tools...
...and other cleanups and fixes
2022-04-04 22:56:31 +01:00
github-actions[bot] 5844b1c2fa
Merge master into staging-next 2022-04-04 18:01:27 +00:00
Lassulus 5083d22ec5
Merge pull request #167167 from helsinki-systems/feat/systemd-stage-1-less-systemd-files
nixos/stage-1-systemd: Limit files to the bare necessities
2022-04-04 18:25:55 +01:00
Janne Heß 41d3ca0677
nixos/systemd-stage-1: Use an own systemd package
We need more features than systemdMinimal but less than systemd so we
need some own packages :/
2022-04-04 18:12:45 +01:00
Martin Weinelt c6476294e1 Merge remote-tracking branch 'origin/master' into staging-next 2022-04-04 18:40:34 +02:00
Janne Heß 75ece4eb82
nixos/stage-1-systemd: Limit files to the bare necessities 2022-04-04 12:54:18 +01:00
Janne Heß 4b9efea255
nixos/stage-1-systemd: Implement job scripts 2022-04-04 11:44:31 +01:00
Martin Weinelt bb7e4b378e Merge remote-tracking branch 'origin/master' into staging-next 2022-04-04 00:46:44 +02:00
Janne Heß 56b4653904
nixos/stage-2-init: Re-add creation of /etc 2022-04-03 19:03:16 +01:00
github-actions[bot] c46200d454
Merge master into staging-next 2022-04-03 18:01:07 +00:00
Janne Heß 371504ac8e
Merge pull request #167019 from NixOS/fix/systemd-env
nixos/stage-2-init: Don't clear environment
2022-04-03 16:36:26 +02:00
Janne Heß 7cdc4dd5d1
Merge pull request #164943 from ElvishJerricco/systemd-initrd-reuse-systemd-module
initrd: Opt-in bare bones systemd-based initrd
2022-04-03 15:53:02 +02:00
Lassulus e65b825672
Merge pull request #165684 from helsinki-systems/clean/stage-2-init
nixos/stage-2-init: Clean up legacy commands
2022-04-03 14:12:52 +02:00
Janne Heß ea473fac72
nixos/stage-2-init: Don't clear environment
This breaks NixOS Containers because systemd needs some env variables
from the outside.
2022-04-03 11:12:00 +01:00
github-actions[bot] fc17fe6417
Merge master into staging-next 2022-04-02 18:01:07 +00:00
7c6f434c 8188f10752
Merge pull request #166430 from alyssais/openssl-static-retry
treewide: use lib.getLib for OpenSSL libraries
2022-04-02 12:59:55 +00:00
github-actions[bot] 8b4f11bb87
Merge master into staging-next 2022-04-02 00:02:09 +00:00
Florian Klink 401cb86da1
Merge pull request #166142 from ncfavier/wait-online
nixos/networkd: add `wait-online` options
2022-04-01 22:54:28 +02:00
Janne Heß 7ebb4ebe40
nixos/systemd-stage-1: Append (Initrd) to /etc/initrd-release
This is more in line with what dracut does (it appends "Initramfs") and
makes it clear where the boot is currently at when it hangs.
2022-04-01 13:54:09 +02:00
Janne Heß 5653209ed9
nixos/systemd-initrd: Redo object specifications
As requested by @roberth, we now have an option similar to
environment.etc. There's also extra store paths to copy and a way to
suppress store paths to make customizations possible.

We also link mount and umount to /bin to make recovery easier when
something fails
2022-04-01 13:26:06 +02:00
Janne Heß c465c8d719
nixos/systemd-initrd: Make emergency access more flexible 2022-04-01 11:58:31 +02:00
Janne Heß b7c62b8238
nixos/systemd-initrd: Remove unit options that don't work 2022-04-01 11:58:30 +02:00
github-actions[bot] 5e1c018e60
Merge master into staging-next 2022-04-01 06:01:23 +00:00
Dominique Martinet e92c05349c nixos/logrotate: convert to freeform
using freeform is the new standard way of using modules and should replace
extraConfig.
In particular, this will allow us to place a condition on mails
2022-04-01 07:09:26 +09:00
github-actions[bot] be4f006d3c
Merge master into staging-next 2022-03-31 18:01:13 +00:00
Silvan Mosberger 2da8e63ce8
Merge pull request #111595 from Luflosi/add-cherry-usb-kb-kernel-module
nixos/availableKernelModules: add cherry hid
2022-03-31 17:14:29 +02:00
madisetti 9dddd48c4c nixos/grub: added configuration option for entry options 2022-03-31 06:39:16 -04:00
Martin Weinelt d0bfb3ccbb Merge remote-tracking branch 'origin/master' into staging-next 2022-03-31 03:49:37 +02:00
ajs124 35619ce1e5
Merge pull request #165453 from helsinki-systems/feat/systemd-manager-environment
nixos/systemd: Switch to ManagerEnvironment=
2022-03-31 01:35:09 +02:00
Janne Heß a3e0698bf6
nixos/systemd: Switch to ManagerEnvironment=
This accomplishes multiple things:
- Allows us to start systemd without stage-2-init.sh. This was not
  possible before because the environment would have been wrong
- `systemctl daemon-reexec` also changes the environment, giving us
  newer tools for the fs packages
- Starts systemd in a fully clean environment, making everything more
  consistent and pure
2022-03-30 20:24:27 +02:00
Alyssa Ross fd78240ac8
treewide: use lib.getLib for OpenSSL libraries
At some point, I'd like to make another attempt at
71f1f4884b ("openssl: stop static binaries referencing libs"), which
was reverted in 195c7da07d.  One problem with my previous attempt is
that I moved OpenSSL's libraries to a lib output, but many dependent
packages were hardcoding the out output as the location of the
libraries.  This patch fixes every such case I could find in the tree.
It won't have any effect immediately, but will mean these packages
will automatically use an OpenSSL lib output if it is reintroduced in
future.

This patch should cause very few rebuilds, because it shouldn't make
any change at all to most packages I'm touching.  The few rebuilds
that are introduced come from when I've changed a package builder not
to use variable names like openssl.out in scripts / substitution
patterns, which would be confusing since they don't hardcode the
output any more.

I started by making the following global replacements:

    ${pkgs.openssl.out}/lib -> ${lib.getLib pkgs.openssl}/lib
    ${openssl.out}/lib -> ${lib.getLib openssl}/lib

Then I removed the ".out" suffix when part of the argument to
lib.makeLibraryPath, since that function uses lib.getLib internally.

Then I fixed up cases where openssl was part of the -L flag to the
compiler/linker, since that unambigously is referring to libraries.

Then I manually investigated and fixed the following packages:

 - pycurl
 - citrix-workspace
 - ppp
 - wraith
 - unbound
 - gambit
 - acl2

I'm reasonably confindent in my fixes for all of them.

For acl2, since the openssl library paths are manually provided above
anyway, I don't think openssl is required separately as a build input
at all.  Removing it doesn't make a difference to the output size, the
file list, or the closure.

I've tested evaluation with the OfBorg meta checks, to protect against
introducing evaluation failures.
2022-03-30 15:10:00 +00:00
Naïm Favier d113e4e06e
nixos/networkd: add wait-online options 2022-03-29 10:14:26 +02:00
github-actions[bot] df0f3ba49a
Merge master into staging-next 2022-03-29 06:01:16 +00:00
Janne Heß 452102db8f
nixos/stage-2-init: Clean up legacy commands
We can perform most of the mkdir/ln/rm using systemd-tmpfiles
instead which cleans up the script.

/bin and /home are created by their activation script snippets

usbfs is deprecated and unused.

hwclock seems to be automatically executed by systemd on startup.

The mkswap to prevent hibernation cycles seems to be executed by systemd
as well since the provided regression tests succeeds.
2022-03-27 13:51:02 +02:00
Janne Heß 158a2972eb
nixos/filesystems: Move options into the fs module
This was probably forgotten during a refactoring. The module is where
the values of the options are actually used.
2022-03-27 13:23:44 +02:00
Florian Klink e3083decc4 systemd-initrd, systemd-lib: drop initrdServiceToUnit
We can just use serviceToUnit here.
2022-03-24 18:57:16 +01:00
Florian Klink 74bae06748 systemd-initrd: use pkgs.fakeNss, document why we need libnss_files.so 2022-03-24 18:51:32 +01:00
Will Fancher 5bfe213315 Clarify suppressed units description 2022-03-22 21:28:51 -04:00
Will Fancher 213de9b108 systemd-initrd: autoFormat and autoResize in initrd 2022-03-22 21:28:51 -04:00
Will Fancher 1abf154179 systemd-initrd: Add PATH to everything 2022-03-22 21:28:50 -04:00
Will Fancher 2d4ebf1259 initrd: Optional systemd-based initrd 2022-03-22 21:28:43 -04:00
Will Fancher 25113740a5 nixos: systemd-lib: Make generateUnits general with default args 2022-03-22 07:02:23 -04:00
Will Fancher 52c98fc3e9 nixos: systemd: Split unit types into separate module 2022-03-21 10:25:27 -04:00
github-actions[bot] de642acb2e
Merge staging-next into staging 2022-03-21 12:10:50 +00:00
Florian Klink 9427a17ccb
Merge pull request #164016 from bobvanderlinden/pr-refactor-systemd-module
nixos: systemd: split module up into multiple files
2022-03-21 13:03:55 +01:00
Bob van der Linden 397b8257a0
nixos: systemd-user: fix additionalUpstreamUserUnits description
Co-authored-by: Martin Weinelt <mweinelt@users.noreply.github.com>
2022-03-21 12:30:37 +01:00
Bob van der Linden 92af44e04d
nixos: systemd: remove unhelpful comments in additionalUpstreamSystemUnits
Co-authored-by: Janne Heß <janne@hess.ooo>
2022-03-20 16:14:13 +01:00
Janne Heß 85874efcb0
nixos/switch-to-configuration: Make perlcritic happy 2022-03-20 13:04:23 +01:00
Janne Heß 9c494b5773
nixos/switch-to-configuration: Snake-case all variables
Also add a lot of comments and reorder some assignments
2022-03-20 13:03:39 +01:00
Janne Heß 67f84b4b87
nixos/switch-to-configuration: Snake-case all subroutines and add comments 2022-03-20 13:03:19 +01:00
Janne Heß 23ea9965bb
nixos/switch-to-configuration: Enforce consistent quoting 2022-03-20 13:01:11 +01:00
Janne Heß bdcd558812
nixos/switch-to-configuration: Get rid of all postfixes and unlesses 2022-03-20 13:01:11 +01:00
Bob van der Linden 6514bb4620
nixos: systemd-user: make additionalUpstreamUserUnits internal 2022-03-19 12:06:56 +01:00
Bob van der Linden 66759cea7d
nixos: systemd-user: expand on additionalUpstreamUserUnits description 2022-03-19 12:06:43 +01:00
Bob van der Linden 753b911708
nixos: systemd-tmpfiles: use cfg shorthand 2022-03-17 23:16:38 +01:00
Bob van der Linden 38d043de9c
nixos: systemd: split off systemd-tmpfiles into separate module 2022-03-17 23:16:37 +01:00
Bob van der Linden 0e665d1815
nixos: systemd-user: allow additional upstream user units
Currently it is only possible to add upstream _system_ units. The option
systemd.additionalUpstreamSystemUnits can be used for this.

However, this was not yet possible for systemd.user. In a similar
fashion this was added to systemd-user.nix.

This is intended to have other modules add upstream units.
2022-03-17 23:16:37 +01:00
Bob van der Linden b6d50528dd
nixos: systemd-user: use cfg shorthand 2022-03-17 23:16:37 +01:00
Bob van der Linden 022b4209a3
nixos: systemd: split off systemd-user into separate module 2022-03-17 23:16:37 +01:00
Bob van der Linden cae8ef1232
nixos: systemd-coredump: use cfg shorthand 2022-03-17 23:16:30 +01:00
Bob van der Linden ccfcb78a50
nixos: systemd: split off coredump into separate module 2022-03-17 23:15:49 +01:00
Bob van der Linden 7adc8ecac3
nixos: systemd-journald: use cfg shorthand 2022-03-17 23:13:36 +01:00
Bob van der Linden fee1e24b3b
nixos: systemd: split off journald into separate module 2022-03-17 23:13:36 +01:00
Bob van der Linden e2cb8903da
nixos: systemd-logind: use cfg shorthand 2022-03-17 23:13:27 +01:00
Bob van der Linden c647002a94
nixos: systemd: split off logind into separate module 2022-03-17 23:12:00 +01:00
Bob van der Linden 0c94a512dd
nixos: systemd: avoid using "with systemdUtils.lib" 2022-03-17 21:52:54 +01:00
Bob van der Linden 3420dba80a
nixos: systemd: move systemd-nspawn to systemd/nspawn 2022-03-17 21:52:37 +01:00
github-actions[bot] 739cf04cb7
Merge staging-next into staging 2022-03-17 18:02:05 +00:00
Luflosi 47b699fe6c
Revert "nixos/modprobe: add boot.initrd.extraModprobeConfig option"
This reverts commit 1c58cdbeed, since this change was made redundant by 3dc6fab5c9 and in https://github.com/NixOS/nixpkgs/pull/145013 we decided to revert this commit.
2022-03-17 12:56:02 +01:00
github-actions[bot] 2eac3106df
Merge staging-next into staging 2022-03-17 00:02:45 +00:00
Robert Hensing 0395086d0c
Merge pull request #162271 from Infinisil/warn-no-type
Throw an error for options without a type
2022-03-16 22:58:45 +01:00
Bob van der Linden 9bc093b30a
nixos: systemd: split off helper functions into systemd-lib 2022-03-15 21:52:13 +01:00
Alyssa Ross d7e181ff83
Merge remote-tracking branch 'nixpkgs/staging-next' into staging
Conflicts:
	pkgs/development/compilers/ocaml/4.12.nix
	pkgs/development/python-modules/oci/default.nix
	pkgs/tools/admin/bubblewrap/default.nix
2022-03-14 12:33:16 +00:00
Naïm Favier 9bdd2f852c
nixos/switch-to-configuration: fix installBootLoader escaping
Use a quoted heredoc to inject installBootLoader safely into the script,
and restore the previous invocation of `system` with a single argument so
that shell commands keep working.
2022-03-14 02:12:52 +01:00
Janne Heß 3148b3d365
Merge pull request #163069 from helsinki-systems/feat/minor-stc-improvements
nixos/switch-to-configuration: Few minor/medium improvements
2022-03-13 17:50:36 +01:00
Luke Granger-Brown 5f81753d1b
Merge pull request #162252 from sternenseemann/systemd-boot-builder-fix-errors
sdboot-builder: fix crash in exception handling
2022-03-13 14:19:54 +00:00
Maëlys Bras de fer 529b09a729 sdboot-builder: fix crash in exception handling 2022-03-13 14:38:01 +01:00
Luke Granger-Brown c30918d419 nixos/networkd: add support for more WireGuard options (introduced in systemd v250)
As of systemd/systemd@e908434458,
systemd-networkd now automatically configures routes to addresses
specified in AllowedIPs unless explicitly disabled with
"RouteTable=off".
2022-03-13 04:13:03 +00:00
Janne Heß 461c1c9e86
nixos/switch-to-configuration: Use parenthesis on all calls 2022-03-11 14:05:20 +01:00
Janne Heß bc58430068
nixos/switch-to-configuration: Fix reloading of stopped services 2022-03-11 14:05:19 +01:00
Janne Heß 3052d3aa50
nixos/switch-to-configuration: Fix restarting by activation script
This bug is so obscure and unlikely that I was honestly not able to
properly write a test for it. What happens is that we are calling
handleModifiedUnit() with $unitsToStart=\%unitsToRestart. We do this to
make sure that the unit is stopped before it's started again which is
not possible by regular means because the stop phase is already done
when calling the activation script.

recordUnit() still gets $startListFile, however which is the wrong file.
The bug would be triggered if an activation script requests a service
restart for a service that has `stopIfChanged = true` and
switch-to-configuration is killed before the restart phase was run. If
the script is run again, but the activation script is not requesting
more restarts, the unit would be started instead of restarted.
2022-03-11 13:30:03 +01:00
Janne Heß c96180c53f
nixos/switch-to-configuration: Ignore some unit keys
Some unit keys don't need to restart the service to make them effective.
Reduce the amount of service restarts by ignoring these keys
2022-03-11 13:30:03 +01:00
github-actions[bot] f6b4a4048a
Merge staging-next into staging 2022-03-09 12:01:59 +00:00
Peter Hoeg d44916d12f nixos/activation: allowed quoted values in /etc/os-release 2022-03-09 17:07:48 +08:00
Andreas Rammhold d67caf3c89 nixos/timesyncd: initialize clock file with current time
When initializing a system (e.g. first boot / livecd) we have no good
reference source for time. systemd-timesyncd however would revert back
to its configured fallback time (in our case 01.01.1980). Since we
probably don't want to hardcode a specific date as fallback we are now
using the current system time (wherever that might have come from) to
initialize the reference clock file.

The only systems that might be remotely affected by this change are
machines that have highly unreliable RTCs or those where the battery
that backs the RTC is running empty.

Historically these systems always had a tough time with anything time
related and likely required manual intervention.

For stateless systems (those that wipe / between reboots or our
installer CDs) this has the consequence that time will always be reset
to whatever the system comes up with on boot. This is likely the correct
time coming from an RTC. No harm done here the situation is likely
unchanged for them.

For stateful systems (those that retain the / partition across reboots)
there shouldn't be a change at all. They'll provide an initial clock
value once on their lifetime (during first boot / after installation).
From then onwards systemd-timesyncd will update the file with the newer
fallback time (that will be picked up on the next boot).
2022-03-05 21:27:45 +01:00
Alyssa Ross c010a19a56
Merge remote-tracking branch 'nixpkgs/staging-next' into staging
Conflicts:
	pkgs/development/python-modules/hypothesmith/default.nix
2022-03-04 14:53:05 +00:00
Janne Heß 1def557525
nixos/switch-to-configuration: Document and test socket-activated services 2022-03-03 20:49:20 +01:00
Silvan Mosberger b2d803ca57 nixos/treewide: Add last missing option types
Co-Authored-By: Janne Heß <janne@hess.ooo>
2022-02-28 22:50:06 +01:00
Maximilian Bosch 1077a6e040
nixos/stage-1: typo fixes 2022-02-27 14:07:31 +01:00
Maximilian Bosch da905d4cf9
nixos/stage-1: fix modprobe in initial ramdisk on systems w/glibc-2.34
This effectively fixes the majority of all VM tests which were broken
because `/dev/vda` (or any other block device) wasn't mountable:

      machine # mounting /dev/vda on /...
      machine # mount: mounting /dev/vda on /mnt-root/ failed: No such device[    2.820976] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
      machine # [    2.821757] CPU: 0 PID: 1 Comm: init Not tainted 5.10.72 #1-NixOS
      machine # [    2.821757] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
      machine # [    2.821757] Call Trace:
      machine # [    2.821757]  dump_stack+0x6b/0x83
      machine # [    2.821757]  panic+0x101/0x2c8
      machine # [    2.821757]  do_exit.cold+0x14/0xb3
      machine # [    2.821757]  do_group_exit+0x33/0xa0
      machine # [    2.821757]  __x64_sys_exit_group+0x14/0x20
      machine # [    2.821757]  do_syscall_64+0x33/0x40
      machine # [    2.821757]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      machine # [    2.821757] RIP: 0033:0x7f67ec2800f6
      machine # [    2.821757] Code: 00 4c 8b 0d 2c 5d 11 00 eb 19 66 2e 0f 1f 84 00 00 00 00 00 89 d7 89 f0 0f 05 48 3d 00 f0 ff ff 77 22 f4 89 d7 44 89 c0 0f 05 <48> 3d 00 f0 ff ff 76 e2 f7 d8 64 41 89 01 eb da 66 2e 0f 1f 84 00
      machine # [    2.821757] RSP: 002b:00007fff8f5a71d8 EFLAGS: 00000202 ORIG_RAX: 00000000000000e7
      machine # [    2.821757] RAX: ffffffffffffffda RBX: 0000000000699704 RCX: 00007f67ec2800f6
      machine # [    2.821757] RDX: 0000000000000001 RSI: 000000000000003c RDI: 0000000000000001
      machine # [    2.821757] RBP: 0000000000000004 R08: 00000000000000e7 R09: ffffffffffffff80
      machine # [    2.821757] R10: 00007f67ec33f3e0 R11: 0000000000000202 R12: 000000000000000b
      machine # [    2.821757] R13: 00007fff8f5a75a8 R14: 0000000000000000 R15: 00000000004fc198
      machine # [    2.821757] Kernel Offset: 0x31e00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      machine # [    2.821757] Rebooting in 1 seconds..

This happened because the kernel failed to load modules such as `ext4`
from `boot.initrd.availableKernelModules`[1] on e.g. a `mount(2)` syscall.

The problem is that `kmod` isn't linked against `libpthread.so.0`
anymore because it got merged into `libc.so.6` (however, the .so still
exists), but still needs it:

      machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory)
      machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
      machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory)
      machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
      machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory)
      machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
      machine # writev(2, [{iov_base="/nix/store/kdc9n48ksdc1a8y8w512w"..., iov_len=69}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libpthread.so.0", iov_len=15}, {iov_base=": ", iov_len=2}, {iov_base="cy
      machine # ) = 184
      machine # exit_group(127)                         = ?
      machine # +++ exited with 127 +++
      machine # mount: mounting /dev/vda on /mnt-root/ failed: No such device
      machine # [   19.167180] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
      machine # [   19.167711] CPU: 0 PID: 1 Comm: init Not tainted 5.10.72 #1-NixOS

This is not a problem

* inside stage-1 because `LD_LIBRARY_PATH` points to `$out/lib` of
  extra-utils where `libpthread.so.6` also exists.
* on a running system because `${pkgs.glibc}/lib` is part of kmod's
  rpath.

However this is a problem inside the kernel which calls `modprobe` (in
our case `kmod`) to load modules and doesn't know about
`LD_LIBRARY_PATH`. Also, the rpath-reference was nuked.

To work around this, the kernel's `modprobe`
(i.e. `/proc/sys/kernel/modprobe`) now points to a wrapper which
explicitly declares `LD_LIBRARY_PATH`. We can't use `makeWrapper` here
because `modprobe` itself must not be renamed. Otherwise, `kmod` (which
is the link-target of `modprobe`) won't work because it expects
`argv[0] == "modprobe"` to perform modprobe's tasks.

[1] https://nixos.org/manual/nixos/stable/options.html#opt-boot.initrd.availableKernelModules
2022-02-27 10:26:51 +01:00
Dominique Martinet 0dadec45d8 logrotate/systemd: add 'minsize = 1M' to wtmp/btmp rotation
align with upstream logrotate which added the minsize rule at some point.
This avoids needlessly rotating the files too often as brought up in
https://github.com/NixOS/nixpkgs/pull/159187#issuecomment-1052426774
2022-02-27 07:20:26 +09:00
Janne Heß e5823f77b3
Merge pull request #159187 from martinetd/logrotate
logrotate service enhancements
2022-02-23 11:24:17 +01:00
Martin Weinelt c2147ab6a8
modprobe: install systemd's modprobe options
Shipped by systemd to combat kmod default options that interfere with
the netdev setup, when those drivers are initially loaded.
2022-02-22 17:22:57 +01:00
Christian Kögler 57fc08cfdb nixos: Switch to default systemd-nspawn behaviour 2022-02-19 09:52:37 +01:00
Janne Heß dcbacb0f62
Merge pull request #160458 from helsinki-systems/fix/stc-backslashes
nixos/switch-to-configuration: Fix backslashes in unit names
2022-02-17 19:08:02 +01:00
Vladimír Čunát 9d09daa0a9
Merge #157512: nixos/tmp: Fix format of /tmp mount options 2022-02-17 16:26:28 +01:00
Janne Heß 3617ecb67f
nixos/switch-to-configuration: Fix backslashes in unit names
systemd needs this so special characters (like the ones in wireguard
units that appear because they are part of base64) can be escaped using
the \x syntax.

Root of the issue is that `glob()` handles the backslash internally
which is obviously not what we want here.

Also add a test case and fix some perlcritic issues in the subroutine.
2022-02-17 12:49:45 +01:00
Stig Palmquist 3d713efe41 nixos/switch-to-configuration: avoid Array::Compare dependency
Replace Array::Compare with a simple function, since Array::Compare
pulls down Module::Build which breaks cross compilation.
2022-02-15 15:37:37 +01:00
Dominique Martinet 9917af7fe0 logrotate: move wtmp/btmp rules to systemd
wtmp and btmp are created by systemd, so the rules are more appropriate there.

They can be disabled explicitly with something like
  services.ogrotate.paths = {
    "/var/log/btmp".enable = false;
    "/var/log/wtmp".enable = false;
  };
if required.
2022-02-11 20:52:40 +09:00
Janne Heß 08cd8ab8b6
nixos/switch-to-configuration: Don't stop swaps in dry-activate 2022-02-09 15:14:38 +01:00
Janne Heß b5b3ee4f78
nixos/systemd: Add reloadTriggers to services 2022-02-09 15:14:37 +01:00
Janne Heß b9bb1de341
nixos/switch-to-configuration: Implement reload support
This is accomplished by comparing the hashes that the unit files
contain. By filtering for a special key `X-Reload-Triggers` in the
`[Unit]` section, we can differentiate between reloads and restarts.

Since activation scripts can request reloads of units as well, more
checking of this behaviour is implemented. If a unit is to be restarted,
it's never reloaded as well which would make no sense.

Also removes a useless subroutine and perl dependencies that are
nowadays handled by the propagated build inputs feature of
`perl.withPackages`.
2022-02-09 14:31:45 +01:00
Janne Heß 78db7b6529
nixos/switch-to-configuration: Allow passing parsed unit contents 2022-02-09 14:31:44 +01:00
Janne Heß d729cc8a53
nixos/switch-to-configuration: Skip [Install] section 2022-02-09 14:31:44 +01:00
Jörg Thalheim 82f2d81b22
Merge pull request #157839 from abbradar/stage-1-modprobe
Modprobe options in stage-1
2022-02-08 11:43:31 +00:00
Robert Hensing 6be11a84aa
Merge pull request #155892 from hercules-ci/nixos-etc-unit-test
nixos: Refactor to allow `etc` unit test
2022-02-06 16:12:25 +01:00
Nikolay Amiantov 3dc6fab5c9 nixos/stage-1: add nixos modprobe options 2022-02-02 15:18:09 +03:00
Maciej Krüger 8bb7bec755
Merge pull request #141122 from Luflosi/add-apfs-nixos-module 2022-02-01 17:29:10 +01:00
Ramses 4cea257440 nixos/tmp: Fix format of /tmp mount options
The mount options need to be passed as a comma-separated list of options so that they
end up one a single Options line in the resulting mount unit.
The current code passed the options as a list, resulting in several Options lines in
the mount unit, all but the first of these were ignored by systemd however.
This behaviour is not clearly defined in the systemd man page.
2022-01-31 12:49:29 +01:00
Guillaume Girol 0d5c5e46da
Merge pull request #157053 from lheckemann/systemd-optional-cryptsetup
nixos/systemd: only use cryptsetup units if systemd was built with it
2022-01-30 16:04:17 +00:00
Linus Heckemann 4b27d4f9f8 nixos/systemd: only use cryptsetup units if systemd was built with it 2022-01-30 12:00:37 +01:00
Robert Hensing 9809e1575b nixos/etc.nix: Make independent
(cherry picked from commit 56c283e5c8)
2022-01-30 09:01:27 +01:00
Bernardo Meurer 5f9b470ff0
Merge pull request #154809 from helsinki-systems/feat/stc-proper-unit-file-parser
nixos/switch-to-configuration: Proper unit file parser and clean/fix lower part of the script
2022-01-27 09:35:34 -08:00
Luflosi 26a695399a
nixos/apfs: init
Add the final missing pieces for full APFS support.
2022-01-27 15:18:45 +01:00
polykernel 4a9d9928dc nixos/nix-daemon: use structural settings
The `nix.*` options, apart from options for setting up the
daemon itself, currently provide a lot of setting mappings
for the Nix daemon configuration. The scope of the mapping yields
convience, but the line where an option is considered essential
is blurry. For instance, the `extra-sandbox-paths` mapping is
provided without its primary consumer, and the corresponding
`sandbox-paths` option is also not mapped.

The current system increases the maintenance burden as maintainers have to
closely follow upstream changes. In this case, there are two state versions
of Nix which have to be maintained collectively, with different options
avaliable.

This commit aims to following the standard outlined in RFC 42[1] to
implement a structural setting pattern. The Nix configuration is encoded
at its core as key-value pairs which maps nicely to attribute sets, making
it feasible to express in the Nix language itself. Some existing options are
kept such as `buildMachines` and `registry` which present a simplified interface
to managing the respective settings. The interface is exposed as `nix.settings`.

Legacy configurations are mapped to their corresponding options under `nix.settings`
for backwards compatibility.

Various options settings in other nixos modules and relevant tests have been
updated to use structural setting for consistency.

The generation and validation of the configration file has been modified to
use `writeTextFile` instead of `runCommand` for clarity. Note that validation
is now mandatory as strict checking of options has been pushed down to the
derivation level due to freeformType consuming unmatched options. Furthermore,
validation can not occur when cross-compiling due to current limitations.

A new option `publicHostKey` was added to the `buildMachines`
submodule corresponding to the base64 encoded public host key settings
exposed in the builder syntax. The build machine generation was subsequently
rewritten to use `concatStringsSep` for better performance by grouping
concatenations.

[1] - https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md
2022-01-26 21:04:50 -05:00
Martin Weinelt 48f17360d9 Merge remote-tracking branch 'origin/master' into staging-next 2022-01-25 15:53:19 +01:00
Robert Hensing 8919495cac
Merge pull request #156503 from hercules-ci/nixos-add-system.build-options
nixos: Add `system.build.`{`toplevel`,`installBootLoader`}, improve error message
2022-01-25 14:13:24 +01:00
github-actions[bot] bbbd0a92af
Merge master into staging-next 2022-01-25 00:02:13 +00:00
Luflosi 1c58cdbeed
nixos/modprobe: add boot.initrd.extraModprobeConfig option
This option behaves exactly like `boot.extraModprobeConfig`, except that it also includes the generated modprobe.d file in the initrd.
Many years ago, someone tried to include the normal modprobe.d/nixos.conf file generated by `boot.extraModprobeConfig` in the initrd: 0aa2c1dc46. This file contains a reference to a directory with firmware files inside. Including firmware in the initrd made it too big, so the commit was reverted again in 4a4c051a95.
The `boot.extraModprobeConfig` option not changing the initrd caused me much confusion because I tried to set the maximum cache size for ZFS and it didn't work.
Closes https://github.com/NixOS/nixpkgs/issues/25456.
2022-01-24 22:56:14 +01:00
Robert Hensing 4800f30841 nixos: Explain system.build.installBootLoader's odd default
I don't really approve of this solution, but documenting its
purpose was the least I could do for now.
2022-01-24 16:17:20 +01:00
Robert Hensing 511e89f5a6 nixos: Make system.build.installBootLoader a proper option
This improves the error message when the configuration contains
more than one boot loader.
2022-01-24 16:17:19 +01:00
Robert Hensing 2aa7c25808 nixos: Document system.build.toplevel 2022-01-24 16:16:46 +01:00
Robert Hensing ccb85a53b6 nixos: Make system.build a submodule with freeformType
This allows the values below it to be specified as options, while
remaining compatible with existing code.
2022-01-24 00:52:46 +01:00
Robert Hensing 3ac955acf4 nixos/system/build: Extract
Modules that do not depend on e.g. toplevel should not have to include it just to set
things in `system.build`. As a general rule, this keeps tests simple, usage flexible
and evaluation fast. While one module is insignificant, consistency and good practices
are.
2022-01-24 00:47:57 +01:00
github-actions[bot] 93a9821309
Merge master into staging-next 2022-01-23 18:01:11 +00:00
Janne Heß ce8c102a46
Merge pull request #155054 from jonringer/fix-systemd-boot
nixos/systemd-boot: fix error output
2022-01-23 16:23:13 +01:00
github-actions[bot] fd5336b13e
Merge master into staging-next 2022-01-21 18:01:25 +00:00
Janne Heß 45048dfd0a
Merge pull request #153095 from Madouura/dev/bcachefs-init
nixos/stage-1: colon-separated multi-device support
2022-01-21 16:35:10 +01:00
github-actions[bot] fc3ddb8979
Merge master into staging-next 2022-01-21 00:01:42 +00:00
Naïm Favier 1147d72481
nixos: use uniq in the type of system.build
`unspecified` will happily concatenate strings together from two
unrelated modules, causing spurious errors (see #155925).
2022-01-20 23:28:09 +01:00
pennae 2ed91b7349
Merge pull request #155854 from datafoo/networkd-IPMasquerade-assert
nixos/networking: fix assertion on IPMasquerade
2022-01-20 20:56:55 +00:00
Alyssa Ross b1724b2f81 nixos/activation-script: ensure gcroots dir exists
If the Nix daemon has never been enabled (nix.enable has always been
set to false), the gcroots directory won't exist.  If the Nix daemon
is later enabled, the GC roots for booted-system and current-system
will be missing, and they might end up being garbage collected.  Since
it's cheap to add GC roots even if the daemon will never be enabled,
let's just always add them so we're okay in the case where the daemon
is enabled later.
2022-01-20 20:24:32 +00:00
Janne Heß b52372675d
nixos/switch-to-configuration: Clean up lower part of the script
- Fully get rid of `parseKeyValues` and use systemctl features for that
- Add some regex modifiers recommended by perlcritic
- Get rid of a postfix if
- Sort units when showing their status
- Clean the logic for showing what failed from `elif` to `next`
- Switch from `state` to `substate` for `auto-restart` because that's
  actually where the value is stored
- Show status of units with one single systemctl call and get rid of
  COLUMNS in favor of --full
- Add a test for failing units
2022-01-20 17:10:02 +01:00
Janne Heß 96d36b0c2e
nixos/switch-to-configuration: Proper unit file parser
This replaces the naive K=V unit parser with a proper INI parser from a
library and adds proper support for override files. Also adds a bunch of
comments about parsing, I hope this makes it easier to understand and
maintain in the future.

There are multiple reasons to do so, the first one is just general
correctness with is nice imo. But to get to more serious reasons (I
didn't put in all that effort for nothing) is that this is the first
step torwards more clever restart/reload handling. By using a library
like Data::Compare a future PR could replace the current way of
fingerprinting units (which is to compare store paths) by comparing the
hashes. This is more precise because units won't get restarted because
the order of the options change, comments are added, some dependency of
writeText changes, .... Also this allows us to add a feature like
`X-Reload-Triggers` so the unit can either be reloaded when these change
or restarted when everything else changes, giving module authors the
ability to have their services reloaded without having to fear that
updates are not applied because the service doesn't get restarted.
Another reason why this feature is nice is that now that the unit files
are parsed correctly (and values are just extracted from one section),
potential future rewrites can just rely on some INI library without
having to implement their own weird parser that is compatible with this
script.

This also comes with a new subroutine to handle systemd booleans because
I thought the current way of handling it was just ugly. This also allows
overriding values this script reads in an override file.

Apart from making this script more compatible with the world around it,
this also fixes two issues I saw bugging exactly 0 (zero) people. First
is that this script now supports multiple override files, also ones that
are not called override.conf and the second one is that `1` and `on` are
treated as bools by systemd but were previously not parsed as such by
switch-to-configuration.
2022-01-20 15:10:23 +01:00
datafoo 9bfb803dce nixos/networking: fix assertion on IPMasquerade 2022-01-20 13:43:12 +01:00
github-actions[bot] b456d67c98
Merge master into staging-next 2022-01-18 00:01:41 +00:00
Janne Heß 2cf157c781
nixos/switch-to-configuration: Rework activation script restarts
This removes `/run/nixos/activation-reload-list` (which we will need in
the future when reworking the reload logic) and makes
`/run/nixos/activation-restart-list` honor `restartIfChanged` and
`reloadIfChanged`. This way activation scripts don't have to bother with
choosing between reloading and restarting.
2022-01-17 17:57:23 +01:00
Jonathan Ringer 87502df43b
nixos/systemd-boot: fix error output 2022-01-14 15:42:19 -08:00
github-actions[bot] d5e672b839
Merge master into staging-next 2022-01-14 18:01:18 +00:00
Robert Hensing 2bf5958169
Merge pull request #151082 from hercules-ci/nixos-cleanup-vmWithBootLoader
nixos: turn vmWithBootLoader into option (`nixos-rebuild build-vm`)
2022-01-14 18:49:27 +01:00
Cole Mickens 904ecf0b4e
extlinux-conf-builder: specialisations entries 2022-01-13 15:28:41 -08:00
github-actions[bot] a6928c74cc
Merge master into staging-next 2022-01-13 12:01:29 +00:00
pennae 466cb747c8
Merge pull request #150408 from Enzime/systemd-boot-extra-entries
nixos/systemd-boot: Add `extraEntries` and `extraFiles` options
2022-01-13 07:15:05 +00:00
github-actions[bot] 7def368b6f
Merge master into staging-next 2022-01-12 18:01:16 +00:00
Alyssa Ross 5c8ddfd0b5 nixos/stage-1: update udev.log_level name in docs
I was confused why I couldn't find a mention of udev.log_priority in
systemd-udevd.service(8).  It turns out that it was renamed[1] to
udev.log_level.  The old name is still accepted, but it'll avoid
further confusion if we use the new name in our documentation.

[1]: 64a3494c3d
2022-01-12 14:04:14 +00:00
Madoura f363642de7
nixos/stage-1: colon-separated multi-device support 2022-01-09 18:06:03 -06:00
github-actions[bot] cf7efe1192
Merge staging-next into staging 2022-01-08 12:01:36 +00:00
Maciej Krüger 801d832872
Merge pull request #125451 from zhaofengli/qemu-riscv64-sd-image 2022-01-07 22:14:05 +01:00