···34343535- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs)
36363737-- `readonly` makes the container\'s rootfs read-only if it is set to true. The default value is false `false`.
3737+- `readonly` makes the container's rootfs read-only if it is set to true. The default value is false `false`.
+1-1
doc/builders/packages/dlib.section.md
···4455## Compiling without AVX support {#compiling-without-avx-support}
6677-Especially older CPUs don\'t support [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) (Advanced Vector Extensions) instructions that are used by DLib to optimize their algorithms.
77+Especially older CPUs don't support [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) (Advanced Vector Extensions) instructions that are used by DLib to optimize their algorithms.
8899On the affected hardware errors like `Illegal instruction` will occur. In those cases AVX support needs to be disabled:
1010
+1-1
doc/contributing/submitting-changes.chapter.md
···199199200200### Meets Nixpkgs contribution standards {#submitting-changes-contribution-standards}
201201202202-The last checkbox is fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md). The contributing document has detailed information on standards the Nix community has for commit messages, reviews, licensing of contributions you make to the project, etc\... Everyone should read and understand the standards the community has for contributing before submitting a pull request.
202202+The last checkbox is fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md). The contributing document has detailed information on standards the Nix community has for commit messages, reviews, licensing of contributions you make to the project, etc... Everyone should read and understand the standards the community has for contributing before submitting a pull request.
203203204204## Hotfixing pull requests {#submitting-changes-hotfixing-pull-requests}
205205
+2-2
doc/functions/nix-gitignore.section.md
···4455## Usage {#sec-pkgs-nix-gitignore-usage}
6677-`pkgs.nix-gitignore` exports a number of functions, but you\'ll most likely need either `gitignoreSource` or `gitignoreSourcePure`. As their first argument, they both accept either 1. a file with gitignore lines or 2. a string with gitignore lines, or 3. a list of either of the two. They will be concatenated into a single big string.
77+`pkgs.nix-gitignore` exports a number of functions, but you'll most likely need either `gitignoreSource` or `gitignoreSourcePure`. As their first argument, they both accept either 1. a file with gitignore lines or 2. a string with gitignore lines, or 3. a list of either of the two. They will be concatenated into a single big string.
8899```nix
1010{ pkgs ? import <nixpkgs> {} }:
···3030gitignoreSource = gitignoreFilterSource (_: _: true);
3131```
32323333-Those filter functions accept the same arguments the `builtins.filterSource` function would pass to its filters, thus `fn: gitignoreFilterSourcePure fn ""` should be extensionally equivalent to `filterSource`. The file is blacklisted if it\'s blacklisted by either your filter or the gitignoreFilter.
3333+Those filter functions accept the same arguments the `builtins.filterSource` function would pass to its filters, thus `fn: gitignoreFilterSourcePure fn ""` should be extensionally equivalent to `filterSource`. The file is blacklisted if it's blacklisted by either your filter or the gitignoreFilter.
34343535If you want to make your own filter from scratch, you may use
3636
+1-1
doc/using/configuration.chapter.md
···7373 }
7474 ```
75757676-The difference between a package being unsupported on some system and being broken is admittedly a bit fuzzy. If a program *ought* to work on a certain platform, but doesn't, the platform should be included in `meta.platforms`, but marked as broken with e.g. `meta.broken = !hostPlatform.isWindows`. Of course, this begs the question of what \"ought\" means exactly. That is left to the package maintainer.
7676+The difference between a package being unsupported on some system and being broken is admittedly a bit fuzzy. If a program *ought* to work on a certain platform, but doesn't, the platform should be included in `meta.platforms`, but marked as broken with e.g. `meta.broken = !hostPlatform.isWindows`. Of course, this begs the question of what "ought" means exactly. That is left to the package maintainer.
77777878## Installing unfree packages {#sec-allow-unfree}
7979
···75757676Packages in Nixpkgs sometimes provide systemd units with them, usually
7777in e.g `#pkg-out#/lib/systemd/`. Putting such a package in
7878-`environment.systemPackages` doesn\'t make the service available to
7878+`environment.systemPackages` doesn't make the service available to
7979users or the system.
80808181In order to enable a systemd *system* service with provided upstream
···87878888Usually NixOS modules written by the community do the above, plus take
8989care of other details. If a module was written for a service you are
9090-interested in, you\'d probably need only to use
9090+interested in, you'd probably need only to use
9191`services.#name#.enable = true;`. These services are defined in
9292-Nixpkgs\' [ `nixos/modules/` directory
9292+Nixpkgs' [ `nixos/modules/` directory
9393](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules). In case
9494the service is simple enough, the above method should work, and start
9595the service on boot.
···9898differently. Given a package that has a systemd unit file at
9999`#pkg-out#/lib/systemd/user/`, using [](#opt-systemd.packages) will
100100make you able to start the service via `systemctl --user start`, but it
101101-won\'t start automatically on login. However, You can imperatively
102102-enable it by adding the package\'s attribute to
101101+won't start automatically on login. However, You can imperatively
102102+enable it by adding the package's attribute to
103103[](#opt-systemd.packages) and then do this (e.g):
104104105105```ShellSession
···113113of `default.target.wants` in the 1st and 2nd command.
114114115115Using `systemctl --user enable syncthing.service` instead of the above,
116116-will work, but it\'ll use the absolute path of `syncthing.service` for
116116+will work, but it'll use the absolute path of `syncthing.service` for
117117the symlink, and this path is in `/nix/store/.../lib/systemd/user/`.
118118Hence [garbage collection](#sec-nix-gc) will remove that file and you
119119will wind up with a broken symlink in your systemd configuration, which
···1717};
1818```
19192020-Another way is to assign cluster roles (\"master\" and/or \"node\") to
2020+Another way is to assign cluster roles ("master" and/or "node") to
2121the host. This enables apiserver, controllerManager, scheduler,
2222addonManager, kube-proxy and etcd:
2323
···2233In some cases, it may be desirable to take advantage of commonly-used,
44predefined configurations provided by nixpkgs, but different from those
55-that come as default. This is a role fulfilled by NixOS\'s Profiles,
55+that come as default. This is a role fulfilled by NixOS's Profiles,
66which come as files living in `<nixpkgs/nixos/modules/profiles>`. That
77is to say, expected usage is to add them to the imports list of your
88`/etc/configuration.nix` as such:
···3030[](#opt-users.users) and run nixos-rebuild, the user
3131account will cease to exist. Also, imperative commands for managing users and
3232groups, such as useradd, are no longer available. Passwords may still be
3333-assigned by setting the user\'s
3333+assigned by setting the user's
3434[hashedPassword](#opt-users.users._name_.hashedPassword) option. A
3535hashed password can be generated using `mkpasswd`.
3636
+1-1
nixos/doc/manual/configuration/wayland.chapter.md
···44on NixOS, Wayland support is steadily improving. Where X11 separates the
55X Server and the window manager, on Wayland those are combined: a
66Wayland Compositor is like an X11 window manager, but also embeds the
77-Wayland \'Server\' functionality. This means it is sufficient to install
77+Wayland 'Server' functionality. This means it is sufficient to install
88a Wayland Compositor such as sway without separately enabling a Wayland
99server:
1010
···81818282To enable auto-login, you need to define your default window manager and
8383desktop environment. If you wanted no desktop environment and i3 as your
8484-your window manager, you\'d define:
8484+your window manager, you'd define:
85858686```nix
8787services.xserver.displayManager.defaultSession = "none+i3";
···110110111111The second driver, `intel`, is specific to Intel GPUs, but not
112112recommended by most distributions: it lacks several modern features (for
113113-example, it doesn\'t support Glamor) and the package hasn\'t been
113113+example, it doesn't support Glamor) and the package hasn't been
114114officially updated since 2015.
115115116116The results vary depending on the hardware, so you may have to try both
···162162163163AMD provides a proprietary driver for its graphics cards that is not
164164enabled by default because it's not Free Software, is often broken in
165165-nixpkgs and as of this writing doesn\'t offer more features or
165165+nixpkgs and as of this writing doesn't offer more features or
166166performance. If you still want to use it anyway, you need to explicitly
167167set:
168168···215215pressing the right-alt key.
216216217217Create a file called `us-greek` with the following content (under a
218218-directory called `symbols`; it\'s an XKB peculiarity that will help with
218218+directory called `symbols`; it's an XKB peculiarity that will help with
219219testing):
220220221221```nix
···249249250250Applying this customization requires rebuilding several packages, and a
251251broken XKB file can lead to the X session crashing at login. Therefore,
252252-you\'re strongly advised to **test your layout before applying it**:
252252+you're strongly advised to **test your layout before applying it**:
253253254254```ShellSession
255255$ nix-shell -p xorg.xkbcomp
···313313314314Unfortunately, the Xorg server does not (currently) support setting a
315315keymap directly but relies instead on XKB rules to select the matching
316316-components (keycodes, types, \...) of a layout. This means that
317317-components other than symbols won\'t be loaded by default. As a
316316+components (keycodes, types, ...) of a layout. This means that
317317+components other than symbols won't be loaded by default. As a
318318workaround, you can set the keymap using `setxkbmap` at the start of the
319319session with:
320320···323323```
324324325325If you are manually starting the X server, you should set the argument
326326-`-xkbdir /etc/X11/xkb`, otherwise X won\'t find your layout files. For
326326+`-xkbdir /etc/X11/xkb`, otherwise X won't find your layout files. For
327327example with `xinit` run
328328329329```ShellSession
+3-3
nixos/doc/manual/configuration/xfce.chapter.md
···3131option [](#opt-programs.thunar.enable) instead of simply adding
3232`pkgs.xfce.thunar` to [](#opt-environment.systemPackages).
33333434-If you\'d like to add extra plugins to Thunar, add them to
3535-[](#opt-programs.thunar.plugins). You shouldn\'t just add them to
3434+If you'd like to add extra plugins to Thunar, add them to
3535+[](#opt-programs.thunar.plugins). You shouldn't just add them to
3636[](#opt-environment.systemPackages).
37373838## Troubleshooting {#sec-xfce-troubleshooting .unnumbered}
···4646```
47474848This is caused by some needed GNOME services not running. This is all
4949-fixed by enabling \"Launch GNOME services on startup\" in the Advanced
4949+fixed by enabling "Launch GNOME services on startup" in the Advanced
5050tab of the Session and Startup settings panel. Alternatively, you can
5151run this command to do the same thing.
5252
···149149150150As an example, we will take the case of display managers. There is a
151151central display manager module for generic display manager options and a
152152-module file per display manager backend (sddm, gdm \...).
152152+module file per display manager backend (sddm, gdm ...).
153153154154There are two approaches we could take with this module structure:
155155
···9292: A free-form attribute set.
93939494 ::: {.warning}
9595- This type will be deprecated in the future because it doesn\'t
9595+ This type will be deprecated in the future because it doesn't
9696 recurse into attribute sets, silently drops earlier attribute
9797- definitions, and doesn\'t discharge `lib.mkDefault`, `lib.mkIf`
9797+ definitions, and doesn't discharge `lib.mkDefault`, `lib.mkIf`
9898 and co. For allowing arbitrary attribute sets, prefer
9999- `types.attrsOf types.anything` instead which doesn\'t have these
9999+ `types.attrsOf types.anything` instead which doesn't have these
100100 problems.
101101 :::
102102···222222 - *`specialArgs`* An attribute set of extra arguments to be passed
223223 to the module functions. The option `_module.args` should be
224224 used instead for most arguments since it allows overriding.
225225- *`specialArgs`* should only be used for arguments that can\'t go
225225+ *`specialArgs`* should only be used for arguments that can't go
226226 through the module fixed-point, because of infinite recursion or
227227 other problems. An example is overriding the `lib` argument,
228228 because `lib` itself is used to define `_module.args`, which
···236236 In such a case it would allow the option to be set with
237237 `the-submodule.config = "value"` instead of requiring
238238 `the-submodule.config.config = "value"`. This is because
239239- only when modules *don\'t* set the `config` or `options`
239239+ only when modules *don't* set the `config` or `options`
240240 keys, all keys are interpreted as option definitions in the
241241 `config` section. Enabling this option implicitly puts all
242242 attributes in the `config` section.
···324324: Type *`t1`* or type *`t2`*, e.g. `with types; either int str`.
325325 Multiple definitions cannot be merged.
326326327327-`types.oneOf` \[ *`t1 t2`* \... \]
327327+`types.oneOf` \[ *`t1 t2`* ... \]
328328329329: Type *`t1`* or type *`t2`* and so forth, e.g.
330330 `with types; oneOf [ int str bool ]`. Multiple definitions cannot be
···2233Modules that are imported can also be disabled. The option declarations,
44config implementation and the imports of a disabled module will be
55-ignored, allowing another to take it\'s place. This can be used to
55+ignored, allowing another to take its place. This can be used to
66import a set of modules from another channel while keeping the rest of
77the system on a stable release.
88···1414This example will replace the existing postgresql module with the
1515version defined in the nixos-unstable channel while keeping the rest of
1616the modules and packages from the original nixos channel. This only
1717-overrides the module definition, this won\'t use postgresql from
1717+overrides the module definition, this won't use postgresql from
1818nixos-unstable unless explicitly configured to do so.
19192020```nix
···35353636This example shows how to define a custom module as a replacement for an
3737existing module. Importing this module will disable the original module
3838-without having to know it\'s implementation details.
3838+without having to know its implementation details.
39394040```nix
4141{ config, lib, pkgs, ... }:
···99 `{ foo = { bar = 10; }; }`. Other examples are INI, YAML and TOML.
1010 The following section explains the convention for these settings.
11111212-- Non-nix-representable ones: These can\'t be trivially mapped to a
1212+- Non-nix-representable ones: These can't be trivially mapped to a
1313 subset of Nix syntax. Most generic programming languages are in this
1414 group, e.g. bash, since the statement `if true; then echo hi; fi`
1515- doesn\'t have a trivial representation in Nix.
1515+ doesn't have a trivial representation in Nix.
16161717 Currently there are no fixed conventions for these, but it is common
1818 to have a `configFile` option for setting the configuration file
···2424 an `extraConfig` option of type `lines` to allow arbitrary text
2525 after the autogenerated part of the file.
26262727-## Nix-representable Formats (JSON, YAML, TOML, INI, \...) {#sec-settings-nix-representable}
2727+## Nix-representable Formats (JSON, YAML, TOML, INI, ...) {#sec-settings-nix-representable}
28282929By convention, formats like this are handled with a generic `settings`
3030option, representing the full program configuration as a Nix value. The
···1919nix-shell$ make
2020```
21212222-Once you are done making modifications to the manual, it\'s important to
2222+Once you are done making modifications to the manual, it's important to
2323build it before committing. You can do that as follows:
24242525```ShellSession
···7171- This `imports` list enumerates the paths to other NixOS modules that
7272 should be included in the evaluation of the system configuration. A
7373 default set of modules is defined in the file `modules/module-list.nix`.
7474- These don\'t need to be added in the import list.
7474+ These don't need to be added in the import list.
75757676- The attribute `options` is a nested set of *option declarations*
7777 (described below).
···165165`get_screen_text_variants`
166166167167: Return a list of different interpretations of what is currently
168168- visible on the machine\'s screen using optical character
168168+ visible on the machine's screen using optical character
169169 recognition. The number and order of the interpretations is not
170170 specified and is subject to change, but if no exception is raised at
171171 least one will be returned.
···177177`get_screen_text`
178178179179: Return a textual representation of what is currently visible on the
180180- machine\'s screen using optical character recognition.
180180+ machine's screen using optical character recognition.
181181182182 ::: {.note}
183183 This requires [`enableOCR`](#test-opt-enableOCR) to be set to `true`.
···350350This applies to `systemctl`, `get_unit_info`, `wait_for_unit`,
351351`start_job` and `stop_job`.
352352353353-For faster dev cycles it\'s also possible to disable the code-linters
354354-(this shouldn\'t be committed though):
353353+For faster dev cycles it's also possible to disable the code-linters
354354+(this shouldn't be committed though):
355355356356```nix
357357{
···370370371371This will produce a Nix warning at evaluation time. To fully disable the
372372linter, wrap the test script in comment directives to disable the Black
373373-linter directly (again, don\'t commit this within the Nixpkgs
373373+linter directly (again, don't commit this within the Nixpkgs
374374repository):
375375376376```nix
···2323 this unit automatically at certain points in time, for instance,
2424 every night at 03:15:
2525 </para>
2626- <programlisting language="bash">
2626+ <programlisting language="nix">
2727nix.gc.automatic = true;
2828nix.gc.dates = "03:15";
2929</programlisting>
···3131 address. This can be accomplished using the following configuration
3232 on the host:
3333 </para>
3434- <programlisting language="bash">
3434+ <programlisting language="nix">
3535networking.nat.enable = true;
3636networking.nat.internalInterfaces = ["ve-+"];
3737networking.nat.externalInterface = "eth0";
···4545 If you are using Network Manager, you need to explicitly prevent it
4646 from managing container interfaces:
4747 </para>
4848- <programlisting language="bash">
4848+ <programlisting language="nix">
4949networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
5050</programlisting>
5151 <para>
···4242 process would get 1/1001 of the cgroup’s CPU time.) You can limit a
4343 service’s CPU share in <literal>configuration.nix</literal>:
4444 </para>
4545- <programlisting language="bash">
4545+ <programlisting language="nix">
4646systemd.services.httpd.serviceConfig.CPUShares = 512;
4747</programlisting>
4848 <para>
···5757 <literal>configuration.nix</literal>; for instance, to limit
5858 <literal>httpd.service</literal> to 512 MiB of RAM (excluding swap):
5959 </para>
6060- <programlisting language="bash">
6060+ <programlisting language="nix">
6161systemd.services.httpd.serviceConfig.MemoryLimit = "512M";
6262</programlisting>
6363 <para>
···66 following specifies that there shall be a container named
77 <literal>database</literal> running PostgreSQL:
88 </para>
99- <programlisting language="bash">
99+ <programlisting language="nix">
1010containers.database =
1111 { config =
1212 { config, pkgs, ... }:
···2929 However, they cannot change the network configuration. You can give
3030 a container its own network as follows:
3131 </para>
3232- <programlisting language="bash">
3232+ <programlisting language="nix">
3333containers.database = {
3434 privateNetwork = true;
3535 hostAddress = "192.168.100.10";
···8585 Packages in Nixpkgs sometimes provide systemd units with them,
8686 usually in e.g <literal>#pkg-out#/lib/systemd/</literal>. Putting
8787 such a package in <literal>environment.systemPackages</literal>
8888- doesn't make the service available to users or the system.
8888+ doesn’t make the service available to users or the system.
8989 </para>
9090 <para>
9191 In order to enable a systemd <emphasis>system</emphasis> service
9292 with provided upstream package, use (e.g):
9393 </para>
9494- <programlisting language="bash">
9494+ <programlisting language="nix">
9595systemd.packages = [ pkgs.packagekit ];
9696</programlisting>
9797 <para>
9898 Usually NixOS modules written by the community do the above, plus
9999 take care of other details. If a module was written for a service
100100- you are interested in, you'd probably need only to use
100100+ you are interested in, you’d probably need only to use
101101 <literal>services.#name#.enable = true;</literal>. These services
102102- are defined in Nixpkgs'
102102+ are defined in Nixpkgs’
103103 <link xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/modules">
104104 <literal>nixos/modules/</literal> directory </link>. In case the
105105 service is simple enough, the above method should work, and start
···111111 unit file at <literal>#pkg-out#/lib/systemd/user/</literal>, using
112112 <xref linkend="opt-systemd.packages" /> will make you able to
113113 start the service via <literal>systemctl --user start</literal>,
114114- but it won't start automatically on login. However, You can
115115- imperatively enable it by adding the package's attribute to
114114+ but it won’t start automatically on login. However, You can
115115+ imperatively enable it by adding the package’s attribute to
116116 <xref linkend="opt-systemd.packages" /> and then do this (e.g):
117117 </para>
118118 <programlisting>
···129129 </para>
130130 <para>
131131 Using <literal>systemctl --user enable syncthing.service</literal>
132132- instead of the above, will work, but it'll use the absolute path
132132+ instead of the above, will work, but it’ll use the absolute path
133133 of <literal>syncthing.service</literal> for the symlink, and this
134134 path is in <literal>/nix/store/.../lib/systemd/user/</literal>.
135135 Hence <link linkend="sec-nix-gc">garbage collection</link> will
···44 If you find yourself repeating yourself over and over, it’s time to
55 abstract. Take, for instance, this Apache HTTP Server configuration:
66 </para>
77- <programlisting language="bash">
77+ <programlisting language="nix">
88{
99 services.httpd.virtualHosts =
1010 { "blog.example.org" = {
···2929 the only difference is the document root directories. To prevent
3030 this duplication, we can use a <literal>let</literal>:
3131 </para>
3232- <programlisting language="bash">
3232+ <programlisting language="nix">
3333let
3434 commonConfig =
3535 { adminAddr = "alice@example.org";
···5555 You can write a <literal>let</literal> wherever an expression is
5656 allowed. Thus, you also could have written:
5757 </para>
5858- <programlisting language="bash">
5858+ <programlisting language="nix">
5959{
6060 services.httpd.virtualHosts =
6161 let commonConfig = ...; in
···7474 of different virtual hosts, all with identical configuration except
7575 for the document root. This can be done as follows:
7676 </para>
7777- <programlisting language="bash">
7777+ <programlisting language="nix">
7878{
7979 services.httpd.virtualHosts =
8080 let
···77 network configuration not covered by the existing NixOS modules. For
88 instance, to statically configure an IPv6 address:
99 </para>
1010- <programlisting language="bash">
1010+ <programlisting language="nix">
1111networking.localCommands =
1212 ''
1313 ip -6 addr add 2001:610:685:1::1/64 dev eth0
···33 <para>
44 The NixOS configuration file generally looks like this:
55 </para>
66- <programlisting language="bash">
66+ <programlisting language="nix">
77{ config, pkgs, ... }:
8899{ option definitions
···2121 the name of an option and <literal>value</literal> is its value. For
2222 example,
2323 </para>
2424- <programlisting language="bash">
2424+ <programlisting language="nix">
2525{ config, pkgs, ... }:
26262727{ services.httpd.enable = true;
···4444 <literal>true</literal>. This means that the example above can also
4545 be written as:
4646 </para>
4747- <programlisting language="bash">
4747+ <programlisting language="nix">
4848{ config, pkgs, ... }:
49495050{ services = {
···9696 <para>
9797 Strings are enclosed in double quotes, e.g.
9898 </para>
9999- <programlisting language="bash">
9999+ <programlisting language="nix">
100100networking.hostName = "dexter";
101101</programlisting>
102102 <para>
···107107 Multi-line strings can be enclosed in <emphasis>double single
108108 quotes</emphasis>, e.g.
109109 </para>
110110- <programlisting language="bash">
110110+ <programlisting language="nix">
111111networking.extraHosts =
112112 ''
113113 127.0.0.2 other-localhost
···135135 These can be <literal>true</literal> or
136136 <literal>false</literal>, e.g.
137137 </para>
138138- <programlisting language="bash">
138138+ <programlisting language="nix">
139139networking.firewall.enable = true;
140140networking.firewall.allowPing = false;
141141</programlisting>
···149149 <para>
150150 For example,
151151 </para>
152152- <programlisting language="bash">
152152+ <programlisting language="nix">
153153boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 60;
154154</programlisting>
155155 <para>
···171171 Sets were introduced above. They are name/value pairs enclosed
172172 in braces, as in the option definition
173173 </para>
174174- <programlisting language="bash">
174174+ <programlisting language="nix">
175175fileSystems."/boot" =
176176 { device = "/dev/sda1";
177177 fsType = "ext4";
···189189 The important thing to note about lists is that list elements
190190 are separated by whitespace, like this:
191191 </para>
192192- <programlisting language="bash">
192192+ <programlisting language="nix">
193193boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ];
194194</programlisting>
195195 <para>
196196 List elements can be any other type, e.g. sets:
197197 </para>
198198- <programlisting language="bash">
198198+ <programlisting language="nix">
199199swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
200200</programlisting>
201201 </listitem>
···211211 through the function argument <literal>pkgs</literal>. Typical
212212 uses:
213213 </para>
214214- <programlisting language="bash">
214214+ <programlisting language="nix">
215215environment.systemPackages =
216216 [ pkgs.thunderbird
217217 pkgs.emacs
···2222 a dependency on GTK 2. If you want to build it against GTK 3, you
2323 can specify that as follows:
2424 </para>
2525- <programlisting language="bash">
2525+ <programlisting language="nix">
2626environment.systemPackages = [ (pkgs.emacs.override { gtk = pkgs.gtk3; }) ];
2727</programlisting>
2828 <para>
···4646 the package, such as the source code. For instance, if you want to
4747 override the source code of Emacs, you can say:
4848 </para>
4949- <programlisting language="bash">
4949+ <programlisting language="nix">
5050environment.systemPackages = [
5151 (pkgs.emacs.overrideAttrs (oldAttrs: {
5252 name = "emacs-25.0-pre";
···7272 everything depend on your customised instance, you can apply a
7373 <emphasis>global</emphasis> override as follows:
7474 </para>
7575- <programlisting language="bash">
7575+ <programlisting language="nix">
7676nixpkgs.config.packageOverrides = pkgs:
7777 { emacs = pkgs.emacs.override { gtk = pkgs.gtk3; };
7878 };
···77 adding the following line to <literal>configuration.nix</literal>
88 enables the Mozilla Thunderbird email application:
99 </para>
1010- <programlisting language="bash">
1010+ <programlisting language="nix">
1111environment.systemPackages = [ pkgs.thunderbird ];
1212</programlisting>
1313 <para>
···66 both IPv4 and IPv6 traffic. It is enabled by default. It can be
77 disabled as follows:
88 </para>
99- <programlisting language="bash">
99+ <programlisting language="nix">
1010networking.firewall.enable = false;
1111</programlisting>
1212 <para>
1313 If the firewall is enabled, you can open specific TCP ports to the
1414 outside world:
1515 </para>
1616- <programlisting language="bash">
1616+ <programlisting language="nix">
1717networking.firewall.allowedTCPPorts = [ 80 443 ];
1818</programlisting>
1919 <para>
···2626 <para>
2727 To open ranges of TCP ports:
2828 </para>
2929- <programlisting language="bash">
2929+ <programlisting language="nix">
3030networking.firewall.allowedTCPPortRanges = [
3131 { from = 4000; to = 4007; }
3232 { from = 8000; to = 8010; }
···6262 <xref linkend="opt-hardware.opengl.extraPackages" /> enables
6363 OpenCL support:
6464 </para>
6565- <programlisting language="bash">
6565+ <programlisting language="nix">
6666hardware.opengl.extraPackages = [
6767 rocm-opencl-icd
6868];
···8585 enable OpenCL support. For example, for Gen8 and later GPUs, the
8686 following configuration can be used:
8787 </para>
8888- <programlisting language="bash">
8888+ <programlisting language="nix">
8989hardware.opengl.extraPackages = [
9090 intel-compute-runtime
9191];
···162162 makes amdvlk the default driver and hides radv and lavapipe from
163163 the device list. A specific driver can be forced as follows:
164164 </para>
165165- <programlisting language="bash">
165165+ <programlisting language="nix">
166166hardware.opengl.extraPackages = [
167167 pkgs.amdvlk
168168];
···206206 Modern Intel GPUs use the iHD driver, which can be installed
207207 with:
208208 </para>
209209- <programlisting language="bash">
209209+ <programlisting language="nix">
210210hardware.opengl.extraPackages = [
211211 intel-media-driver
212212];
···215215 Older Intel GPUs use the i965 driver, which can be installed
216216 with:
217217 </para>
218218- <programlisting language="bash">
218218+ <programlisting language="nix">
219219hardware.opengl.extraPackages = [
220220 vaapiIntel
221221];
···66 interfaces. However, you can configure an interface manually as
77 follows:
88 </para>
99- <programlisting language="bash">
99+ <programlisting language="nix">
1010networking.interfaces.eth0.ipv4.addresses = [ {
1111 address = "192.168.1.2";
1212 prefixLength = 24;
···1616 Typically you’ll also want to set a default gateway and set of name
1717 servers:
1818 </para>
1919- <programlisting language="bash">
1919+ <programlisting language="nix">
2020networking.defaultGateway = "192.168.1.1";
2121networking.nameservers = [ "8.8.8.8" ];
2222</programlisting>
···3232 The host name is set using
3333 <xref linkend="opt-networking.hostName" />:
3434 </para>
3535- <programlisting language="bash">
3535+ <programlisting language="nix">
3636networking.hostName = "cartman";
3737</programlisting>
3838 <para>
···1010 <xref linkend="opt-networking.interfaces._name_.tempAddress" />. You
1111 can disable IPv6 support globally by setting:
1212 </para>
1313- <programlisting language="bash">
1313+ <programlisting language="nix">
1414networking.enableIPv6 = false;
1515</programlisting>
1616 <para>
1717 You can disable IPv6 on a single interface using a normal sysctl (in
1818 this example, we use interface <literal>eth0</literal>):
1919 </para>
2020- <programlisting language="bash">
2020+ <programlisting language="nix">
2121boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true;
2222</programlisting>
2323 <para>
2424 As with IPv4 networking interfaces are automatically configured via
2525 DHCPv6. You can configure an interface manually:
2626 </para>
2727- <programlisting language="bash">
2727+ <programlisting language="nix">
2828networking.interfaces.eth0.ipv6.addresses = [ {
2929 address = "fe00:aa:bb:cc::2";
3030 prefixLength = 64;
···3434 For configuring a gateway, optionally with explicitly specified
3535 interface:
3636 </para>
3737- <programlisting language="bash">
3737+ <programlisting language="nix">
3838networking.defaultGateway6 = {
3939 address = "fe00::1";
4040 interface = "enp0s3";
···1010 way is to enable and configure cluster components appropriately by
1111 hand:
1212 </para>
1313- <programlisting language="bash">
1313+ <programlisting language="nix">
1414services.kubernetes = {
1515 apiserver.enable = true;
1616 controllerManager.enable = true;
···2121};
2222</programlisting>
2323 <para>
2424- Another way is to assign cluster roles ("master" and/or
2525- "node") to the host. This enables apiserver,
2424+ Another way is to assign cluster roles (<quote>master</quote> and/or
2525+ <quote>node</quote>) to the host. This enables apiserver,
2626 controllerManager, scheduler, addonManager, kube-proxy and etcd:
2727 </para>
2828- <programlisting language="bash">
2828+ <programlisting language="nix">
2929services.kubernetes.roles = [ "master" ];
3030</programlisting>
3131 <para>
3232 While this will enable the kubelet and kube-proxy only:
3333 </para>
3434- <programlisting language="bash">
3434+ <programlisting language="nix">
3535services.kubernetes.roles = [ "node" ];
3636</programlisting>
3737 <para>
3838 Assigning both the master and node roles is usable if you want a
3939 single node Kubernetes cluster for dev or testing purposes:
4040 </para>
4141- <programlisting language="bash">
4141+ <programlisting language="nix">
4242services.kubernetes.roles = [ "master" "node" ];
4343</programlisting>
4444 <para>
···44 To facilitate network configuration, some desktop environments use
55 NetworkManager. You can enable NetworkManager by setting:
66 </para>
77- <programlisting language="bash">
77+ <programlisting language="nix">
88networking.networkmanager.enable = true;
99</programlisting>
1010 <para>
···1515 All users that should have permission to change network settings
1616 must belong to the <literal>networkmanager</literal> group:
1717 </para>
1818- <programlisting language="bash">
1818+ <programlisting language="nix">
1919users.users.alice.extraGroups = [ "networkmanager" ];
2020</programlisting>
2121 <para>
···3636 used together if desired. To do this you need to instruct
3737 NetworkManager to ignore those interfaces like:
3838 </para>
3939- <programlisting language="bash">
3939+ <programlisting language="nix">
4040networking.networkmanager.unmanaged = [
4141 "*" "except:type:wwan" "except:type:gsm"
4242];
···44 In some cases, it may be desirable to take advantage of
55 commonly-used, predefined configurations provided by nixpkgs, but
66 different from those that come as default. This is a role fulfilled
77- by NixOS's Profiles, which come as files living in
77+ by NixOS’s Profiles, which come as files living in
88 <literal><nixpkgs/nixos/modules/profiles></literal>. That is
99 to say, expected usage is to add them to the imports list of your
1010 <literal>/etc/configuration.nix</literal> as such:
1111 </para>
1212- <programlisting language="bash">
1212+ <programlisting language="nix">
1313imports = [
1414 <nixpkgs/nixos/modules/profiles/profile-name.nix>
1515];
···33 <para>
44 Secure shell (SSH) access to your machine can be enabled by setting:
55 </para>
66- <programlisting language="bash">
66+ <programlisting language="nix">
77services.openssh.enable = true;
88</programlisting>
99 <para>
···1616 You can declaratively specify authorised RSA/DSA public keys for a
1717 user as follows:
1818 </para>
1919- <programlisting language="bash">
1919+ <programlisting language="nix">
2020users.users.alice.openssh.authorizedKeys.keys =
2121 [ "ssh-dss AAAAB3NzaC1kc3MAAACBAPIkGWVEt4..." ];
2222</programlisting>
···5454 <link linkend="opt-fileSystems">fileSystems</link> option. Here’s
5555 a typical setup:
5656 </para>
5757- <programlisting language="bash">
5757+ <programlisting language="nix">
5858{
5959 system.fsPackages = [ pkgs.sshfs ];
6060···8080 well, for example you can change the default SSH port or specify a
8181 jump proxy:
8282 </para>
8383- <programlisting language="bash">
8383+ <programlisting language="nix">
8484{
8585 options =
8686 [ "ProxyJump=bastion@example.com"
···9292 It’s also possible to change the <literal>ssh</literal> command
9393 used by SSHFS to connect to the server. For example:
9494 </para>
9595- <programlisting language="bash">
9595+ <programlisting language="nix">
9696{
9797 options =
9898 [ (builtins.replaceStrings [" "] ["\\040"]
···77 states that a user account named <literal>alice</literal> shall
88 exist:
99 </para>
1010- <programlisting language="bash">
1010+ <programlisting language="nix">
1111users.users.alice = {
1212 isNormalUser = true;
1313 home = "/home/alice";
···3636 <xref linkend="opt-users.users" /> and run nixos-rebuild, the user
3737 account will cease to exist. Also, imperative commands for managing
3838 users and groups, such as useradd, are no longer available.
3939- Passwords may still be assigned by setting the user's
3939+ Passwords may still be assigned by setting the user’s
4040 <link linkend="opt-users.users._name_.hashedPassword">hashedPassword</link>
4141 option. A hashed password can be generated using
4242 <literal>mkpasswd</literal>.
···4545 A user ID (uid) is assigned automatically. You can also specify a
4646 uid manually by adding
4747 </para>
4848- <programlisting language="bash">
4848+ <programlisting language="nix">
4949uid = 1000;
5050</programlisting>
5151 <para>
···5555 Groups can be specified similarly. The following states that a group
5656 named <literal>students</literal> shall exist:
5757 </para>
5858- <programlisting language="bash">
5858+ <programlisting language="nix">
5959users.groups.students.gid = 1000;
6060</programlisting>
6161 <para>
···55 display technology on NixOS, Wayland support is steadily improving.
66 Where X11 separates the X Server and the window manager, on Wayland
77 those are combined: a Wayland Compositor is like an X11 window
88- manager, but also embeds the Wayland 'Server' functionality. This
99- means it is sufficient to install a Wayland Compositor such as sway
1010- without separately enabling a Wayland server:
88+ manager, but also embeds the Wayland <quote>Server</quote>
99+ functionality. This means it is sufficient to install a Wayland
1010+ Compositor such as sway without separately enabling a Wayland
1111+ server:
1112 </para>
1212- <programlisting language="bash">
1313+ <programlisting language="nix">
1314programs.sway.enable = true;
1415</programlisting>
1516 <para>
···2122 be able to share your screen, you might want to activate this
2223 option:
2324 </para>
2424- <programlisting language="bash">
2525+ <programlisting language="nix">
2526xdg.portal.wlr.enable = true;
2627</programlisting>
2728 <para>
···44 The X Window System (X11) provides the basis of NixOS’ graphical
55 user interface. It can be enabled as follows:
66 </para>
77- <programlisting language="bash">
77+ <programlisting language="nix">
88services.xserver.enable = true;
99</programlisting>
1010 <para>
···1313 and <literal>intel</literal>). You can also specify a driver
1414 manually, e.g.
1515 </para>
1616- <programlisting language="bash">
1616+ <programlisting language="nix">
1717services.xserver.videoDrivers = [ "r128" ];
1818</programlisting>
1919 <para>
···2525 <literal>xterm</literal> window. Thus you should pick one or more of
2626 the following lines:
2727 </para>
2828- <programlisting language="bash">
2828+ <programlisting language="nix">
2929services.xserver.desktopManager.plasma5.enable = true;
3030services.xserver.desktopManager.xfce.enable = true;
3131services.xserver.desktopManager.gnome.enable = true;
···4242 LightDM. You can select an alternative one by picking one of the
4343 following lines:
4444 </para>
4545- <programlisting language="bash">
4545+ <programlisting language="nix">
4646services.xserver.displayManager.sddm.enable = true;
4747services.xserver.displayManager.gdm.enable = true;
4848</programlisting>
4949 <para>
5050 You can set the keyboard layout (and optionally the layout variant):
5151 </para>
5252- <programlisting language="bash">
5252+ <programlisting language="nix">
5353services.xserver.layout = "de";
5454services.xserver.xkbVariant = "neo";
5555</programlisting>
···5757 The X server is started automatically at boot time. If you don’t
5858 want this to happen, you can set:
5959 </para>
6060- <programlisting language="bash">
6060+ <programlisting language="nix">
6161services.xserver.autorun = false;
6262</programlisting>
6363 <para>
···7070 On 64-bit systems, if you want OpenGL for 32-bit programs such as in
7171 Wine, you should also set the following:
7272 </para>
7373- <programlisting language="bash">
7373+ <programlisting language="nix">
7474hardware.opengl.driSupport32Bit = true;
7575</programlisting>
7676 <section xml:id="sec-x11-auto-login">
···8888 <para>
8989 To enable auto-login, you need to define your default window
9090 manager and desktop environment. If you wanted no desktop
9191- environment and i3 as your your window manager, you'd define:
9191+ environment and i3 as your your window manager, you’d define:
9292 </para>
9393- <programlisting language="bash">
9393+ <programlisting language="nix">
9494services.xserver.displayManager.defaultSession = "none+i3";
9595</programlisting>
9696 <para>
9797 Every display manager in NixOS supports auto-login, here is an
9898 example using lightdm for a user <literal>alice</literal>:
9999 </para>
100100- <programlisting language="bash">
100100+ <programlisting language="nix">
101101services.xserver.displayManager.lightdm.enable = true;
102102services.xserver.displayManager.autoLogin.enable = true;
103103services.xserver.displayManager.autoLogin.user = "alice";
···122122 <para>
123123 The second driver, <literal>intel</literal>, is specific to Intel
124124 GPUs, but not recommended by most distributions: it lacks several
125125- modern features (for example, it doesn't support Glamor) and the
126126- package hasn't been officially updated since 2015.
125125+ modern features (for example, it doesn’t support Glamor) and the
126126+ package hasn’t been officially updated since 2015.
127127 </para>
128128 <para>
129129 The results vary depending on the hardware, so you may have to try
···131131 <xref linkend="opt-services.xserver.videoDrivers" /> to set one.
132132 The recommended configuration for modern systems is:
133133 </para>
134134- <programlisting language="bash">
134134+ <programlisting language="nix">
135135services.xserver.videoDrivers = [ "modesetting" ];
136136</programlisting>
137137 <para>
138138 If you experience screen tearing no matter what, this
139139 configuration was reported to resolve the issue:
140140 </para>
141141- <programlisting language="bash">
141141+ <programlisting language="nix">
142142services.xserver.videoDrivers = [ "intel" ];
143143services.xserver.deviceSection = ''
144144 Option "DRI" "2"
···159159 enabled by default because it’s not free software. You can enable
160160 it as follows:
161161 </para>
162162- <programlisting language="bash">
162162+ <programlisting language="nix">
163163services.xserver.videoDrivers = [ "nvidia" ];
164164</programlisting>
165165 <para>
166166 Or if you have an older card, you may have to use one of the
167167 legacy drivers:
168168 </para>
169169- <programlisting language="bash">
169169+ <programlisting language="nix">
170170services.xserver.videoDrivers = [ "nvidiaLegacy390" ];
171171services.xserver.videoDrivers = [ "nvidiaLegacy340" ];
172172services.xserver.videoDrivers = [ "nvidiaLegacy304" ];
···181181 <para>
182182 AMD provides a proprietary driver for its graphics cards that is
183183 not enabled by default because it’s not Free Software, is often
184184- broken in nixpkgs and as of this writing doesn't offer more
184184+ broken in nixpkgs and as of this writing doesn’t offer more
185185 features or performance. If you still want to use it anyway, you
186186 need to explicitly set:
187187 </para>
188188- <programlisting language="bash">
188188+ <programlisting language="nix">
189189services.xserver.videoDrivers = [ "amdgpu-pro" ];
190190</programlisting>
191191 <para>
···199199 Support for Synaptics touchpads (found in many laptops such as the
200200 Dell Latitude series) can be enabled as follows:
201201 </para>
202202- <programlisting language="bash">
202202+ <programlisting language="nix">
203203services.xserver.libinput.enable = true;
204204</programlisting>
205205 <para>
206206 The driver has many options (see <xref linkend="ch-options" />).
207207 For instance, the following disables tap-to-click behavior:
208208 </para>
209209- <programlisting language="bash">
209209+ <programlisting language="nix">
210210services.xserver.libinput.touchpad.tapping = false;
211211</programlisting>
212212 <para>
···222222 applications look similar to GTK ones, you can use the following
223223 configuration:
224224 </para>
225225- <programlisting language="bash">
225225+ <programlisting language="nix">
226226qt5.enable = true;
227227qt5.platformTheme = "gtk2";
228228qt5.style = "gtk2";
···244244 <para>
245245 Create a file called <literal>us-greek</literal> with the
246246 following content (under a directory called
247247- <literal>symbols</literal>; it's an XKB peculiarity that will help
247247+ <literal>symbols</literal>; it’s an XKB peculiarity that will help
248248 with testing):
249249 </para>
250250- <programlisting language="bash">
250250+ <programlisting language="nix">
251251xkb_symbols "us-greek"
252252{
253253 include "us(basic)" // includes the base US keys
···263263 <para>
264264 A minimal layout specification must include the following:
265265 </para>
266266- <programlisting language="bash">
266266+ <programlisting language="nix">
267267services.xserver.extraLayouts.us-greek = {
268268 description = "US layout with alt-gr greek";
269269 languages = [ "eng" ];
···279279 <para>
280280 Applying this customization requires rebuilding several packages,
281281 and a broken XKB file can lead to the X session crashing at login.
282282- Therefore, you're strongly advised to <emphasis role="strong">test
282282+ Therefore, you’re strongly advised to <emphasis role="strong">test
283283 your layout before applying it</emphasis>:
284284 </para>
285285 <programlisting>
···312312 interest, then create a <literal>media-key</literal> file to hold
313313 the keycodes definitions
314314 </para>
315315- <programlisting language="bash">
315315+ <programlisting language="nix">
316316xkb_keycodes "media"
317317{
318318 <volUp> = 123;
···322322 <para>
323323 Now use the newly define keycodes in <literal>media-sym</literal>:
324324 </para>
325325- <programlisting language="bash">
325325+ <programlisting language="nix">
326326xkb_symbols "media"
327327{
328328 key.type = "ONE_LEVEL";
···333333 <para>
334334 As before, to install the layout do
335335 </para>
336336- <programlisting language="bash">
336336+ <programlisting language="nix">
337337services.xserver.extraLayouts.media = {
338338 description = "Multimedia keys remapping";
339339 languages = [ "eng" ];
···352352 <para>
353353 Unfortunately, the Xorg server does not (currently) support
354354 setting a keymap directly but relies instead on XKB rules to
355355- select the matching components (keycodes, types, ...) of a layout.
356356- This means that components other than symbols won't be loaded by
355355+ select the matching components (keycodes, types, …) of a layout.
356356+ This means that components other than symbols won’t be loaded by
357357 default. As a workaround, you can set the keymap using
358358 <literal>setxkbmap</literal> at the start of the session with:
359359 </para>
360360- <programlisting language="bash">
360360+ <programlisting language="nix">
361361services.xserver.displayManager.sessionCommands = "setxkbmap -keycodes media";
362362</programlisting>
363363 <para>
364364 If you are manually starting the X server, you should set the
365365 argument <literal>-xkbdir /etc/X11/xkb</literal>, otherwise X
366366- won't find your layout files. For example with
366366+ won’t find your layout files. For example with
367367 <literal>xinit</literal> run
368368 </para>
369369 <programlisting>
···33 <para>
44 To enable the Xfce Desktop Environment, set
55 </para>
66- <programlisting language="bash">
66+ <programlisting language="nix">
77services.xserver.desktopManager.xfce.enable = true;
88services.xserver.displayManager.defaultSession = "xfce";
99</programlisting>
···1111 Optionally, <emphasis>picom</emphasis> can be enabled for nice
1212 graphical effects, some example settings:
1313 </para>
1414- <programlisting language="bash">
1414+ <programlisting language="nix">
1515services.picom = {
1616 enable = true;
1717 fade = true;
···3636 <xref linkend="opt-environment.systemPackages" />.
3737 </para>
3838 <para>
3939- If you'd like to add extra plugins to Thunar, add them to
4040- <xref linkend="opt-programs.thunar.plugins" />. You shouldn't just
3939+ If you’d like to add extra plugins to Thunar, add them to
4040+ <xref linkend="opt-programs.thunar.plugins" />. You shouldn’t just
4141 add them to <xref linkend="opt-environment.systemPackages" />.
4242 </para>
4343 </section>
···5454</programlisting>
5555 <para>
5656 This is caused by some needed GNOME services not running. This is
5757- all fixed by enabling "Launch GNOME services on startup"
5858- in the Advanced tab of the Session and Startup settings panel.
5959- Alternatively, you can run this command to do the same thing.
5757+ all fixed by enabling <quote>Launch GNOME services on
5858+ startup</quote> in the Advanced tab of the Session and Startup
5959+ settings panel. Alternatively, you can run this command to do the
6060+ same thing.
6061 </para>
6162 <programlisting>
6263$ xfconf-query -c xfce4-session -p /compat/LaunchGNOME -s true
···1818 <para>
1919 This is an example of using <literal>warnings</literal>.
2020 </para>
2121- <programlisting language="bash">
2121+ <programlisting language="nix">
2222{ config, lib, ... }:
2323{
2424 config = lib.mkIf config.services.foo.enable {
···4242 assertion is useful to prevent such a broken system from being
4343 built.
4444 </para>
4545- <programlisting language="bash">
4545+ <programlisting language="nix">
4646{ config, lib, ... }:
4747{
4848 config = lib.mkIf config.services.syslogd.enable {
···3030 type-checked <literal>settings</literal> attribute</link> for a more
3131 complete example.
3232 </para>
3333- <programlisting language="bash">
3333+ <programlisting language="nix">
3434{ lib, config, ... }: {
35353636 options.settings = lib.mkOption {
···5252 <para>
5353 And the following shows what such a module then allows
5454 </para>
5555- <programlisting language="bash">
5555+ <programlisting language="nix">
5656{
5757 # Not a declared option, but the freeform type allows this
5858 settings.logLevel = "debug";
···7272 Freeform attributes cannot depend on other attributes of the same
7373 set without infinite recursion:
7474 </para>
7575- <programlisting language="bash">
7575+ <programlisting language="nix">
7676{
7777 # This throws infinite recursion encountered
7878 settings.logLevel = lib.mkIf (config.settings.port == 80) "debug";
···1515 Each of the meta-attributes must be defined at most once per module
1616 file.
1717 </para>
1818- <programlisting language="bash">
1818+ <programlisting language="nix">
1919{ config, lib, pkgs, ... }:
2020{
2121 options = {
···44 Option definitions are generally straight-forward bindings of values
55 to option names, like
66 </para>
77- <programlisting language="bash">
77+ <programlisting language="nix">
88config = {
99 services.httpd.enable = true;
1010};
···2121 another option, you may need to use <literal>mkIf</literal>.
2222 Consider, for instance:
2323 </para>
2424- <programlisting language="bash">
2424+ <programlisting language="nix">
2525config = if config.services.httpd.enable then {
2626 environment.systemPackages = [ ... ];
2727 ...
···3434 value being constructed here. After all, you could also write the
3535 clearly circular and contradictory:
3636 </para>
3737- <programlisting language="bash">
3737+ <programlisting language="nix">
3838config = if config.services.httpd.enable then {
3939 services.httpd.enable = false;
4040} else {
···4444 <para>
4545 The solution is to write:
4646 </para>
4747- <programlisting language="bash">
4747+ <programlisting language="nix">
4848config = mkIf config.services.httpd.enable {
4949 environment.systemPackages = [ ... ];
5050 ...
···5555 of the conditional to be <quote>pushed down</quote> into the
5656 individual definitions, as if you had written:
5757 </para>
5858- <programlisting language="bash">
5858+ <programlisting language="nix">
5959config = {
6060 environment.systemPackages = if config.services.httpd.enable then [ ... ] else [];
6161 ...
···7272 option defaults have priority 1500. You can specify an explicit
7373 priority by using <literal>mkOverride</literal>, e.g.
7474 </para>
7575- <programlisting language="bash">
7575+ <programlisting language="nix">
7676services.openssh.enable = mkOverride 10 false;
7777</programlisting>
7878 <para>
···9494 <literal>mkOrder 500</literal> and
9595 <literal>mkOrder 1500</literal>, respectively. As an example,
9696 </para>
9797- <programlisting language="bash">
9797+ <programlisting language="nix">
9898hardware.firmware = mkBefore [ myFirmware ];
9999</programlisting>
100100 <para>
···117117 to be merged together as if they were declared in separate
118118 modules. This can be done using <literal>mkMerge</literal>:
119119 </para>
120120- <programlisting language="bash">
120120+ <programlisting language="nix">
121121config = mkMerge
122122 [ # Unconditional stuff.
123123 { environment.systemPackages = [ ... ];
···8181 <para>
8282 Two definitions of this type like
8383 </para>
8484- <programlisting language="bash">
8484+ <programlisting language="nix">
8585{
8686 str = lib.mkDefault "foo";
8787 pkg.hello = pkgs.hello;
8888 fun.fun = x: x + 1;
8989}
9090</programlisting>
9191- <programlisting language="bash">
9191+ <programlisting language="nix">
9292{
9393 str = lib.mkIf true "bar";
9494 pkg.gcc = pkgs.gcc;
···9898 <para>
9999 will get merged to
100100 </para>
101101- <programlisting language="bash">
101101+ <programlisting language="nix">
102102{
103103 str = "bar";
104104 pkg.gcc = pkgs.gcc;
···152152 <warning>
153153 <para>
154154 This type will be deprecated in the future because it
155155- doesn't recurse into attribute sets, silently drops
156156- earlier attribute definitions, and doesn't discharge
155155+ doesn’t recurse into attribute sets, silently drops
156156+ earlier attribute definitions, and doesn’t discharge
157157 <literal>lib.mkDefault</literal>,
158158 <literal>lib.mkIf</literal> and co. For allowing arbitrary
159159 attribute sets, prefer
160160 <literal>types.attrsOf types.anything</literal> instead
161161- which doesn't have these problems.
161161+ which doesn’t have these problems.
162162 </para>
163163 </warning>
164164 </listitem>
···453453 <literal>_module.args</literal> should be used instead
454454 for most arguments since it allows overriding.
455455 <emphasis><literal>specialArgs</literal></emphasis>
456456- should only be used for arguments that can't go through
456456+ should only be used for arguments that can’t go through
457457 the module fixed-point, because of infinite recursion or
458458 other problems. An example is overriding the
459459 <literal>lib</literal> argument, because
···477477 instead of requiring
478478 <literal>the-submodule.config.config = "value"</literal>.
479479 This is because only when modules
480480- <emphasis>don't</emphasis> set the
480480+ <emphasis>don’t</emphasis> set the
481481 <literal>config</literal> or <literal>options</literal>
482482 keys, all keys are interpreted as option definitions in
483483 the <literal>config</literal> section. Enabling this
···668668 <varlistentry>
669669 <term>
670670 <literal>types.oneOf</literal> [
671671- <emphasis><literal>t1 t2</literal></emphasis> ... ]
671671+ <emphasis><literal>t1 t2</literal></emphasis> … ]
672672 </term>
673673 <listitem>
674674 <para>
···732732 <emphasis role="strong">Example: Directly defined
733733 submodule</emphasis>
734734 </para>
735735- <programlisting language="bash">
735735+ <programlisting language="nix">
736736options.mod = mkOption {
737737 description = "submodule example";
738738 type = with types; submodule {
···752752 <emphasis role="strong">Example: Submodule defined as a
753753 reference</emphasis>
754754 </para>
755755- <programlisting language="bash">
755755+ <programlisting language="nix">
756756let
757757 modOptions = {
758758 options = {
···787787 <emphasis role="strong">Example: Declaration of a list of
788788 submodules</emphasis>
789789 </para>
790790- <programlisting language="bash">
790790+ <programlisting language="nix">
791791options.mod = mkOption {
792792 description = "submodule example";
793793 type = with types; listOf (submodule {
···807807 <emphasis role="strong">Example: Definition of a list of
808808 submodules</emphasis>
809809 </para>
810810- <programlisting language="bash">
810810+ <programlisting language="nix">
811811config.mod = [
812812 { foo = 1; bar = "one"; }
813813 { foo = 2; bar = "two"; }
···827827 <emphasis role="strong">Example: Declaration of attribute sets of
828828 submodules</emphasis>
829829 </para>
830830- <programlisting language="bash">
830830+ <programlisting language="nix">
831831options.mod = mkOption {
832832 description = "submodule example";
833833 type = with types; attrsOf (submodule {
···847847 <emphasis role="strong">Example: Definition of attribute sets of
848848 submodules</emphasis>
849849 </para>
850850- <programlisting language="bash">
850850+ <programlisting language="nix">
851851config.mod.one = { foo = 1; bar = "one"; };
852852config.mod.two = { foo = 2; bar = "two"; };
853853</programlisting>
···878878 <emphasis role="strong">Example: Adding a type
879879 check</emphasis>
880880 </para>
881881- <programlisting language="bash">
881881+ <programlisting language="nix">
882882byte = mkOption {
883883 description = "An integer between 0 and 255.";
884884 type = types.addCheck types.int (x: x >= 0 && x <= 255);
···889889 <emphasis role="strong">Example: Overriding a type
890890 check</emphasis>
891891 </para>
892892- <programlisting language="bash">
892892+ <programlisting language="nix">
893893nixThings = mkOption {
894894 description = "words that start with 'nix'";
895895 type = types.str // {
···33 <para>
44 Modules that are imported can also be disabled. The option
55 declarations, config implementation and the imports of a disabled
66- module will be ignored, allowing another to take it's place. This
77- can be used to import a set of modules from another channel while
66+ module will be ignored, allowing another to take its place. This can
77+ be used to import a set of modules from another channel while
88 keeping the rest of the system on a stable release.
99 </para>
1010 <para>
···1919 This example will replace the existing postgresql module with the
2020 version defined in the nixos-unstable channel while keeping the rest
2121 of the modules and packages from the original nixos channel. This
2222- only overrides the module definition, this won't use postgresql from
2222+ only overrides the module definition, this won’t use postgresql from
2323 nixos-unstable unless explicitly configured to do so.
2424 </para>
2525- <programlisting language="bash">
2525+ <programlisting language="nix">
2626{ config, lib, pkgs, ... }:
27272828{
···4040 <para>
4141 This example shows how to define a custom module as a replacement
4242 for an existing module. Importing this module will disable the
4343- original module without having to know it's implementation details.
4343+ original module without having to know its implementation details.
4444 </para>
4545- <programlisting language="bash">
4545+ <programlisting language="nix">
4646{ config, lib, pkgs, ... }:
47474848with lib;
···1919 </listitem>
2020 <listitem>
2121 <para>
2222- Non-nix-representable ones: These can't be trivially mapped to a
2222+ Non-nix-representable ones: These can’t be trivially mapped to a
2323 subset of Nix syntax. Most generic programming languages are in
2424 this group, e.g. bash, since the statement
2525- <literal>if true; then echo hi; fi</literal> doesn't have a
2525+ <literal>if true; then echo hi; fi</literal> doesn’t have a
2626 trivial representation in Nix.
2727 </para>
2828 <para>
···4242 </listitem>
4343 </itemizedlist>
4444 <section xml:id="sec-settings-nix-representable">
4545- <title>Nix-representable Formats (JSON, YAML, TOML, INI,
4646- ...)</title>
4545+ <title>Nix-representable Formats (JSON, YAML, TOML, INI, …)</title>
4746 <para>
4847 By convention, formats like this are handled with a generic
4948 <literal>settings</literal> option, representing the full program
···318317 used, along with some other related best practices. See the
319318 comments for explanations.
320319 </para>
321321- <programlisting language="bash">
320320+ <programlisting language="nix">
322321{ options, config, lib, pkgs, ... }:
323322let
324323 cfg = config.services.foo;
···391390 <emphasis role="strong">Example: Declaring a type-checked
392391 <literal>settings</literal> attribute</emphasis>
393392 </para>
394394- <programlisting language="bash">
393393+ <programlisting language="nix">
395394settings = lib.mkOption {
396395 type = lib.types.submodule {
397396
···2323nix-shell$ make
2424</programlisting>
2525 <para>
2626- Once you are done making modifications to the manual, it's
2626+ Once you are done making modifications to the manual, it’s
2727 important to build it before committing. You can do that as
2828 follows:
2929 </para>
···3232 In <xref linkend="sec-configuration-syntax" />, we saw the following
3333 structure of NixOS modules:
3434 </para>
3535- <programlisting language="bash">
3535+ <programlisting language="nix">
3636{ config, pkgs, ... }:
37373838{ option definitions
···5050 <emphasis role="strong">Example: Structure of NixOS
5151 Modules</emphasis>
5252 </para>
5353- <programlisting language="bash">
5353+ <programlisting language="nix">
5454{ config, pkgs, ... }:
55555656{
···9090 This <literal>imports</literal> list enumerates the paths to
9191 other NixOS modules that should be included in the evaluation of
9292 the system configuration. A default set of modules is defined in
9393- the file <literal>modules/module-list.nix</literal>. These don't
9393+ the file <literal>modules/module-list.nix</literal>. These don’t
9494 need to be added in the import list.
9595 </para>
9696 </listitem>
···146146 <emphasis role="strong">Example: NixOS Module for the
147147 <quote>locate</quote> Service</emphasis>
148148 </para>
149149- <programlisting language="bash">
149149+ <programlisting language="nix">
150150{ config, lib, pkgs, ... }:
151151152152with lib;
···208208 <emphasis role="strong">Example: Escaping in Exec
209209 directives</emphasis>
210210 </para>
211211- <programlisting language="bash">
211211+ <programlisting language="nix">
212212{ config, lib, pkgs, utils, ... }:
213213214214with lib;
···33 <para>
44 A NixOS test is a module that has the following structure:
55 </para>
66- <programlisting language="bash">
66+ <programlisting language="nix">
77{
8899 # One or more machines:
···5858 Tests that are part of NixOS are added to
5959 <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/all-tests.nix"><literal>nixos/tests/all-tests.nix</literal></link>.
6060 </para>
6161- <programlisting language="bash">
6161+ <programlisting language="nix">
6262 hostname = runTest ./hostname.nix;
6363</programlisting>
6464 <para>
6565 Overrides can be added by defining an anonymous module in
6666 <literal>all-tests.nix</literal>.
6767 </para>
6868- <programlisting language="bash">
6868+ <programlisting language="nix">
6969 hostname = runTest {
7070 imports = [ ./hostname.nix ];
7171 defaults.networking.firewall.enable = false;
···8787 Outside the <literal>nixpkgs</literal> repository, you can
8888 instantiate the test by first importing the NixOS library,
8989 </para>
9090- <programlisting language="bash">
9090+ <programlisting language="nix">
9191let nixos-lib = import (nixpkgs + "/nixos/lib") { };
9292in
9393···255255 <listitem>
256256 <para>
257257 Return a list of different interpretations of what is
258258- currently visible on the machine's screen using optical
258258+ currently visible on the machine’s screen using optical
259259 character recognition. The number and order of the
260260 interpretations is not specified and is subject to change,
261261 but if no exception is raised at least one will be returned.
···276276 <listitem>
277277 <para>
278278 Return a textual representation of what is currently visible
279279- on the machine's screen using optical character recognition.
279279+ on the machine’s screen using optical character recognition.
280280 </para>
281281 <note>
282282 <para>
···630630 <literal>stop_job</literal>.
631631 </para>
632632 <para>
633633- For faster dev cycles it's also possible to disable the
634634- code-linters (this shouldn't be committed though):
633633+ For faster dev cycles it’s also possible to disable the
634634+ code-linters (this shouldn’t be committed though):
635635 </para>
636636- <programlisting language="bash">
636636+ <programlisting language="nix">
637637{
638638 skipLint = true;
639639 nodes.machine =
···650650 <para>
651651 This will produce a Nix warning at evaluation time. To fully
652652 disable the linter, wrap the test script in comment directives to
653653- disable the Black linter directly (again, don't commit this within
653653+ disable the Black linter directly (again, don’t commit this within
654654 the Nixpkgs repository):
655655 </para>
656656- <programlisting language="bash">
656656+ <programlisting language="nix">
657657 testScript =
658658 ''
659659 # fmt: off
···665665 Similarly, the type checking of test scripts can be disabled in
666666 the following way:
667667 </para>
668668- <programlisting language="bash">
668668+ <programlisting language="nix">
669669{
670670 skipTypeCheck = true;
671671 nodes.machine =
···700700 <literal>polling_condition</literal> takes the following
701701 (optional) arguments:
702702 </para>
703703- <para>
704704- <literal>seconds_interval</literal>
705705- </para>
706706- <para>
707707- : specifies how often the condition should be polled:
708708- </para>
703703+ <variablelist>
704704+ <varlistentry>
705705+ <term>
706706+ <literal>seconds_interval</literal>
707707+ </term>
708708+ <listitem>
709709+ <para>
710710+ specifies how often the condition should be polled:
711711+ </para>
712712+ </listitem>
713713+ </varlistentry>
714714+ </variablelist>
709715 <programlisting language="python">
710716@polling_condition(seconds_interval=10)
711717def foo_running():
712718 machine.succeed("pgrep -x foo")
713719</programlisting>
714714- <para>
715715- <literal>description</literal>
716716- </para>
717717- <para>
718718- : is used in the log when the condition is checked. If this is not
719719- provided, the description is pulled from the docstring of the
720720- function. These two are therefore equivalent:
721721- </para>
720720+ <variablelist>
721721+ <varlistentry>
722722+ <term>
723723+ <literal>description</literal>
724724+ </term>
725725+ <listitem>
726726+ <para>
727727+ is used in the log when the condition is checked. If this is
728728+ not provided, the description is pulled from the docstring
729729+ of the function. These two are therefore equivalent:
730730+ </para>
731731+ </listitem>
732732+ </varlistentry>
733733+ </variablelist>
722734 <programlisting language="python">
723735@polling_condition
724736def foo_running():
···739751 <literal>extraPythonPackages</literal>. For example, you could add
740752 <literal>numpy</literal> like this:
741753 </para>
742742- <programlisting language="bash">
754754+ <programlisting language="nix">
743755{
744756 extraPythonPackages = p: [ p.numpy ];
745757
···1616 </para>
1717 <warning>
1818 <para>
1919- This command doesn't start/stop
1919+ This command doesn’t start/stop
2020 <link linkend="opt-systemd.user.services">user services</link>
2121 automatically. <literal>nixos-rebuild</literal> only runs a
2222 <literal>daemon-reload</literal> for each user with running user
···6464 <para>
6565 which causes the new configuration (and previous ones created using
6666 <literal>-p test</literal>) to show up in the GRUB submenu
6767- <quote>NixOS - Profile 'test'</quote>. This can be useful to
6868- separate test configurations from <quote>stable</quote>
6767+ <quote>NixOS - Profile <quote>test</quote></quote>. This can be
6868+ useful to separate test configurations from <quote>stable</quote>
6969 configurations.
7070 </para>
7171 <para>
···9494 unless you have set <literal>mutableUsers = false</literal>. Another
9595 way is to temporarily add the following to your configuration:
9696 </para>
9797- <programlisting language="bash">
9797+ <programlisting language="nix">
9898users.users.your-user.initialHashedPassword = "test";
9999</programlisting>
100100 <para>
···5353 Switch to the NixOS channel:
5454 </para>
5555 <para>
5656- If you've just installed Nix on a non-NixOS distribution, you
5656+ If you’ve just installed Nix on a non-NixOS distribution, you
5757 will be on the <literal>nixpkgs</literal> channel by default.
5858 </para>
5959 <programlisting>
···7878 Install the NixOS installation tools:
7979 </para>
8080 <para>
8181- You'll need <literal>nixos-generate-config</literal> and
8181+ You’ll need <literal>nixos-generate-config</literal> and
8282 <literal>nixos-install</literal>, but this also makes some man
8383 pages and <literal>nixos-enter</literal> available, just in case
8484 you want to chroot into your NixOS partition. NixOS installs
8585- these by default, but you don't have NixOS yet..
8585+ these by default, but you don’t have NixOS yet..
8686 </para>
8787 <programlisting>
8888$ nix-env -f '<nixpkgs>' -iA nixos-install-tools
···105105 mounting steps of <xref linkend="sec-installation" />
106106 </para>
107107 <para>
108108- If you're about to install NixOS in place using
108108+ If you’re about to install NixOS in place using
109109 <literal>NIXOS_LUSTRATE</literal> there is nothing to do for
110110 this step.
111111 </para>
···118118$ sudo `which nixos-generate-config` --root /mnt
119119</programlisting>
120120 <para>
121121- You'll probably want to edit the configuration files. Refer to
121121+ You’ll probably want to edit the configuration files. Refer to
122122 the <literal>nixos-generate-config</literal> step in
123123 <xref linkend="sec-installation" /> for more information.
124124 </para>
125125 <para>
126126 Consider setting up the NixOS bootloader to give you the ability
127127 to boot on your existing Linux partition. For instance, if
128128- you're using GRUB and your existing distribution is running
128128+ you’re using GRUB and your existing distribution is running
129129 Ubuntu, you may want to add something like this to your
130130 <literal>configuration.nix</literal>:
131131 </para>
132132- <programlisting language="bash">
132132+ <programlisting language="nix">
133133boot.loader.grub.extraEntries = ''
134134 menuentry "Ubuntu" {
135135 search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e
···215215</programlisting>
216216 <para>
217217 Note that this will place the generated configuration files in
218218- <literal>/etc/nixos</literal>. You'll probably want to edit the
218218+ <literal>/etc/nixos</literal>. You’ll probably want to edit the
219219 configuration files. Refer to the
220220 <literal>nixos-generate-config</literal> step in
221221 <xref linkend="sec-installation" /> for more information.
222222 </para>
223223 <para>
224224- You'll likely want to set a root password for your first boot
225225- using the configuration files because you won't have a chance to
224224+ You’ll likely want to set a root password for your first boot
225225+ using the configuration files because you won’t have a chance to
226226 enter a password until after you reboot. You can initialize the
227227 root password to an empty one with this line: (and of course
228228- don't forget to set one once you've rebooted or to lock the
228228+ don’t forget to set one once you’ve rebooted or to lock the
229229 account with <literal>sudo passwd -l root</literal> if you use
230230 <literal>sudo</literal>)
231231 </para>
232232- <programlisting language="bash">
232232+ <programlisting language="nix">
233233users.users.root.initialHashedPassword = "";
234234</programlisting>
235235 </listitem>
···262262 </para>
263263 <para>
264264 <literal>/etc/NIXOS_LUSTRATE</literal> tells the NixOS bootup
265265- scripts to move <emphasis>everything</emphasis> that's in the
265265+ scripts to move <emphasis>everything</emphasis> that’s in the
266266 root partition to <literal>/old-root</literal>. This will move
267267 your existing distribution out of the way in the very early
268268 stages of the NixOS bootup. There are exceptions (we do need to
···290290 <note>
291291 <para>
292292 Support for <literal>NIXOS_LUSTRATE</literal> was added in
293293- NixOS 16.09. The act of "lustrating" refers to the
294294- wiping of the existing distribution. Creating
293293+ NixOS 16.09. The act of <quote>lustrating</quote> refers to
294294+ the wiping of the existing distribution. Creating
295295 <literal>/etc/NIXOS_LUSTRATE</literal> can also be used on
296296 NixOS to remove all mutable files from your root partition
297297- (anything that's not in <literal>/nix</literal> or
298298- <literal>/boot</literal> gets "lustrated" on the
297297+ (anything that’s not in <literal>/nix</literal> or
298298+ <literal>/boot</literal> gets <quote>lustrated</quote> on the
299299 next boot.
300300 </para>
301301 <para>
···307307 </para>
308308 </note>
309309 <para>
310310- Let's create the files:
310310+ Let’s create the files:
311311 </para>
312312 <programlisting>
313313$ sudo touch /etc/NIXOS
314314$ sudo touch /etc/NIXOS_LUSTRATE
315315</programlisting>
316316 <para>
317317- Let's also make sure the NixOS configuration files are kept once
317317+ Let’s also make sure the NixOS configuration files are kept once
318318 we reboot on NixOS:
319319 </para>
320320 <programlisting>
···331331 <warning>
332332 <para>
333333 Once you complete this step, your current distribution will no
334334- longer be bootable! If you didn't get all the NixOS
334334+ longer be bootable! If you didn’t get all the NixOS
335335 configuration right, especially those settings pertaining to
336336 boot loading and root partition, NixOS may not be bootable
337337 either. Have a USB rescue device ready in case this happens.
···349349 <listitem>
350350 <para>
351351 If for some reason you want to revert to the old distribution,
352352- you'll need to boot on a USB rescue disk and do something along
352352+ you’ll need to boot on a USB rescue disk and do something along
353353 these lines:
354354 </para>
355355 <programlisting>
···367367 loader.
368368 </para>
369369 <para>
370370- And of course, if you're happy with NixOS and no longer need the
370370+ And of course, if you’re happy with NixOS and no longer need the
371371 old distribution:
372372 </para>
373373 <programlisting>
···376376 </listitem>
377377 <listitem>
378378 <para>
379379- It's also worth noting that this whole process can be automated.
379379+ It’s also worth noting that this whole process can be automated.
380380 This is especially useful for Cloud VMs, where provider do not
381381 provide NixOS. For instance,
382382 <link xlink:href="https://github.com/elitak/nixos-infect">nixos-infect</link>
···5454 running Linux Distribution.
5555 </para>
5656 <para>
5757- Note it’s symlinks pointing elsewhere, so <literal>cd</literal> in,
5757+ Note its symlinks pointing elsewhere, so <literal>cd</literal> in,
5858 and use <literal>scp * root@$destination</literal> to copy it over,
5959 rather than rsync.
6060 </para>
···6969 instead of the default installer image, you can build your own
7070 <literal>configuration.nix</literal>:
7171 </para>
7272- <programlisting language="bash">
7272+ <programlisting language="nix">
7373{ modulesPath, ... }: {
7474 imports = [
7575 (modulesPath + "/installer/netboot/netboot-minimal.nix")
···110110sudo dd if=<path-to-image> of=/dev/rdiskX bs=4m
111111</programlisting>
112112 <para>
113113- After <literal>dd</literal> completes, a GUI dialog "The disk
114114- you inserted was not readable by this computer" will pop up,
115115- which can be ignored.
113113+ After <literal>dd</literal> completes, a GUI dialog <quote>The
114114+ disk you inserted was not readable by this computer</quote> will
115115+ pop up, which can be ignored.
116116 </para>
117117 <note>
118118 <para>
119119- Using the 'raw' <literal>rdiskX</literal> device instead of
120120- <literal>diskX</literal> with dd completes in minutes instead of
121121- hours.
119119+ Using the <quote>raw</quote> <literal>rdiskX</literal> device
120120+ instead of <literal>diskX</literal> with dd completes in minutes
121121+ instead of hours.
122122 </para>
123123 </note>
124124 <orderedlist numeration="arabic" spacing="compact">
···1111 <orderedlist numeration="arabic">
1212 <listitem>
1313 <para>
1414- Add a New Machine in VirtualBox with OS Type "Linux / Other
1515- Linux"
1414+ Add a New Machine in VirtualBox with OS Type <quote>Linux /
1515+ Other Linux</quote>
1616 </para>
1717 </listitem>
1818 <listitem>
···3838 <listitem>
3939 <para>
4040 Click on Settings / System / Acceleration and enable
4141- "VT-x/AMD-V" acceleration
4141+ <quote>VT-x/AMD-V</quote> acceleration
4242 </para>
4343 </listitem>
4444 <listitem>
···5858 There are a few modifications you should make in configuration.nix.
5959 Enable booting:
6060 </para>
6161- <programlisting language="bash">
6161+ <programlisting language="nix">
6262boot.loader.grub.device = "/dev/sda";
6363</programlisting>
6464 <para>
6565 Also remove the fsck that runs at startup. It will always fail to
6666 run, stopping your boot until you press <literal>*</literal>.
6767 </para>
6868- <programlisting language="bash">
6868+ <programlisting language="nix">
6969boot.initrd.checkJournalingFS = false;
7070</programlisting>
7171 <para>
7272 Shared folders can be given a name and a path in the host system in
7373 the VirtualBox settings (Machine / Settings / Shared Folders, then
7474- click on the "Add" icon). Add the following to the
7474+ click on the <quote>Add</quote> icon). Add the following to the
7575 <literal>/etc/nixos/configuration.nix</literal> to auto-mount them.
7676 If you do not add <literal>"nofail"</literal>, the system
7777 will not boot properly.
7878 </para>
7979- <programlisting language="bash">
7979+ <programlisting language="nix">
8080{ config, pkgs, ...} :
8181{
8282 fileSystems."/virtualboxshare" = {
···345345 <!-- legacy anchor -->
346346 </para>
347347 <para>
348348- Here's an example partition scheme for UEFI, using
348348+ Here’s an example partition scheme for UEFI, using
349349 <literal>/dev/sda</literal> as the device.
350350 </para>
351351 <note>
352352 <para>
353353- You can safely ignore <literal>parted</literal>'s
353353+ You can safely ignore <literal>parted</literal>’s
354354 informational message about needing to update /etc/fstab.
355355 </para>
356356 </note>
···415415 <!-- legacy anchor -->
416416 </para>
417417 <para>
418418- Here's an example partition scheme for Legacy Boot, using
418418+ Here’s an example partition scheme for Legacy Boot, using
419419 <literal>/dev/sda</literal> as the device.
420420 </para>
421421 <note>
422422 <para>
423423- You can safely ignore <literal>parted</literal>'s
423423+ You can safely ignore <literal>parted</literal>’s
424424 informational message about needing to update /etc/fstab.
425425 </para>
426426 </note>
···128128 You can keep a NixOS system up-to-date automatically by adding the
129129 following to <literal>configuration.nix</literal>:
130130 </para>
131131- <programlisting language="bash">
131131+ <programlisting language="nix">
132132system.autoUpgrade.enable = true;
133133system.autoUpgrade.allowReboot = true;
134134</programlisting>
···145145 contains a different kernel, initrd or kernel modules. You can
146146 also specify a channel explicitly, e.g.
147147 </para>
148148- <programlisting language="bash">
148148+ <programlisting language="nix">
149149system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11;
150150</programlisting>
151151 </section>
···7979 the NixOS configuration. For instance, if a package
8080 <literal>foo</literal> provides systemd units, you can say:
8181 </para>
8282- <programlisting language="bash">
8282+ <programlisting language="nix">
8383{
8484 systemd.packages = [ pkgs.foo ];
8585}
···8888 to enable those units. You can then set or override unit options
8989 in the usual way, e.g.
9090 </para>
9191- <programlisting language="bash">
9191+ <programlisting language="nix">
9292{
9393 systemd.services.foo.wantedBy = [ "multi-user.target" ];
9494 systemd.services.foo.serviceConfig.MemoryLimit = "512M";
···105105 NixOS configuration requires unfree packages from Nixpkgs, you
106106 need to enable support for them explicitly by setting:
107107 </para>
108108- <programlisting language="bash">
108108+ <programlisting language="nix">
109109{
110110 nixpkgs.config.allowUnfree = true;
111111}
···123123 The Adobe Flash player is no longer enabled by default in the
124124 Firefox and Chromium wrappers. To enable it, you must set:
125125 </para>
126126- <programlisting language="bash">
126126+ <programlisting language="nix">
127127{
128128 nixpkgs.config.allowUnfree = true;
129129 nixpkgs.config.firefox.enableAdobeFlash = true; # for Firefox
···136136 The firewall is now enabled by default. If you don’t want this,
137137 you need to disable it explicitly:
138138 </para>
139139- <programlisting language="bash">
139139+ <programlisting language="nix">
140140{
141141 networking.firewall.enable = false;
142142}
···370370 documentation</link> for details. If you wish to continue to use
371371 httpd 2.2, add the following line to your NixOS configuration:
372372 </para>
373373- <programlisting language="bash">
373373+ <programlisting language="nix">
374374{
375375 services.httpd.package = pkgs.apacheHttpd_2_2;
376376}
···99 <para>
1010 The <link xlink:href="http://haskell.org/">Haskell</link>
1111 packages infrastructure has been re-designed from the ground up
1212- ("Haskell NG"). NixOS now distributes the latest
1212+ (<quote>Haskell NG</quote>). NixOS now distributes the latest
1313 version of every single package registered on
1414 <link xlink:href="http://hackage.haskell.org/">Hackage</link> --
1515 well in excess of 8,000 Haskell packages. Detailed instructions
1616 on how to use that infrastructure can be found in the
1717- <link xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
1717+ <link xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User’s
1818 Guide to the Haskell Infrastructure</link>. Users migrating from
1919 an earlier release may find helpful information below, in the
2020 list of backwards-incompatible changes. Furthermore, we
···2323 Haskell</link> release since version 0.0 as well as the most
2424 recent <link xlink:href="http://www.stackage.org/">Stackage
2525 Nightly</link> snapshot. The announcement
2626- <link xlink:href="https://nixos.org/nix-dev/2015-September/018138.html">"Full
2727- Stackage Support in Nixpkgs"</link> gives additional
2626+ <link xlink:href="https://nixos.org/nix-dev/2015-September/018138.html"><quote>Full
2727+ Stackage Support in Nixpkgs</quote></link> gives additional
2828 details.
2929 </para>
3030 </listitem>
···4242 </para>
4343 </listitem>
4444 </itemizedlist>
4545- <programlisting language="bash">
4545+ <programlisting language="nix">
4646{
4747 system.autoUpgrade.enable = true;
4848}
···432432 </para>
433433 </listitem>
434434 </itemizedlist>
435435- <programlisting language="bash">
435435+ <programlisting language="nix">
436436{
437437 system.stateVersion = "14.12";
438438}
···464464 </listitem>
465465 <listitem>
466466 <para>
467467- Steam now doesn't need root rights to work. Instead of using
467467+ Steam now doesn’t need root rights to work. Instead of using
468468 <literal>*-steam-chrootenv</literal>, you should now just run
469469 <literal>steam</literal>. <literal>steamChrootEnv</literal>
470470 package was renamed to <literal>steam</literal>, and old
···523523 </para>
524524 </listitem>
525525 </itemizedlist>
526526- <programlisting language="bash">
526526+ <programlisting language="nix">
527527{
528528 fileSystems."/shiny" = {
529529 device = "myshinysharedfolder";
···534534 <itemizedlist spacing="compact">
535535 <listitem>
536536 <para>
537537- "<literal>nix-env -qa</literal>" no longer discovers
538538- Haskell packages by name. The only packages visible in the
539539- global scope are <literal>ghc</literal>,
537537+ <quote><literal>nix-env -qa</literal></quote> no longer
538538+ discovers Haskell packages by name. The only packages visible in
539539+ the global scope are <literal>ghc</literal>,
540540 <literal>cabal-install</literal>, and <literal>stack</literal>,
541541 but all other packages are hidden. The reason for this
542542 inconvenience is the sheer size of the Haskell package set.
543543 Name-based lookups are expensive, and most
544544 <literal>nix-env -qa</literal> operations would become much
545545- slower if we'd add the entire Hackage database into the top
545545+ slower if we’d add the entire Hackage database into the top
546546 level attribute set. Instead, the list of Haskell packages can
547547 be displayed by running:
548548 </para>
···566566 <para>
567567 Previous versions of NixOS came with a feature called
568568 <literal>ghc-wrapper</literal>, a small script that allowed GHC
569569- to transparently pick up on libraries installed in the user's
569569+ to transparently pick up on libraries installed in the user’s
570570 profile. This feature has been deprecated;
571571 <literal>ghc-wrapper</literal> was removed from the
572572 distribution. The proper way to register Haskell libraries with
573573 the compiler now is the
574574 <literal>haskellPackages.ghcWithPackages</literal> function. The
575575- <link xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
575575+ <link xlink:href="https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User’s
576576 Guide to the Haskell Infrastructure</link> provides more
577577 information about this subject.
578578 </para>
···593593 have a function attribute called <literal>extension</literal>
594594 that users could override in their
595595 <literal>~/.nixpkgs/config.nix</literal> files to configure
596596- additional attributes, etc. That function still exists, but it's
596596+ additional attributes, etc. That function still exists, but it’s
597597 now called <literal>overrides</literal>.
598598 </para>
599599 </listitem>
···662662 <literal>lib</literal>, after adding it as argument of the
663663 module. The following module
664664 </para>
665665- <programlisting language="bash">
665665+ <programlisting language="nix">
666666{ config, pkgs, ... }:
667667668668with pkgs.lib;
···677677 <para>
678678 should be modified to look like:
679679 </para>
680680- <programlisting language="bash">
680680+ <programlisting language="nix">
681681{ config, pkgs, lib, ... }:
682682683683with lib;
···695695 replaced by <literal>(import <nixpkgs> {})</literal>. The
696696 following module
697697 </para>
698698- <programlisting language="bash">
698698+ <programlisting language="nix">
699699{ config, pkgs, ... }:
700700701701let
···712712 <para>
713713 should be modified to look like:
714714 </para>
715715- <programlisting language="bash">
715715+ <programlisting language="nix">
716716{ config, pkgs, ... }:
717717718718let
···748748 <literal>/etc/ssh/moduli</literal> file with respect to the
749749 <link xlink:href="https://stribika.github.io/2015/01/04/secure-secure-shell.html">vulnerabilities
750750 discovered in the Diffie-Hellman key exchange</link> can now
751751- replace OpenSSH's default version with one they generated
751751+ replace OpenSSH’s default version with one they generated
752752 themselves using the new
753753 <literal>services.openssh.moduliFile</literal> option.
754754 </para>
···378378 You will need to add an import statement to your NixOS
379379 configuration in order to use it, e.g.
380380 </para>
381381- <programlisting language="bash">
381381+ <programlisting language="nix">
382382{
383383 imports = [ <nixpkgs/nixos/modules/services/misc/gitit.nix> ];
384384}
···395395 to be built in. All modules now reside in
396396 <literal>nginxModules</literal> set. Example configuration:
397397 </para>
398398- <programlisting language="bash">
398398+ <programlisting language="nix">
399399nginx.override {
400400 modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
401401}
···403403 </listitem>
404404 <listitem>
405405 <para>
406406- <literal>s3sync</literal> is removed, as it hasn't been
406406+ <literal>s3sync</literal> is removed, as it hasn’t been
407407 developed by upstream for 4 years and only runs with ruby 1.8.
408408 For an actively-developer alternative look at
409409 <literal>tarsnap</literal> and others.
···411411 </listitem>
412412 <listitem>
413413 <para>
414414- <literal>ruby_1_8</literal> has been removed as it's not
414414+ <literal>ruby_1_8</literal> has been removed as it’s not
415415 supported from upstream anymore and probably contains security
416416 issues.
417417 </para>
···439439 <listitem>
440440 <para>
441441 The <literal>Ctrl+Alt+Backspace</literal> key combination no
442442- longer kills the X server by default. There's a new option
442442+ longer kills the X server by default. There’s a new option
443443 <literal>services.xserver.enableCtrlAltBackspace</literal>
444444 allowing to enable the combination again.
445445 </para>
···457457 <literal>/var/lib/postfix</literal>. Old configurations are
458458 migrated automatically. <literal>service.postfix</literal>
459459 module has also received many improvements, such as correct
460460- directories' access rights, new <literal>aliasFiles</literal>
460460+ directories’ access rights, new <literal>aliasFiles</literal>
461461 and <literal>mapFiles</literal> options and more.
462462 </para>
463463 </listitem>
···468468 continue to work, but print a warning, until the 16.09 release.
469469 An example of the new style:
470470 </para>
471471- <programlisting language="bash">
471471+ <programlisting language="nix">
472472{
473473 fileSystems."/example" = {
474474 device = "/dev/sdc";
···497497 <para>
498498 There are also Gutenprint improvements; in particular, a new
499499 option <literal>services.printing.gutenprint</literal> is added
500500- to enable automatic updating of Gutenprint PPMs; it's greatly
500500+ to enable automatic updating of Gutenprint PPMs; it’s greatly
501501 recommended to enable it instead of adding
502502 <literal>gutenprint</literal> to the <literal>drivers</literal>
503503 list.
···524524 used input method name, <literal>"ibus"</literal> for
525525 ibus. An example of the new style:
526526 </para>
527527- <programlisting language="bash">
527527+ <programlisting language="nix">
528528{
529529 i18n.inputMethod.enabled = "ibus";
530530 i18n.inputMethod.ibus.engines = with pkgs.ibus-engines; [ anthy mozc ];
···533533 <para>
534534 That is equivalent to the old version:
535535 </para>
536536- <programlisting language="bash">
536536+ <programlisting language="nix">
537537{
538538 programs.ibus.enable = true;
539539 programs.ibus.plugins = with pkgs; [ ibus-anthy mozc ];
···545545 <literal>services.udev.extraRules</literal> option now writes
546546 rules to <literal>99-local.rules</literal> instead of
547547 <literal>10-local.rules</literal>. This makes all the user rules
548548- apply after others, so their results wouldn't be overridden by
548548+ apply after others, so their results wouldn’t be overridden by
549549 anything else.
550550 </para>
551551 </listitem>
···587587 point to exact folder where syncthing is writing to. Example
588588 configuration should look something like:
589589 </para>
590590- <programlisting language="bash">
590590+ <programlisting language="nix">
591591{
592592 services.syncthing = {
593593 enable = true;
···632632 The <literal>services.xserver.startGnuPGAgent</literal> option
633633 has been removed. GnuPG 2.1.x changed the way the gpg-agent
634634 works, and that new approach no longer requires (or even
635635- supports) the "start everything as a child of the
636636- agent" scheme we've implemented in NixOS for older
635635+ supports) the <quote>start everything as a child of the
636636+ agent</quote> scheme we’ve implemented in NixOS for older
637637 versions. To configure the gpg-agent for your X session, add the
638638 following code to <literal>~/.bashrc</literal> or some file
639639 that’s sourced when your shell is started:
···670670</programlisting>
671671 <para>
672672 The <literal>gpg-agent(1)</literal> man page has more details
673673- about this subject, i.e. in the "EXAMPLES" section.
673673+ about this subject, i.e. in the <quote>EXAMPLES</quote> section.
674674 </para>
675675 </listitem>
676676 </itemizedlist>
···7878 LTS Haskell package set. That support has been dropped. The
7979 previously provided <literal>haskell.packages.lts-x_y</literal>
8080 package sets still exist in name to aviod breaking user code,
8181- but these package sets don't actually contain the versions
8181+ but these package sets don’t actually contain the versions
8282 mandated by the corresponding LTS release. Instead, our package
8383 set it loosely based on the latest available LTS release, i.e.
8484 LTS 7.x at the time of this writing. New releases of NixOS and
···119119 </listitem>
120120 <listitem>
121121 <para>
122122- Gitlab's maintainance script <literal>gitlab-runner</literal>
122122+ Gitlab’s maintainance script <literal>gitlab-runner</literal>
123123 was removed and split up into the more clearer
124124 <literal>gitlab-run</literal> and <literal>gitlab-rake</literal>
125125 scripts, because <literal>gitlab-runner</literal> is a component
···164164 <para>
165165 <literal>goPackages</literal> was replaced with separated Go
166166 applications in appropriate <literal>nixpkgs</literal>
167167- categories. Each Go package uses its own dependency set. There's
167167+ categories. Each Go package uses its own dependency set. There’s
168168 also a new <literal>go2nix</literal> tool introduced to generate
169169 a Go package definition from its Go source automatically.
170170 </para>
···192192 interface has been streamlined. Desktop users should be able to
193193 simply set
194194 </para>
195195- <programlisting language="bash">
195195+ <programlisting language="nix">
196196{
197197 security.grsecurity.enable = true;
198198}
···2222 </listitem>
2323 <listitem>
2424 <para>
2525- The default desktop environment now is KDE's Plasma 5. KDE 4
2525+ The default desktop environment now is KDE’s Plasma 5. KDE 4
2626 has been removed
2727 </para>
2828 </listitem>
···560560 Parsoid service now uses YAML configuration format.
561561 <literal>service.parsoid.interwikis</literal> is now called
562562 <literal>service.parsoid.wikis</literal> and is a list of
563563- either API URLs or attribute sets as specified in parsoid's
563563+ either API URLs or attribute sets as specified in parsoid’s
564564 documentation.
565565 </para>
566566 </listitem>
···581581 <literal>service.nylon</literal> is now declared using named
582582 instances. As an example:
583583 </para>
584584- <programlisting language="bash">
584584+ <programlisting language="nix">
585585{
586586 services.nylon = {
587587 enable = true;
···594594 <para>
595595 should be replaced with:
596596 </para>
597597- <programlisting language="bash">
597597+ <programlisting language="nix">
598598{
599599 services.nylon.myvpn = {
600600 enable = true;
···615615 <link xlink:href="https://nixos.org/nixpkgs/manual/#sec-overlays-install">
616616 overlays</link>. For example, the following code:
617617 </para>
618618- <programlisting language="bash">
618618+ <programlisting language="nix">
619619let
620620 pkgs = import <nixpkgs> {};
621621in
···624624 <para>
625625 should be replaced by:
626626 </para>
627627- <programlisting language="bash">
627627+ <programlisting language="nix">
628628let
629629 pkgs = import <nixpkgs> {};
630630in
···647647 <listitem>
648648 <para>
649649 <literal>local_recipient_maps</literal> is not set to empty
650650- value by Postfix service. It's an insecure default as stated
650650+ value by Postfix service. It’s an insecure default as stated
651651 by Postfix documentation. Those who want to retain this
652652 setting need to set it via
653653 <literal>services.postfix.extraConfig</literal>.
···669669 <listitem>
670670 <para>
671671 The socket handling of the <literal>services.rmilter</literal>
672672- module has been fixed and refactored. As rmilter doesn't
672672+ module has been fixed and refactored. As rmilter doesn’t
673673 support binding to more than one socket, the options
674674 <literal>bindUnixSockets</literal> and
675675 <literal>bindInetSockets</literal> have been replaced by
···729729 improves visual consistency and makes Java follow system font
730730 style, improving the situation on HighDPI displays. This has a
731731 cost of increased closure size; for server and other headless
732732- workloads it's recommended to use
732732+ workloads it’s recommended to use
733733 <literal>jre_headless</literal>.
734734 </para>
735735 </listitem>
···2626 The module option
2727 <literal>services.xserver.xrandrHeads</literal> now causes the
2828 first head specified in this list to be set as the primary
2929- head. Apart from that, it's now possible to also set
2929+ head. Apart from that, it’s now possible to also set
3030 additional options by using an attribute set, for example:
3131 </para>
3232- <programlisting language="bash">
3232+ <programlisting language="nix">
3333{ services.xserver.xrandrHeads = [
3434 "HDMI-0"
3535 {
···543543 </listitem>
544544 <listitem>
545545 <para>
546546- Radicale's default package has changed from 1.x to 2.x.
546546+ Radicale’s default package has changed from 1.x to 2.x.
547547 Instructions to migrate can be found
548548 <link xlink:href="http://radicale.org/1to2/"> here
549549 </link>. It is also possible to use the newer version by
···582582 </listitem>
583583 <listitem>
584584 <para>
585585- <literal>flexget</literal>'s state database cannot be upgraded
585585+ <literal>flexget</literal>’s state database cannot be upgraded
586586 to its new internal format, requiring removal of any existing
587587 <literal>db-config.sqlite</literal> which will be
588588 automatically recreated.
···590590 </listitem>
591591 <listitem>
592592 <para>
593593- The <literal>ipfs</literal> service now doesn't ignore the
594594- <literal>dataDir</literal> option anymore. If you've ever set
595595- this option to anything other than the default you'll have to
593593+ The <literal>ipfs</literal> service now doesn’t ignore the
594594+ <literal>dataDir</literal> option anymore. If you’ve ever set
595595+ this option to anything other than the default you’ll have to
596596 either unset it (so the default gets used) or migrate the old
597597 data manually with
598598 </para>
···651651 </listitem>
652652 <listitem>
653653 <para>
654654- <literal>cc-wrapper</literal>'s setup-hook now exports a
654654+ <literal>cc-wrapper</literal><quote>s setup-hook now exports a
655655 number of environment variables corresponding to binutils
656656 binaries, (e.g. <literal>LD</literal>,
657657 <literal>STRIP</literal>, <literal>RANLIB</literal>, etc).
658658- This is done to prevent packages' build systems guessing,
659659- which is harder to predict, especially when cross-compiling.
660660- However, some packages have broken due to this—their build
661661- systems either not supporting, or claiming to support without
662662- adequate testing, taking such environment variables as
663663- parameters.
658658+ This is done to prevent packages</quote> build systems
659659+ guessing, which is harder to predict, especially when
660660+ cross-compiling. However, some packages have broken due to
661661+ this—their build systems either not supporting, or claiming to
662662+ support without adequate testing, taking such environment
663663+ variables as parameters.
664664 </para>
665665 </listitem>
666666 <listitem>
···688688 </listitem>
689689 <listitem>
690690 <para>
691691- grsecurity/PaX support has been dropped, following upstream's
691691+ grsecurity/PaX support has been dropped, following upstream’s
692692 decision to cease free support. See
693693 <link xlink:href="https://grsecurity.net/passing_the_baton.php">
694694- upstream's announcement</link> for more information. No
694694+ upstream’s announcement</link> for more information. No
695695 complete replacement for grsecurity/PaX is available
696696 presently.
697697 </para>
···794794 <para>
795795 Modules can now be disabled by using
796796 <link xlink:href="https://nixos.org/nixpkgs/manual/#sec-replace-modules">
797797- disabledModules</link>, allowing another to take it's place.
797797+ disabledModules</link>, allowing another to take it’s place.
798798 This can be used to import a set of modules from another
799799 channel while keeping the rest of the system on a stable
800800 release.
···808808 provided by fontconfig-penultimate, replacing
809809 fontconfig-ultimate; the new defaults are less invasive and
810810 provide rendering that is more consistent with other systems
811811- and hopefully with each font designer's intent. Some
811811+ and hopefully with each font designer’s intent. Some
812812 system-wide configuration has been removed from the Fontconfig
813813 NixOS module where user Fontconfig settings are available.
814814 </para>
···1616 <listitem>
1717 <para>
1818 Platform support: x86_64-linux and x86_64-darwin since release
1919- time (the latter isn't NixOS, really). Binaries for
1919+ time (the latter isn’t NixOS, really). Binaries for
2020 aarch64-linux are available, but no channel exists yet, as
2121- it's waiting for some test fixes, etc.
2121+ it’s waiting for some test fixes, etc.
2222 </para>
2323 </listitem>
2424 <listitem>
···495495 <para>
496496 The propagation logic has been changed. The new logic, along
497497 with new types of dependencies that go with, is thoroughly
498498- documented in the "Specifying dependencies" section
499499- of the "Standard Environment" chapter of the nixpkgs
500500- manual. The old logic isn't but is easy to describe:
501501- dependencies were propagated as the same type of dependency no
502502- matter what. In practice, that means that many
498498+ documented in the <quote>Specifying dependencies</quote>
499499+ section of the <quote>Standard Environment</quote> chapter of
500500+ the nixpkgs manual. The old logic isn’t but is easy to
501501+ describe: dependencies were propagated as the same type of
502502+ dependency no matter what. In practice, that means that many
503503 <literal>propagatedNativeBuildInputs</literal> should instead
504504 be <literal>propagatedBuildInputs</literal>. Thankfully, that
505505 was and is the least used type of dependency. Also, it means
···541541 Previously, if other options in the Postfix module like
542542 <literal>services.postfix.useSrs</literal> were set and the
543543 user set config options that were also set by such options,
544544- the resulting config wouldn't include all options that were
544544+ the resulting config wouldn’t include all options that were
545545 needed. They are now merged correctly. If config options need
546546 to be overridden, <literal>lib.mkForce</literal> or
547547 <literal>lib.mkOverride</literal> can be used.
···626626 if <literal>config.networking.domain</literal> is set,
627627 <literal>matomo.${config.networking.hostName}</literal> if
628628 it is not set. If you change your
629629- <literal>serverName</literal>, remember you'll need to
629629+ <literal>serverName</literal>, remember you’ll need to
630630 update the <literal>trustedHosts[]</literal> array in
631631 <literal>/var/lib/matomo/config/config.ini.php</literal>
632632 as well.
···793793 <para>
794794 <literal>services.btrfs.autoScrub</literal> has been added, to
795795 periodically check btrfs filesystems for data corruption. If
796796- there's a correct copy available, it will automatically repair
796796+ there’s a correct copy available, it will automatically repair
797797 corrupted blocks.
798798 </para>
799799 </listitem>
···830830 <para>
831831 In order to have the previous default configuration add
832832 </para>
833833- <programlisting language="bash">
833833+ <programlisting language="nix">
834834{
835835 services.xserver.displayManager.lightdm.greeters.gtk.indicators = [
836836 "~host" "~spacer"
···5454 <para>
5555 For example
5656 </para>
5757- <programlisting language="bash">
5757+ <programlisting language="nix">
5858{
5959 programs.firejail = {
6060 enable = true;
···523523 <listitem>
524524 <para>
525525 The <literal>netcat</literal> package is now taken directly
526526- from OpenBSD's <literal>libressl</literal>, instead of relying
527527- on Debian's fork. The new version should be very close to the
526526+ from OpenBSD’s <literal>libressl</literal>, instead of relying
527527+ on Debian’s fork. The new version should be very close to the
528528 old version, but there are some minor differences.
529529 Importantly, flags like -b, -q, -C, and -Z are no longer
530530 accepted by the nc command.
···533533 <listitem>
534534 <para>
535535 The <literal>services.docker-registry.extraConfig</literal>
536536- object doesn't contain environment variables anymore. Instead
536536+ object doesn’t contain environment variables anymore. Instead
537537 it needs to provide an object structure that can be mapped
538538 onto the YAML configuration defined in
539539 <link xlink:href="https://github.com/docker/distribution/blob/v2.6.2/docs/configuration.md">the
···543543 <listitem>
544544 <para>
545545 <literal>gnucash</literal> has changed from version 2.4 to
546546- 3.x. If you've been using <literal>gnucash</literal> (version
546546+ 3.x. If you’ve been using <literal>gnucash</literal> (version
547547 2.4) instead of <literal>gnucash26</literal> (version 2.6) you
548548 must open your Gnucash data file(s) with
549549 <literal>gnucash26</literal> and then save them to upgrade the
···695695 A NixOS system can now be constructed more easily based on a
696696 preexisting invocation of Nixpkgs. For example:
697697 </para>
698698- <programlisting language="bash">
698698+ <programlisting language="nix">
699699{
700700 inherit (pkgs.nixos {
701701 boot.loader.grub.enable = false;
···791791 <para>
792792 An example usage of this would be:
793793 </para>
794794- <programlisting language="bash">
794794+ <programlisting language="nix">
795795{ config, ... }:
796796797797{
···874874 The <literal>programs.screen</literal> module provides allows
875875 to configure <literal>/etc/screenrc</literal>, however the
876876 module behaved fairly counterintuitive as the config exists,
877877- but the package wasn't available. Since 18.09
877877+ but the package wasn’t available. Since 18.09
878878 <literal>pkgs.screen</literal> will be added to
879879 <literal>environment.systemPackages</literal>.
880880 </para>
···920920 <para>
921921 NixOS option descriptions are now automatically broken up into
922922 individual paragraphs if the text contains two consecutive
923923- newlines, so it's no longer necessary to use
923923+ newlines, so it’s no longer necessary to use
924924 <literal></para><para></literal> to start a new
925925 paragraph.
926926 </para>
···2929 <para>
3030 By default,
3131 <literal>services.xserver.desktopManager.pantheon</literal>
3232- enables LightDM as a display manager, as pantheon's screen
3232+ enables LightDM as a display manager, as pantheon’s screen
3333 locking implementation relies on it. Because of that it is
3434- recommended to leave LightDM enabled. If you'd like to
3434+ recommended to leave LightDM enabled. If you’d like to
3535 disable it anyway, set
3636 <literal>services.xserver.displayManager.lightdm.enable</literal>
3737 to <literal>false</literal> and enable your preferred
···3939 </para>
4040 </note>
4141 <para>
4242- Also note that Pantheon's LightDM greeter is not enabled by
4343- default, because it has numerous issues in NixOS and isn't
4242+ Also note that Pantheon’s LightDM greeter is not enabled by
4343+ default, because it has numerous issues in NixOS and isn’t
4444 optimal for use here yet.
4545 </para>
4646 </listitem>
···200200 <listitem>
201201 <para>
202202 The <literal>ntp</literal> module now has sane default
203203- restrictions. If you're relying on the previous defaults,
203203+ restrictions. If you’re relying on the previous defaults,
204204 which permitted all queries and commands from all
205205 firewall-permitted sources, you can set
206206 <literal>services.ntp.restrictDefault</literal> and
···342342 preserved when also setting interface specific rules such as
343343 <literal>networking.firewall.interfaces.en0.allow*</literal>.
344344 These rules continue to use the pseudo device
345345- "default"
345345+ <quote>default</quote>
346346 (<literal>networking.firewall.interfaces.default.*</literal>),
347347 and assigning to this pseudo device will override the
348348 (<literal>networking.firewall.allow*</literal>) options.
···360360 presence of <literal>services.sssd.enable = true</literal>
361361 because nscd caching would interfere with
362362 <literal>sssd</literal> in unpredictable ways as well. Because
363363- we're using nscd not for caching, but for convincing glibc to
363363+ we’re using nscd not for caching, but for convincing glibc to
364364 find NSS modules in the nix store instead of an absolute path,
365365- we have decided to disable caching globally now, as it's
365365+ we have decided to disable caching globally now, as it’s
366366 usually not the behaviour the user wants and can lead to
367367 surprising behaviour. Furthermore, negative caching of host
368368 lookups is also disabled now by default. This should fix the
···374374 setting the <literal>services.nscd.config</literal> option
375375 with the desired caching parameters.
376376 </para>
377377- <programlisting language="bash">
377377+ <programlisting language="nix">
378378{
379379 services.nscd.config =
380380 ''
···453453 with its control field set to <literal>sufficient</literal>
454454 instead of <literal>required</literal>, so that password
455455 managed only by later PAM password modules are being executed.
456456- Previously, for example, changing an LDAP account's password
456456+ Previously, for example, changing an LDAP account’s password
457457 through PAM was not possible: the whole password module
458458 verification was exited prematurely by
459459 <literal>pam_unix</literal>, preventing
···497497 <link xlink:href="https://matrix.org/blog/2019/02/05/synapse-0-99-0/">the
498498 last version to accept self-signed certificates</link>. As
499499 such, it is now recommended to use a proper certificate
500500- verified by a root CA (for example Let's Encrypt). The new
500500+ verified by a root CA (for example Let’s Encrypt). The new
501501 <link linkend="module-services-matrix">manual chapter on
502502 Matrix</link> contains a working example of using nginx as a
503503 reverse proxy in front of <literal>matrix-synapse</literal>,
504504- using Let's Encrypt certificates.
504504+ using Let’s Encrypt certificates.
505505 </para>
506506 </listitem>
507507 <listitem>
···682682 <link xlink:href="options.html#opt-services.ndppd.enable">all
683683 config options</link> provided by the current upstream version
684684 as service options. Additionally the <literal>ndppd</literal>
685685- package doesn't contain the systemd unit configuration from
685685+ package doesn’t contain the systemd unit configuration from
686686 upstream anymore, the unit is completely configured by the
687687 NixOS module now.
688688 </para>
···8282 </listitem>
8383 <listitem>
8484 <para>
8585- We've updated to Xfce 4.14, which brings a new module
8585+ We’ve updated to Xfce 4.14, which brings a new module
8686 <literal>services.xserver.desktopManager.xfce4-14</literal>.
8787- If you'd like to upgrade, please switch from the
8787+ If you’d like to upgrade, please switch from the
8888 <literal>services.xserver.desktopManager.xfce</literal> module
8989- as it will be deprecated in a future release. They're
9090- incompatibilities with the current Xfce module; it doesn't
9191- support <literal>thunarPlugins</literal> and it isn't
8989+ as it will be deprecated in a future release. They’re
9090+ incompatibilities with the current Xfce module; it doesn’t
9191+ support <literal>thunarPlugins</literal> and it isn’t
9292 recommended to use
9393 <literal>services.xserver.desktopManager.xfce</literal> and
9494 <literal>services.xserver.desktopManager.xfce4-14</literal>
···125125 </itemizedlist>
126126 <para>
127127 With these options we hope to give users finer grained control
128128- over their systems. Prior to this change you'd either have to
128128+ over their systems. Prior to this change you’d either have to
129129 manually disable options or use
130130 <literal>environment.gnome3.excludePackages</literal> which
131131 only excluded the optional applications.
···138138 <listitem>
139139 <para>
140140 Orthogonal to the previous changes to the GNOME 3 desktop
141141- manager module, we've updated all default services and
141141+ manager module, we’ve updated all default services and
142142 applications to match as close as possible to a default
143143 reference GNOME 3 experience.
144144 </para>
···295295 <literal>services.xserver.desktopManager.mate</literal>
296296 Note Mate uses
297297 <literal>programs.system-config-printer</literal> as it
298298- doesn't use it as a service, but its graphical interface
298298+ doesn’t use it as a service, but its graphical interface
299299 directly.
300300 </para>
301301 </listitem>
···347347 <literal>services.prometheus.alertmanager.user</literal> and
348348 <literal>services.prometheus.alertmanager.group</literal> have
349349 been removed because the alertmanager service is now using
350350- systemd's
350350+ systemd’s
351351 <link xlink:href="http://0pointer.net/blog/dynamic-users-with-systemd.html">
352352 DynamicUser mechanism</link> which obviates these options.
353353 </para>
···366366 The <literal>services.nzbget.configFile</literal> and
367367 <literal>services.nzbget.openFirewall</literal> options were
368368 removed as they are managed internally by the nzbget. The
369369- <literal>services.nzbget.dataDir</literal> option hadn't
369369+ <literal>services.nzbget.dataDir</literal> option hadn’t
370370 actually been used by the module for some time and so was
371371 removed as cleanup.
372372 </para>
···475475 Make sure you set the <literal>_netdev</literal> option for
476476 each of the file systems referring to block devices provided
477477 by the autoLuks module. Not doing this might render the system
478478- in a state where it doesn't boot anymore.
478478+ in a state where it doesn’t boot anymore.
479479 </para>
480480 <para>
481481 If you are actively using the <literal>autoLuks</literal>
···667667 instead of depending on the catch-all
668668 <literal>acme-certificates.target</literal>. This target unit
669669 was also removed from the codebase. This will mean nginx will
670670- no longer depend on certificates it isn't explicitly managing
670670+ no longer depend on certificates it isn’t explicitly managing
671671 and fixes a bug with certificate renewal ordering racing with
672672 nginx restarting which could lead to nginx getting in a broken
673673 state as described at
···687687 <literal>services.xserver.desktopManager.xterm</literal> is
688688 now disabled by default if <literal>stateVersion</literal> is
689689 19.09 or higher. Previously the xterm desktopManager was
690690- enabled when xserver was enabled, but it isn't useful for all
691691- people so it didn't make sense to have any desktopManager
690690+ enabled when xserver was enabled, but it isn’t useful for all
691691+ people so it didn’t make sense to have any desktopManager
692692 enabled default.
693693 </para>
694694 </listitem>
···696696 <para>
697697 The WeeChat plugin
698698 <literal>pkgs.weechatScripts.weechat-xmpp</literal> has been
699699- removed as it doesn't receive any updates from upstream and
699699+ removed as it doesn’t receive any updates from upstream and
700700 depends on outdated Python2-based modules.
701701 </para>
702702 </listitem>
···744744 <literal>services.gitlab.secrets.dbFile</literal>,
745745 <literal>services.gitlab.secrets.otpFile</literal> and
746746 <literal>services.gitlab.secrets.jwsFile</literal>). This was
747747- done so that secrets aren't stored in the world-readable nix
748748- store, but means that for each option you'll have to create a
749749- file with the same exact string, add "File" to the
750750- end of the option name, and change the definition to a string
751751- pointing to the corresponding file; e.g.
747747+ done so that secrets aren’t stored in the world-readable nix
748748+ store, but means that for each option you’ll have to create a
749749+ file with the same exact string, add <quote>File</quote> to
750750+ the end of the option name, and change the definition to a
751751+ string pointing to the corresponding file; e.g.
752752 <literal>services.gitlab.databasePassword = "supersecurepassword"</literal>
753753 becomes
754754 <literal>services.gitlab.databasePasswordFile = "/path/to/secret_file"</literal>
···791791 <listitem>
792792 <para>
793793 The <literal>nodejs-11_x</literal> package has been removed as
794794- it's EOLed by upstream.
794794+ it’s EOLed by upstream.
795795 </para>
796796 </listitem>
797797 <listitem>
···961961 from the upstream default <literal>speex-float-1</literal> to
962962 <literal>speex-float-5</literal>. Be aware that low-powered
963963 ARM-based and MIPS-based boards will struggle with this so
964964- you'll need to set
964964+ you’ll need to set
965965 <literal>hardware.pulseaudio.daemon.config.resample-method</literal>
966966 back to <literal>speex-float-1</literal>.
967967 </para>
···10041004 </listitem>
10051005 <listitem>
10061006 <para>
10071007- It's now possible to change configuration in
10071007+ It’s now possible to change configuration in
10081008 <link xlink:href="options.html#opt-services.nextcloud.enable">services.nextcloud</link>
10091009 after the initial deploy since all config parameters are
10101010 persisted in an additional config file generated by the
···11781178 <link xlink:href="https://ceph.com/releases/v14-2-0-nautilus-released/">release
11791179 notes</link> for details. The mgr dashboard as well as osds
11801180 backed by loop-devices is no longer explicitly supported by
11811181- the package and module. Note: There's been some issues with
11811181+ the package and module. Note: There’s been some issues with
11821182 python-cherrypy, which is used by the dashboard and prometheus
11831183 mgr modules (and possibly others), hence
11841184 0000-dont-check-cherrypy-version.patch.
···7373 <listitem>
7474 <para>
7575 The graphical installer image starts the graphical session
7676- automatically. Before you'd be greeted by a tty and asked to
7676+ automatically. Before you’d be greeted by a tty and asked to
7777 enter <literal>systemctl start display-manager</literal>. It
7878 is now possible to disable the display-manager from running by
7979 selecting the <literal>Disable display-manager</literal> quirk
···9393 <link xlink:href="options.html#opt-services.xserver.desktopManager.pantheon.enable">services.xserver.desktopManager.pantheon.enable</link>,
9494 we now default to also use
9595 <link xlink:href="https://blog.elementary.io/say-hello-to-the-new-greeter/">
9696- Pantheon's newly designed greeter </link>. Contrary to NixOS's
9696+ Pantheon’s newly designed greeter </link>. Contrary to NixOS’s
9797 usual update policy, Pantheon will receive updates during the
9898 cycle of NixOS 20.03 when backwards compatible.
9999 </para>
···133133 option to improve support for upstream session files. If you
134134 used something like:
135135 </para>
136136- <programlisting language="bash">
136136+ <programlisting language="nix">
137137{
138138 services.xserver.desktopManager.default = "xfce";
139139 services.xserver.windowManager.default = "icewm";
···142142 <para>
143143 you should change it to:
144144 </para>
145145- <programlisting language="bash">
145145+ <programlisting language="nix">
146146{
147147 services.xserver.displayManager.defaultSession = "xfce+icewm";
148148}
···196196 </listitem>
197197 <listitem>
198198 <para>
199199- UPower's configuration is now managed by NixOS and can be
199199+ UPower’s configuration is now managed by NixOS and can be
200200 customized via <literal>services.upower</literal>.
201201 </para>
202202 </listitem>
···505505 <link xlink:href="https://github.com/NixOS/nixpkgs/pull/71106">#71106</link>.
506506 </para>
507507 <para>
508508- We already don't support the global
508508+ We already don’t support the global
509509 <link xlink:href="options.html#opt-networking.useDHCP">networking.useDHCP</link>,
510510 <link xlink:href="options.html#opt-networking.defaultGateway">networking.defaultGateway</link>
511511 and
···522522 The stdenv now runs all bash with <literal>set -u</literal>,
523523 to catch the use of undefined variables. Before, it itself
524524 used <literal>set -u</literal> but was careful to unset it so
525525- other packages' code ran as before. Now, all bash code is held
525525+ other packages’ code ran as before. Now, all bash code is held
526526 to the same high standard, and the rather complex stateful
527527 manipulation of the options can be discarded.
528528 </para>
···558558 <literal>xfceUnstable</literal> all now point to the latest
559559 Xfce 4.14 packages. And in the future NixOS releases will be
560560 the latest released version of Xfce available at the time of
561561- the release's development (if viable).
561561+ the release’s development (if viable).
562562 </para>
563563 </listitem>
564564 <listitem>
···662662 <listitem>
663663 <para>
664664 The <literal>dump1090</literal> derivation has been changed to
665665- use FlightAware's dump1090 as its upstream. However, this
665665+ use FlightAware’s dump1090 as its upstream. However, this
666666 version does not have an internal webserver anymore. The
667667 assets in the <literal>share/dump1090</literal> directory of
668668 the derivation can be used in conjunction with an external
···821821 is a <literal>loaOf</literal> option that is commonly used as
822822 follows:
823823 </para>
824824- <programlisting language="bash">
824824+ <programlisting language="nix">
825825{
826826 users.users =
827827 [ { name = "me";
···836836 value of <literal>name</literal> as the name of the attribute
837837 set:
838838 </para>
839839- <programlisting language="bash">
839839+ <programlisting language="nix">
840840{
841841 users.users.me =
842842 { description = "My personal user.";
···890890 <listitem>
891891 <para>
892892 The<literal>services.buildkite-agent.openssh.publicKeyPath</literal>
893893- option has been removed, as it's not necessary to deploy
893893+ option has been removed, as it’s not necessary to deploy
894894 public keys to clone private repositories.
895895 </para>
896896 </listitem>
···932932 The <literal>services.xserver.displayManager.auto</literal>
933933 module has been removed. It was only intended for use in
934934 internal NixOS tests, and gave the false impression of it
935935- being a special display manager when it's actually LightDM.
935935+ being a special display manager when it’s actually LightDM.
936936 Please use the
937937 <literal>services.xserver.displayManager.lightdm.autoLogin</literal>
938938 options instead, or any other display manager in NixOS as they
···940940 because it permitted root auto-login you can override the
941941 lightdm-autologin pam module like:
942942 </para>
943943- <programlisting language="bash">
943943+ <programlisting language="nix">
944944{
945945 security.pam.services.lightdm-autologin.text = lib.mkForce ''
946946 auth requisite pam_nologin.so
···962962auth required pam_succeed_if.so quiet
963963</programlisting>
964964 <para>
965965- line, where default it's:
965965+ line, where default it’s:
966966 </para>
967967 <programlisting>
968968 auth required pam_succeed_if.so uid >= 1000 quiet
969969</programlisting>
970970 <para>
971971- not permitting users with uid's below 1000 (like root). All
971971+ not permitting users with uid’s below 1000 (like root). All
972972 other display managers in NixOS are configured like this.
973973 </para>
974974 </listitem>
···10041004 Additionally, some Postfix configuration must now be set
10051005 manually instead of automatically by the Mailman module:
10061006 </para>
10071007- <programlisting language="bash">
10071007+ <programlisting language="nix">
10081008{
10091009 services.postfix.relayDomains = [ "hash:/var/lib/mailman/data/postfix_domains" ];
10101010 services.postfix.config.transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
···10511051 <listitem>
10521052 <para>
10531053 The <literal>*psu</literal> versions of oraclejdk8 have been
10541054- removed as they aren't provided by upstream anymore.
10541054+ removed as they aren’t provided by upstream anymore.
10551055 </para>
10561056 </listitem>
10571057 <listitem>
10581058 <para>
10591059 The <literal>services.dnscrypt-proxy</literal> module has been
10601060 removed as it used the deprecated version of dnscrypt-proxy.
10611061- We've added
10611061+ We’ve added
10621062 <link xlink:href="options.html#opt-services.dnscrypt-proxy2.enable">services.dnscrypt-proxy2.enable</link>
10631063 to use the supported version. This module supports
10641064 configuration via the Nix attribute set
···10661066 or by passing a TOML configuration file via
10671067 <link xlink:href="options.html#opt-services.dnscrypt-proxy2.configFile">services.dnscrypt-proxy2.configFile</link>.
10681068 </para>
10691069- <programlisting language="bash">
10691069+ <programlisting language="nix">
10701070{
10711071 # Example configuration:
10721072 services.dnscrypt-proxy2.enable = true;
···10931093 </listitem>
10941094 <listitem>
10951095 <para>
10961096- sqldeveloper_18 has been removed as it's not maintained
10961096+ sqldeveloper_18 has been removed as it’s not maintained
10971097 anymore, sqldeveloper has been updated to version
10981098 <literal>19.4</literal>. Please note that this means that this
10991099 means that the oraclejdk is now required. For further
···11101110 the different lists of dependencies mashed together as one big
11111111 list, and then partitioning into Haskell and non-Hakell
11121112 dependencies, they work from the original many different
11131113- dependency parameters and don't need to algorithmically
11131113+ dependency parameters and don’t need to algorithmically
11141114 partition anything.
11151115 </para>
11161116 <para>
···11231123 </listitem>
11241124 <listitem>
11251125 <para>
11261126- The gcc-snapshot-package has been removed. It's marked as
11261126+ The gcc-snapshot-package has been removed. It’s marked as
11271127 broken for >2 years and used to point to a fairly old
11281128 snapshot from the gcc7-branch.
11291129 </para>
···11581158 <listitem>
11591159 <para>
11601160 nextcloud has been updated to <literal>v18.0.2</literal>. This
11611161- means that users from NixOS 19.09 can't upgrade directly since
11611161+ means that users from NixOS 19.09 can’t upgrade directly since
11621162 you can only move one version forward and 19.09 uses
11631163 <literal>v16.0.8</literal>.
11641164 </para>
···11811181 Existing setups will be detected using
11821182 <link xlink:href="options.html#opt-system.stateVersion">system.stateVersion</link>:
11831183 by default, nextcloud17 will be used, but will raise a
11841184- warning which notes that after that deploy it's
11841184+ warning which notes that after that deploy it’s
11851185 recommended to update to the latest stable version
11861186 (nextcloud18) by declaring the newly introduced setting
11871187 <link xlink:href="options.html#opt-services.nextcloud.package">services.nextcloud.package</link>.
···11941194 get an evaluation error by default. This is done to ensure
11951195 that our
11961196 <link xlink:href="options.html#opt-services.nextcloud.package">package</link>-option
11971197- doesn't select an older version by accident. It's
11971197+ doesn’t select an older version by accident. It’s
11981198 recommended to use pkgs.nextcloud18 or to set
11991199 <link xlink:href="options.html#opt-services.nextcloud.package">package</link>
12001200 to pkgs.nextcloud explicitly.
···12031203 </itemizedlist>
12041204 <warning>
12051205 <para>
12061206- Please note that if you're coming from
12061206+ Please note that if you’re coming from
12071207 <literal>19.03</literal> or older, you have to manually
12081208 upgrade to <literal>19.09</literal> first to upgrade your
12091209 server to Nextcloud v16.
···12151215 Hydra has gained a massive performance improvement due to
12161216 <link xlink:href="https://github.com/NixOS/hydra/pull/710">some
12171217 database schema changes</link> by adding several IDs and
12181218- better indexing. However, it's necessary to upgrade Hydra in
12181218+ better indexing. However, it’s necessary to upgrade Hydra in
12191219 multiple steps:
12201220 </para>
12211221 <itemizedlist>
···12291229 when upgrading. Otherwise, the package can be deployed
12301230 using the following config:
12311231 </para>
12321232- <programlisting language="bash">
12321232+ <programlisting language="nix">
12331233{ pkgs, ... }: {
12341234 services.hydra.package = pkgs.hydra-migration;
12351235}
···12661266 <link xlink:href="options.html#opt-system.stateVersion">stateVersion</link>
12671267 is set to <literal>20.03</literal> or greater,
12681268 hydra-unstable will be used automatically! This will break
12691269- your setup if you didn't run the migration.
12691269+ your setup if you didn’t run the migration.
12701270 </para>
12711271 </warning>
12721272 <para>
12731273 Please note that Hydra is currently not available with
12741274- nixStable as this doesn't compile anymore.
12741274+ nixStable as this doesn’t compile anymore.
12751275 </para>
12761276 <warning>
12771277 <para>
···12811281 assertion error will be thrown. To circumvent this, you need
12821282 to set
12831283 <link xlink:href="options.html#opt-services.hydra.package">services.hydra.package</link>
12841284- to pkgs.hydra explicitly and make sure you know what you're
12841284+ to pkgs.hydra explicitly and make sure you know what you’re
12851285 doing!
12861286 </para>
12871287 </warning>
···13191319 <para>
13201320 To continue to use the old approach, you can configure:
13211321 </para>
13221322- <programlisting language="bash">
13221322+ <programlisting language="nix">
13231323{
13241324 services.nginx.appendConfig = let cfg = config.services.nginx; in ''user ${cfg.user} ${cfg.group};'';
13251325 systemd.services.nginx.serviceConfig.User = lib.mkForce "root";
···14131413 <itemizedlist>
14141414 <listitem>
14151415 <para>
14161416- If you use <literal>sqlite3</literal> you don't need to do
14161416+ If you use <literal>sqlite3</literal> you don’t need to do
14171417 anything.
14181418 </para>
14191419 </listitem>
14201420 <listitem>
14211421 <para>
14221422 If you use <literal>postgresql</literal> on a different
14231423- server, you don't need to change anything as well since
14231423+ server, you don’t need to change anything as well since
14241424 this module was never designed to configure remote
14251425 databases.
14261426 </para>
···14321432 older, you simply need to enable postgresql-support
14331433 explicitly:
14341434 </para>
14351435- <programlisting language="bash">
14351435+ <programlisting language="nix">
14361436{ ... }: {
14371437 services.matrix-synapse = {
14381438 enable = true;
···14601460 <literal>nixos-unstable</literal> <emphasis>after</emphasis>
14611461 the <literal>19.09</literal>-release, your database is
14621462 misconfigured due to a regression in NixOS. For now,
14631463- matrix-synapse will startup with a warning, but it's
14631463+ matrix-synapse will startup with a warning, but it’s
14641464 recommended to reconfigure the database to set the values
14651465 <literal>LC_COLLATE</literal> and <literal>LC_CTYPE</literal>
14661466 to
···14731473 <link xlink:href="options.html#opt-systemd.network.links">systemd.network.links</link>
14741474 option is now respected even when
14751475 <link xlink:href="options.html#opt-systemd.network.enable">systemd-networkd</link>
14761476- is disabled. This mirrors the behaviour of systemd - It's udev
14761476+ is disabled. This mirrors the behaviour of systemd - It’s udev
14771477 that parses <literal>.link</literal> files, not
14781478 <literal>systemd-networkd</literal>.
14791479 </para>
···14861486 <para>
14871487 Please note that mongodb has been relicensed under their own
14881488 <link xlink:href="https://www.mongodb.com/licensing/server-side-public-license/faq"><literal> sspl</literal></link>-license.
14891489- Since it's not entirely free and not OSI-approved, it's
14901490- listed as non-free. This means that Hydra doesn't provide
14891489+ Since it’s not entirely free and not OSI-approved, it’s
14901490+ listed as non-free. This means that Hydra doesn’t provide
14911491 prebuilt mongodb-packages and needs to be built locally.
14921492 </para>
14931493 </warning>
···722722 See
723723 <link xlink:href="https://mariadb.com/kb/en/authentication-from-mariadb-104/">Authentication
724724 from MariaDB 10.4</link>. unix_socket auth plugin does not use
725725- a password, and uses the connecting user's UID instead. When a
725725+ a password, and uses the connecting user’s UID instead. When a
726726 new MariaDB data directory is initialized, two MariaDB users
727727 are created and can be used with new unix_socket auth plugin,
728728 as well as traditional mysql_native_password plugin:
···730730 traditional mysql_native_password plugin method, one must run
731731 the following:
732732 </para>
733733- <programlisting language="bash">
733733+ <programlisting language="nix">
734734{
735735services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
736736 ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("verysecret");
···755755 allow MySQL to read from /home and /tmp directories when using
756756 <literal>LOAD DATA INFILE</literal>
757757 </para>
758758- <programlisting language="bash">
758758+ <programlisting language="nix">
759759{
760760 systemd.services.mysql.serviceConfig.ProtectHome = lib.mkForce "read-only";
761761}
···766766 <literal>SELECT * INTO OUTFILE</literal>, assuming the mysql
767767 user has write access to <literal>/var/data</literal>
768768 </para>
769769- <programlisting language="bash">
769769+ <programlisting language="nix">
770770{
771771 systemd.services.mysql.serviceConfig.ReadWritePaths = [ "/var/data" ];
772772}
···864864 <para>
865865 <literal>buildGoModule</literal> now internally creates a
866866 vendor directory in the source tree for downloaded modules
867867- instead of using go's
867867+ instead of using go’s
868868 <link xlink:href="https://golang.org/cmd/go/#hdr-Module_proxy_protocol">module
869869 proxy protocol</link>. This storage format is simpler and
870870 therefore less likely to break with future versions of go. As
···885885 <literal>phantomJsSupport = true</literal> to the package
886886 instantiation:
887887 </para>
888888- <programlisting language="bash">
888888+ <programlisting language="nix">
889889{
890890 services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
891891 phantomJsSupport = true;
···941941 <para>
942942 If you used the
943943 <literal>boot.initrd.network.ssh.host*Key</literal> options,
944944- you'll get an error explaining how to convert your host keys
944944+ you’ll get an error explaining how to convert your host keys
945945 and migrate to the new
946946 <literal>boot.initrd.network.ssh.hostKeys</literal> option.
947947- Otherwise, if you don't have any host keys set, you'll need to
947947+ Otherwise, if you don’t have any host keys set, you’ll need to
948948 generate some; see the <literal>hostKeys</literal> option
949949 documentation for instructions.
950950 </para>
951951 </listitem>
952952 <listitem>
953953 <para>
954954- Since this release there's an easy way to customize your PHP
954954+ Since this release there’s an easy way to customize your PHP
955955 install to get a much smaller base PHP with only wanted
956956 extensions enabled. See the following snippet installing a
957957 smaller PHP with the extensions <literal>imagick</literal>,
958958 <literal>opcache</literal>, <literal>pdo</literal> and
959959 <literal>pdo_mysql</literal> loaded:
960960 </para>
961961- <programlisting language="bash">
961961+ <programlisting language="nix">
962962{
963963 environment.systemPackages = [
964964 (pkgs.php.withExtensions
···973973}
974974</programlisting>
975975 <para>
976976- The default <literal>php</literal> attribute hasn't lost any
976976+ The default <literal>php</literal> attribute hasn’t lost any
977977 extensions. The <literal>opcache</literal> extension has been
978978 added. All upstream PHP extensions are available under
979979 php.extensions.<name?>.
···997997 The remaining configuration flags can now be set directly on
998998 the <literal>php</literal> attribute. For example, instead of
999999 </para>
10001000- <programlisting language="bash">
10001000+ <programlisting language="nix">
10011001{
10021002 php.override {
10031003 config.php.embed = true;
···10081008 <para>
10091009 you should now write
10101010 </para>
10111011- <programlisting language="bash">
10111011+ <programlisting language="nix">
10121012{
10131013 php.override {
10141014 embedSupport = true;
···10621062 writing to other folders, use
10631063 <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
10641064 </para>
10651065- <programlisting language="bash">
10651065+ <programlisting language="nix">
10661066{
10671067 systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
10681068}
···10761076 docs</link> for details). If you require serving files from
10771077 home directories, you may choose to set e.g.
10781078 </para>
10791079- <programlisting language="bash">
10791079+ <programlisting language="nix">
10801080{
10811081 systemd.services.nginx.serviceConfig.ProtectHome = "read-only";
10821082}
···10931093 <para>
10941094 Replace a <literal>nesting.clone</literal> entry with:
10951095 </para>
10961096- <programlisting language="bash">
10961096+ <programlisting language="nix">
10971097{
10981098 specialisation.example-sub-configuration = {
10991099 configuration = {
···11041104 <para>
11051105 Replace a <literal>nesting.children</literal> entry with:
11061106 </para>
11071107- <programlisting language="bash">
11071107+ <programlisting language="nix">
11081108{
11091109 specialisation.example-sub-configuration = {
11101110 inheritParentConfig = false;
···11621162 <para>
11631163 The <literal>systemd-networkd</literal> option
11641164 <literal>systemd.network.networks.<name>.dhcp.CriticalConnection</literal>
11651165- has been removed following upstream systemd's deprecation of
11651165+ has been removed following upstream systemd’s deprecation of
11661166 the same. It is recommended to use
11671167 <literal>systemd.network.networks.<name>.networkConfig.KeepConfiguration</literal>
11681168 instead. See systemd.network 5 for details.
···11741174 <literal>systemd.network.networks._name_.dhcpConfig</literal>
11751175 has been renamed to
11761176 <link xlink:href="options.html#opt-systemd.network.networks._name_.dhcpV4Config">systemd.network.networks.<emphasis>name</emphasis>.dhcpV4Config</link>
11771177- following upstream systemd's documentation change. See
11771177+ following upstream systemd’s documentation change. See
11781178 systemd.network 5 for details.
11791179 </para>
11801180 </listitem>
···12831283 The
12841284 <link xlink:href="https://github.com/okTurtles/dnschain">DNSChain</link>
12851285 package and NixOS module have been removed from Nixpkgs as the
12861286- software is unmaintained and can't be built. For more
12861286+ software is unmaintained and can’t be built. For more
12871287 information see issue
12881288 <link xlink:href="https://github.com/NixOS/nixpkgs/issues/89205">#89205</link>.
12891289 </para>
···13501350 </listitem>
13511351 <listitem>
13521352 <para>
13531353- Radicale's default package has changed from 2.x to 3.x. An
13531353+ Radicale’s default package has changed from 2.x to 3.x. An
13541354 upgrade checklist can be found
13551355 <link xlink:href="https://github.com/Kozea/Radicale/blob/3.0.x/NEWS.md#upgrade-checklist">here</link>.
13561356 You can use the newer version in the NixOS service by setting
···13851385 multi-instance config with an existing bitcoind data directory
13861386 and user, you have to adjust the original config, e.g.:
13871387 </para>
13881388- <programlisting language="bash">
13881388+ <programlisting language="nix">
13891389{
13901390 services.bitcoind = {
13911391 enable = true;
···13971397 <para>
13981398 To something similar:
13991399 </para>
14001400- <programlisting language="bash">
14001400+ <programlisting language="nix">
14011401{
14021402 services.bitcoind.mainnet = {
14031403 enable = true;
···14471447 the original SSL settings, you have to adjust the original
14481448 config, e.g.:
14491449 </para>
14501450- <programlisting language="bash">
14501450+ <programlisting language="nix">
14511451{
14521452 services.dokuwiki = {
14531453 enable = true;
···14581458 <para>
14591459 To something similar:
14601460 </para>
14611461- <programlisting language="bash">
14611461+ <programlisting language="nix">
14621462{
14631463 services.dokuwiki."mywiki" = {
14641464 enable = true;
···14721472</programlisting>
14731473 <para>
14741474 The base package has also been upgraded to the 2020-07-29
14751475- "Hogfather" release. Plugins might be incompatible
14761476- or require upgrading.
14751475+ <quote>Hogfather</quote> release. Plugins might be
14761476+ incompatible or require upgrading.
14771477 </para>
14781478 </listitem>
14791479 <listitem>
···14921492 option is (<literal>/var/db/postgresql</literal>) and then
14931493 explicitly set this value to maintain compatibility:
14941494 </para>
14951495- <programlisting language="bash">
14951495+ <programlisting language="nix">
14961496{
14971497 services.postgresql.dataDir = "/var/db/postgresql";
14981498}
···15871587 <listitem>
15881588 <para>
15891589 The <literal>security.rngd</literal> service is now disabled
15901590- by default. This choice was made because there's krngd in the
15901590+ by default. This choice was made because there’s krngd in the
15911591 linux kernel space making it (for most usecases) functionally
15921592 redundent.
15931593 </para>
···16091609 will be EOL (end of life) within the lifetime of 20.09</link>.
16101610 </para>
16111611 <para>
16121612- It's necessary to upgrade to nextcloud19:
16121612+ It’s necessary to upgrade to nextcloud19:
16131613 </para>
16141614 <itemizedlist>
16151615 <listitem>
16161616 <para>
16171617 From nextcloud17, you have to upgrade to nextcloud18 first
16181618- as Nextcloud doesn't allow going multiple major revisions
16181618+ as Nextcloud doesn’t allow going multiple major revisions
16191619 forward in a single upgrade. This is possible by setting
16201620 <link xlink:href="options.html#opt-services.nextcloud.package">services.nextcloud.package</link>
16211621 to nextcloud18.
···16231623 </listitem>
16241624 <listitem>
16251625 <para>
16261626- From nextcloud18, it's possible to directly upgrade to
16261626+ From nextcloud18, it’s possible to directly upgrade to
16271627 nextcloud19 by setting
16281628 <link xlink:href="options.html#opt-services.nextcloud.package">services.nextcloud.package</link>
16291629 to nextcloud19.
···16851685 <listitem>
16861686 <para>
16871687 The notmuch package moves its emacs-related binaries and emacs
16881688- lisp files to a separate output. They're not part of the
16881688+ lisp files to a separate output. They’re not part of the
16891689 default <literal>out</literal> output anymore - if you relied
16901690 on the <literal>notmuch-emacs-mua</literal> binary or the
16911691 emacs lisp files, access them via the
···17361736 </listitem>
17371737 <listitem>
17381738 <para>
17391739- The cc- and binutils-wrapper's "infix salt" and
17391739+ The cc- and binutils-wrapper’s <quote>infix salt</quote> and
17401740 <literal>_BUILD_</literal> and <literal>_TARGET_</literal>
17411741- user infixes have been replaced with with a "suffix
17421742- salt" and suffixes and <literal>_FOR_BUILD</literal> and
17431743- <literal>_FOR_TARGET</literal>. This matches the autotools
17411741+ user infixes have been replaced with with a <quote>suffix
17421742+ salt</quote> and suffixes and <literal>_FOR_BUILD</literal>
17431743+ and <literal>_FOR_TARGET</literal>. This matches the autotools
17441744 convention for env vars which standard for these things,
17451745 making interfacing with other tools easier.
17461746 </para>
···17741774 <literal>network-link-*</literal> units, which have been
17751775 removed. Bringing the interface up has been moved to the
17761776 beginning of the <literal>network-addresses-*</literal> unit.
17771777- Note this doesn't require <literal>systemd-networkd</literal>
17781778- - it's udev that parses <literal>.link</literal> files. Extra
17771777+ Note this doesn’t require <literal>systemd-networkd</literal>
17781778+ - it’s udev that parses <literal>.link</literal> files. Extra
17791779 care needs to be taken in the presence of
17801780 <link xlink:href="https://wiki.debian.org/NetworkInterfaceNames#THE_.22PERSISTENT_NAMES.22_SCHEME">legacy
17811781 udev rules</link> to rename interfaces, as MAC Address and MTU
···18251825 you must include those directories into the
18261826 <literal>BindPaths</literal> of the service:
18271827 </para>
18281828- <programlisting language="bash">
18281828+ <programlisting language="nix">
18291829{
18301830 systemd.services.transmission.serviceConfig.BindPaths = [ "/path/to/alternative/download-dir" ];
18311831}
···18351835 <literal>transmission-daemon</literal> is now only available
18361836 on the local network interface by default. Use:
18371837 </para>
18381838- <programlisting language="bash">
18381838+ <programlisting language="nix">
18391839{
18401840 services.transmission.settings.rpc-bind-address = "0.0.0.0";
18411841}
···18501850 With this release <literal>systemd-networkd</literal> (when
18511851 enabled through
18521852 <link xlink:href="options.html#opt-networking.useNetworkd">networking.useNetworkd</link>)
18531853- has it's netlink socket created through a
18531853+ has it’s netlink socket created through a
18541854 <literal>systemd.socket</literal> unit. This gives us control
18551855 over socket buffer sizes and other parameters. For larger
18561856 setups where networkd has to create a lot of (virtual) devices
···18731873 </para>
18741874 <para>
18751875 Since the actual memory requirements depend on hardware,
18761876- timing, exact configurations etc. it isn't currently possible
18761876+ timing, exact configurations etc. it isn’t currently possible
18771877 to infer a good default from within the NixOS module system.
18781878 Administrators are advised to monitor the logs of
18791879 <literal>systemd-networkd</literal> for
···18821882 </para>
18831883 <para>
18841884 Note: Increasing the <literal>ReceiveBufferSize=</literal>
18851885- doesn't allocate any memory. It just increases the upper bound
18851885+ doesn’t allocate any memory. It just increases the upper bound
18861886 on the kernel side. The memory allocation depends on the
18871887 amount of messages that are queued on the kernel side of the
18881888 netlink socket.
···19001900 <para>
19011901 This means that a configuration like this
19021902 </para>
19031903- <programlisting language="bash">
19031903+ <programlisting language="nix">
19041904{
19051905 services.dovecot2.mailboxes = [
19061906 { name = "Junk";
···19121912 <para>
19131913 should now look like this:
19141914 </para>
19151915- <programlisting language="bash">
19151915+ <programlisting language="nix">
19161916{
19171917 services.dovecot2.mailboxes = {
19181918 Junk.auto = "create";
···19341934 </para>
19351935 <para>
19361936 If you have an existing installation, please make sure that
19371937- you're on nextcloud18 before upgrading to nextcloud19 since
19381938- Nextcloud doesn't support upgrades across multiple major
19371937+ you’re on nextcloud18 before upgrading to nextcloud19 since
19381938+ Nextcloud doesn’t support upgrades across multiple major
19391939 versions.
19401940 </para>
19411941 </listitem>
···235235 <para>
236236 The <literal>networking.wireless.iwd</literal> module now
237237 installs the upstream-provided 80-iwd.link file, which sets
238238- the NamePolicy= for all wlan devices to "keep
239239- kernel", to avoid race conditions between iwd and
240240- networkd. If you don't want this, you can set
238238+ the NamePolicy= for all wlan devices to <quote>keep
239239+ kernel</quote>, to avoid race conditions between iwd and
240240+ networkd. If you don’t want this, you can set
241241 <literal>systemd.network.links."80-iwd" = lib.mkForce {}</literal>.
242242 </para>
243243 </listitem>
···245245 <para>
246246 <literal>rubyMinimal</literal> was removed due to being unused
247247 and unusable. The default ruby interpreter includes JIT
248248- support, which makes it reference it's compiler. Since JIT
248248+ support, which makes it reference it’s compiler. Since JIT
249249 support is probably needed by some Gems, it was decided to
250250 enable this feature with all cc references by default, and
251251 allow to build a Ruby derivation without references to cc, by
···330330 <literal>mediatomb</literal> package. If you want to keep the
331331 old behavior, you must declare it with:
332332 </para>
333333- <programlisting language="bash">
333333+ <programlisting language="nix">
334334{
335335 services.mediatomb.package = pkgs.mediatomb;
336336}
···341341 service declaration to add the firewall rules itself before,
342342 you should now declare it with:
343343 </para>
344344- <programlisting language="bash">
344344+ <programlisting language="nix">
345345{
346346 services.mediatomb.openFirewall = true;
347347}
···368368 <link xlink:href="options.html#opt-services.uwsgi.capabilities">services.uwsgi.capabilities</link>.
369369 The previous behaviour can be restored by setting:
370370 </para>
371371- <programlisting language="bash">
371371+ <programlisting language="nix">
372372{
373373 services.uwsgi.user = "root";
374374 services.uwsgi.group = "root";
···427427 <para>
428428 <link xlink:href="options.html#opt-networking.wireguard.interfaces">networking.wireguard.interfaces.<name>.generatePrivateKeyFile</link>,
429429 which is off by default, had a <literal>chmod</literal> race
430430- condition fixed. As an aside, the parent directory's
430430+ condition fixed. As an aside, the parent directory’s
431431 permissions were widened, and the key files were made
432432 owner-writable. This only affects newly created keys. However,
433433 if the exact permissions are important for your setup, read
···527527 this directory are guarded to only run if the files they
528528 want to manipulate do not already exist, and so will not
529529 re-apply their changes if the IMDS response changes.
530530- Examples: <literal>root</literal>'s SSH key is only added if
530530+ Examples: <literal>root</literal>’s SSH key is only added if
531531 <literal>/root/.ssh/authorized_keys</literal> does not
532532 exist, and SSH host keys are only set from user data if they
533533 do not exist in <literal>/etc/ssh</literal>.
···550550 configures Privoxy, and the
551551 <literal>services.tor.client.privoxy.enable</literal> option
552552 has been removed. To enable Privoxy, and to configure it to
553553- use Tor's faster port, use the following configuration:
553553+ use Tor’s faster port, use the following configuration:
554554 </para>
555555- <programlisting language="bash">
555555+ <programlisting language="nix">
556556{
557557 opt-services.privoxy.enable = true;
558558 opt-services.privoxy.enableTor = true;
···628628 exporter no longer accepts a fixed command-line parameter to
629629 specify the URL of the endpoint serving JSON. It now expects
630630 this URL to be passed as an URL parameter, when scraping the
631631- exporter's <literal>/probe</literal> endpoint. In the
631631+ exporter’s <literal>/probe</literal> endpoint. In the
632632 prometheus scrape configuration the scrape target might look
633633 like this:
634634 </para>
···689689 <literal>mpich</literal> instead of the default
690690 <literal>openmpi</literal> can now be achived like this:
691691 </para>
692692- <programlisting language="bash">
692692+ <programlisting language="nix">
693693self: super:
694694{
695695 mpi = super.mpich;
···790790 for any device that the kernel recognises as an hardware RNG,
791791 as it will automatically run the krngd task to periodically
792792 collect random data from the device and mix it into the
793793- kernel's RNG.
793793+ kernel’s RNG.
794794 </para>
795795 <para>
796796 The default SMTP port for GitLab has been changed to
···850850 kodiPackages.inputstream-adaptive and kodiPackages.vfs-sftp
851851 addons:
852852 </para>
853853- <programlisting language="bash">
853853+ <programlisting language="nix">
854854{
855855 environment.systemPackages = [
856856 pkgs.kodi
···867867 and as a result the above configuration should now be written
868868 as:
869869 </para>
870870- <programlisting language="bash">
870870+ <programlisting language="nix">
871871{
872872 environment.systemPackages = [
873873 (pkgs.kodi.withPackages (p: with p; [
···893893 <literal>services.minio.dataDir</literal> changed type to a
894894 list of paths, required for specifiyng multiple data
895895 directories for using with erasure coding. Currently, the
896896- service doesn't enforce nor checks the correct number of paths
896896+ service doesn’t enforce nor checks the correct number of paths
897897 to correspond to minio requirements.
898898 </para>
899899 </listitem>
···910910 <literal>dvorak-programmer</literal> in
911911 <literal>console.keyMap</literal> now instead of
912912 <literal>dvp</literal>. In
913913- <literal>services.xserver.xkbVariant</literal> it's still
913913+ <literal>services.xserver.xkbVariant</literal> it’s still
914914 <literal>dvp</literal>.
915915 </para>
916916 </listitem>
···954954 supported.
955955 </para>
956956 <para>
957957- Furthermore, Radicale's systemd unit was hardened which might
957957+ Furthermore, Radicale’s systemd unit was hardened which might
958958 break some deployments. In particular, a non-default
959959 <literal>filesystem_folder</literal> has to be added to
960960 <literal>systemd.services.radicale.serviceConfig.ReadWritePaths</literal>
···991991 <listitem>
992992 <para>
993993 <link xlink:href="https://www.gnuradio.org/">GNURadio</link>
994994- has a <literal>pkgs</literal> attribute set, and there's a
994994+ has a <literal>pkgs</literal> attribute set, and there’s a
995995 <literal>gnuradio.callPackage</literal> function that extends
996996 <literal>pkgs</literal> with a
997997 <literal>mkDerivation</literal>, and a
···10271027 <listitem>
10281028 <para>
10291029 <link xlink:href="https://kodi.tv/">Kodi</link> has been
10301030- updated to version 19.1 "Matrix". See the
10301030+ updated to version 19.1 <quote>Matrix</quote>. See the
10311031 <link xlink:href="https://kodi.tv/article/kodi-19-0-matrix-release">announcement</link>
10321032 for further details.
10331033 </para>
···10981098 <listitem>
10991099 <para>
11001100 The default-version of <literal>nextcloud</literal> is
11011101- nextcloud21. Please note that it's <emphasis>not</emphasis>
11011101+ nextcloud21. Please note that it’s <emphasis>not</emphasis>
11021102 possible to upgrade <literal>nextcloud</literal> across
11031103- multiple major versions! This means that it's e.g. not
11031103+ multiple major versions! This means that it’s e.g. not
11041104 possible to upgrade from nextcloud18 to nextcloud20 in a
11051105 single deploy and most <literal>20.09</literal> users will
11061106 have to upgrade to nextcloud20 first.
···11221122 </listitem>
11231123 <listitem>
11241124 <para>
11251125- NixOS now emits a deprecation warning if systemd's
11251125+ NixOS now emits a deprecation warning if systemd’s
11261126 <literal>StartLimitInterval</literal> setting is used in a
11271127 <literal>serviceConfig</literal> section instead of in a
11281128 <literal>unitConfig</literal>; that setting is deprecated and
···11581158 users to declare autoscan media directories from their nixos
11591159 configuration:
11601160 </para>
11611161- <programlisting language="bash">
11611161+ <programlisting language="nix">
11621162{
11631163 services.mediatomb.mediaDirectories = [
11641164 { path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; }
···12551255 <listitem>
12561256 <para>
12571257 The <literal>services.dnscrypt-proxy2</literal> module now
12581258- takes the upstream's example configuration and updates it with
12591259- the user's settings. An option has been added to restore the
12581258+ takes the upstream’s example configuration and updates it with
12591259+ the user’s settings. An option has been added to restore the
12601260 old behaviour if you prefer to declare the configuration from
12611261 scratch.
12621262 </para>
···12981298 <para>
12991299 The zookeeper package does not provide
13001300 <literal>zooInspector.sh</literal> anymore, as that
13011301- "contrib" has been dropped from upstream releases.
13011301+ <quote>contrib</quote> has been dropped from upstream
13021302+ releases.
13021303 </para>
13031304 </listitem>
13041305 <listitem>
···13171318 now always ensures home directory permissions to be
13181319 <literal>0700</literal>. Permissions had previously been
13191320 ignored for already existing home directories, possibly
13201320- leaving them readable by others. The option's description was
13211321+ leaving them readable by others. The option’s description was
13211322 incorrect regarding ownership management and has been
13221323 simplified greatly.
13231324 </para>
···15181519 been dropped. Users that still want it should add the
15191520 following to their system configuration:
15201521 </para>
15211521- <programlisting language="bash">
15221522+ <programlisting language="nix">
15221523{
15231524 services.gvfs.package = pkgs.gvfs.override { samba = null; };
15241525}
···10821082 removed. This option was an association of environment
10831083 variables for Grafana. If you had an expression like
10841084 </para>
10851085- <programlisting language="bash">
10851085+ <programlisting language="nix">
10861086{
10871087 services.grafana.extraOptions.SECURITY_ADMIN_USER = "foobar";
10881088}
···10961096 For the migration, it is recommended to turn it into the
10971097 INI format, i.e. to declare
10981098 </para>
10991099- <programlisting language="bash">
10991099+ <programlisting language="nix">
11001100{
11011101 services.grafana.settings.security.admin_user = "foobar";
11021102}
···1313(e.g., by restarting system services).
14141515::: {.warning}
1616-This command doesn\'t start/stop [user services](#opt-systemd.user.services)
1616+This command doesn't start/stop [user services](#opt-systemd.user.services)
1717automatically. `nixos-rebuild` only runs a `daemon-reload` for each user with running
1818user services.
1919:::
···5151```
52525353which causes the new configuration (and previous ones created using
5454-`-p test`) to show up in the GRUB submenu "NixOS - Profile \'test\'".
5454+`-p test`) to show up in the GRUB submenu "NixOS - Profile 'test'".
5555This can be useful to separate test configurations from "stable"
5656configurations.
5757
···303031311. Switch to the NixOS channel:
32323333- If you\'ve just installed Nix on a non-NixOS distribution, you will
3333+ If you've just installed Nix on a non-NixOS distribution, you will
3434 be on the `nixpkgs` channel by default.
35353636 ```ShellSession
···494950501. Install the NixOS installation tools:
51515252- You\'ll need `nixos-generate-config` and `nixos-install`, but this
5252+ You'll need `nixos-generate-config` and `nixos-install`, but this
5353 also makes some man pages and `nixos-enter` available, just in case
5454 you want to chroot into your NixOS partition. NixOS installs these
5555- by default, but you don\'t have NixOS yet..
5555+ by default, but you don't have NixOS yet..
56565757 ```ShellSession
5858 $ nix-env -f '<nixpkgs>' -iA nixos-install-tools
···7070 refer to the partitioning, file-system creation, and mounting steps
7171 of [](#sec-installation)
72727373- If you\'re about to install NixOS in place using `NIXOS_LUSTRATE`
7373+ If you're about to install NixOS in place using `NIXOS_LUSTRATE`
7474 there is nothing to do for this step.
757576761. Generate your NixOS configuration:
···7979 $ sudo `which nixos-generate-config` --root /mnt
8080 ```
81818282- You\'ll probably want to edit the configuration files. Refer to the
8282+ You'll probably want to edit the configuration files. Refer to the
8383 `nixos-generate-config` step in [](#sec-installation) for more
8484 information.
85858686 Consider setting up the NixOS bootloader to give you the ability to
8787- boot on your existing Linux partition. For instance, if you\'re
8787+ boot on your existing Linux partition. For instance, if you're
8888 using GRUB and your existing distribution is running Ubuntu, you may
8989 want to add something like this to your `configuration.nix`:
9090···152152 ```
153153154154 Note that this will place the generated configuration files in
155155- `/etc/nixos`. You\'ll probably want to edit the configuration files.
155155+ `/etc/nixos`. You'll probably want to edit the configuration files.
156156 Refer to the `nixos-generate-config` step in
157157 [](#sec-installation) for more information.
158158159159- You\'ll likely want to set a root password for your first boot using
160160- the configuration files because you won\'t have a chance to enter a
159159+ You'll likely want to set a root password for your first boot using
160160+ the configuration files because you won't have a chance to enter a
161161 password until after you reboot. You can initialize the root password
162162- to an empty one with this line: (and of course don\'t forget to set
163163- one once you\'ve rebooted or to lock the account with
162162+ to an empty one with this line: (and of course don't forget to set
163163+ one once you've rebooted or to lock the account with
164164 `sudo passwd -l root` if you use `sudo`)
165165166166 ```nix
···186186 bootup scripts require its presence).
187187188188 `/etc/NIXOS_LUSTRATE` tells the NixOS bootup scripts to move
189189- *everything* that\'s in the root partition to `/old-root`. This will
189189+ *everything* that's in the root partition to `/old-root`. This will
190190 move your existing distribution out of the way in the very early
191191 stages of the NixOS bootup. There are exceptions (we do need to keep
192192 NixOS there after all), so the NixOS lustrate process will not
···201201202202 ::: {.note}
203203 Support for `NIXOS_LUSTRATE` was added in NixOS 16.09. The act of
204204- \"lustrating\" refers to the wiping of the existing distribution.
204204+ "lustrating" refers to the wiping of the existing distribution.
205205 Creating `/etc/NIXOS_LUSTRATE` can also be used on NixOS to remove
206206- all mutable files from your root partition (anything that\'s not in
207207- `/nix` or `/boot` gets \"lustrated\" on the next boot.
206206+ all mutable files from your root partition (anything that's not in
207207+ `/nix` or `/boot` gets "lustrated" on the next boot.
208208209209 lustrate /ˈlʌstreɪt/ verb.
210210···212212 ritual action.
213213 :::
214214215215- Let\'s create the files:
215215+ Let's create the files:
216216217217 ```ShellSession
218218 $ sudo touch /etc/NIXOS
219219 $ sudo touch /etc/NIXOS_LUSTRATE
220220 ```
221221222222- Let\'s also make sure the NixOS configuration files are kept once we
222222+ Let's also make sure the NixOS configuration files are kept once we
223223 reboot on NixOS:
224224225225 ```ShellSession
···233233234234 ::: {.warning}
235235 Once you complete this step, your current distribution will no
236236- longer be bootable! If you didn\'t get all the NixOS configuration
236236+ longer be bootable! If you didn't get all the NixOS configuration
237237 right, especially those settings pertaining to boot loading and root
238238 partition, NixOS may not be bootable either. Have a USB rescue
239239 device ready in case this happens.
···247247 Cross your fingers, reboot, hopefully you should get a NixOS prompt!
2482482492491. If for some reason you want to revert to the old distribution,
250250- you\'ll need to boot on a USB rescue disk and do something along
250250+ you'll need to boot on a USB rescue disk and do something along
251251 these lines:
252252253253 ```ShellSession
···264264 This may work as is or you might also need to reinstall the boot
265265 loader.
266266267267- And of course, if you\'re happy with NixOS and no longer need the
267267+ And of course, if you're happy with NixOS and no longer need the
268268 old distribution:
269269270270 ```ShellSession
271271 sudo rm -rf /old-root
272272 ```
273273274274-1. It\'s also worth noting that this whole process can be automated.
274274+1. It's also worth noting that this whole process can be automated.
275275 This is especially useful for Cloud VMs, where provider do not
276276 provide NixOS. For instance,
277277 [nixos-infect](https://github.com/elitak/nixos-infect) uses the
···3030These three files are meant to be copied over to the other already running
3131Linux Distribution.
32323333-Note it's symlinks pointing elsewhere, so `cd` in, and use
3333+Note its symlinks pointing elsewhere, so `cd` in, and use
3434`scp * root@$destination` to copy it over, rather than rsync.
35353636Once you finished copying, execute `kexec-boot` *on the destination*, and after
···5656 sudo dd if=<path-to-image> of=/dev/rdiskX bs=4m
5757 ```
58585959- After `dd` completes, a GUI dialog \"The disk
6060- you inserted was not readable by this computer\" will pop up, which can
5959+ After `dd` completes, a GUI dialog "The disk
6060+ you inserted was not readable by this computer" will pop up, which can
6161 be ignored.
62626363 ::: {.note}
6464- Using the \'raw\' `rdiskX` device instead of `diskX` with dd completes in
6464+ Using the 'raw' `rdiskX` device instead of `diskX` with dd completes in
6565 minutes instead of hours.
6666 :::
6767
···66page](https://nixos.org/nixos/download.html). If you want to set up a
77VirtualBox guest manually, follow these instructions:
8899-1. Add a New Machine in VirtualBox with OS Type \"Linux / Other Linux\"
99+1. Add a New Machine in VirtualBox with OS Type "Linux / Other Linux"
101011111. Base Memory Size: 768 MB or higher.
1212···161617171. Click on Settings / System / Processor and enable PAE/NX
18181919-1. Click on Settings / System / Acceleration and enable \"VT-x/AMD-V\"
1919+1. Click on Settings / System / Acceleration and enable "VT-x/AMD-V"
2020 acceleration
212122221. Click on Settings / Display / Screen and select VMSVGA as Graphics
···41414242Shared folders can be given a name and a path in the host system in the
4343VirtualBox settings (Machine / Settings / Shared Folders, then click on
4444-the \"Add\" icon). Add the following to the
4444+the "Add" icon). Add the following to the
4545`/etc/nixos/configuration.nix` to auto-mount them. If you do not add
4646`"nofail"`, the system will not boot properly.
4747
···230230#### UEFI (GPT) {#sec-installation-manual-partitioning-UEFI}
231231[]{#sec-installation-partitioning-UEFI} <!-- legacy anchor -->
232232233233-Here\'s an example partition scheme for UEFI, using `/dev/sda` as the
233233+Here's an example partition scheme for UEFI, using `/dev/sda` as the
234234device.
235235236236::: {.note}
237237-You can safely ignore `parted`\'s informational message about needing to
237237+You can safely ignore `parted`'s informational message about needing to
238238update /etc/fstab.
239239:::
240240···279279#### Legacy Boot (MBR) {#sec-installation-manual-partitioning-MBR}
280280[]{#sec-installation-partitioning-MBR} <!-- legacy anchor -->
281281282282-Here\'s an example partition scheme for Legacy Boot, using `/dev/sda` as
282282+Here's an example partition scheme for Legacy Boot, using `/dev/sda` as
283283the device.
284284285285::: {.note}
286286-You can safely ignore `parted`\'s informational message about needing to
286286+You can safely ignore `parted`'s informational message about needing to
287287update /etc/fstab.
288288:::
289289
+1-1
nixos/doc/manual/md-to-db.sh
···11#! /usr/bin/env nix-shell
22-#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/21.11 -i bash -p pandoc
22+#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/22.11 -i bash -p pandoc
3344# This script is temporarily needed while we transition the manual to
55# CommonMark. It converts the .md files in the regular manual folder
+6-6
nixos/doc/manual/release-notes/rl-1509.section.md
···2233In addition to numerous new and upgraded packages, this release has the following highlights:
4455-- The [Haskell](http://haskell.org/) packages infrastructure has been re-designed from the ground up (\"Haskell NG\"). NixOS now distributes the latest version of every single package registered on [Hackage](http://hackage.haskell.org/) \-- well in excess of 8,000 Haskell packages. Detailed instructions on how to use that infrastructure can be found in the [User\'s Guide to the Haskell Infrastructure](https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure). Users migrating from an earlier release may find helpful information below, in the list of backwards-incompatible changes. Furthermore, we distribute 51(!) additional Haskell package sets that provide every single [LTS Haskell](http://www.stackage.org/) release since version 0.0 as well as the most recent [Stackage Nightly](http://www.stackage.org/) snapshot. The announcement [\"Full Stackage Support in Nixpkgs\"](https://nixos.org/nix-dev/2015-September/018138.html) gives additional details.
55+- The [Haskell](http://haskell.org/) packages infrastructure has been re-designed from the ground up ("Haskell NG"). NixOS now distributes the latest version of every single package registered on [Hackage](http://hackage.haskell.org/) \-- well in excess of 8,000 Haskell packages. Detailed instructions on how to use that infrastructure can be found in the [User's Guide to the Haskell Infrastructure](https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure). Users migrating from an earlier release may find helpful information below, in the list of backwards-incompatible changes. Furthermore, we distribute 51(!) additional Haskell package sets that provide every single [LTS Haskell](http://www.stackage.org/) release since version 0.0 as well as the most recent [Stackage Nightly](http://www.stackage.org/) snapshot. The announcement ["Full Stackage Support in Nixpkgs"](https://nixos.org/nix-dev/2015-September/018138.html) gives additional details.
6677- Nix has been updated to version 1.10, which among other improvements enables cryptographic signatures on binary caches for improved security.
88···178178179179- Nix now requires binary caches to be cryptographically signed. If you have unsigned binary caches that you want to continue to use, you should set `nix.requireSignedBinaryCaches = false`.
180180181181-- Steam now doesn\'t need root rights to work. Instead of using `*-steam-chrootenv`, you should now just run `steam`. `steamChrootEnv` package was renamed to `steam`, and old `steam` package \-- to `steamOriginal`.
181181+- Steam now doesn't need root rights to work. Instead of using `*-steam-chrootenv`, you should now just run `steam`. `steamChrootEnv` package was renamed to `steam`, and old `steam` package \-- to `steamOriginal`.
182182183183- CMPlayer has been renamed to bomi upstream. Package `cmplayer` was accordingly renamed to `bomi`
184184···203203}
204204```
205205206206-- \"`nix-env -qa`\" no longer discovers Haskell packages by name. The only packages visible in the global scope are `ghc`, `cabal-install`, and `stack`, but all other packages are hidden. The reason for this inconvenience is the sheer size of the Haskell package set. Name-based lookups are expensive, and most `nix-env -qa` operations would become much slower if we\'d add the entire Hackage database into the top level attribute set. Instead, the list of Haskell packages can be displayed by running:
206206+- "`nix-env -qa`" no longer discovers Haskell packages by name. The only packages visible in the global scope are `ghc`, `cabal-install`, and `stack`, but all other packages are hidden. The reason for this inconvenience is the sheer size of the Haskell package set. Name-based lookups are expensive, and most `nix-env -qa` operations would become much slower if we'd add the entire Hackage database into the top level attribute set. Instead, the list of Haskell packages can be displayed by running:
207207208208```ShellSession
209209nix-env -f "<nixpkgs>" -qaP -A haskellPackages
···217217218218Installing Haskell _libraries_ this way, however, is no longer supported. See the next item for more details.
219219220220-- Previous versions of NixOS came with a feature called `ghc-wrapper`, a small script that allowed GHC to transparently pick up on libraries installed in the user\'s profile. This feature has been deprecated; `ghc-wrapper` was removed from the distribution. The proper way to register Haskell libraries with the compiler now is the `haskellPackages.ghcWithPackages` function. The [User\'s Guide to the Haskell Infrastructure](https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure) provides more information about this subject.
220220+- Previous versions of NixOS came with a feature called `ghc-wrapper`, a small script that allowed GHC to transparently pick up on libraries installed in the user's profile. This feature has been deprecated; `ghc-wrapper` was removed from the distribution. The proper way to register Haskell libraries with the compiler now is the `haskellPackages.ghcWithPackages` function. The [User's Guide to the Haskell Infrastructure](https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure) provides more information about this subject.
221221222222- All Haskell builds that have been generated with version 1.x of the `cabal2nix` utility are now invalid and need to be re-generated with a current version of `cabal2nix` to function. The most recent version of this tool can be installed by running `nix-env -i cabal2nix`.
223223224224-- The `haskellPackages` set in Nixpkgs used to have a function attribute called `extension` that users could override in their `~/.nixpkgs/config.nix` files to configure additional attributes, etc. That function still exists, but it\'s now called `overrides`.
224224+- The `haskellPackages` set in Nixpkgs used to have a function attribute called `extension` that users could override in their `~/.nixpkgs/config.nix` files to configure additional attributes, etc. That function still exists, but it's now called `overrides`.
225225226226- The OpenBLAS library has been updated to version `0.2.14`. Support for the `x86_64-darwin` platform was added. Dynamic architecture detection was enabled; OpenBLAS now selects microarchitecture-optimized routines at runtime, so optimal performance is achieved without the need to rebuild OpenBLAS locally. OpenBLAS has replaced ATLAS in most packages which use an optimized BLAS or LAPACK implementation.
227227···312312313313- The nixos and nixpkgs channels were unified, so one _can_ use `nix-env -iA nixos.bash` instead of `nix-env -iA nixos.pkgs.bash`. See [the commit](https://github.com/NixOS/nixpkgs/commit/2cd7c1f198) for details.
314314315315-- Users running an SSH server who worry about the quality of their `/etc/ssh/moduli` file with respect to the [vulnerabilities discovered in the Diffie-Hellman key exchange](https://stribika.github.io/2015/01/04/secure-secure-shell.html) can now replace OpenSSH\'s default version with one they generated themselves using the new `services.openssh.moduliFile` option.
315315+- Users running an SSH server who worry about the quality of their `/etc/ssh/moduli` file with respect to the [vulnerabilities discovered in the Diffie-Hellman key exchange](https://stribika.github.io/2015/01/04/secure-secure-shell.html) can now replace OpenSSH's default version with one they generated themselves using the new `services.openssh.moduliFile` option.
316316317317- A newly packaged TeX Live 2015 is provided in `pkgs.texlive`, split into 6500 nix packages. For basic user documentation see [the source](https://github.com/NixOS/nixpkgs/blob/release-15.09/pkgs/tools/typesetting/tex/texlive/default.nix#L1). Beware of [an issue](https://github.com/NixOS/nixpkgs/issues/9757) when installing a too large package set. The plan is to deprecate and maybe delete the original TeX packages until the next release.
318318
+8-8
nixos/doc/manual/release-notes/rl-1603.section.md
···152152 }
153153 ```
154154155155-- `s3sync` is removed, as it hasn\'t been developed by upstream for 4 years and only runs with ruby 1.8. For an actively-developer alternative look at `tarsnap` and others.
155155+- `s3sync` is removed, as it hasn't been developed by upstream for 4 years and only runs with ruby 1.8. For an actively-developer alternative look at `tarsnap` and others.
156156157157-- `ruby_1_8` has been removed as it\'s not supported from upstream anymore and probably contains security issues.
157157+- `ruby_1_8` has been removed as it's not supported from upstream anymore and probably contains security issues.
158158159159- `tidy-html5` package is removed. Upstream only provided `(lib)tidy5` during development, and now they went back to `(lib)tidy` to work as a drop-in replacement of the original package that has been unmaintained for years. You can (still) use the `html-tidy` package, which got updated to a stable release from this new upstream.
160160161161- `extraDeviceOptions` argument is removed from `bumblebee` package. Instead there are now two separate arguments: `extraNvidiaDeviceOptions` and `extraNouveauDeviceOptions` for setting extra X11 options for nvidia and nouveau drivers, respectively.
162162163163-- The `Ctrl+Alt+Backspace` key combination no longer kills the X server by default. There\'s a new option `services.xserver.enableCtrlAltBackspace` allowing to enable the combination again.
163163+- The `Ctrl+Alt+Backspace` key combination no longer kills the X server by default. There's a new option `services.xserver.enableCtrlAltBackspace` allowing to enable the combination again.
164164165165- `emacsPackagesNg` now contains all packages from the ELPA, MELPA, and MELPA Stable repositories.
166166167167-- Data directory for Postfix MTA server is moved from `/var/postfix` to `/var/lib/postfix`. Old configurations are migrated automatically. `service.postfix` module has also received many improvements, such as correct directories\' access rights, new `aliasFiles` and `mapFiles` options and more.
167167+- Data directory for Postfix MTA server is moved from `/var/postfix` to `/var/lib/postfix`. Old configurations are migrated automatically. `service.postfix` module has also received many improvements, such as correct directories' access rights, new `aliasFiles` and `mapFiles` options and more.
168168169169- Filesystem options should now be configured as a list of strings, not a comma-separated string. The old style will continue to work, but print a warning, until the 16.09 release. An example of the new style:
170170···180180181181- CUPS, installed by `services.printing` module, now has its data directory in `/var/lib/cups`. Old configurations from `/etc/cups` are moved there automatically, but there might be problems. Also configuration options `services.printing.cupsdConf` and `services.printing.cupsdFilesConf` were removed because they had been allowing one to override configuration variables required for CUPS to work at all on NixOS. For most use cases, `services.printing.extraConf` and new option `services.printing.extraFilesConf` should be enough; if you encounter a situation when they are not, please file a bug.
182182183183- There are also Gutenprint improvements; in particular, a new option `services.printing.gutenprint` is added to enable automatic updating of Gutenprint PPMs; it\'s greatly recommended to enable it instead of adding `gutenprint` to the `drivers` list.
183183+ There are also Gutenprint improvements; in particular, a new option `services.printing.gutenprint` is added to enable automatic updating of Gutenprint PPMs; it's greatly recommended to enable it instead of adding `gutenprint` to the `drivers` list.
184184185185- `services.xserver.vaapiDrivers` has been removed. Use `hardware.opengl.extraPackages{,32}` instead. You can also specify VDPAU drivers there.
186186···202202 }
203203 ```
204204205205-- `services.udev.extraRules` option now writes rules to `99-local.rules` instead of `10-local.rules`. This makes all the user rules apply after others, so their results wouldn\'t be overridden by anything else.
205205+- `services.udev.extraRules` option now writes rules to `99-local.rules` instead of `10-local.rules`. This makes all the user rules apply after others, so their results wouldn't be overridden by anything else.
206206207207- Large parts of the `services.gitlab` module has been been rewritten. There are new configuration options available. The `stateDir` option was renamned to `statePath` and the `satellitesDir` option was removed. Please review the currently available options.
208208···246246247247 you should either re-run `nixos-generate-config` or manually replace `"${config.boot.kernelPackages.broadcom_sta}"` by `config.boot.kernelPackages.broadcom_sta` in your `/etc/nixos/hardware-configuration.nix`. More discussion is on [ the github issue](https://github.com/NixOS/nixpkgs/pull/12595).
248248249249-- The `services.xserver.startGnuPGAgent` option has been removed. GnuPG 2.1.x changed the way the gpg-agent works, and that new approach no longer requires (or even supports) the \"start everything as a child of the agent\" scheme we\'ve implemented in NixOS for older versions. To configure the gpg-agent for your X session, add the following code to `~/.bashrc` or some file that's sourced when your shell is started:
249249+- The `services.xserver.startGnuPGAgent` option has been removed. GnuPG 2.1.x changed the way the gpg-agent works, and that new approach no longer requires (or even supports) the "start everything as a child of the agent" scheme we've implemented in NixOS for older versions. To configure the gpg-agent for your X session, add the following code to `~/.bashrc` or some file that's sourced when your shell is started:
250250251251 ```shell
252252 GPG_TTY=$(tty)
···273273 gpg --import ~/.gnupg/secring.gpg
274274 ```
275275276276- The `gpg-agent(1)` man page has more details about this subject, i.e. in the \"EXAMPLES\" section.
276276+ The `gpg-agent(1)` man page has more details about this subject, i.e. in the "EXAMPLES" section.
277277278278Other notable improvements:
279279
+3-3
nixos/doc/manual/release-notes/rl-1609.section.md
···20202121- A large number of packages have been converted to use the multiple outputs feature of Nix to greatly reduce the amount of required disk space, as mentioned above. This may require changes to any custom packages to make them build again; see the relevant chapter in the Nixpkgs manual for more information. (Additional caveat to packagers: some packaging conventions related to multiple-output packages [were changed](https://github.com/NixOS/nixpkgs/pull/14766) late (August 2016) in the release cycle and differ from the initial introduction of multiple outputs.)
22222323-- Previous versions of Nixpkgs had support for all versions of the LTS Haskell package set. That support has been dropped. The previously provided `haskell.packages.lts-x_y` package sets still exist in name to aviod breaking user code, but these package sets don\'t actually contain the versions mandated by the corresponding LTS release. Instead, our package set it loosely based on the latest available LTS release, i.e. LTS 7.x at the time of this writing. New releases of NixOS and Nixpkgs will drop those old names entirely. [The motivation for this change](https://nixos.org/nix-dev/2016-June/020585.html) has been discussed at length on the `nix-dev` mailing list and in [Github issue \#14897](https://github.com/NixOS/nixpkgs/issues/14897). Development strategies for Haskell hackers who want to rely on Nix and NixOS have been described in [another nix-dev article](https://nixos.org/nix-dev/2016-June/020642.html).
2323+- Previous versions of Nixpkgs had support for all versions of the LTS Haskell package set. That support has been dropped. The previously provided `haskell.packages.lts-x_y` package sets still exist in name to aviod breaking user code, but these package sets don't actually contain the versions mandated by the corresponding LTS release. Instead, our package set it loosely based on the latest available LTS release, i.e. LTS 7.x at the time of this writing. New releases of NixOS and Nixpkgs will drop those old names entirely. [The motivation for this change](https://nixos.org/nix-dev/2016-June/020585.html) has been discussed at length on the `nix-dev` mailing list and in [Github issue \#14897](https://github.com/NixOS/nixpkgs/issues/14897). Development strategies for Haskell hackers who want to rely on Nix and NixOS have been described in [another nix-dev article](https://nixos.org/nix-dev/2016-June/020642.html).
24242525- Shell aliases for systemd sub-commands [were dropped](https://github.com/NixOS/nixpkgs/pull/15598): `start`, `stop`, `restart`, `status`.
2626···28282929- `/var/empty` is now immutable. Activation script runs `chattr +i` to forbid any modifications inside the folder. See [ the pull request](https://github.com/NixOS/nixpkgs/pull/18365) for what bugs this caused.
30303131-- Gitlab\'s maintainance script `gitlab-runner` was removed and split up into the more clearer `gitlab-run` and `gitlab-rake` scripts, because `gitlab-runner` is a component of Gitlab CI.
3131+- Gitlab's maintainance script `gitlab-runner` was removed and split up into the more clearer `gitlab-run` and `gitlab-rake` scripts, because `gitlab-runner` is a component of Gitlab CI.
32323333- `services.xserver.libinput.accelProfile` default changed from `flat` to `adaptive`, as per [ official documentation](https://wayland.freedesktop.org/libinput/doc/latest/group__config.html#gad63796972347f318b180e322e35cee79).
3434···38383939- `pkgs.linuxPackages.virtualbox` now contains only the kernel modules instead of the VirtualBox user space binaries. If you want to reference the user space binaries, you have to use the new `pkgs.virtualbox` instead.
40404141-- `goPackages` was replaced with separated Go applications in appropriate `nixpkgs` categories. Each Go package uses its own dependency set. There\'s also a new `go2nix` tool introduced to generate a Go package definition from its Go source automatically.
4141+- `goPackages` was replaced with separated Go applications in appropriate `nixpkgs` categories. Each Go package uses its own dependency set. There's also a new `go2nix` tool introduced to generate a Go package definition from its Go source automatically.
42424343- `services.mongodb.extraConfig` configuration format was changed to YAML.
4444
+5-5
nixos/doc/manual/release-notes/rl-1703.section.md
···8899- This release is based on Glibc 2.25, GCC 5.4.0 and systemd 232. The default Linux kernel is 4.9 and Nix is at 1.11.8.
10101111-- The default desktop environment now is KDE\'s Plasma 5. KDE 4 has been removed
1111+- The default desktop environment now is KDE's Plasma 5. KDE 4 has been removed
12121313- The setuid wrapper functionality now supports setting capabilities.
1414···208208209209- Two lone top-level dict dbs moved into `dictdDBs`. This affects: `dictdWordnet` which is now at `dictdDBs.wordnet` and `dictdWiktionary` which is now at `dictdDBs.wiktionary`
210210211211-- Parsoid service now uses YAML configuration format. `service.parsoid.interwikis` is now called `service.parsoid.wikis` and is a list of either API URLs or attribute sets as specified in parsoid\'s documentation.
211211+- Parsoid service now uses YAML configuration format. `service.parsoid.interwikis` is now called `service.parsoid.wikis` and is a list of either API URLs or attribute sets as specified in parsoid's documentation.
212212213213- `Ntpd` was replaced by `systemd-timesyncd` as the default service to synchronize system time with a remote NTP server. The old behavior can be restored by setting `services.ntp.enable` to `true`. Upstream time servers for all NTP implementations are now configured using `networking.timeServers`.
214214···260260261261- Autoloading connection tracking helpers is now disabled by default. This default was also changed in the Linux kernel and is considered insecure if not configured properly in your firewall. If you need connection tracking helpers (i.e. for active FTP) please enable `networking.firewall.autoLoadConntrackHelpers` and tune `networking.firewall.connectionTrackingModules` to suit your needs.
262262263263-- `local_recipient_maps` is not set to empty value by Postfix service. It\'s an insecure default as stated by Postfix documentation. Those who want to retain this setting need to set it via `services.postfix.extraConfig`.
263263+- `local_recipient_maps` is not set to empty value by Postfix service. It's an insecure default as stated by Postfix documentation. Those who want to retain this setting need to set it via `services.postfix.extraConfig`.
264264265265- Iputils no longer provide ping6 and traceroute6. The functionality of these tools has been integrated into ping and traceroute respectively. To enforce an address family the new flags `-4` and `-6` have been added. One notable incompatibility is that specifying an interface (for link-local IPv6 for instance) is no longer done with the `-I` flag, but by encoding the interface into the address (`ping fe80::1%eth0`).
266266267267-- The socket handling of the `services.rmilter` module has been fixed and refactored. As rmilter doesn\'t support binding to more than one socket, the options `bindUnixSockets` and `bindInetSockets` have been replaced by `services.rmilter.bindSocket.*`. The default is still a unix socket in `/run/rmilter/rmilter.sock`. Refer to the options documentation for more information.
267267+- The socket handling of the `services.rmilter` module has been fixed and refactored. As rmilter doesn't support binding to more than one socket, the options `bindUnixSockets` and `bindInetSockets` have been replaced by `services.rmilter.bindSocket.*`. The default is still a unix socket in `/run/rmilter/rmilter.sock`. Refer to the options documentation for more information.
268268269269- The `fetch*` functions no longer support md5, please use sha256 instead.
270270···278278279279- Module type system have a new extensible option types feature that allow to extend certain types, such as enum, through multiple option declarations of the same option across multiple modules.
280280281281-- `jre` now defaults to GTK UI by default. This improves visual consistency and makes Java follow system font style, improving the situation on HighDPI displays. This has a cost of increased closure size; for server and other headless workloads it\'s recommended to use `jre_headless`.
281281+- `jre` now defaults to GTK UI by default. This improves visual consistency and makes Java follow system font style, improving the situation on HighDPI displays. This has a cost of increased closure size; for server and other headless workloads it's recommended to use `jre_headless`.
282282283283- Python 2.6 interpreter and package set have been removed.
284284
+8-8
nixos/doc/manual/release-notes/rl-1709.section.md
···8899- The user handling now keeps track of deallocated UIDs/GIDs. When a user or group is revived, this allows it to be allocated the UID/GID it had before. A consequence is that UIDs and GIDs are no longer reused.
10101111-- The module option `services.xserver.xrandrHeads` now causes the first head specified in this list to be set as the primary head. Apart from that, it\'s now possible to also set additional options by using an attribute set, for example:
1111+- The module option `services.xserver.xrandrHeads` now causes the first head specified in this list to be set as the primary head. Apart from that, it's now possible to also set additional options by using an attribute set, for example:
12121313 ```nix
1414 { services.xserver.xrandrHeads = [
···208208209209 - The `mysql` default `dataDir` has changed from `/var/mysql` to `/var/lib/mysql`.
210210211211- - Radicale\'s default package has changed from 1.x to 2.x. Instructions to migrate can be found [ here ](http://radicale.org/1to2/). It is also possible to use the newer version by setting the `package` to `radicale2`, which is done automatically when `stateVersion` is 17.09 or higher. The `extraArgs` option has been added to allow passing the data migration arguments specified in the instructions; see the `radicale.nix` NixOS test for an example migration.
211211+ - Radicale's default package has changed from 1.x to 2.x. Instructions to migrate can be found [ here ](http://radicale.org/1to2/). It is also possible to use the newer version by setting the `package` to `radicale2`, which is done automatically when `stateVersion` is 17.09 or higher. The `extraArgs` option has been added to allow passing the data migration arguments specified in the instructions; see the `radicale.nix` NixOS test for an example migration.
212212213213- The `aiccu` package was removed. This is due to SixXS [ sunsetting](https://www.sixxs.net/main/) its IPv6 tunnel.
214214···216216217217- Top-level `idea` package collection was renamed. All JetBrains IDEs are now at `jetbrains`.
218218219219-- `flexget`\'s state database cannot be upgraded to its new internal format, requiring removal of any existing `db-config.sqlite` which will be automatically recreated.
219219+- `flexget`'s state database cannot be upgraded to its new internal format, requiring removal of any existing `db-config.sqlite` which will be automatically recreated.
220220221221-- The `ipfs` service now doesn\'t ignore the `dataDir` option anymore. If you\'ve ever set this option to anything other than the default you\'ll have to either unset it (so the default gets used) or migrate the old data manually with
221221+- The `ipfs` service now doesn't ignore the `dataDir` option anymore. If you've ever set this option to anything other than the default you'll have to either unset it (so the default gets used) or migrate the old data manually with
222222223223 ```ShellSession
224224 dataDir=<valueOfDataDir>
···236236237237- `wvdial` package and module were removed. This is due to the project being dead and not building with openssl 1.1.
238238239239-- `cc-wrapper`\'s setup-hook now exports a number of environment variables corresponding to binutils binaries, (e.g. `LD`, `STRIP`, `RANLIB`, etc). This is done to prevent packages\' build systems guessing, which is harder to predict, especially when cross-compiling. However, some packages have broken due to this---their build systems either not supporting, or claiming to support without adequate testing, taking such environment variables as parameters.
239239+- `cc-wrapper`'s setup-hook now exports a number of environment variables corresponding to binutils binaries, (e.g. `LD`, `STRIP`, `RANLIB`, etc). This is done to prevent packages' build systems guessing, which is harder to predict, especially when cross-compiling. However, some packages have broken due to this---their build systems either not supporting, or claiming to support without adequate testing, taking such environment variables as parameters.
240240241241- `services.firefox.syncserver` now runs by default as a non-root user. To accommodate this change, the default sqlite database location has also been changed. Migration should work automatically. Refer to the description of the options for more details.
242242···244244245245- Touchpad support should now be enabled through `libinput` as `synaptics` is now deprecated. See the option `services.xserver.libinput.enable`.
246246247247-- grsecurity/PaX support has been dropped, following upstream\'s decision to cease free support. See [ upstream\'s announcement](https://grsecurity.net/passing_the_baton.php) for more information. No complete replacement for grsecurity/PaX is available presently.
247247+- grsecurity/PaX support has been dropped, following upstream's decision to cease free support. See [ upstream's announcement](https://grsecurity.net/passing_the_baton.php) for more information. No complete replacement for grsecurity/PaX is available presently.
248248249249- `services.mysql` now has declarative configuration of databases and users with the `ensureDatabases` and `ensureUsers` options.
250250···283283284284## Other Notable Changes {#sec-release-17.09-notable-changes}
285285286286-- Modules can now be disabled by using [ disabledModules](https://nixos.org/nixpkgs/manual/#sec-replace-modules), allowing another to take it\'s place. This can be used to import a set of modules from another channel while keeping the rest of the system on a stable release.
286286+- Modules can now be disabled by using [ disabledModules](https://nixos.org/nixpkgs/manual/#sec-replace-modules), allowing another to take it's place. This can be used to import a set of modules from another channel while keeping the rest of the system on a stable release.
287287288288-- Updated to FreeType 2.7.1, including a new TrueType engine. The new engine replaces the Infinality engine which was the default in NixOS. The default font rendering settings are now provided by fontconfig-penultimate, replacing fontconfig-ultimate; the new defaults are less invasive and provide rendering that is more consistent with other systems and hopefully with each font designer\'s intent. Some system-wide configuration has been removed from the Fontconfig NixOS module where user Fontconfig settings are available.
288288+- Updated to FreeType 2.7.1, including a new TrueType engine. The new engine replaces the Infinality engine which was the default in NixOS. The default font rendering settings are now provided by fontconfig-penultimate, replacing fontconfig-ultimate; the new defaults are less invasive and provide rendering that is more consistent with other systems and hopefully with each font designer's intent. Some system-wide configuration has been removed from the Fontconfig NixOS module where user Fontconfig settings are available.
289289290290- ZFS/SPL have been updated to 0.7.0, `zfsUnstable, splUnstable` have therefore been removed.
291291
+5-5
nixos/doc/manual/release-notes/rl-1803.section.md
···6677- End of support is planned for end of October 2018, handing over to 18.09.
8899-- Platform support: x86_64-linux and x86_64-darwin since release time (the latter isn\'t NixOS, really). Binaries for aarch64-linux are available, but no channel exists yet, as it\'s waiting for some test fixes, etc.
99+- Platform support: x86_64-linux and x86_64-darwin since release time (the latter isn't NixOS, really). Binaries for aarch64-linux are available, but no channel exists yet, as it's waiting for some test fixes, etc.
10101111- Nix now defaults to 2.0; see its [release notes](https://nixos.org/nix/manual/#ssec-relnotes-2.0).
1212···176176177177- `cc-wrapper` has been split in two; there is now also a `bintools-wrapper`. The most commonly used files in `nix-support` are now split between the two wrappers. Some commonly used ones, like `nix-support/dynamic-linker`, are duplicated for backwards compatability, even though they rightly belong only in `bintools-wrapper`. Other more obscure ones are just moved.
178178179179-- The propagation logic has been changed. The new logic, along with new types of dependencies that go with, is thoroughly documented in the \"Specifying dependencies\" section of the \"Standard Environment\" chapter of the nixpkgs manual. The old logic isn\'t but is easy to describe: dependencies were propagated as the same type of dependency no matter what. In practice, that means that many `propagatedNativeBuildInputs` should instead be `propagatedBuildInputs`. Thankfully, that was and is the least used type of dependency. Also, it means that some `propagatedBuildInputs` should instead be `depsTargetTargetPropagated`. Other types dependencies should be unaffected.
179179+- The propagation logic has been changed. The new logic, along with new types of dependencies that go with, is thoroughly documented in the "Specifying dependencies" section of the "Standard Environment" chapter of the nixpkgs manual. The old logic isn't but is easy to describe: dependencies were propagated as the same type of dependency no matter what. In practice, that means that many `propagatedNativeBuildInputs` should instead be `propagatedBuildInputs`. Thankfully, that was and is the least used type of dependency. Also, it means that some `propagatedBuildInputs` should instead be `depsTargetTargetPropagated`. Other types dependencies should be unaffected.
180180181181- `lib.addPassthru drv passthru` is removed. Use `lib.extendDerivation true passthru drv` instead.
182182···184184185185- The `hardware.amdHybridGraphics.disable` option was removed for lack of a maintainer. If you still need this module, you may wish to include a copy of it from an older version of nixos in your imports.
186186187187-- The merging of config options for `services.postfix.config` was buggy. Previously, if other options in the Postfix module like `services.postfix.useSrs` were set and the user set config options that were also set by such options, the resulting config wouldn\'t include all options that were needed. They are now merged correctly. If config options need to be overridden, `lib.mkForce` or `lib.mkOverride` can be used.
187187+- The merging of config options for `services.postfix.config` was buggy. Previously, if other options in the Postfix module like `services.postfix.useSrs` were set and the user set config options that were also set by such options, the resulting config wouldn't include all options that were needed. They are now merged correctly. If config options need to be overridden, `lib.mkForce` or `lib.mkOverride` can be used.
188188189189- The following changes apply if the `stateVersion` is changed to 18.03 or higher. For `stateVersion = "17.09"` or lower the old behavior is preserved.
190190···204204205205 - The data directory `/var/lib/piwik` was renamed to `/var/lib/matomo`. All files will be moved automatically on first startup, but you might need to adjust your backup scripts.
206206207207- - The default `serverName` for the nginx configuration changed from `piwik.${config.networking.hostName}` to `matomo.${config.networking.hostName}.${config.networking.domain}` if `config.networking.domain` is set, `matomo.${config.networking.hostName}` if it is not set. If you change your `serverName`, remember you\'ll need to update the `trustedHosts[]` array in `/var/lib/matomo/config/config.ini.php` as well.
207207+ - The default `serverName` for the nginx configuration changed from `piwik.${config.networking.hostName}` to `matomo.${config.networking.hostName}.${config.networking.domain}` if `config.networking.domain` is set, `matomo.${config.networking.hostName}` if it is not set. If you change your `serverName`, remember you'll need to update the `trustedHosts[]` array in `/var/lib/matomo/config/config.ini.php` as well.
208208209209 - The `piwik` user was renamed to `matomo`. The service will adjust ownership automatically for files in the data directory. If you use unix socket authentication, remember to give the new `matomo` user access to the database and to change the `username` to `matomo` in the `[database]` section of `/var/lib/matomo/config/config.ini.php`.
210210···250250251251- The option `services.logstash.listenAddress` is now `127.0.0.1` by default. Previously the default behaviour was to listen on all interfaces.
252252253253-- `services.btrfs.autoScrub` has been added, to periodically check btrfs filesystems for data corruption. If there\'s a correct copy available, it will automatically repair corrupted blocks.
253253+- `services.btrfs.autoScrub` has been added, to periodically check btrfs filesystems for data corruption. If there's a correct copy available, it will automatically repair corrupted blocks.
254254255255- `displayManager.lightdm.greeters.gtk.clock-format.` has been added, the clock format string (as expected by strftime, e.g. `%H:%M`) to use with the lightdm gtk greeter panel.
256256
+5-5
nixos/doc/manual/release-notes/rl-1809.section.md
···204204205205- The `clementine` package points now to the free derivation. `clementineFree` is removed now and `clementineUnfree` points to the package which is bundled with the unfree `libspotify` package.
206206207207-- The `netcat` package is now taken directly from OpenBSD\'s `libressl`, instead of relying on Debian\'s fork. The new version should be very close to the old version, but there are some minor differences. Importantly, flags like -b, -q, -C, and -Z are no longer accepted by the nc command.
207207+- The `netcat` package is now taken directly from OpenBSD's `libressl`, instead of relying on Debian's fork. The new version should be very close to the old version, but there are some minor differences. Importantly, flags like -b, -q, -C, and -Z are no longer accepted by the nc command.
208208209209-- The `services.docker-registry.extraConfig` object doesn\'t contain environment variables anymore. Instead it needs to provide an object structure that can be mapped onto the YAML configuration defined in [the `docker/distribution` docs](https://github.com/docker/distribution/blob/v2.6.2/docs/configuration.md).
209209+- The `services.docker-registry.extraConfig` object doesn't contain environment variables anymore. Instead it needs to provide an object structure that can be mapped onto the YAML configuration defined in [the `docker/distribution` docs](https://github.com/docker/distribution/blob/v2.6.2/docs/configuration.md).
210210211211-- `gnucash` has changed from version 2.4 to 3.x. If you\'ve been using `gnucash` (version 2.4) instead of `gnucash26` (version 2.6) you must open your Gnucash data file(s) with `gnucash26` and then save them to upgrade the file format. Then you may use your data file(s) with Gnucash 3.x. See the upgrade [documentation](https://wiki.gnucash.org/wiki/FAQ#Using_Different_Versions.2C_Up_And_Downgrade). Gnucash 2.4 is still available under the attribute `gnucash24`.
211211+- `gnucash` has changed from version 2.4 to 3.x. If you've been using `gnucash` (version 2.4) instead of `gnucash26` (version 2.6) you must open your Gnucash data file(s) with `gnucash26` and then save them to upgrade the file format. Then you may use your data file(s) with Gnucash 3.x. See the upgrade [documentation](https://wiki.gnucash.org/wiki/FAQ#Using_Different_Versions.2C_Up_And_Downgrade). Gnucash 2.4 is still available under the attribute `gnucash24`.
212212213213- `services.munge` now runs as user (and group) `munge` instead of root. Make sure the key file is accessible to the daemon.
214214···315315316316- The Kubernetes Dashboard now has only minimal RBAC permissions by default. If dashboard cluster-admin rights are desired, set `services.kubernetes.addons.dashboard.rbac.clusterAdmin` to true. On existing clusters, in order for the revocation of privileges to take effect, the current ClusterRoleBinding for kubernetes-dashboard must be manually removed: `kubectl delete clusterrolebinding kubernetes-dashboard`
317317318318-- The `programs.screen` module provides allows to configure `/etc/screenrc`, however the module behaved fairly counterintuitive as the config exists, but the package wasn\'t available. Since 18.09 `pkgs.screen` will be added to `environment.systemPackages`.
318318+- The `programs.screen` module provides allows to configure `/etc/screenrc`, however the module behaved fairly counterintuitive as the config exists, but the package wasn't available. Since 18.09 `pkgs.screen` will be added to `environment.systemPackages`.
319319320320- The module `services.networking.hostapd` now uses WPA2 by default.
321321···327327328328- The default display manager is now LightDM. To use SLiM set `services.xserver.displayManager.slim.enable` to `true`.
329329330330-- NixOS option descriptions are now automatically broken up into individual paragraphs if the text contains two consecutive newlines, so it\'s no longer necessary to use `</para><para>` to start a new paragraph.
330330+- NixOS option descriptions are now automatically broken up into individual paragraphs if the text contains two consecutive newlines, so it's no longer necessary to use `</para><para>` to start a new paragraph.
331331332332- Top-level `buildPlatform`, `hostPlatform`, and `targetPlatform` in Nixpkgs are deprecated. Please use their equivalents in `stdenv` instead: `stdenv.buildPlatform`, `stdenv.hostPlatform`, and `stdenv.targetPlatform`.
+9-9
nixos/doc/manual/release-notes/rl-1903.section.md
···1111- Added the Pantheon desktop environment. It can be enabled through `services.xserver.desktopManager.pantheon.enable`.
12121313 ::: {.note}
1414- By default, `services.xserver.desktopManager.pantheon` enables LightDM as a display manager, as pantheon\'s screen locking implementation relies on it.
1515- Because of that it is recommended to leave LightDM enabled. If you\'d like to disable it anyway, set `services.xserver.displayManager.lightdm.enable` to `false` and enable your preferred display manager.
1414+ By default, `services.xserver.desktopManager.pantheon` enables LightDM as a display manager, as pantheon's screen locking implementation relies on it.
1515+ Because of that it is recommended to leave LightDM enabled. If you'd like to disable it anyway, set `services.xserver.displayManager.lightdm.enable` to `false` and enable your preferred display manager.
1616 :::
17171818- Also note that Pantheon\'s LightDM greeter is not enabled by default, because it has numerous issues in NixOS and isn\'t optimal for use here yet.
1818+ Also note that Pantheon's LightDM greeter is not enabled by default, because it has numerous issues in NixOS and isn't optimal for use here yet.
19192020- A major refactoring of the Kubernetes module has been completed. Refactorings primarily focus on decoupling components and enhancing security. Two-way TLS and RBAC has been enabled by default for all components, which slightly changes the way the module is configured. See: [](#sec-kubernetes) for details.
2121···57575858- The Syncthing state and configuration data has been moved from `services.syncthing.dataDir` to the newly defined `services.syncthing.configDir`, which default to `/var/lib/syncthing/.config/syncthing`. This change makes possible to share synced directories using ACLs without Syncthing resetting the permission on every start.
59596060-- The `ntp` module now has sane default restrictions. If you\'re relying on the previous defaults, which permitted all queries and commands from all firewall-permitted sources, you can set `services.ntp.restrictDefault` and `services.ntp.restrictSource` to `[]`.
6060+- The `ntp` module now has sane default restrictions. If you're relying on the previous defaults, which permitted all queries and commands from all firewall-permitted sources, you can set `services.ntp.restrictDefault` and `services.ntp.restrictSource` to `[]`.
61616262- Package `rabbitmq_server` is renamed to `rabbitmq-server`.
6363···89899090- The option `services.xserver.displayManager.job.logToFile` which was previously set to `true` when using the display managers `lightdm`, `sddm` or `xpra` has been reset to the default value (`false`).
91919292-- Network interface indiscriminate NixOS firewall options (`networking.firewall.allow*`) are now preserved when also setting interface specific rules such as `networking.firewall.interfaces.en0.allow*`. These rules continue to use the pseudo device \"default\" (`networking.firewall.interfaces.default.*`), and assigning to this pseudo device will override the (`networking.firewall.allow*`) options.
9292+- Network interface indiscriminate NixOS firewall options (`networking.firewall.allow*`) are now preserved when also setting interface specific rules such as `networking.firewall.interfaces.en0.allow*`. These rules continue to use the pseudo device "default" (`networking.firewall.interfaces.default.*`), and assigning to this pseudo device will override the (`networking.firewall.allow*`) options.
93939494-- The `nscd` service now disables all caching of `passwd` and `group` databases by default. This was interferring with the correct functioning of the `libnss_systemd.so` module which is used by `systemd` to manage uids and usernames in the presence of `DynamicUser=` in systemd services. This was already the default behaviour in presence of `services.sssd.enable = true` because nscd caching would interfere with `sssd` in unpredictable ways as well. Because we\'re using nscd not for caching, but for convincing glibc to find NSS modules in the nix store instead of an absolute path, we have decided to disable caching globally now, as it\'s usually not the behaviour the user wants and can lead to surprising behaviour. Furthermore, negative caching of host lookups is also disabled now by default. This should fix the issue of dns lookups failing in the presence of an unreliable network.
9494+- The `nscd` service now disables all caching of `passwd` and `group` databases by default. This was interferring with the correct functioning of the `libnss_systemd.so` module which is used by `systemd` to manage uids and usernames in the presence of `DynamicUser=` in systemd services. This was already the default behaviour in presence of `services.sssd.enable = true` because nscd caching would interfere with `sssd` in unpredictable ways as well. Because we're using nscd not for caching, but for convincing glibc to find NSS modules in the nix store instead of an absolute path, we have decided to disable caching globally now, as it's usually not the behaviour the user wants and can lead to surprising behaviour. Furthermore, negative caching of host lookups is also disabled now by default. This should fix the issue of dns lookups failing in the presence of an unreliable network.
95959696 If the old behaviour is desired, this can be restored by setting the `services.nscd.config` option with the desired caching parameters.
9797···137137138138- The `pam_unix` account module is now loaded with its control field set to `required` instead of `sufficient`, so that later PAM account modules that might do more extensive checks are being executed. Previously, the whole account module verification was exited prematurely in case a nss module provided the account name to `pam_unix`. The LDAP and SSSD NixOS modules already add their NSS modules when enabled. In case your setup breaks due to some later PAM account module previosuly shadowed, or failing NSS lookups, please file a bug. You can get back the old behaviour by manually setting `security.pam.services.<name?>.text`.
139139140140-- The `pam_unix` password module is now loaded with its control field set to `sufficient` instead of `required`, so that password managed only by later PAM password modules are being executed. Previously, for example, changing an LDAP account\'s password through PAM was not possible: the whole password module verification was exited prematurely by `pam_unix`, preventing `pam_ldap` to manage the password as it should.
140140+- The `pam_unix` password module is now loaded with its control field set to `sufficient` instead of `required`, so that password managed only by later PAM password modules are being executed. Previously, for example, changing an LDAP account's password through PAM was not possible: the whole password module verification was exited prematurely by `pam_unix`, preventing `pam_ldap` to manage the password as it should.
141141142142- `fish` has been upgraded to 3.0. It comes with a number of improvements and backwards incompatible changes. See the `fish` [release notes](https://github.com/fish-shell/fish-shell/releases/tag/3.0.0) for more information.
143143···145145146146- NixOS module system type `types.optionSet` and `lib.mkOption` argument `options` are deprecated. Use `types.submodule` instead. ([\#54637](https://github.com/NixOS/nixpkgs/pull/54637))
147147148148-- `matrix-synapse` has been updated to version 0.99. It will [no longer generate a self-signed certificate on first launch](https://github.com/matrix-org/synapse/pull/4509) and will be [the last version to accept self-signed certificates](https://matrix.org/blog/2019/02/05/synapse-0-99-0/). As such, it is now recommended to use a proper certificate verified by a root CA (for example Let\'s Encrypt). The new [manual chapter on Matrix](#module-services-matrix) contains a working example of using nginx as a reverse proxy in front of `matrix-synapse`, using Let\'s Encrypt certificates.
148148+- `matrix-synapse` has been updated to version 0.99. It will [no longer generate a self-signed certificate on first launch](https://github.com/matrix-org/synapse/pull/4509) and will be [the last version to accept self-signed certificates](https://matrix.org/blog/2019/02/05/synapse-0-99-0/). As such, it is now recommended to use a proper certificate verified by a root CA (for example Let's Encrypt). The new [manual chapter on Matrix](#module-services-matrix) contains a working example of using nginx as a reverse proxy in front of `matrix-synapse`, using Let's Encrypt certificates.
149149150150- `mailutils` now works by default when `sendmail` is not in a setuid wrapper. As a consequence, the `sendmailPath` argument, having lost its main use, has been removed.
151151···191191 With this change application specific volumes are relative to the master volume which can be adjusted independently, whereas before they were absolute; meaning that in effect, it scaled the device-volume with the volume of the loudest application.
192192 :::
193193194194-- The [`ndppd`](https://github.com/DanielAdolfsson/ndppd) module now supports [all config options](options.html#opt-services.ndppd.enable) provided by the current upstream version as service options. Additionally the `ndppd` package doesn\'t contain the systemd unit configuration from upstream anymore, the unit is completely configured by the NixOS module now.
194194+- The [`ndppd`](https://github.com/DanielAdolfsson/ndppd) module now supports [all config options](options.html#opt-services.ndppd.enable) provided by the current upstream version as service options. Additionally the `ndppd` package doesn't contain the systemd unit configuration from upstream anymore, the unit is completely configured by the NixOS module now.
195195196196- New installs of NixOS will default to the Redmine 4.x series unless otherwise specified in `services.redmine.package` while existing installs of NixOS will default to the Redmine 3.x series.
197197
+15-15
nixos/doc/manual/release-notes/rl-1909.section.md
···34343535- The installer now uses a less privileged `nixos` user whereas before we logged in as root. To gain root privileges use `sudo -i` without a password.
36363737-- We\'ve updated to Xfce 4.14, which brings a new module `services.xserver.desktopManager.xfce4-14`. If you\'d like to upgrade, please switch from the `services.xserver.desktopManager.xfce` module as it will be deprecated in a future release. They\'re incompatibilities with the current Xfce module; it doesn\'t support `thunarPlugins` and it isn\'t recommended to use `services.xserver.desktopManager.xfce` and `services.xserver.desktopManager.xfce4-14` simultaneously or to downgrade from Xfce 4.14 after upgrading.
3737+- We've updated to Xfce 4.14, which brings a new module `services.xserver.desktopManager.xfce4-14`. If you'd like to upgrade, please switch from the `services.xserver.desktopManager.xfce` module as it will be deprecated in a future release. They're incompatibilities with the current Xfce module; it doesn't support `thunarPlugins` and it isn't recommended to use `services.xserver.desktopManager.xfce` and `services.xserver.desktopManager.xfce4-14` simultaneously or to downgrade from Xfce 4.14 after upgrading.
38383939- The GNOME 3 desktop manager module sports an interface to enable/disable core services, applications, and optional GNOME packages like games.
4040···46464747 - `services.gnome3.games.enable`
48484949- With these options we hope to give users finer grained control over their systems. Prior to this change you\'d either have to manually disable options or use `environment.gnome3.excludePackages` which only excluded the optional applications. `environment.gnome3.excludePackages` is now unguarded, it can exclude any package installed with `environment.systemPackages` in the GNOME 3 module.
4949+ With these options we hope to give users finer grained control over their systems. Prior to this change you'd either have to manually disable options or use `environment.gnome3.excludePackages` which only excluded the optional applications. `environment.gnome3.excludePackages` is now unguarded, it can exclude any package installed with `environment.systemPackages` in the GNOME 3 module.
50505151-- Orthogonal to the previous changes to the GNOME 3 desktop manager module, we\'ve updated all default services and applications to match as close as possible to a default reference GNOME 3 experience.
5151+- Orthogonal to the previous changes to the GNOME 3 desktop manager module, we've updated all default services and applications to match as close as possible to a default reference GNOME 3 experience.
52525353 **The following changes were enacted in `services.gnome3.core-utilities.enable`**
5454···104104105105 - `services.xserver.desktopManager.pantheon`
106106107107- - `services.xserver.desktopManager.mate` Note Mate uses `programs.system-config-printer` as it doesn\'t use it as a service, but its graphical interface directly.
107107+ - `services.xserver.desktopManager.mate` Note Mate uses `programs.system-config-printer` as it doesn't use it as a service, but its graphical interface directly.
108108109109- [services.blueman.enable](options.html#opt-services.blueman.enable) has been added. If you previously had blueman installed via `environment.systemPackages` please migrate to using the NixOS module, as this would result in an insufficiently configured blueman.
110110···118118119119- PostgreSQL 9.4 is scheduled EOL during the 19.09 life cycle and has been removed.
120120121121-- The options `services.prometheus.alertmanager.user` and `services.prometheus.alertmanager.group` have been removed because the alertmanager service is now using systemd\'s [ DynamicUser mechanism](http://0pointer.net/blog/dynamic-users-with-systemd.html) which obviates these options.
121121+- The options `services.prometheus.alertmanager.user` and `services.prometheus.alertmanager.group` have been removed because the alertmanager service is now using systemd's [ DynamicUser mechanism](http://0pointer.net/blog/dynamic-users-with-systemd.html) which obviates these options.
122122123123- The NetworkManager systemd unit was renamed back from network-manager.service to NetworkManager.service for better compatibility with other applications expecting this name. The same applies to ModemManager where modem-manager.service is now called ModemManager.service again.
124124125125-- The `services.nzbget.configFile` and `services.nzbget.openFirewall` options were removed as they are managed internally by the nzbget. The `services.nzbget.dataDir` option hadn\'t actually been used by the module for some time and so was removed as cleanup.
125125+- The `services.nzbget.configFile` and `services.nzbget.openFirewall` options were removed as they are managed internally by the nzbget. The `services.nzbget.dataDir` option hadn't actually been used by the module for some time and so was removed as cleanup.
126126127127- The `services.mysql.pidDir` option was removed, as it was only used by the wordpress apache-httpd service to wait for mysql to have started up. This can be accomplished by either describing a dependency on mysql.service (preferred) or waiting for the (hardcoded) `/run/mysqld/mysql.sock` file to appear.
128128···148148149149 A new knob named `nixops.enableDeprecatedAutoLuks` has been introduced to disable the eval failure and to acknowledge the notice was received and read. If you plan on using the feature please note that it might break with subsequent updates.
150150151151- Make sure you set the `_netdev` option for each of the file systems referring to block devices provided by the autoLuks module. Not doing this might render the system in a state where it doesn\'t boot anymore.
151151+ Make sure you set the `_netdev` option for each of the file systems referring to block devices provided by the autoLuks module. Not doing this might render the system in a state where it doesn't boot anymore.
152152153153 If you are actively using the `autoLuks` module please let us know in [issue \#62211](https://github.com/NixOS/nixpkgs/issues/62211).
154154···196196197197 Furthermore, the acme module will not automatically add a dependency on `lighttpd.service` anymore. If you are using certficates provided by letsencrypt for lighttpd, then you should depend on the certificate service `acme-${cert}.service>` manually.
198198199199- For nginx, the dependencies are still automatically managed when `services.nginx.virtualhosts.<name>.enableACME` is enabled just like before. What changed is that nginx now directly depends on the specific certificates that it needs, instead of depending on the catch-all `acme-certificates.target`. This target unit was also removed from the codebase. This will mean nginx will no longer depend on certificates it isn\'t explicitly managing and fixes a bug with certificate renewal ordering racing with nginx restarting which could lead to nginx getting in a broken state as described at [NixOS/nixpkgs\#60180](https://github.com/NixOS/nixpkgs/issues/60180).
199199+ For nginx, the dependencies are still automatically managed when `services.nginx.virtualhosts.<name>.enableACME` is enabled just like before. What changed is that nginx now directly depends on the specific certificates that it needs, instead of depending on the catch-all `acme-certificates.target`. This target unit was also removed from the codebase. This will mean nginx will no longer depend on certificates it isn't explicitly managing and fixes a bug with certificate renewal ordering racing with nginx restarting which could lead to nginx getting in a broken state as described at [NixOS/nixpkgs\#60180](https://github.com/NixOS/nixpkgs/issues/60180).
200200201201- The old deprecated `emacs` package sets have been dropped. What used to be called `emacsPackagesNg` is now simply called `emacsPackages`.
202202203203-- `services.xserver.desktopManager.xterm` is now disabled by default if `stateVersion` is 19.09 or higher. Previously the xterm desktopManager was enabled when xserver was enabled, but it isn\'t useful for all people so it didn\'t make sense to have any desktopManager enabled default.
203203+- `services.xserver.desktopManager.xterm` is now disabled by default if `stateVersion` is 19.09 or higher. Previously the xterm desktopManager was enabled when xserver was enabled, but it isn't useful for all people so it didn't make sense to have any desktopManager enabled default.
204204205205-- The WeeChat plugin `pkgs.weechatScripts.weechat-xmpp` has been removed as it doesn\'t receive any updates from upstream and depends on outdated Python2-based modules.
205205+- The WeeChat plugin `pkgs.weechatScripts.weechat-xmpp` has been removed as it doesn't receive any updates from upstream and depends on outdated Python2-based modules.
206206207207- Old unsupported versions (`logstash5`, `kibana5`, `filebeat5`, `heartbeat5`, `metricbeat5`, `packetbeat5`) of the ELK-stack and Elastic beats have been removed.
208208···210210211211- Citrix Receiver (`citrix_receiver`) has been dropped in favor of Citrix Workspace (`citrix_workspace`).
212212213213-- The `services.gitlab` module has had its literal secret options (`services.gitlab.smtp.password`, `services.gitlab.databasePassword`, `services.gitlab.initialRootPassword`, `services.gitlab.secrets.secret`, `services.gitlab.secrets.db`, `services.gitlab.secrets.otp` and `services.gitlab.secrets.jws`) replaced by file-based versions (`services.gitlab.smtp.passwordFile`, `services.gitlab.databasePasswordFile`, `services.gitlab.initialRootPasswordFile`, `services.gitlab.secrets.secretFile`, `services.gitlab.secrets.dbFile`, `services.gitlab.secrets.otpFile` and `services.gitlab.secrets.jwsFile`). This was done so that secrets aren\'t stored in the world-readable nix store, but means that for each option you\'ll have to create a file with the same exact string, add \"File\" to the end of the option name, and change the definition to a string pointing to the corresponding file; e.g. `services.gitlab.databasePassword = "supersecurepassword"` becomes `services.gitlab.databasePasswordFile = "/path/to/secret_file"` where the file `secret_file` contains the string `supersecurepassword`.
213213+- The `services.gitlab` module has had its literal secret options (`services.gitlab.smtp.password`, `services.gitlab.databasePassword`, `services.gitlab.initialRootPassword`, `services.gitlab.secrets.secret`, `services.gitlab.secrets.db`, `services.gitlab.secrets.otp` and `services.gitlab.secrets.jws`) replaced by file-based versions (`services.gitlab.smtp.passwordFile`, `services.gitlab.databasePasswordFile`, `services.gitlab.initialRootPasswordFile`, `services.gitlab.secrets.secretFile`, `services.gitlab.secrets.dbFile`, `services.gitlab.secrets.otpFile` and `services.gitlab.secrets.jwsFile`). This was done so that secrets aren't stored in the world-readable nix store, but means that for each option you'll have to create a file with the same exact string, add "File" to the end of the option name, and change the definition to a string pointing to the corresponding file; e.g. `services.gitlab.databasePassword = "supersecurepassword"` becomes `services.gitlab.databasePasswordFile = "/path/to/secret_file"` where the file `secret_file` contains the string `supersecurepassword`.
214214215215 The state path (`services.gitlab.statePath`) now has the following restriction: no parent directory can be owned by any other user than `root` or the user specified in `services.gitlab.user`; i.e. if `services.gitlab.statePath` is set to `/var/lib/gitlab/state`, `gitlab` and all parent directories must be owned by either `root` or the user specified in `services.gitlab.user`.
216216···218218219219- The Twitter client `corebird` has been dropped as [it is discontinued and does not work against the new Twitter API](https://www.patreon.com/posts/corebirds-future-18921328). Please use the fork `cawbird` instead which has been adapted to the API changes and is still maintained.
220220221221-- The `nodejs-11_x` package has been removed as it\'s EOLed by upstream.
221221+- The `nodejs-11_x` package has been removed as it's EOLed by upstream.
222222223223- Because of the systemd upgrade, systemd-timesyncd will no longer work if `system.stateVersion` is not set correctly. When upgrading from NixOS 19.03, please make sure that `system.stateVersion` is set to `"19.03"`, or lower if the installation dates back to an earlier version of NixOS.
224224···252252253253- The `consul` package was upgraded past version `1.5`, so its deprecated legacy UI is no longer available.
254254255255-- The default resample-method for PulseAudio has been changed from the upstream default `speex-float-1` to `speex-float-5`. Be aware that low-powered ARM-based and MIPS-based boards will struggle with this so you\'ll need to set `hardware.pulseaudio.daemon.config.resample-method` back to `speex-float-1`.
255255+- The default resample-method for PulseAudio has been changed from the upstream default `speex-float-1` to `speex-float-5`. Be aware that low-powered ARM-based and MIPS-based boards will struggle with this so you'll need to set `hardware.pulseaudio.daemon.config.resample-method` back to `speex-float-1`.
256256257257- The `phabricator` package and associated `httpd.extraSubservice`, as well as the `phd` service have been removed from nixpkgs due to lack of maintainer.
258258···264264265265- The `tomcat-connector` `httpd.extraSubservice` has been removed from nixpkgs.
266266267267-- It\'s now possible to change configuration in [services.nextcloud](options.html#opt-services.nextcloud.enable) after the initial deploy since all config parameters are persisted in an additional config file generated by the module. Previously core configuration like database parameters were set using their imperative installer after creating `/var/lib/nextcloud`.
267267+- It's now possible to change configuration in [services.nextcloud](options.html#opt-services.nextcloud.enable) after the initial deploy since all config parameters are persisted in an additional config file generated by the module. Previously core configuration like database parameters were set using their imperative installer after creating `/var/lib/nextcloud`.
268268269269- There exists now `lib.forEach`, which is like `map`, but with arguments flipped. When mapping function body spans many lines (or has nested `map`s), it is often hard to follow which list is modified.
270270···308308309309- The `altcoins` categorization of packages has been removed. You now access these packages at the top level, ie. `nix-shell -p dogecoin` instead of `nix-shell -p altcoins.dogecoin`, etc.
310310311311-- Ceph has been upgraded to v14.2.1. See the [release notes](https://ceph.com/releases/v14-2-0-nautilus-released/) for details. The mgr dashboard as well as osds backed by loop-devices is no longer explicitly supported by the package and module. Note: There\'s been some issues with python-cherrypy, which is used by the dashboard and prometheus mgr modules (and possibly others), hence 0000-dont-check-cherrypy-version.patch.
311311+- Ceph has been upgraded to v14.2.1. See the [release notes](https://ceph.com/releases/v14-2-0-nautilus-released/) for details. The mgr dashboard as well as osds backed by loop-devices is no longer explicitly supported by the package and module. Note: There's been some issues with python-cherrypy, which is used by the dashboard and prometheus mgr modules (and possibly others), hence 0000-dont-check-cherrypy-version.patch.
312312313313- `pkgs.weechat` is now compiled against `pkgs.python3`. Weechat also recommends [to use Python3 in their docs.](https://weechat.org/scripts/python3/)
+29-29
nixos/doc/manual/release-notes/rl-2003.section.md
···34343535- Postgresql for NixOS service now defaults to v11.
36363737-- The graphical installer image starts the graphical session automatically. Before you\'d be greeted by a tty and asked to enter `systemctl start display-manager`. It is now possible to disable the display-manager from running by selecting the `Disable display-manager` quirk in the boot menu.
3737+- The graphical installer image starts the graphical session automatically. Before you'd be greeted by a tty and asked to enter `systemctl start display-manager`. It is now possible to disable the display-manager from running by selecting the `Disable display-manager` quirk in the boot menu.
38383939- GNOME 3 has been upgraded to 3.34. Please take a look at their [Release Notes](https://help.gnome.org/misc/release-notes/3.34) for details.
40404141-- If you enable the Pantheon Desktop Manager via [services.xserver.desktopManager.pantheon.enable](options.html#opt-services.xserver.desktopManager.pantheon.enable), we now default to also use [ Pantheon\'s newly designed greeter ](https://blog.elementary.io/say-hello-to-the-new-greeter/). Contrary to NixOS\'s usual update policy, Pantheon will receive updates during the cycle of NixOS 20.03 when backwards compatible.
4141+- If you enable the Pantheon Desktop Manager via [services.xserver.desktopManager.pantheon.enable](options.html#opt-services.xserver.desktopManager.pantheon.enable), we now default to also use [ Pantheon's newly designed greeter ](https://blog.elementary.io/say-hello-to-the-new-greeter/). Contrary to NixOS's usual update policy, Pantheon will receive updates during the cycle of NixOS 20.03 when backwards compatible.
42424343- By default zfs pools will now be trimmed on a weekly basis. Trimming is only done on supported devices (i.e. NVME or SSDs) and should improve throughput and lifetime of these devices. It is controlled by the `services.zfs.trim.enable` varname. The zfs scrub service (`services.zfs.autoScrub.enable`) and the zfs autosnapshot service (`services.zfs.autoSnapshot.enable`) are now only enabled if zfs is set in `config.boot.initrd.supportedFilesystems` or `config.boot.supportedFilesystems`. These lists will automatically contain zfs as soon as any zfs mountpoint is configured in `fileSystems`.
4444···77777878- The kubernetes kube-proxy now supports a new hostname configuration `services.kubernetes.proxy.hostname` which has to be set if the hostname of the node should be non default.
79798080-- UPower\'s configuration is now managed by NixOS and can be customized via `services.upower`.
8080+- UPower's configuration is now managed by NixOS and can be customized via `services.upower`.
81818282- To use Geary you should enable [programs.geary.enable](options.html#opt-programs.geary.enable) instead of just adding it to [environment.systemPackages](options.html#opt-environment.systemPackages). It was created so Geary could function properly outside of GNOME.
8383···187187188188- The `99-main.network` file was removed. Matching all network interfaces caused many breakages, see [\#18962](https://github.com/NixOS/nixpkgs/pull/18962) and [\#71106](https://github.com/NixOS/nixpkgs/pull/71106).
189189190190- We already don\'t support the global [networking.useDHCP](options.html#opt-networking.useDHCP), [networking.defaultGateway](options.html#opt-networking.defaultGateway) and [networking.defaultGateway6](options.html#opt-networking.defaultGateway6) options if [networking.useNetworkd](options.html#opt-networking.useNetworkd) is enabled, but direct users to configure the per-device [networking.interfaces.\<name\>....](options.html#opt-networking.interfaces) options.
190190+ We already don't support the global [networking.useDHCP](options.html#opt-networking.useDHCP), [networking.defaultGateway](options.html#opt-networking.defaultGateway) and [networking.defaultGateway6](options.html#opt-networking.defaultGateway6) options if [networking.useNetworkd](options.html#opt-networking.useNetworkd) is enabled, but direct users to configure the per-device [networking.interfaces.\<name\>....](options.html#opt-networking.interfaces) options.
191191192192-- The stdenv now runs all bash with `set -u`, to catch the use of undefined variables. Before, it itself used `set -u` but was careful to unset it so other packages\' code ran as before. Now, all bash code is held to the same high standard, and the rather complex stateful manipulation of the options can be discarded.
192192+- The stdenv now runs all bash with `set -u`, to catch the use of undefined variables. Before, it itself used `set -u` but was careful to unset it so other packages' code ran as before. Now, all bash code is held to the same high standard, and the rather complex stateful manipulation of the options can be discarded.
193193194194- The SLIM Display Manager has been removed, as it has been unmaintained since 2013. Consider migrating to a different display manager such as LightDM (current default in NixOS), SDDM, GDM, or using the startx module which uses Xinitrc.
195195···197197198198- The BEAM package set has been deleted. You will only find there the different interpreters. You should now use the different build tools coming with the languages with sandbox mode disabled.
199199200200-- There is now only one Xfce package-set and module. This means that attributes `xfce4-14` and `xfceUnstable` all now point to the latest Xfce 4.14 packages. And in the future NixOS releases will be the latest released version of Xfce available at the time of the release\'s development (if viable).
200200+- There is now only one Xfce package-set and module. This means that attributes `xfce4-14` and `xfceUnstable` all now point to the latest Xfce 4.14 packages. And in the future NixOS releases will be the latest released version of Xfce available at the time of the release's development (if viable).
201201202202- The [phpfpm](options.html#opt-services.phpfpm.pools) module now sets `PrivateTmp=true` in its systemd units for better process isolation. If you rely on `/tmp` being shared with other services, explicitly override this by setting `serviceConfig.PrivateTmp` to `false` for each phpfpm unit.
203203···221221222222- The packages `openobex` and `obexftp` are no longer installed when enabling Bluetooth via `hardware.bluetooth.enable`.
223223224224-- The `dump1090` derivation has been changed to use FlightAware\'s dump1090 as its upstream. However, this version does not have an internal webserver anymore. The assets in the `share/dump1090` directory of the derivation can be used in conjunction with an external webserver to replace this functionality.
224224+- The `dump1090` derivation has been changed to use FlightAware's dump1090 as its upstream. However, this version does not have an internal webserver anymore. The assets in the `share/dump1090` directory of the derivation can be used in conjunction with an external webserver to replace this functionality.
225225226226- The fourStore and fourStoreEndpoint modules have been removed.
227227···291291292292 - `services.buildkite-agent.meta-data` has been renamed to [services.buildkite-agents.\<name\>.tags](options.html#opt-services.buildkite-agents), to match upstreams naming for 3.x. Its type has also changed - it now accepts an attrset of strings.
293293294294- - The`services.buildkite-agent.openssh.publicKeyPath` option has been removed, as it\'s not necessary to deploy public keys to clone private repositories.
294294+ - The`services.buildkite-agent.openssh.publicKeyPath` option has been removed, as it's not necessary to deploy public keys to clone private repositories.
295295296296 - `services.buildkite-agent.openssh.privateKeyPath` has been renamed to [buildkite-agents.\<name\>.privateSshKeyPath](options.html#opt-services.buildkite-agents), as the whole `openssh` now only contained that single option.
297297···301301302302- The `gcc5` and `gfortran5` packages have been removed.
303303304304-- The `services.xserver.displayManager.auto` module has been removed. It was only intended for use in internal NixOS tests, and gave the false impression of it being a special display manager when it\'s actually LightDM. Please use the `services.xserver.displayManager.lightdm.autoLogin` options instead, or any other display manager in NixOS as they all support auto-login. If you used this module specifically because it permitted root auto-login you can override the lightdm-autologin pam module like:
304304+- The `services.xserver.displayManager.auto` module has been removed. It was only intended for use in internal NixOS tests, and gave the false impression of it being a special display manager when it's actually LightDM. Please use the `services.xserver.displayManager.lightdm.autoLogin` options instead, or any other display manager in NixOS as they all support auto-login. If you used this module specifically because it permitted root auto-login you can override the lightdm-autologin pam module like:
305305306306 ```nix
307307 {
···325325 auth required pam_succeed_if.so quiet
326326 ```
327327328328- line, where default it\'s:
328328+ line, where default it's:
329329330330 ```
331331 auth required pam_succeed_if.so uid >= 1000 quiet
332332 ```
333333334334- not permitting users with uid\'s below 1000 (like root). All other display managers in NixOS are configured like this.
334334+ not permitting users with uid's below 1000 (like root). All other display managers in NixOS are configured like this.
335335336336- There have been lots of improvements to the Mailman module. As a result,
337337···357357358358- Rspamd was updated to version 2.2. Read [ the upstream migration notes](https://rspamd.com/doc/migration.html#migration-to-rspamd-20) carefully. Please be especially aware that some modules were removed and the default Bayes backend is now Redis.
359359360360-- The `*psu` versions of oraclejdk8 have been removed as they aren\'t provided by upstream anymore.
360360+- The `*psu` versions of oraclejdk8 have been removed as they aren't provided by upstream anymore.
361361362362-- The `services.dnscrypt-proxy` module has been removed as it used the deprecated version of dnscrypt-proxy. We\'ve added [services.dnscrypt-proxy2.enable](options.html#opt-services.dnscrypt-proxy2.enable) to use the supported version. This module supports configuration via the Nix attribute set [services.dnscrypt-proxy2.settings](options.html#opt-services.dnscrypt-proxy2.settings), or by passing a TOML configuration file via [services.dnscrypt-proxy2.configFile](options.html#opt-services.dnscrypt-proxy2.configFile).
362362+- The `services.dnscrypt-proxy` module has been removed as it used the deprecated version of dnscrypt-proxy. We've added [services.dnscrypt-proxy2.enable](options.html#opt-services.dnscrypt-proxy2.enable) to use the supported version. This module supports configuration via the Nix attribute set [services.dnscrypt-proxy2.settings](options.html#opt-services.dnscrypt-proxy2.settings), or by passing a TOML configuration file via [services.dnscrypt-proxy2.configFile](options.html#opt-services.dnscrypt-proxy2.configFile).
363363364364 ```nix
365365 {
···382382383383- `qesteidutil` has been deprecated in favor of `qdigidoc`.
384384385385-- sqldeveloper_18 has been removed as it\'s not maintained anymore, sqldeveloper has been updated to version `19.4`. Please note that this means that this means that the oraclejdk is now required. For further information please read the [release notes](https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/sqldev-relnotes-194-5908846.html).
385385+- sqldeveloper_18 has been removed as it's not maintained anymore, sqldeveloper has been updated to version `19.4`. Please note that this means that this means that the oraclejdk is now required. For further information please read the [release notes](https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/sqldev-relnotes-194-5908846.html).
386386387387-- Haskell `env` and `shellFor` dev shell environments now organize dependencies the same way as regular builds. In particular, rather than receiving all the different lists of dependencies mashed together as one big list, and then partitioning into Haskell and non-Hakell dependencies, they work from the original many different dependency parameters and don\'t need to algorithmically partition anything.
387387+- Haskell `env` and `shellFor` dev shell environments now organize dependencies the same way as regular builds. In particular, rather than receiving all the different lists of dependencies mashed together as one big list, and then partitioning into Haskell and non-Hakell dependencies, they work from the original many different dependency parameters and don't need to algorithmically partition anything.
388388389389 This means that if you incorrectly categorize a dependency, e.g. non-Haskell library dependency as a `buildDepends` or run-time Haskell dependency as a `setupDepends`, whereas things would have worked before they may not work now.
390390391391-- The gcc-snapshot-package has been removed. It\'s marked as broken for \>2 years and used to point to a fairly old snapshot from the gcc7-branch.
391391+- The gcc-snapshot-package has been removed. It's marked as broken for \>2 years and used to point to a fairly old snapshot from the gcc7-branch.
392392393393- The nixos-build-vms8 -script now uses the python test-driver.
394394···398398399399- Stand-alone usage of `Upower` now requires `services.upower.enable` instead of just installing into [environment.systemPackages](options.html#opt-environment.systemPackages).
400400401401-- nextcloud has been updated to `v18.0.2`. This means that users from NixOS 19.09 can\'t upgrade directly since you can only move one version forward and 19.09 uses `v16.0.8`.
401401+- nextcloud has been updated to `v18.0.2`. This means that users from NixOS 19.09 can't upgrade directly since you can only move one version forward and 19.09 uses `v16.0.8`.
402402403403 To provide a safe upgrade-path and to circumvent similar issues in the future, the following measures were taken:
404404405405 - The pkgs.nextcloud-attribute has been removed and replaced with versioned attributes (currently pkgs.nextcloud17 and pkgs.nextcloud18). With this change major-releases can be backported without breaking stuff and to make upgrade-paths easier.
406406407407- - Existing setups will be detected using [system.stateVersion](options.html#opt-system.stateVersion): by default, nextcloud17 will be used, but will raise a warning which notes that after that deploy it\'s recommended to update to the latest stable version (nextcloud18) by declaring the newly introduced setting [services.nextcloud.package](options.html#opt-services.nextcloud.package).
407407+ - Existing setups will be detected using [system.stateVersion](options.html#opt-system.stateVersion): by default, nextcloud17 will be used, but will raise a warning which notes that after that deploy it's recommended to update to the latest stable version (nextcloud18) by declaring the newly introduced setting [services.nextcloud.package](options.html#opt-services.nextcloud.package).
408408409409- - Users with an overlay (e.g. to use nextcloud at version `v18` on `19.09`) will get an evaluation error by default. This is done to ensure that our [package](options.html#opt-services.nextcloud.package)-option doesn\'t select an older version by accident. It\'s recommended to use pkgs.nextcloud18 or to set [package](options.html#opt-services.nextcloud.package) to pkgs.nextcloud explicitly.
409409+ - Users with an overlay (e.g. to use nextcloud at version `v18` on `19.09`) will get an evaluation error by default. This is done to ensure that our [package](options.html#opt-services.nextcloud.package)-option doesn't select an older version by accident. It's recommended to use pkgs.nextcloud18 or to set [package](options.html#opt-services.nextcloud.package) to pkgs.nextcloud explicitly.
410410411411 ::: {.warning}
412412- Please note that if you\'re coming from `19.03` or older, you have to manually upgrade to `19.09` first to upgrade your server to Nextcloud v16.
412412+ Please note that if you're coming from `19.03` or older, you have to manually upgrade to `19.09` first to upgrade your server to Nextcloud v16.
413413 :::
414414415415-- Hydra has gained a massive performance improvement due to [some database schema changes](https://github.com/NixOS/hydra/pull/710) by adding several IDs and better indexing. However, it\'s necessary to upgrade Hydra in multiple steps:
415415+- Hydra has gained a massive performance improvement due to [some database schema changes](https://github.com/NixOS/hydra/pull/710) by adding several IDs and better indexing. However, it's necessary to upgrade Hydra in multiple steps:
416416417417 - At first, an older version of Hydra needs to be deployed which adds those (nullable) columns. When having set [stateVersion ](options.html#opt-system.stateVersion) to a value older than `20.03`, this package will be selected by default from the module when upgrading. Otherwise, the package can be deployed using the following config:
418418···434434- Deploy a newer version of Hydra to activate the DB optimizations. This can be done by using hydra-unstable. This package already includes [flake-support](https://github.com/nixos/rfcs/pull/49) and is therefore compiled against pkgs.nixFlakes.
435435436436 ::: {.warning}
437437- If your [stateVersion](options.html#opt-system.stateVersion) is set to `20.03` or greater, hydra-unstable will be used automatically! This will break your setup if you didn\'t run the migration.
437437+ If your [stateVersion](options.html#opt-system.stateVersion) is set to `20.03` or greater, hydra-unstable will be used automatically! This will break your setup if you didn't run the migration.
438438 :::
439439440440- Please note that Hydra is currently not available with nixStable as this doesn\'t compile anymore.
440440+ Please note that Hydra is currently not available with nixStable as this doesn't compile anymore.
441441442442 ::: {.warning}
443443- pkgs.hydra has been removed to ensure a graceful database-migration using the dedicated package-attributes. If you still have pkgs.hydra defined in e.g. an overlay, an assertion error will be thrown. To circumvent this, you need to set [services.hydra.package](options.html#opt-services.hydra.package) to pkgs.hydra explicitly and make sure you know what you\'re doing!
443443+ pkgs.hydra has been removed to ensure a graceful database-migration using the dedicated package-attributes. If you still have pkgs.hydra defined in e.g. an overlay, an assertion error will be thrown. To circumvent this, you need to set [services.hydra.package](options.html#opt-services.hydra.package) to pkgs.hydra explicitly and make sure you know what you're doing!
444444 :::
445445446446- The TokuDB storage engine will be disabled in mariadb 10.5. It is recommended to switch to RocksDB. See also [TokuDB](https://mariadb.com/kb/en/tokudb/).
···478478479479 Depending on your setup, you need to incorporate one of the following changes in your setup to upgrade to 20.03:
480480481481- - If you use `sqlite3` you don\'t need to do anything.
481481+ - If you use `sqlite3` you don't need to do anything.
482482483483- - If you use `postgresql` on a different server, you don\'t need to change anything as well since this module was never designed to configure remote databases.
483483+ - If you use `postgresql` on a different server, you don't need to change anything as well since this module was never designed to configure remote databases.
484484485485 - If you use `postgresql` and configured your synapse initially on `19.09` or older, you simply need to enable postgresql-support explicitly:
486486···496496497497- If you deploy a fresh matrix-synapse, you need to configure the database yourself (e.g. by using the [services.postgresql.initialScript](options.html#opt-services.postgresql.initialScript) option). An example for this can be found in the [documentation of the Matrix module](#module-services-matrix).
498498499499-- If you initially deployed your matrix-synapse on `nixos-unstable` _after_ the `19.09`-release, your database is misconfigured due to a regression in NixOS. For now, matrix-synapse will startup with a warning, but it\'s recommended to reconfigure the database to set the values `LC_COLLATE` and `LC_CTYPE` to [`'C'`](https://www.postgresql.org/docs/12/locale.html).
499499+- If you initially deployed your matrix-synapse on `nixos-unstable` _after_ the `19.09`-release, your database is misconfigured due to a regression in NixOS. For now, matrix-synapse will startup with a warning, but it's recommended to reconfigure the database to set the values `LC_COLLATE` and `LC_CTYPE` to [`'C'`](https://www.postgresql.org/docs/12/locale.html).
500500501501-- The [systemd.network.links](options.html#opt-systemd.network.links) option is now respected even when [systemd-networkd](options.html#opt-systemd.network.enable) is disabled. This mirrors the behaviour of systemd - It\'s udev that parses `.link` files, not `systemd-networkd`.
501501+- The [systemd.network.links](options.html#opt-systemd.network.links) option is now respected even when [systemd-networkd](options.html#opt-systemd.network.enable) is disabled. This mirrors the behaviour of systemd - It's udev that parses `.link` files, not `systemd-networkd`.
502502503503- mongodb has been updated to version `3.4.24`.
504504505505 ::: {.warning}
506506- Please note that mongodb has been relicensed under their own [` sspl`](https://www.mongodb.com/licensing/server-side-public-license/faq)-license. Since it\'s not entirely free and not OSI-approved, it\'s listed as non-free. This means that Hydra doesn\'t provide prebuilt mongodb-packages and needs to be built locally.
506506+ Please note that mongodb has been relicensed under their own [` sspl`](https://www.mongodb.com/licensing/server-side-public-license/faq)-license. Since it's not entirely free and not OSI-approved, it's listed as non-free. This means that Hydra doesn't provide prebuilt mongodb-packages and needs to be built locally.
507507 :::
+21-21
nixos/doc/manual/release-notes/rl-2009.section.md
···218218219219When upgrading from a previous release, please be aware of the following incompatible changes:
220220221221-- MariaDB has been updated to 10.4, MariaDB Galera to 26.4. Before you upgrade, it would be best to take a backup of your database. For MariaDB Galera Cluster, see [Upgrading from MariaDB 10.3 to MariaDB 10.4 with Galera Cluster](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104-with-galera-cluster/) instead. Before doing the upgrade read [Incompatible Changes Between 10.3 and 10.4](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104/#incompatible-changes-between-103-and-104). After the upgrade you will need to run `mysql_upgrade`. MariaDB 10.4 introduces a number of changes to the authentication process, intended to make things easier and more intuitive. See [Authentication from MariaDB 10.4](https://mariadb.com/kb/en/authentication-from-mariadb-104/). unix_socket auth plugin does not use a password, and uses the connecting user\'s UID instead. When a new MariaDB data directory is initialized, two MariaDB users are created and can be used with new unix_socket auth plugin, as well as traditional mysql_native_password plugin: root\@localhost and mysql\@localhost. To actually use the traditional mysql_native_password plugin method, one must run the following:
221221+- MariaDB has been updated to 10.4, MariaDB Galera to 26.4. Before you upgrade, it would be best to take a backup of your database. For MariaDB Galera Cluster, see [Upgrading from MariaDB 10.3 to MariaDB 10.4 with Galera Cluster](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104-with-galera-cluster/) instead. Before doing the upgrade read [Incompatible Changes Between 10.3 and 10.4](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104/#incompatible-changes-between-103-and-104). After the upgrade you will need to run `mysql_upgrade`. MariaDB 10.4 introduces a number of changes to the authentication process, intended to make things easier and more intuitive. See [Authentication from MariaDB 10.4](https://mariadb.com/kb/en/authentication-from-mariadb-104/). unix_socket auth plugin does not use a password, and uses the connecting user's UID instead. When a new MariaDB data directory is initialized, two MariaDB users are created and can be used with new unix_socket auth plugin, as well as traditional mysql_native_password plugin: root\@localhost and mysql\@localhost. To actually use the traditional mysql_native_password plugin method, one must run the following:
222222223223 ```nix
224224 {
···284284285285- The [matrix-synapse](options.html#opt-services.matrix-synapse.enable) module no longer includes optional dependencies by default, they have to be added through the [plugins](options.html#opt-services.matrix-synapse.plugins) option.
286286287287-- `buildGoModule` now internally creates a vendor directory in the source tree for downloaded modules instead of using go\'s [module proxy protocol](https://golang.org/cmd/go/#hdr-Module_proxy_protocol). This storage format is simpler and therefore less likely to break with future versions of go. As a result `buildGoModule` switched from `modSha256` to the `vendorSha256` attribute to pin fetched version data.
287287+- `buildGoModule` now internally creates a vendor directory in the source tree for downloaded modules instead of using go's [module proxy protocol](https://golang.org/cmd/go/#hdr-Module_proxy_protocol). This storage format is simpler and therefore less likely to break with future versions of go. As a result `buildGoModule` switched from `modSha256` to the `vendorSha256` attribute to pin fetched version data.
288288289289- Grafana is now built without support for phantomjs by default. Phantomjs support has been [deprecated in Grafana](https://grafana.com/docs/grafana/latest/guides/whats-new-in-v6-4/) and the phantomjs project is [currently unmaintained](https://github.com/ariya/phantomjs/issues/15344#issue-302015362). It can still be enabled by providing `phantomJsSupport = true` to the package instantiation:
290290···306306307307- The initrd SSH support now uses OpenSSH rather than Dropbear to allow the use of Ed25519 keys and other OpenSSH-specific functionality. Host keys must now be in the OpenSSH format, and at least one pre-generated key must be specified.
308308309309- If you used the `boot.initrd.network.ssh.host*Key` options, you\'ll get an error explaining how to convert your host keys and migrate to the new `boot.initrd.network.ssh.hostKeys` option. Otherwise, if you don\'t have any host keys set, you\'ll need to generate some; see the `hostKeys` option documentation for instructions.
309309+ If you used the `boot.initrd.network.ssh.host*Key` options, you'll get an error explaining how to convert your host keys and migrate to the new `boot.initrd.network.ssh.hostKeys` option. Otherwise, if you don't have any host keys set, you'll need to generate some; see the `hostKeys` option documentation for instructions.
310310311311-- Since this release there\'s an easy way to customize your PHP install to get a much smaller base PHP with only wanted extensions enabled. See the following snippet installing a smaller PHP with the extensions `imagick`, `opcache`, `pdo` and `pdo_mysql` loaded:
311311+- Since this release there's an easy way to customize your PHP install to get a much smaller base PHP with only wanted extensions enabled. See the following snippet installing a smaller PHP with the extensions `imagick`, `opcache`, `pdo` and `pdo_mysql` loaded:
312312313313 ```nix
314314 {
···325325 }
326326 ```
327327328328- The default `php` attribute hasn\'t lost any extensions. The `opcache` extension has been added. All upstream PHP extensions are available under php.extensions.\<name?\>.
328328+ The default `php` attribute hasn't lost any extensions. The `opcache` extension has been added. All upstream PHP extensions are available under php.extensions.\<name?\>.
329329330330 All PHP `config` flags have been removed for the following reasons:
331331···418418419419 The default value for [services.httpd.mpm](options.html#opt-services.httpd.mpm) has been changed from `prefork` to `event`. Along with this change the default value for [services.httpd.virtualHosts.\<name\>.http2](options.html#opt-services.httpd.virtualHosts) has been set to `true`.
420420421421-- The `systemd-networkd` option `systemd.network.networks.<name>.dhcp.CriticalConnection` has been removed following upstream systemd\'s deprecation of the same. It is recommended to use `systemd.network.networks.<name>.networkConfig.KeepConfiguration` instead. See systemd.network 5 for details.
421421+- The `systemd-networkd` option `systemd.network.networks.<name>.dhcp.CriticalConnection` has been removed following upstream systemd's deprecation of the same. It is recommended to use `systemd.network.networks.<name>.networkConfig.KeepConfiguration` instead. See systemd.network 5 for details.
422422423423-- The `systemd-networkd` option `systemd.network.networks._name_.dhcpConfig` has been renamed to [systemd.network.networks._name_.dhcpV4Config](options.html#opt-systemd.network.networks._name_.dhcpV4Config) following upstream systemd\'s documentation change. See systemd.network 5 for details.
423423+- The `systemd-networkd` option `systemd.network.networks._name_.dhcpConfig` has been renamed to [systemd.network.networks._name_.dhcpV4Config](options.html#opt-systemd.network.networks._name_.dhcpV4Config) following upstream systemd's documentation change. See systemd.network 5 for details.
424424425425- In the `picom` module, several options that accepted floating point numbers encoded as strings (for example [services.picom.activeOpacity](options.html#opt-services.picom.activeOpacity)) have been changed to the (relatively) new native `float` type. To migrate your configuration simply remove the quotes around the numbers.
426426···440440441441- The GRUB specific option `boot.loader.grub.extraInitrd` has been replaced with the generic option `boot.initrd.secrets`. This option creates a secondary initrd from the specified files, rather than using a manually created initrd file. Due to an existing bug with `boot.loader.grub.extraInitrd`, it is not possible to directly boot an older generation that used that option. It is still possible to rollback to that generation if the required initrd file has not been deleted.
442442443443-- The [DNSChain](https://github.com/okTurtles/dnschain) package and NixOS module have been removed from Nixpkgs as the software is unmaintained and can\'t be built. For more information see issue [\#89205](https://github.com/NixOS/nixpkgs/issues/89205).
443443+- The [DNSChain](https://github.com/okTurtles/dnschain) package and NixOS module have been removed from Nixpkgs as the software is unmaintained and can't be built. For more information see issue [\#89205](https://github.com/NixOS/nixpkgs/issues/89205).
444444445445- In the `resilio` module, [services.resilio.httpListenAddr](options.html#opt-services.resilio.httpListenAddr) has been changed to listen to `[::1]` instead of `0.0.0.0`.
446446···456456457457 - Update servers first, then clients.
458458459459-- Radicale\'s default package has changed from 2.x to 3.x. An upgrade checklist can be found [here](https://github.com/Kozea/Radicale/blob/3.0.x/NEWS.md#upgrade-checklist). You can use the newer version in the NixOS service by setting the `package` to `radicale3`, which is done automatically if `stateVersion` is 20.09 or higher.
459459+- Radicale's default package has changed from 2.x to 3.x. An upgrade checklist can be found [here](https://github.com/Kozea/Radicale/blob/3.0.x/NEWS.md#upgrade-checklist). You can use the newer version in the NixOS service by setting the `package` to `radicale3`, which is done automatically if `stateVersion` is 20.09 or higher.
460460461461- `udpt` experienced a complete rewrite from C++ to rust. The configuration format changed from ini to toml. The new configuration documentation can be found at [the official website](https://naim94a.github.io/udpt/config.html) and example configuration is packaged in `${udpt}/share/udpt/udpt.toml`.
462462···522522 }
523523 ```
524524525525- The base package has also been upgraded to the 2020-07-29 \"Hogfather\" release. Plugins might be incompatible or require upgrading.
525525+ The base package has also been upgraded to the 2020-07-29 "Hogfather" release. Plugins might be incompatible or require upgrading.
526526527527- The [services.postgresql.dataDir](options.html#opt-services.postgresql.dataDir) option is now set to `"/var/lib/postgresql/${cfg.package.psqlSchema}"` regardless of your [system.stateVersion](options.html#opt-system.stateVersion). Users with an existing postgresql install that have a [system.stateVersion](options.html#opt-system.stateVersion) of `17.03` or below should double check what the value of their [services.postgresql.dataDir](options.html#opt-services.postgresql.dataDir) option is (`/var/db/postgresql`) and then explicitly set this value to maintain compatibility:
528528···552552553553- The [jellyfin](options.html#opt-services.jellyfin.enable) module will use and stay on the Jellyfin version `10.5.5` if `stateVersion` is lower than `20.09`. This is because significant changes were made to the database schema, and it is highly recommended to backup your instance before upgrading. After making your backup, you can upgrade to the latest version either by setting your `stateVersion` to `20.09` or higher, or set the `services.jellyfin.package` to `pkgs.jellyfin`. If you do not wish to upgrade Jellyfin, but want to change your `stateVersion`, you can set the value of `services.jellyfin.package` to `pkgs.jellyfin_10_5`.
554554555555-- The `security.rngd` service is now disabled by default. This choice was made because there\'s krngd in the linux kernel space making it (for most usecases) functionally redundent.
555555+- The `security.rngd` service is now disabled by default. This choice was made because there's krngd in the linux kernel space making it (for most usecases) functionally redundent.
556556557557- The `hardware.nvidia.optimus_prime.enable` service has been renamed to `hardware.nvidia.prime.sync.enable` and has many new enhancements. Related nvidia prime settings may have also changed.
558558559559- The package nextcloud17 has been removed and nextcloud18 was marked as insecure since both of them will [ will be EOL (end of life) within the lifetime of 20.09](https://docs.nextcloud.com/server/19/admin_manual/release_schedule.html).
560560561561- It\'s necessary to upgrade to nextcloud19:
561561+ It's necessary to upgrade to nextcloud19:
562562563563- - From nextcloud17, you have to upgrade to nextcloud18 first as Nextcloud doesn\'t allow going multiple major revisions forward in a single upgrade. This is possible by setting [services.nextcloud.package](options.html#opt-services.nextcloud.package) to nextcloud18.
563563+ - From nextcloud17, you have to upgrade to nextcloud18 first as Nextcloud doesn't allow going multiple major revisions forward in a single upgrade. This is possible by setting [services.nextcloud.package](options.html#opt-services.nextcloud.package) to nextcloud18.
564564565565- - From nextcloud18, it\'s possible to directly upgrade to nextcloud19 by setting [services.nextcloud.package](options.html#opt-services.nextcloud.package) to nextcloud19.
565565+ - From nextcloud18, it's possible to directly upgrade to nextcloud19 by setting [services.nextcloud.package](options.html#opt-services.nextcloud.package) to nextcloud19.
566566567567- The GNOME desktop manager no longer default installs gnome3.epiphany. It was chosen to do this as it has a usability breaking issue (see issue [\#98819](https://github.com/NixOS/nixpkgs/issues/98819)) that makes it unsuitable to be a default app.
568568···578578579579- `services.journald.rateLimitBurst` was updated from `1000` to `10000` to follow the new upstream systemd default.
580580581581-- The notmuch package moves its emacs-related binaries and emacs lisp files to a separate output. They\'re not part of the default `out` output anymore - if you relied on the `notmuch-emacs-mua` binary or the emacs lisp files, access them via the `notmuch.emacs` output.
581581+- The notmuch package moves its emacs-related binaries and emacs lisp files to a separate output. They're not part of the default `out` output anymore - if you relied on the `notmuch-emacs-mua` binary or the emacs lisp files, access them via the `notmuch.emacs` output.
582582583583- Device tree overlay support was improved in [\#79370](https://github.com/NixOS/nixpkgs/pull/79370) and now uses [hardware.deviceTree.kernelPackage](options.html#opt-hardware.deviceTree.kernelPackage) instead of `hardware.deviceTree.base`. [hardware.deviceTree.overlays](options.html#opt-hardware.deviceTree.overlays) configuration was extended to support `.dts` files with symbols. Device trees can now be filtered by setting [hardware.deviceTree.filter](options.html#opt-hardware.deviceTree.filter) option.
584584···590590591591 Please note that Rust packages utilizing a custom build/install procedure (e.g. by using a `Makefile`) or test suites that rely on the structure of the `target/` directory may break due to those assumptions. For further information, please read the Rust section in the Nixpkgs manual.
592592593593-- The cc- and binutils-wrapper\'s \"infix salt\" and `_BUILD_` and `_TARGET_` user infixes have been replaced with with a \"suffix salt\" and suffixes and `_FOR_BUILD` and `_FOR_TARGET`. This matches the autotools convention for env vars which standard for these things, making interfacing with other tools easier.
593593+- The cc- and binutils-wrapper's "infix salt" and `_BUILD_` and `_TARGET_` user infixes have been replaced with with a "suffix salt" and suffixes and `_FOR_BUILD` and `_FOR_TARGET`. This matches the autotools convention for env vars which standard for these things, making interfacing with other tools easier.
594594595595- Additional Git documentation (HTML and text files) is now available via the `git-doc` package.
596596···598598599599- The installer now enables sshd by default. This improves installation on headless machines especially ARM single-board-computer. To login through ssh, either a password or an ssh key must be set for the root user or the nixos user.
600600601601-- The scripted networking system now uses `.link` files in `/etc/systemd/network` to configure mac address and link MTU, instead of the sometimes buggy `network-link-*` units, which have been removed. Bringing the interface up has been moved to the beginning of the `network-addresses-*` unit. Note this doesn\'t require `systemd-networkd` - it\'s udev that parses `.link` files. Extra care needs to be taken in the presence of [legacy udev rules](https://wiki.debian.org/NetworkInterfaceNames#THE_.22PERSISTENT_NAMES.22_SCHEME) to rename interfaces, as MAC Address and MTU defined in these options can only match on the original link name. In such cases, you most likely want to create a `10-*.link` file through [systemd.network.links](options.html#opt-systemd.network.links) and set both name and MAC Address / MTU there.
601601+- The scripted networking system now uses `.link` files in `/etc/systemd/network` to configure mac address and link MTU, instead of the sometimes buggy `network-link-*` units, which have been removed. Bringing the interface up has been moved to the beginning of the `network-addresses-*` unit. Note this doesn't require `systemd-networkd` - it's udev that parses `.link` files. Extra care needs to be taken in the presence of [legacy udev rules](https://wiki.debian.org/NetworkInterfaceNames#THE_.22PERSISTENT_NAMES.22_SCHEME) to rename interfaces, as MAC Address and MTU defined in these options can only match on the original link name. In such cases, you most likely want to create a `10-*.link` file through [systemd.network.links](options.html#opt-systemd.network.links) and set both name and MAC Address / MTU there.
602602603603- Grafana received a major update to version 7.x. A plugin is now needed for image rendering support, and plugins must now be signed by default. More information can be found [in the Grafana documentation](https://grafana.com/docs/grafana/latest/installation/upgrading/#upgrading-to-v7-0).
604604···624624625625 to get the previous behavior of listening on all network interfaces.
626626627627-- With this release `systemd-networkd` (when enabled through [networking.useNetworkd](options.html#opt-networking.useNetworkd)) has it\'s netlink socket created through a `systemd.socket` unit. This gives us control over socket buffer sizes and other parameters. For larger setups where networkd has to create a lot of (virtual) devices the default buffer size (currently 128MB) is not enough.
627627+- With this release `systemd-networkd` (when enabled through [networking.useNetworkd](options.html#opt-networking.useNetworkd)) has it's netlink socket created through a `systemd.socket` unit. This gives us control over socket buffer sizes and other parameters. For larger setups where networkd has to create a lot of (virtual) devices the default buffer size (currently 128MB) is not enough.
628628629629 On a machine with \>100 virtual interfaces (e.g., wireguard tunnels, VLANs, ...), that all have to be brought up during system startup, the receive buffer size will spike for a brief period. Eventually some of the message will be dropped since there is not enough (permitted) buffer space available.
630630631631 By having `systemd-networkd` start with a netlink socket created by `systemd` we can configure the `ReceiveBufferSize=` parameter in the socket options (i.e. `systemd.sockets.systemd-networkd.socketOptions.ReceiveBufferSize`) without recompiling `systemd-networkd`.
632632633633- Since the actual memory requirements depend on hardware, timing, exact configurations etc. it isn\'t currently possible to infer a good default from within the NixOS module system. Administrators are advised to monitor the logs of `systemd-networkd` for `rtnl: kernel receive buffer overrun` spam and increase the memory limit as they see fit.
633633+ Since the actual memory requirements depend on hardware, timing, exact configurations etc. it isn't currently possible to infer a good default from within the NixOS module system. Administrators are advised to monitor the logs of `systemd-networkd` for `rtnl: kernel receive buffer overrun` spam and increase the memory limit as they see fit.
634634635635- Note: Increasing the `ReceiveBufferSize=` doesn\'t allocate any memory. It just increases the upper bound on the kernel side. The memory allocation depends on the amount of messages that are queued on the kernel side of the netlink socket.
635635+ Note: Increasing the `ReceiveBufferSize=` doesn't allocate any memory. It just increases the upper bound on the kernel side. The memory allocation depends on the amount of messages that are queued on the kernel side of the netlink socket.
636636637637- Specifying [mailboxes](options.html#opt-services.dovecot2.mailboxes) in the dovecot2 module as a list is deprecated and will break eval in 21.05. Instead, an attribute-set should be specified where the `name` should be the key of the attribute.
638638···662662663663- nextcloud has been updated to [v19](https://nextcloud.com/blog/nextcloud-hub-brings-productivity-to-home-office/).
664664665665- If you have an existing installation, please make sure that you\'re on nextcloud18 before upgrading to nextcloud19 since Nextcloud doesn\'t support upgrades across multiple major versions.
665665+ If you have an existing installation, please make sure that you're on nextcloud18 before upgrading to nextcloud19 since Nextcloud doesn't support upgrades across multiple major versions.
666666667667- The `nixos-run-vms` script now deletes the previous run machines states on test startup. You can use the `--keep-vm-state` flag to match the previous behaviour and keep the same VM state between different test runs.
668668
+17-17
nixos/doc/manual/release-notes/rl-2105.section.md
···68686969- If the `services.dbus` module is enabled, then the user D-Bus session is now always socket activated. The associated options `services.dbus.socketActivated` and `services.xserver.startDbusSession` have therefore been removed and you will receive a warning if they are present in your configuration. This change makes the user D-Bus session available also for non-graphical logins.
70707171-- The `networking.wireless.iwd` module now installs the upstream-provided 80-iwd.link file, which sets the NamePolicy= for all wlan devices to \"keep kernel\", to avoid race conditions between iwd and networkd. If you don\'t want this, you can set `systemd.network.links."80-iwd" = lib.mkForce {}`.
7171+- The `networking.wireless.iwd` module now installs the upstream-provided 80-iwd.link file, which sets the NamePolicy= for all wlan devices to "keep kernel", to avoid race conditions between iwd and networkd. If you don't want this, you can set `systemd.network.links."80-iwd" = lib.mkForce {}`.
72727373-- `rubyMinimal` was removed due to being unused and unusable. The default ruby interpreter includes JIT support, which makes it reference it\'s compiler. Since JIT support is probably needed by some Gems, it was decided to enable this feature with all cc references by default, and allow to build a Ruby derivation without references to cc, by setting `jitSupport = false;` in an overlay. See [\#90151](https://github.com/NixOS/nixpkgs/pull/90151) for more info.
7373+- `rubyMinimal` was removed due to being unused and unusable. The default ruby interpreter includes JIT support, which makes it reference it's compiler. Since JIT support is probably needed by some Gems, it was decided to enable this feature with all cc references by default, and allow to build a Ruby derivation without references to cc, by setting `jitSupport = false;` in an overlay. See [\#90151](https://github.com/NixOS/nixpkgs/pull/90151) for more info.
74747575- Setting `services.openssh.authorizedKeysFiles` now also affects which keys `security.pam.enableSSHAgentAuth` will use. WARNING: If you are using these options in combination do make sure that any key paths you use are present in `services.openssh.authorizedKeysFiles`!
7676···130130131131- `vim` and `neovim` switched to Python 3, dropping all Python 2 support.
132132133133-- [networking.wireguard.interfaces.\<name\>.generatePrivateKeyFile](options.html#opt-networking.wireguard.interfaces), which is off by default, had a `chmod` race condition fixed. As an aside, the parent directory\'s permissions were widened, and the key files were made owner-writable. This only affects newly created keys. However, if the exact permissions are important for your setup, read [\#121294](https://github.com/NixOS/nixpkgs/pull/121294).
133133+- [networking.wireguard.interfaces.\<name\>.generatePrivateKeyFile](options.html#opt-networking.wireguard.interfaces), which is off by default, had a `chmod` race condition fixed. As an aside, the parent directory's permissions were widened, and the key files were made owner-writable. This only affects newly created keys. However, if the exact permissions are important for your setup, read [\#121294](https://github.com/NixOS/nixpkgs/pull/121294).
134134135135- [boot.zfs.forceImportAll](options.html#opt-boot.zfs.forceImportAll) previously did nothing, but has been fixed. However its default has been changed to `false` to preserve the existing default behaviour. If you have this explicitly set to `true`, please note that your non-root pools will now be forcibly imported.
136136···157157- Amazon EC2 and OpenStack Compute (nova) images now re-fetch instance meta data and user data from the instance metadata service (IMDS) on each boot. For example: stopping an EC2 instance, changing its user data, and restarting the instance will now cause it to fetch and apply the new user data.
158158159159 ::: {.warning}
160160- Specifically, `/etc/ec2-metadata` is re-populated on each boot. Some NixOS scripts that read from this directory are guarded to only run if the files they want to manipulate do not already exist, and so will not re-apply their changes if the IMDS response changes. Examples: `root`\'s SSH key is only added if `/root/.ssh/authorized_keys` does not exist, and SSH host keys are only set from user data if they do not exist in `/etc/ssh`.
160160+ Specifically, `/etc/ec2-metadata` is re-populated on each boot. Some NixOS scripts that read from this directory are guarded to only run if the files they want to manipulate do not already exist, and so will not re-apply their changes if the IMDS response changes. Examples: `root`'s SSH key is only added if `/root/.ssh/authorized_keys` does not exist, and SSH host keys are only set from user data if they do not exist in `/etc/ssh`.
161161 :::
162162163163- The `rspamd` services is now sandboxed. It is run as a dynamic user instead of root, so secrets and other files may have to be moved or their permissions may have to be fixed. The sockets are now located in `/run/rspamd` instead of `/run`.
164164165165-- Enabling the Tor client no longer silently also enables and configures Privoxy, and the `services.tor.client.privoxy.enable` option has been removed. To enable Privoxy, and to configure it to use Tor\'s faster port, use the following configuration:
165165+- Enabling the Tor client no longer silently also enables and configures Privoxy, and the `services.tor.client.privoxy.enable` option has been removed. To enable Privoxy, and to configure it to use Tor's faster port, use the following configuration:
166166167167 ```nix
168168 {
···181181182182- The fish-foreign-env package has been replaced with fishPlugins.foreign-env, in which the fish functions have been relocated to the `vendor_functions.d` directory to be loaded automatically.
183183184184-- The prometheus json exporter is now managed by the prometheus community. Together with additional features some backwards incompatibilities were introduced. Most importantly the exporter no longer accepts a fixed command-line parameter to specify the URL of the endpoint serving JSON. It now expects this URL to be passed as an URL parameter, when scraping the exporter\'s `/probe` endpoint. In the prometheus scrape configuration the scrape target might look like this:
184184+- The prometheus json exporter is now managed by the prometheus community. Together with additional features some backwards incompatibilities were introduced. Most importantly the exporter no longer accepts a fixed command-line parameter to specify the URL of the endpoint serving JSON. It now expects this URL to be passed as an URL parameter, when scraping the exporter's `/probe` endpoint. In the prometheus scrape configuration the scrape target might look like this:
185185186186 ```
187187 http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/endpoint
···230230231231 Additionally, packages flashplayer and hal-flash were removed along with the `services.flashpolicyd` module.
232232233233-- The `security.rngd` module has been removed. It was disabled by default in 20.09 as it was functionally redundant with krngd in the linux kernel. It is not necessary for any device that the kernel recognises as an hardware RNG, as it will automatically run the krngd task to periodically collect random data from the device and mix it into the kernel\'s RNG.
233233+- The `security.rngd` module has been removed. It was disabled by default in 20.09 as it was functionally redundant with krngd in the linux kernel. It is not necessary for any device that the kernel recognises as an hardware RNG, as it will automatically run the krngd task to periodically collect random data from the device and mix it into the kernel's RNG.
234234235235 The default SMTP port for GitLab has been changed to `25` from its previous default of `465`. If you depended on this default, you should now set the [services.gitlab.smtp.port](options.html#opt-services.gitlab.smtp.port) option.
236236···272272273273- `environment.defaultPackages` now includes the nano package. If pkgs.nano is not added to the list, make sure another editor is installed and the `EDITOR` environment variable is set to it. Environment variables can be set using `environment.variables`.
274274275275-- `services.minio.dataDir` changed type to a list of paths, required for specifiyng multiple data directories for using with erasure coding. Currently, the service doesn\'t enforce nor checks the correct number of paths to correspond to minio requirements.
275275+- `services.minio.dataDir` changed type to a list of paths, required for specifiyng multiple data directories for using with erasure coding. Currently, the service doesn't enforce nor checks the correct number of paths to correspond to minio requirements.
276276277277- All CUDA toolkit versions prior to CUDA 10 have been removed.
278278279279-- The kbdKeymaps package was removed since dvp and neo are now included in kbd. If you want to use the Programmer Dvorak Keyboard Layout, you have to use `dvorak-programmer` in `console.keyMap` now instead of `dvp`. In `services.xserver.xkbVariant` it\'s still `dvp`.
279279+- The kbdKeymaps package was removed since dvp and neo are now included in kbd. If you want to use the Programmer Dvorak Keyboard Layout, you have to use `dvorak-programmer` in `console.keyMap` now instead of `dvp`. In `services.xserver.xkbVariant` it's still `dvp`.
280280281281- The babeld service is now being run as an unprivileged user. To achieve that the module configures `skip-kernel-setup true` and takes care of setting forwarding and rp_filter sysctls by itself as well as for each interface in `services.babeld.interfaces`.
282282···286286287287- Instead of determining `services.radicale.package` automatically based on `system.stateVersion`, the latest version is always used because old versions are not officially supported.
288288289289- Furthermore, Radicale\'s systemd unit was hardened which might break some deployments. In particular, a non-default `filesystem_folder` has to be added to `systemd.services.radicale.serviceConfig.ReadWritePaths` if the deprecated `services.radicale.config` is used.
289289+ Furthermore, Radicale's systemd unit was hardened which might break some deployments. In particular, a non-default `filesystem_folder` has to be added to `systemd.services.radicale.serviceConfig.ReadWritePaths` if the deprecated `services.radicale.config` is used.
290290291291- In the `security.acme` module, use of `--reuse-key` parameter for Lego has been removed. It was introduced for HKPK, but this security feature is now deprecated. It is a better security practice to rotate key pairs instead of always keeping the same. If you need to keep this parameter, you can add it back using `extraLegoRenewFlags` as an option for the appropriate certificate.
292292···294294295295- `stdenv.lib` has been deprecated and will break eval in 21.11. Please use `pkgs.lib` instead. See [\#108938](https://github.com/NixOS/nixpkgs/issues/108938) for details.
296296297297-- [GNURadio](https://www.gnuradio.org/) has a `pkgs` attribute set, and there\'s a `gnuradio.callPackage` function that extends `pkgs` with a `mkDerivation`, and a `mkDerivationWith`, like Qt5. Now all `gnuradio.pkgs` are defined with `gnuradio.callPackage` and some packages that depend on gnuradio are defined with this as well.
297297+- [GNURadio](https://www.gnuradio.org/) has a `pkgs` attribute set, and there's a `gnuradio.callPackage` function that extends `pkgs` with a `mkDerivation`, and a `mkDerivationWith`, like Qt5. Now all `gnuradio.pkgs` are defined with `gnuradio.callPackage` and some packages that depend on gnuradio are defined with this as well.
298298299299- [Privoxy](https://www.privoxy.org/) has been updated to version 3.0.32 (See [announcement](https://lists.privoxy.org/pipermail/privoxy-announce/2021-February/000007.html)). Compared to the previous release, Privoxy has gained support for HTTPS inspection (still experimental), Brotli decompression, several new filters and lots of bug fixes, including security ones. In addition, the package is now built with compression and external filters support, which were previously disabled.
300300301301 Regarding the NixOS module, new options for HTTPS inspection have been added and `services.privoxy.extraConfig` has been replaced by the new [services.privoxy.settings](options.html#opt-services.privoxy.settings) (See [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) for the motivation).
302302303303-- [Kodi](https://kodi.tv/) has been updated to version 19.1 \"Matrix\". See the [announcement](https://kodi.tv/article/kodi-19-0-matrix-release) for further details.
303303+- [Kodi](https://kodi.tv/) has been updated to version 19.1 "Matrix". See the [announcement](https://kodi.tv/article/kodi-19-0-matrix-release) for further details.
304304305305- The `services.packagekit.backend` option has been removed as it only supported a single setting which would always be the default. Instead new [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) compliant [services.packagekit.settings](options.html#opt-services.packagekit.settings) and [services.packagekit.vendorSettings](options.html#opt-services.packagekit.vendorSettings) options have been introduced.
306306···316316317317 If this option is disabled, default MTA config becomes not set and you should set the options in `services.mailman.settings.mta` according to the desired configuration as described in [Mailman documentation](https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html).
318318319319-- The default-version of `nextcloud` is nextcloud21. Please note that it\'s _not_ possible to upgrade `nextcloud` across multiple major versions! This means that it\'s e.g. not possible to upgrade from nextcloud18 to nextcloud20 in a single deploy and most `20.09` users will have to upgrade to nextcloud20 first.
319319+- The default-version of `nextcloud` is nextcloud21. Please note that it's _not_ possible to upgrade `nextcloud` across multiple major versions! This means that it's e.g. not possible to upgrade from nextcloud18 to nextcloud20 in a single deploy and most `20.09` users will have to upgrade to nextcloud20 first.
320320321321 The package can be manually upgraded by setting [services.nextcloud.package](options.html#opt-services.nextcloud.package) to nextcloud21.
322322323323- The setting [services.redis.bind](options.html#opt-services.redis.bind) defaults to `127.0.0.1` now, making Redis listen on the loopback interface only, and not all public network interfaces.
324324325325-- NixOS now emits a deprecation warning if systemd\'s `StartLimitInterval` setting is used in a `serviceConfig` section instead of in a `unitConfig`; that setting is deprecated and now undocumented for the service section by systemd upstream, but still effective and somewhat buggy there, which can be confusing. See [\#45785](https://github.com/NixOS/nixpkgs/issues/45785) for details.
325325+- NixOS now emits a deprecation warning if systemd's `StartLimitInterval` setting is used in a `serviceConfig` section instead of in a `unitConfig`; that setting is deprecated and now undocumented for the service section by systemd upstream, but still effective and somewhat buggy there, which can be confusing. See [\#45785](https://github.com/NixOS/nixpkgs/issues/45785) for details.
326326327327 All services should use [systemd.services._name_.startLimitIntervalSec](options.html#opt-systemd.services._name_.startLimitIntervalSec) or `StartLimitIntervalSec` in [systemd.services._name_.unitConfig](options.html#opt-systemd.services._name_.unitConfig) instead.
328328···357357358358 `services.unbound.forwardAddresses` and `services.unbound.allowedAccess` have also been changed to use the new settings interface. You can follow the instructions when executing `nixos-rebuild` to upgrade your configuration to use the new interface.
359359360360-- The `services.dnscrypt-proxy2` module now takes the upstream\'s example configuration and updates it with the user\'s settings. An option has been added to restore the old behaviour if you prefer to declare the configuration from scratch.
360360+- The `services.dnscrypt-proxy2` module now takes the upstream's example configuration and updates it with the user's settings. An option has been added to restore the old behaviour if you prefer to declare the configuration from scratch.
361361362362- NixOS now defaults to the unified cgroup hierarchy (cgroupsv2). See the [Fedora Article for 31](https://www.redhat.com/sysadmin/fedora-31-control-group-v2) for details on why this is desirable, and how it impacts containers.
363363···367367368368- GNOME users may wish to delete their `~/.config/pulse` due to the changes to stream routing logic. See [PulseAudio bug 832](https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/832) for more information.
369369370370-- The zookeeper package does not provide `zooInspector.sh` anymore, as that \"contrib\" has been dropped from upstream releases.
370370+- The zookeeper package does not provide `zooInspector.sh` anymore, as that "contrib" has been dropped from upstream releases.
371371372372- In the ACME module, the data used to build the hash for the account directory has changed to accommodate new features to reduce account rate limit issues. This will trigger new account creation on the first rebuild following this update. No issues are expected to arise from this, thanks to the new account creation handling.
373373374374-- [users.users._name_.createHome](options.html#opt-users.users._name_.createHome) now always ensures home directory permissions to be `0700`. Permissions had previously been ignored for already existing home directories, possibly leaving them readable by others. The option\'s description was incorrect regarding ownership management and has been simplified greatly.
374374+- [users.users._name_.createHome](options.html#opt-users.users._name_.createHome) now always ensures home directory permissions to be `0700`. Permissions had previously been ignored for already existing home directories, possibly leaving them readable by others. The option's description was incorrect regarding ownership management and has been simplified greatly.
375375376376- When defining a new user, one of [users.users._name_.isNormalUser](options.html#opt-users.users._name_.isNormalUser) and [users.users._name_.isSystemUser](options.html#opt-users.users._name_.isSystemUser) is now required. This is to prevent accidentally giving a UID above 1000 to system users, which could have unexpected consequences, like running user activation scripts for system users. Note that users defined with an explicit UID below 500 are exempted from this check, as [users.users._name_.isSystemUser](options.html#opt-users.users._name_.isSystemUser) has no effect for those.
377377
+1-1
nixos/doc/manual/release-notes/rl-2111.section.md
···235235236236- The `erigon` ethereum node has moved to a new database format in `2021-05-04`, and requires a full resync
237237238238-- The `erigon` ethereum node has moved it's database location in `2021-08-03`, users upgrading must manually move their chaindata (see [release notes](https://github.com/ledgerwatch/erigon/releases/tag/v2021.08.03)).
238238+- The `erigon` ethereum node has moved its database location in `2021-08-03`, users upgrading must manually move their chaindata (see [release notes](https://github.com/ledgerwatch/erigon/releases/tag/v2021.08.03)).
239239240240- [users.users.<name>.group](options.html#opt-users.users._name_.group) no longer defaults to `nogroup`, which was insecure. Out-of-tree modules are likely to require adaptation: instead of
241241 ```nix