Commit Graph

202 Commits

Author SHA1 Message Date
Artturin
2eeb34c273 treewide: {build,host,target}Platform -> stdenv.{build,host,target}Platform 2023-01-09 21:13:22 +02:00
Naïm Favier
c72f5995e4
Merge pull request #205933 from ncfavier/nix-auto-allocate-uids 2023-01-01 14:18:25 +01:00
Robert Hensing
834f0d660a lib.strings: isMoreCoercibleString -> isConvertibleWithToString
Yes, this function name is inconveniently long, but it is important
for the name to explicitly reference the function and not be mistaken
for the implicit string conversions, which only happen for a smaller
set of values.
2022-12-31 01:33:47 +01:00
Robert Hensing
fed5dc66f8 treewide: isCoercibleToString -> isMoreCoercibleToString
No change in behavior.
2022-12-31 01:03:24 +01:00
Artturi
a65df1ed0b
Merge pull request #193894 from amjoseph-nixpkgs/pr/nixos/arch-without-inferiors 2022-12-28 15:08:09 +02:00
Michal Sojka
3708ee280b nixos/nix-daemon: fix typo 2022-12-26 20:45:13 +01:00
Lily Foster
7def7250be
nixos/nix-daemon: fix isCoercibleToString typo
It isn't exported at the top-level lib and needs to be qualified.
2022-12-24 13:34:06 -05:00
figsoda
6bb0dbf91f nixos: fix typos 2022-12-17 19:31:14 -05:00
Naïm Favier
cf5ab0191d
nixos/nix-daemon: remove nixbld users if auto-allocating UIDs
https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-auto-allocate-uids
2022-12-13 17:16:30 +01: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
Naïm Favier
bcb5f0decc
nixos/nix-daemon: allow registry paths to be... paths
Currently paths are handled by `types.package`, whose semantics are a
bit of a mess. In particular, it converts path values to derivations
using `toDerivation`, which will lead to problems when flake `outPath`s
become paths in https://github.com/NixOS/nix/pull/6530.

This change makes the "incompatible changes" section in the above PR
obsolete: `nix.registry.nixpkgs.flake = nixpkgs;` works as expected (the
flake is copied to the store).
2022-11-29 14:18:04 +01:00
Sandro
8017d9e2da
nixos/nix-daemon: don't give daemon by default high io priority
According to https://www.freedesktop.org/software/systemd/man/systemd.exec.html#IOSchedulingClass= the default is 4
2022-11-04 22:07:05 +01:00
Atemu
bf6d84958d rl-2211: document nix.checkConfig option changes
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2022-10-18 21:43:52 +02:00
Atemu
ef70bdd10f nixos/nix-daemon: make checkConfig fully disable nix.conf validation
A new option checkAllErrors is introduced which implements the old checkConfig
toggle behaviour

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2022-10-18 21:42:31 +02:00
Adam Joseph
d3b65938d4 nixos/../nix-daemon.nix: allow architectures with no inferiors 2022-10-01 04:34:44 -07:00
Sandro
00b86b69f0
Merge pull request #193009 from SuperSandro2000/nix-daemon-localhost 2022-09-29 23:38:05 +02:00
void
6349a7d15b nix-daemon module: fix mandatoryFeatures in nix.buildMachines 2022-09-29 00:35:17 +03:00
Sandro Jäckel
2970778928
nixos/nix-daemon: allow removing protocol for hydra 2022-09-26 11:50:19 +02:00
Jairo Llopis
a7a94811e3
nixos/nix-daemon: support machine protocol
Make ssh-ng:// users happier.

@moduon MT-904
2022-09-18 00:05:35 +02:00
pennae
1d41cff3dc nixos/*: convert straggler options to MD 2022-08-31 17:27:38 +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
pcpthm
f7922cb328 nixos/nix-daemon: Add missing parenthesis
When `nix.registry.<name>.flake` option is used, additional attributes of the flake were not written to the flake registry file because of a missing parenthesis.
2022-08-26 15:53:59 +09: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
275a34e0d8 nixos/nix-daemon: replace <uri> with <literal>
this could've been a link as well, but <uri> did not render as a link in
the html manual.
2022-08-19 22:40:58 +02:00
pennae
087472b1e5 nixos/*: automatically convert option docs 2022-08-06 20:39:12 +02: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
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
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
Artturin
c8f5b17a98 nixos/nix-daemon: set LimitNOFILE to 1048576
fixes 'too many open files'
2022-06-06 21:16:47 +03:00
Martin Weinelt
d0bfb3ccbb Merge remote-tracking branch 'origin/master' into staging-next 2022-03-31 03:49:37 +02:00
Scott Olson
bada6a2e04 nixos/nix-daemon: fix typo 2022-03-29 21:13:54 +01:00
Vladimír Čunát
6facca010b
Merge #164644: nixos/nix-daemon: workaround NixOS/nix#6285
...into staging
2022-03-21 19:53:28 +01:00
Florian Klink
0d198e7a52 nixos/nix-daemon: workaround NixOS/nix#6285
The Nix-provided `nix-daemon.socket` file has a

> ConditionPathIsReadWrite=/nix/var/nix/daemon-socket/socket

line, to skip that unit if /nix/var/nix/daemon-socket/socket is
read-only (which is the case in some nixos-containers with that folder
bind-ro-mounted from the host).

In these cases, the unit was skipped.

Systemd 250 (rightfully) started to also skip in these cases:

> [ 237.187747] systemd[1]: Nix Daemon Socket was skipped because of a failed condition check (ConditionPathIsReadWrite=/nix/var/nix/daemon-socket).

However, systemd < 250 didn't skip if /nix/var/nix/daemon-socket/socket
didn't /exist at all/, and we were relying on this bug in the case for
fresh NixOS systems, to have /nix/var/nix/daemon-socket/socket created
initially.

Move the creation of that folder to systemd-tmpfiles, by shipping an
appropriate file in `${nixPackage}/lib/tmpfiles.d/nix-daemon.conf`
(NixOS/nix#6285).

In the meantime, set a systemd tmpfiles rule manually in NixOS.

This has been tested to still work with read-only bind-mounted
/nix/var/nix/daemon-socket/socket in containers, it'll keep them
read-only ;-)
2022-03-21 11:43:38 +01:00
Robert Hensing
646e888011 nixos/nix-daemon: Stop warning about nix.settings
Out-of-tree modules that use it can not upgrade yet.
There's no real hurry and we should avoid warning fatigue.
2022-03-09 14:53:53 +01:00
Janne Heß
5ec0477dfc
Merge pull request #161059 from hercules-ci/fix-nix-daemon-socket-availability
nixos/nix-daemon: Ensure continued availability of daemon socket
2022-02-27 17:57:57 +01:00
Robert Hensing
b550b4b6f8 nixos/nix-daemon: Ensure continued availability of daemon socket
As `nix-daemon.service` does not make use of `ExecStop`, we prefer
to keep the socket up and available. This is important for machines
that run Nix-based services, such as automated build, test, and deploy
services, that expect the daemon socket to be available at all times.

See committed inline comment for further explanation.
2022-02-20 13:44:13 +01:00
polykernel
34636a8525 nixos/nix-daemon: Fix merging order for substituters option
The `substituters` option in `nix.settings` uses the order
of the substituters listed to define priority. Prior to https://github.com/NixOS/nixpkgs/pull/139075,
the corresponding option `binaryCaches` is declared in the `nix` namespace,
which is guaranteed to be merged last. However, the order of merging isn't
guaranteed in submodules. This cause definitions to be appended to the default
value instead of prepended, breaking backwards compatibility as reported in https://github.com/NixOS/nixpkgs/issues/158356.

The way this is addressed in the module system is with order priorities via
`mkOrder` and sorting definitions before merging. This PR restores the previous
behavior by setting a higher priority to the substituters option defined internally,
thus all definitions with default priority will be merged before it. This was chosen because
the `mkRenamedOption` function does not preserve order priority so users using legacy options do not have
precise control on placement.

This change should suffice for simple configuration, but further revision to the module system
is needed for to make various `mk*` functions  aware of order priorities.
2022-02-12 17:15:31 -05:00
linj
0bac44db62 nixos/nix-daemon: readd mandatoryFeatures to final supportedFeatures
In #139075, mandatoryFeatures was removed from the generated
supportedFeatures, which breaks backward compatibility and is
different from what the description of supportedFeatures says.
2022-02-11 02:55:17 +08:00
Janne Heß
016e9e5a7f
Merge pull request #157310 from sternenseemann/nix-conf-validation-2.3
nixos/nix-daemon: fix config validation with 2.3
2022-01-29 23:33:18 +01:00
sternenseemann
e3d8cc81b3 nixos/nix-daemon: fix config validation with 2.3
--option experimental-features is no understood by Nix 2.3.
2022-01-29 21:41:49 +01:00
Moritz Hedtke
a26134ffd4
nixos/nix-daemon: Fix misspelled old option name 2022-01-28 20:32:19 +01:00
Martin Weinelt
268157dc83 nixos/nix-daemon: fix buildMachines eval 2022-01-28 02:00:25 +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
Mikael
4c39a29128
modules/nix-daemon: Amend daemon(CPU|IO)Sched(Policy|Class) description (#147497)
Suggest appropriate values for various types of systems and add some
formatting.
2021-12-10 11:30:51 +01:00
Thiago Kenji Okada
25cdc0a9c9
Merge pull request #147490 from illdefined/nix-daemon
modules/nix-daemon: Add missing mk(Rename|Removed)OptionModule
2021-11-26 19:31:02 -03:00
Mikael Voss
257e92258e
modules/nix-daemon: Add missing mk(Rename|Removed)OptionModule
Commit 3a92a1a replaced the nix.daemonNiceLevel and nix.daemonIONiceLevel
options. This commit adds appropriate mk(Rename|Removed)OptionModule.
2021-11-26 13:25:20 +01:00
Samuel Dionne-Riel
8e92630aae nixos: Provide nix-bash-completions again for stable commands 2021-11-26 02:16:56 -05:00
Mikael Voss
ee8e993fd4 modules/nix-daemon: Replace daemon(IO)NiceLevel options
The nix.daemonNiceLevel options allows for setting the nice level of the
Nix daemon process. On a modern Linux kernel with group scheduling the
nice level only affects threads relative to other threads in the same
task group (see sched(7)). Therefore this option has not the effect one
might expect.

The options daemonCPUSchedPolicy and daemonIOSchedClass are introduced
and the daemonIONiceLevel option renamed to daemonIOSchedPrority for
consistency. These options allow for more effective control over CPU
and I/O scheduling.

Instead of setting daemonNiceLevel to a high value to increase the
responsiveness of an interactive system during builds -- which would not
have the desired effect, as described above -- one could set both
daemonCPUSchedPolicy and daemonIOSchedClass to idle.
2021-11-15 18:34:17 +01:00