nixos/doc: bump Pandoc
Update the pinned channel in `md-to-db`, which bumps the Pandoc version, which fixes https://github.com/NixOS/nixpkgs/issues/125511 maybe.
This commit is contained in:
parent
3f6fed2e59
commit
07cb3bf3cc
68 changed files with 292 additions and 280 deletions
|
@ -23,7 +23,7 @@ $ nix-collect-garbage
|
|||
this unit automatically at certain points in time, for instance,
|
||||
every night at 03:15:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
nix.gc.automatic = true;
|
||||
nix.gc.dates = "03:15";
|
||||
</programlisting>
|
||||
|
|
|
@ -31,7 +31,7 @@ $ ping -c1 10.233.4.2
|
|||
address. This can be accomplished using the following configuration
|
||||
on the host:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.nat.enable = true;
|
||||
networking.nat.internalInterfaces = ["ve-+"];
|
||||
networking.nat.externalInterface = "eth0";
|
||||
|
@ -45,7 +45,7 @@ networking.nat.externalInterface = "eth0";
|
|||
If you are using Network Manager, you need to explicitly prevent it
|
||||
from managing container interfaces:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -42,7 +42,7 @@ $ systemd-cgls
|
|||
process would get 1/1001 of the cgroup’s CPU time.) You can limit a
|
||||
service’s CPU share in <literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
systemd.services.httpd.serviceConfig.CPUShares = 512;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -57,7 +57,7 @@ systemd.services.httpd.serviceConfig.CPUShares = 512;
|
|||
<literal>configuration.nix</literal>; for instance, to limit
|
||||
<literal>httpd.service</literal> to 512 MiB of RAM (excluding swap):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
systemd.services.httpd.serviceConfig.MemoryLimit = "512M";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
following specifies that there shall be a container named
|
||||
<literal>database</literal> running PostgreSQL:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
containers.database =
|
||||
{ config =
|
||||
{ config, pkgs, ... }:
|
||||
|
@ -29,7 +29,7 @@ containers.database =
|
|||
However, they cannot change the network configuration. You can give
|
||||
a container its own network as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
containers.database = {
|
||||
privateNetwork = true;
|
||||
hostAddress = "192.168.100.10";
|
||||
|
|
|
@ -91,7 +91,7 @@ Jan 07 15:55:57 hagbard systemd[1]: Started PostgreSQL Server.
|
|||
In order to enable a systemd <emphasis>system</emphasis> service
|
||||
with provided upstream package, use (e.g):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
systemd.packages = [ pkgs.packagekit ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
If you find yourself repeating yourself over and over, it’s time to
|
||||
abstract. Take, for instance, this Apache HTTP Server configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.httpd.virtualHosts =
|
||||
{ "blog.example.org" = {
|
||||
|
@ -29,7 +29,7 @@
|
|||
the only difference is the document root directories. To prevent
|
||||
this duplication, we can use a <literal>let</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let
|
||||
commonConfig =
|
||||
{ adminAddr = "alice@example.org";
|
||||
|
@ -55,7 +55,7 @@ in
|
|||
You can write a <literal>let</literal> wherever an expression is
|
||||
allowed. Thus, you also could have written:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.httpd.virtualHosts =
|
||||
let commonConfig = ...; in
|
||||
|
@ -74,7 +74,7 @@ in
|
|||
of different virtual hosts, all with identical configuration except
|
||||
for the document root. This can be done as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.httpd.virtualHosts =
|
||||
let
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
network configuration not covered by the existing NixOS modules. For
|
||||
instance, to statically configure an IPv6 address:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.localCommands =
|
||||
''
|
||||
ip -6 addr add 2001:610:685:1::1/64 dev eth0
|
||||
|
|
|
@ -28,7 +28,7 @@ $ cd nixpkgs
|
|||
manual. Finally, you add it to
|
||||
<xref linkend="opt-environment.systemPackages" />, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [ pkgs.my-package ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -45,7 +45,7 @@ environment.systemPackages = [ pkgs.my-package ];
|
|||
Hello</link> package directly in
|
||||
<literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages =
|
||||
let
|
||||
my-hello = with pkgs; stdenv.mkDerivation rec {
|
||||
|
@ -62,13 +62,13 @@ environment.systemPackages =
|
|||
Of course, you can also move the definition of
|
||||
<literal>my-hello</literal> into a separate Nix expression, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [ (import ./my-hello.nix) ];
|
||||
</programlisting>
|
||||
<para>
|
||||
where <literal>my-hello.nix</literal> contains:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
with import <nixpkgs> {}; # bring all of Nixpkgs into scope
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -98,7 +98,7 @@ Hello, world!
|
|||
need to install <literal>appimage-run</literal>: add to
|
||||
<literal>/etc/nixos/configuration.nix</literal>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [ pkgs.appimage-run ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<para>
|
||||
The NixOS configuration file generally looks like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ option definitions
|
||||
|
@ -21,7 +21,7 @@
|
|||
the name of an option and <literal>value</literal> is its value. For
|
||||
example,
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ services.httpd.enable = true;
|
||||
|
@ -44,7 +44,7 @@
|
|||
<literal>true</literal>. This means that the example above can also
|
||||
be written as:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ services = {
|
||||
|
@ -96,7 +96,7 @@ The option value `services.httpd.enable' in `/etc/nixos/configuration.nix' is no
|
|||
<para>
|
||||
Strings are enclosed in double quotes, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.hostName = "dexter";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -107,7 +107,7 @@ networking.hostName = "dexter";
|
|||
Multi-line strings can be enclosed in <emphasis>double single
|
||||
quotes</emphasis>, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.extraHosts =
|
||||
''
|
||||
127.0.0.2 other-localhost
|
||||
|
@ -135,7 +135,7 @@ networking.extraHosts =
|
|||
These can be <literal>true</literal> or
|
||||
<literal>false</literal>, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.firewall.enable = true;
|
||||
networking.firewall.allowPing = false;
|
||||
</programlisting>
|
||||
|
@ -149,7 +149,7 @@ networking.firewall.allowPing = false;
|
|||
<para>
|
||||
For example,
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 60;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -171,7 +171,7 @@ boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 60;
|
|||
Sets were introduced above. They are name/value pairs enclosed
|
||||
in braces, as in the option definition
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
|
@ -189,13 +189,13 @@ fileSystems."/boot" =
|
|||
The important thing to note about lists is that list elements
|
||||
are separated by whitespace, like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
List elements can be any other type, e.g. sets:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
@ -211,7 +211,7 @@ swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
|
|||
through the function argument <literal>pkgs</literal>. Typical
|
||||
uses:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages =
|
||||
[ pkgs.thunderbird
|
||||
pkgs.emacs
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
a dependency on GTK 2. If you want to build it against GTK 3, you
|
||||
can specify that as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [ (pkgs.emacs.override { gtk = pkgs.gtk3; }) ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -46,7 +46,7 @@ environment.systemPackages = [ (pkgs.emacs.override { gtk = pkgs.gtk3; }) ];
|
|||
the package, such as the source code. For instance, if you want to
|
||||
override the source code of Emacs, you can say:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [
|
||||
(pkgs.emacs.overrideAttrs (oldAttrs: {
|
||||
name = "emacs-25.0-pre";
|
||||
|
@ -72,7 +72,7 @@ environment.systemPackages = [
|
|||
everything depend on your customised instance, you can apply a
|
||||
<emphasis>global</emphasis> override as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
nixpkgs.config.packageOverrides = pkgs:
|
||||
{ emacs = pkgs.emacs.override { gtk = pkgs.gtk3; };
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
adding the following line to <literal>configuration.nix</literal>
|
||||
enables the Mozilla Thunderbird email application:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
environment.systemPackages = [ pkgs.thunderbird ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<literal>/dev/disk/by-label/data</literal> onto the mount point
|
||||
<literal>/data</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
fileSystems."/data" =
|
||||
{ device = "/dev/disk/by-label/data";
|
||||
fsType = "ext4";
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
both IPv4 and IPv6 traffic. It is enabled by default. It can be
|
||||
disabled as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.firewall.enable = false;
|
||||
</programlisting>
|
||||
<para>
|
||||
If the firewall is enabled, you can open specific TCP ports to the
|
||||
outside world:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -26,7 +26,7 @@ networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|||
<para>
|
||||
To open ranges of TCP ports:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.firewall.allowedTCPPortRanges = [
|
||||
{ from = 4000; to = 4007; }
|
||||
{ from = 8000; to = 8010; }
|
||||
|
|
|
@ -62,7 +62,7 @@ Platform Vendor Advanced Micro Devices, Inc.
|
|||
<xref linkend="opt-hardware.opengl.extraPackages" /> enables
|
||||
OpenCL support:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.extraPackages = [
|
||||
rocm-opencl-icd
|
||||
];
|
||||
|
@ -85,7 +85,7 @@ hardware.opengl.extraPackages = [
|
|||
enable OpenCL support. For example, for Gen8 and later GPUs, the
|
||||
following configuration can be used:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.extraPackages = [
|
||||
intel-compute-runtime
|
||||
];
|
||||
|
@ -162,7 +162,7 @@ GPU1:
|
|||
makes amdvlk the default driver and hides radv and lavapipe from
|
||||
the device list. A specific driver can be forced as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.extraPackages = [
|
||||
pkgs.amdvlk
|
||||
];
|
||||
|
@ -206,7 +206,7 @@ $ nix-shell -p libva-utils --run vainfo
|
|||
Modern Intel GPUs use the iHD driver, which can be installed
|
||||
with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.extraPackages = [
|
||||
intel-media-driver
|
||||
];
|
||||
|
@ -215,7 +215,7 @@ hardware.opengl.extraPackages = [
|
|||
Older Intel GPUs use the i965 driver, which can be installed
|
||||
with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.extraPackages = [
|
||||
vaapiIntel
|
||||
];
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
interfaces. However, you can configure an interface manually as
|
||||
follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.interfaces.eth0.ipv4.addresses = [ {
|
||||
address = "192.168.1.2";
|
||||
prefixLength = 24;
|
||||
|
@ -16,7 +16,7 @@ networking.interfaces.eth0.ipv4.addresses = [ {
|
|||
Typically you’ll also want to set a default gateway and set of name
|
||||
servers:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.defaultGateway = "192.168.1.1";
|
||||
networking.nameservers = [ "8.8.8.8" ];
|
||||
</programlisting>
|
||||
|
@ -32,7 +32,7 @@ networking.nameservers = [ "8.8.8.8" ];
|
|||
The host name is set using
|
||||
<xref linkend="opt-networking.hostName" />:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.hostName = "cartman";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -10,21 +10,21 @@
|
|||
<xref linkend="opt-networking.interfaces._name_.tempAddress" />. You
|
||||
can disable IPv6 support globally by setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.enableIPv6 = false;
|
||||
</programlisting>
|
||||
<para>
|
||||
You can disable IPv6 on a single interface using a normal sysctl (in
|
||||
this example, we use interface <literal>eth0</literal>):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
As with IPv4 networking interfaces are automatically configured via
|
||||
DHCPv6. You can configure an interface manually:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.interfaces.eth0.ipv6.addresses = [ {
|
||||
address = "fe00:aa:bb:cc::2";
|
||||
prefixLength = 64;
|
||||
|
@ -34,7 +34,7 @@ networking.interfaces.eth0.ipv6.addresses = [ {
|
|||
For configuring a gateway, optionally with explicitly specified
|
||||
interface:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.defaultGateway6 = {
|
||||
address = "fe00::1";
|
||||
interface = "enp0s3";
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
way is to enable and configure cluster components appropriately by
|
||||
hand:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.kubernetes = {
|
||||
apiserver.enable = true;
|
||||
controllerManager.enable = true;
|
||||
|
@ -25,20 +25,20 @@ services.kubernetes = {
|
|||
<quote>node</quote>) to the host. This enables apiserver,
|
||||
controllerManager, scheduler, addonManager, kube-proxy and etcd:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.kubernetes.roles = [ "master" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
While this will enable the kubelet and kube-proxy only:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.kubernetes.roles = [ "node" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
Assigning both the master and node roles is usable if you want a
|
||||
single node Kubernetes cluster for dev or testing purposes:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.kubernetes.roles = [ "master" "node" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
option <literal>boot.kernelPackages</literal>. For instance, this
|
||||
selects the Linux 3.10 kernel:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -48,7 +48,7 @@ zcat /proc/config.gz
|
|||
<xref linkend="sec-customising-packages" />). For instance, to
|
||||
enable support for the kernel debugger KGDB:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
nixpkgs.config.packageOverrides = pkgs: pkgs.lib.recursiveUpdate pkgs {
|
||||
linuxKernel.kernels.linux_5_10 = pkgs.linuxKernel.kernels.linux_5_10.override {
|
||||
extraConfig = ''
|
||||
|
@ -69,7 +69,7 @@ nixpkgs.config.packageOverrides = pkgs: pkgs.lib.recursiveUpdate pkgs {
|
|||
automatically by <literal>udev</literal>. You can force a module to
|
||||
be loaded via <xref linkend="opt-boot.kernelModules" />, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -77,7 +77,7 @@ boot.kernelModules = [ "fuse" "kvm-intel" "coretemp&quo
|
|||
root file system), you can use
|
||||
<xref linkend="opt-boot.initrd.kernelModules" />:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.initrd.kernelModules = [ "cifs" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -88,7 +88,7 @@ boot.initrd.kernelModules = [ "cifs" ];
|
|||
Kernel runtime parameters can be set through
|
||||
<xref linkend="opt-boot.kernel.sysctl" />, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 120;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -101,7 +101,7 @@ boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 120;
|
|||
You can customize the default kernel configuration by overriding
|
||||
the arguments for your kernel package:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
pkgs.linux_latest.override {
|
||||
ignoreConfigErrors = true;
|
||||
autoModules = false;
|
||||
|
@ -126,7 +126,7 @@ pkgs.linux_latest.override {
|
|||
<para>
|
||||
To use your custom kernel package in your NixOS configuration, set
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernelPackages = pkgs.linuxPackagesFor yourCustomKernel;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -139,7 +139,7 @@ boot.kernelPackages = pkgs.linuxPackagesFor yourCustomKernel;
|
|||
a kernel that uses it with
|
||||
<literal>pkgs.linuxManualConfig</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let
|
||||
baseKernel = pkgs.linux_latest;
|
||||
in pkgs.linuxManualConfig {
|
||||
|
@ -198,7 +198,7 @@ $ make -C $dev/lib/modules/*/build M=$(pwd)/drivers/net/ethernet/mellanox module
|
|||
available kernel version <emphasis>that is supported by
|
||||
ZFS</emphasis> like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
boot.kernelPackages = pkgs.zfs.latestCompatibleLinuxPackages;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ Enter passphrase for /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d: ***
|
|||
at boot time as <literal>/</literal>, add the following to
|
||||
<literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.initrd.luks.devices.crypted.device = "/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d";
|
||||
fileSystems."/".device = "/dev/mapper/crypted";
|
||||
</programlisting>
|
||||
|
@ -39,7 +39,7 @@ fileSystems."/".device = "/dev/mapper/crypted";
|
|||
located on an encrypted partition, it is necessary to add the
|
||||
following grub option:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.loader.grub.enableCryptodisk = true;
|
||||
</programlisting>
|
||||
<section xml:id="sec-luks-file-systems-fido2">
|
||||
|
@ -67,7 +67,7 @@ Added to key to device /dev/sda2, slot: 2
|
|||
compatible key, add the following to
|
||||
<literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.initrd.luks.fido2Support = true;
|
||||
boot.initrd.luks.devices."/dev/sda2".fido2.credential = "f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7";
|
||||
</programlisting>
|
||||
|
@ -77,7 +77,7 @@ boot.initrd.luks.devices."/dev/sda2".fido2.credential = "f1d00200
|
|||
protected, such as
|
||||
<link xlink:href="https://trezor.io/">Trezor</link>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess = true;
|
||||
</programlisting>
|
||||
</section>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
other modules by including them from
|
||||
<literal>configuration.nix</literal>, e.g.:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ imports = [ ./vpn.nix ./kde.nix ];
|
||||
|
@ -28,7 +28,7 @@
|
|||
<literal>vpn.nix</literal> and <literal>kde.nix</literal>. The
|
||||
latter might look like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ services.xserver.enable = true;
|
||||
|
@ -50,7 +50,7 @@
|
|||
you want it to appear first, you can use
|
||||
<literal>mkBefore</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.kernelModules = mkBefore [ "kvm-intel" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -70,7 +70,7 @@ The unique option `services.httpd.adminAddr' is defined multiple times, in `/etc
|
|||
When that happens, it’s possible to force one definition take
|
||||
precedence over the others:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.httpd.adminAddr = pkgs.lib.mkForce "bob@example.org";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -93,7 +93,7 @@ services.httpd.adminAddr = pkgs.lib.mkForce "bob@example.org";
|
|||
<xref linkend="opt-services.xserver.enable" /> is set to
|
||||
<literal>true</literal> somewhere else:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ environment.systemPackages =
|
||||
|
@ -137,7 +137,7 @@ nix-repl> map (x: x.hostName) config.services.httpd.virtualHosts
|
|||
below would have the same effect as importing a file which sets
|
||||
those options.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let netConfig = hostName: {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
To facilitate network configuration, some desktop environments use
|
||||
NetworkManager. You can enable NetworkManager by setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.networkmanager.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -15,7 +15,7 @@ networking.networkmanager.enable = true;
|
|||
All users that should have permission to change network settings
|
||||
must belong to the <literal>networkmanager</literal> group:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.users.alice.extraGroups = [ "networkmanager" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -36,7 +36,7 @@ users.users.alice.extraGroups = [ "networkmanager" ];
|
|||
used together if desired. To do this you need to instruct
|
||||
NetworkManager to ignore those interfaces like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.networkmanager.unmanaged = [
|
||||
"*" "except:type:wwan" "except:type:gsm"
|
||||
];
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
to say, expected usage is to add them to the imports list of your
|
||||
<literal>/etc/configuration.nix</literal> as such:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
imports = [
|
||||
<nixpkgs/nixos/modules/profiles/profile-name.nix>
|
||||
];
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
the interface with MAC address
|
||||
<literal>52:54:00:12:01:01</literal> using a netword link unit:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
systemd.network.links."10-wan" = {
|
||||
matchConfig.PermanentMACAddress = "52:54:00:12:01:01";
|
||||
linkConfig.Name = "wan";
|
||||
|
@ -43,7 +43,7 @@ systemd.network.links."10-wan" = {
|
|||
<para>
|
||||
Alternatively, we can use a plain old udev rule:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.udev.initrdRules = ''
|
||||
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
|
||||
ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="wan"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<para>
|
||||
Secure shell (SSH) access to your machine can be enabled by setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.openssh.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -16,7 +16,7 @@ services.openssh.enable = true;
|
|||
You can declaratively specify authorised RSA/DSA public keys for a
|
||||
user as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.users.alice.openssh.authorizedKeys.keys =
|
||||
[ "ssh-dss AAAAB3NzaC1kc3MAAACBAPIkGWVEt4..." ];
|
||||
</programlisting>
|
||||
|
|
|
@ -54,7 +54,7 @@ SHA256:yjxl3UbTn31fLWeyLYTAKYJPRmzknjQZoyG8gSNEoIE my-user@workstation
|
|||
<link linkend="opt-fileSystems">fileSystems</link> option. Here’s
|
||||
a typical setup:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
system.fsPackages = [ pkgs.sshfs ];
|
||||
|
||||
|
@ -80,7 +80,7 @@ SHA256:yjxl3UbTn31fLWeyLYTAKYJPRmzknjQZoyG8gSNEoIE my-user@workstation
|
|||
well, for example you can change the default SSH port or specify a
|
||||
jump proxy:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
options =
|
||||
[ "ProxyJump=bastion@example.com"
|
||||
|
@ -92,7 +92,7 @@ SHA256:yjxl3UbTn31fLWeyLYTAKYJPRmzknjQZoyG8gSNEoIE my-user@workstation
|
|||
It’s also possible to change the <literal>ssh</literal> command
|
||||
used by SSHFS to connect to the server. For example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
options =
|
||||
[ (builtins.replaceStrings [" "] ["\\040"]
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
Apache HTTP, setting
|
||||
<xref linkend="opt-services.httpd.adminAddr" /> appropriately:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.httpd.enable = true;
|
||||
services.httpd.adminAddr = ...;
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
|
@ -40,7 +40,7 @@ networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|||
<literal>.authz</literal> file describing access permission, and
|
||||
<literal>AuthUserFile</literal> to the password file.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.httpd.extraModules = [
|
||||
# note that order is *super* important here
|
||||
{ name = "dav_svn"; path = "${pkgs.apacheHttpdPackages.subversion}/modules/mod_dav_svn.so"; }
|
||||
|
@ -106,7 +106,7 @@ $ htpasswd -s PASSWORD_FILE USER_NAME
|
|||
<literal>ACCESS_FILE</literal> will look something like the
|
||||
following:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
[/]
|
||||
* = r
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
states that a user account named <literal>alice</literal> shall
|
||||
exist:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
home = "/home/alice";
|
||||
|
@ -45,7 +45,7 @@ users.users.alice = {
|
|||
A user ID (uid) is assigned automatically. You can also specify a
|
||||
uid manually by adding
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
uid = 1000;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -55,7 +55,7 @@ uid = 1000;
|
|||
Groups can be specified similarly. The following states that a group
|
||||
named <literal>students</literal> shall exist:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.groups.students.gid = 1000;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
Compositor such as sway without separately enabling a Wayland
|
||||
server:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
programs.sway.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -22,7 +22,7 @@ programs.sway.enable = true;
|
|||
be able to share your screen, you might want to activate this
|
||||
option:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
xdg.portal.wlr.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
<para>
|
||||
NixOS will start wpa_supplicant for you if you enable this setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.wireless.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
NixOS lets you specify networks for wpa_supplicant declaratively:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.wireless.networks = {
|
||||
echelon = { # SSID with no spaces or special characters
|
||||
psk = "abcdefgh";
|
||||
|
@ -49,7 +49,7 @@ network={
|
|||
psk=dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435
|
||||
}
|
||||
</programlisting>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.wireless.networks = {
|
||||
echelon = {
|
||||
pskRaw = "dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435";
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
The X Window System (X11) provides the basis of NixOS’ graphical
|
||||
user interface. It can be enabled as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -13,7 +13,7 @@ services.xserver.enable = true;
|
|||
and <literal>intel</literal>). You can also specify a driver
|
||||
manually, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "r128" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -25,7 +25,7 @@ services.xserver.videoDrivers = [ "r128" ];
|
|||
<literal>xterm</literal> window. Thus you should pick one or more of
|
||||
the following lines:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
services.xserver.desktopManager.xfce.enable = true;
|
||||
services.xserver.desktopManager.gnome.enable = true;
|
||||
|
@ -42,14 +42,14 @@ services.xserver.windowManager.herbstluftwm.enable = true;
|
|||
LightDM. You can select an alternative one by picking one of the
|
||||
following lines:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
services.xserver.displayManager.gdm.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
You can set the keyboard layout (and optionally the layout variant):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.layout = "de";
|
||||
services.xserver.xkbVariant = "neo";
|
||||
</programlisting>
|
||||
|
@ -57,7 +57,7 @@ services.xserver.xkbVariant = "neo";
|
|||
The X server is started automatically at boot time. If you don’t
|
||||
want this to happen, you can set:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.autorun = false;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -70,7 +70,7 @@ services.xserver.autorun = false;
|
|||
On 64-bit systems, if you want OpenGL for 32-bit programs such as in
|
||||
Wine, you should also set the following:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
</programlisting>
|
||||
<section xml:id="sec-x11-auto-login">
|
||||
|
@ -90,14 +90,14 @@ hardware.opengl.driSupport32Bit = true;
|
|||
manager and desktop environment. If you wanted no desktop
|
||||
environment and i3 as your your window manager, you’d define:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.defaultSession = "none+i3";
|
||||
</programlisting>
|
||||
<para>
|
||||
Every display manager in NixOS supports auto-login, here is an
|
||||
example using lightdm for a user <literal>alice</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.lightdm.enable = true;
|
||||
services.xserver.displayManager.autoLogin.enable = true;
|
||||
services.xserver.displayManager.autoLogin.user = "alice";
|
||||
|
@ -131,14 +131,14 @@ services.xserver.displayManager.autoLogin.user = "alice";
|
|||
<xref linkend="opt-services.xserver.videoDrivers" /> to set one.
|
||||
The recommended configuration for modern systems is:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "modesetting" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
If you experience screen tearing no matter what, this
|
||||
configuration was reported to resolve the issue:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "intel" ];
|
||||
services.xserver.deviceSection = ''
|
||||
Option "DRI" "2"
|
||||
|
@ -159,14 +159,14 @@ services.xserver.deviceSection = ''
|
|||
enabled by default because it’s not free software. You can enable
|
||||
it as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
Or if you have an older card, you may have to use one of the
|
||||
legacy drivers:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "nvidiaLegacy390" ];
|
||||
services.xserver.videoDrivers = [ "nvidiaLegacy340" ];
|
||||
services.xserver.videoDrivers = [ "nvidiaLegacy304" ];
|
||||
|
@ -185,7 +185,7 @@ services.xserver.videoDrivers = [ "nvidiaLegacy304" ];
|
|||
features or performance. If you still want to use it anyway, you
|
||||
need to explicitly set:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.videoDrivers = [ "amdgpu-pro" ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -199,14 +199,14 @@ services.xserver.videoDrivers = [ "amdgpu-pro" ];
|
|||
Support for Synaptics touchpads (found in many laptops such as the
|
||||
Dell Latitude series) can be enabled as follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.libinput.enable = true;
|
||||
</programlisting>
|
||||
<para>
|
||||
The driver has many options (see <xref linkend="ch-options" />).
|
||||
For instance, the following disables tap-to-click behavior:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.libinput.touchpad.tapping = false;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -222,7 +222,7 @@ services.xserver.libinput.touchpad.tapping = false;
|
|||
applications look similar to GTK ones, you can use the following
|
||||
configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
qt5.enable = true;
|
||||
qt5.platformTheme = "gtk2";
|
||||
qt5.style = "gtk2";
|
||||
|
@ -247,7 +247,7 @@ qt5.style = "gtk2";
|
|||
<literal>symbols</literal>; it’s an XKB peculiarity that will help
|
||||
with testing):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
xkb_symbols "us-greek"
|
||||
{
|
||||
include "us(basic)" // includes the base US keys
|
||||
|
@ -263,7 +263,7 @@ xkb_symbols "us-greek"
|
|||
<para>
|
||||
A minimal layout specification must include the following:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.extraLayouts.us-greek = {
|
||||
description = "US layout with alt-gr greek";
|
||||
languages = [ "eng" ];
|
||||
|
@ -312,7 +312,7 @@ $ echo "$(nix-build --no-out-link '<nixpkgs>' -A xorg.xkeyboardconfig
|
|||
interest, then create a <literal>media-key</literal> file to hold
|
||||
the keycodes definitions
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
xkb_keycodes "media"
|
||||
{
|
||||
<volUp> = 123;
|
||||
|
@ -322,7 +322,7 @@ xkb_keycodes "media"
|
|||
<para>
|
||||
Now use the newly define keycodes in <literal>media-sym</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
xkb_symbols "media"
|
||||
{
|
||||
key.type = "ONE_LEVEL";
|
||||
|
@ -333,7 +333,7 @@ xkb_symbols "media"
|
|||
<para>
|
||||
As before, to install the layout do
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.extraLayouts.media = {
|
||||
description = "Multimedia keys remapping";
|
||||
languages = [ "eng" ];
|
||||
|
@ -357,7 +357,7 @@ services.xserver.extraLayouts.media = {
|
|||
default. As a workaround, you can set the keymap using
|
||||
<literal>setxkbmap</literal> at the start of the session with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.sessionCommands = "setxkbmap -keycodes media";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<para>
|
||||
To enable the Xfce Desktop Environment, set
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.desktopManager.xfce.enable = true;
|
||||
services.xserver.displayManager.defaultSession = "xfce";
|
||||
</programlisting>
|
||||
|
@ -11,7 +11,7 @@ services.xserver.displayManager.defaultSession = "xfce";
|
|||
Optionally, <emphasis>picom</emphasis> can be enabled for nice
|
||||
graphical effects, some example settings:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.picom = {
|
||||
enable = true;
|
||||
fade = true;
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
these dependencies into account and order the snippets accordingly.
|
||||
As a simple example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
system.activationScripts.my-activation-script = {
|
||||
deps = [ "etc" ];
|
||||
# supportsDryActivation = true;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<para>
|
||||
This is an example of using <literal>warnings</literal>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
config = lib.mkIf config.services.foo.enable {
|
||||
|
@ -42,7 +42,7 @@
|
|||
assertion is useful to prevent such a broken system from being
|
||||
built.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
config = lib.mkIf config.services.syslogd.enable {
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
<literal>/etc/os-release</literal> in order to bake it into a
|
||||
unified kernel image:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, ... }: {
|
||||
boot.bootspec.extensions = {
|
||||
"org.secureboot.osRelease" = config.environment.etc."os-release".source;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
type-checked <literal>settings</literal> attribute</link> for a more
|
||||
complete example.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ lib, config, ... }: {
|
||||
|
||||
options.settings = lib.mkOption {
|
||||
|
@ -52,7 +52,7 @@
|
|||
<para>
|
||||
And the following shows what such a module then allows
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
# Not a declared option, but the freeform type allows this
|
||||
settings.logLevel = "debug";
|
||||
|
@ -72,7 +72,7 @@
|
|||
Freeform attributes cannot depend on other attributes of the same
|
||||
set without infinite recursion:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
# This throws infinite recursion encountered
|
||||
settings.logLevel = lib.mkIf (config.settings.port == 80) "debug";
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Sometimes NixOS modules need to be used in configuration but exist
|
||||
outside of Nixpkgs. These modules can be imported:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
@ -23,18 +23,18 @@
|
|||
Nixpkgs NixOS modules. Like any NixOS module, this module can import
|
||||
additional modules:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
# ./module-list/default.nix
|
||||
[
|
||||
./example-module1
|
||||
./example-module2
|
||||
]
|
||||
</programlisting>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
# ./extra-module/default.nix
|
||||
{ imports = import ./module-list.nix; }
|
||||
</programlisting>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
# NIXOS_EXTRA_MODULE_PATH=/absolute/path/to/extra-module
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
Each of the meta-attributes must be defined at most once per module
|
||||
file.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
options = {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
hasn’t been declared in any module. An option declaration generally
|
||||
looks like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = type specification;
|
||||
|
@ -127,7 +127,7 @@ options = {
|
|||
For example:
|
||||
</para>
|
||||
<anchor xml:id="ex-options-declarations-util-mkEnableOption-magic" />
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
lib.mkEnableOption "magic"
|
||||
# is like
|
||||
lib.mkOption {
|
||||
|
@ -142,7 +142,7 @@ lib.mkOption {
|
|||
<para>
|
||||
Usage:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
mkPackageOption pkgs "name" { default = [ "path" "in" "pkgs" ]; example = "literal example"; }
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -177,7 +177,7 @@ mkPackageOption pkgs "name" { default = [ "path" "in&qu
|
|||
Examples:
|
||||
</para>
|
||||
<anchor xml:id="ex-options-declarations-util-mkPackageOption-hello" />
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
lib.mkPackageOption pkgs "hello" { }
|
||||
# is like
|
||||
lib.mkOption {
|
||||
|
@ -188,7 +188,7 @@ lib.mkOption {
|
|||
}
|
||||
</programlisting>
|
||||
<anchor xml:id="ex-options-declarations-util-mkPackageOption-ghc" />
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
lib.mkPackageOption pkgs "GHC" {
|
||||
default = [ "ghc" ];
|
||||
example = "pkgs.haskell.packages.ghc92.ghc.withPackages (hkgs: [ hkgs.primes ])";
|
||||
|
@ -287,7 +287,7 @@ lib.mkOption {
|
|||
<emphasis role="strong">Example: Extensible type placeholder
|
||||
in the service module</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.enable = mkOption {
|
||||
description = "Display manager to use";
|
||||
type = with types; nullOr (enum [ ]);
|
||||
|
@ -299,7 +299,7 @@ services.xserver.displayManager.enable = mkOption {
|
|||
<literal>services.xserver.displayManager.enable</literal> in
|
||||
the <literal>gdm</literal> module</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.enable = mkOption {
|
||||
type = with types; nullOr (enum [ "gdm" ]);
|
||||
};
|
||||
|
@ -310,7 +310,7 @@ services.xserver.displayManager.enable = mkOption {
|
|||
<literal>services.xserver.displayManager.enable</literal> in
|
||||
the <literal>sddm</literal> module</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.xserver.displayManager.enable = mkOption {
|
||||
type = with types; nullOr (enum [ "sddm" ]);
|
||||
};
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Option definitions are generally straight-forward bindings of values
|
||||
to option names, like
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = {
|
||||
services.httpd.enable = true;
|
||||
};
|
||||
|
@ -21,7 +21,7 @@ config = {
|
|||
another option, you may need to use <literal>mkIf</literal>.
|
||||
Consider, for instance:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = if config.services.httpd.enable then {
|
||||
environment.systemPackages = [ ... ];
|
||||
...
|
||||
|
@ -34,7 +34,7 @@ config = if config.services.httpd.enable then {
|
|||
value being constructed here. After all, you could also write the
|
||||
clearly circular and contradictory:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = if config.services.httpd.enable then {
|
||||
services.httpd.enable = false;
|
||||
} else {
|
||||
|
@ -44,7 +44,7 @@ config = if config.services.httpd.enable then {
|
|||
<para>
|
||||
The solution is to write:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = mkIf config.services.httpd.enable {
|
||||
environment.systemPackages = [ ... ];
|
||||
...
|
||||
|
@ -55,7 +55,7 @@ config = mkIf config.services.httpd.enable {
|
|||
of the conditional to be <quote>pushed down</quote> into the
|
||||
individual definitions, as if you had written:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = {
|
||||
environment.systemPackages = if config.services.httpd.enable then [ ... ] else [];
|
||||
...
|
||||
|
@ -72,7 +72,7 @@ config = {
|
|||
option defaults have priority 1500. You can specify an explicit
|
||||
priority by using <literal>mkOverride</literal>, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.openssh.enable = mkOverride 10 false;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -94,7 +94,7 @@ services.openssh.enable = mkOverride 10 false;
|
|||
<literal>mkOrder 500</literal> and
|
||||
<literal>mkOrder 1500</literal>, respectively. As an example,
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hardware.firmware = mkBefore [ myFirmware ];
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -117,7 +117,7 @@ hardware.firmware = mkBefore [ myFirmware ];
|
|||
to be merged together as if they were declared in separate
|
||||
modules. This can be done using <literal>mkMerge</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config = mkMerge
|
||||
[ # Unconditional stuff.
|
||||
{ environment.systemPackages = [ ... ];
|
||||
|
|
|
@ -81,14 +81,14 @@
|
|||
<para>
|
||||
Two definitions of this type like
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
str = lib.mkDefault "foo";
|
||||
pkg.hello = pkgs.hello;
|
||||
fun.fun = x: x + 1;
|
||||
}
|
||||
</programlisting>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
str = lib.mkIf true "bar";
|
||||
pkg.gcc = pkgs.gcc;
|
||||
|
@ -98,7 +98,7 @@
|
|||
<para>
|
||||
will get merged to
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
str = "bar";
|
||||
pkg.gcc = pkgs.gcc;
|
||||
|
@ -732,7 +732,7 @@
|
|||
<emphasis role="strong">Example: Directly defined
|
||||
submodule</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
options.mod = mkOption {
|
||||
description = "submodule example";
|
||||
type = with types; submodule {
|
||||
|
@ -752,7 +752,7 @@ options.mod = mkOption {
|
|||
<emphasis role="strong">Example: Submodule defined as a
|
||||
reference</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let
|
||||
modOptions = {
|
||||
options = {
|
||||
|
@ -787,7 +787,7 @@ options.mod = mkOption {
|
|||
<emphasis role="strong">Example: Declaration of a list of
|
||||
submodules</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
options.mod = mkOption {
|
||||
description = "submodule example";
|
||||
type = with types; listOf (submodule {
|
||||
|
@ -807,7 +807,7 @@ options.mod = mkOption {
|
|||
<emphasis role="strong">Example: Definition of a list of
|
||||
submodules</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config.mod = [
|
||||
{ foo = 1; bar = "one"; }
|
||||
{ foo = 2; bar = "two"; }
|
||||
|
@ -827,7 +827,7 @@ config.mod = [
|
|||
<emphasis role="strong">Example: Declaration of attribute sets of
|
||||
submodules</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
options.mod = mkOption {
|
||||
description = "submodule example";
|
||||
type = with types; attrsOf (submodule {
|
||||
|
@ -847,7 +847,7 @@ options.mod = mkOption {
|
|||
<emphasis role="strong">Example: Definition of attribute sets of
|
||||
submodules</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
config.mod.one = { foo = 1; bar = "one"; };
|
||||
config.mod.two = { foo = 2; bar = "two"; };
|
||||
</programlisting>
|
||||
|
@ -878,7 +878,7 @@ config.mod.two = { foo = 2; bar = "two"; };
|
|||
<emphasis role="strong">Example: Adding a type
|
||||
check</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
byte = mkOption {
|
||||
description = "An integer between 0 and 255.";
|
||||
type = types.addCheck types.int (x: x >= 0 && x <= 255);
|
||||
|
@ -889,7 +889,7 @@ byte = mkOption {
|
|||
<emphasis role="strong">Example: Overriding a type
|
||||
check</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
nixThings = mkOption {
|
||||
description = "words that start with 'nix'";
|
||||
type = types.str // {
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
only overrides the module definition, this won’t use postgresql from
|
||||
nixos-unstable unless explicitly configured to do so.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
@ -42,7 +42,7 @@
|
|||
for an existing module. Importing this module will disable the
|
||||
original module without having to know its implementation details.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
|
|
@ -317,7 +317,7 @@
|
|||
used, along with some other related best practices. See the
|
||||
comments for explanations.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ options, config, lib, pkgs, ... }:
|
||||
let
|
||||
cfg = config.services.foo;
|
||||
|
@ -390,7 +390,7 @@ in {
|
|||
<emphasis role="strong">Example: Declaring a type-checked
|
||||
<literal>settings</literal> attribute</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
In <xref linkend="sec-configuration-syntax" />, we saw the following
|
||||
structure of NixOS modules:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{ option definitions
|
||||
|
@ -50,7 +50,7 @@
|
|||
<emphasis role="strong">Example: Structure of NixOS
|
||||
Modules</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
@ -146,7 +146,7 @@
|
|||
<emphasis role="strong">Example: NixOS Module for the
|
||||
<quote>locate</quote> Service</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
@ -208,7 +208,7 @@ in {
|
|||
<emphasis role="strong">Example: Escaping in Exec
|
||||
directives</emphasis>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, lib, pkgs, utils, ... }:
|
||||
|
||||
with lib;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<para>
|
||||
A NixOS test is a module that has the following structure:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
|
||||
# One or more machines:
|
||||
|
@ -58,14 +58,14 @@
|
|||
Tests that are part of NixOS are added to
|
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/all-tests.nix"><literal>nixos/tests/all-tests.nix</literal></link>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hostname = runTest ./hostname.nix;
|
||||
</programlisting>
|
||||
<para>
|
||||
Overrides can be added by defining an anonymous module in
|
||||
<literal>all-tests.nix</literal>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
hostname = runTest {
|
||||
imports = [ ./hostname.nix ];
|
||||
defaults.networking.firewall.enable = false;
|
||||
|
@ -87,7 +87,7 @@ nix-build -A nixosTests.hostname
|
|||
Outside the <literal>nixpkgs</literal> repository, you can
|
||||
instantiate the test by first importing the NixOS library,
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let nixos-lib = import (nixpkgs + "/nixos/lib") { };
|
||||
in
|
||||
|
||||
|
@ -633,7 +633,7 @@ machine.wait_for_unit("xautolock.service", "x-session-user")
|
|||
For faster dev cycles it’s also possible to disable the
|
||||
code-linters (this shouldn’t be committed though):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
skipLint = true;
|
||||
nodes.machine =
|
||||
|
@ -653,7 +653,7 @@ machine.wait_for_unit("xautolock.service", "x-session-user")
|
|||
disable the Black linter directly (again, don’t commit this within
|
||||
the Nixpkgs repository):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
testScript =
|
||||
''
|
||||
# fmt: off
|
||||
|
@ -665,7 +665,7 @@ machine.wait_for_unit("xautolock.service", "x-session-user")
|
|||
Similarly, the type checking of test scripts can be disabled in
|
||||
the following way:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
skipTypeCheck = true;
|
||||
nodes.machine =
|
||||
|
@ -700,25 +700,37 @@ with foo_running:
|
|||
<literal>polling_condition</literal> takes the following
|
||||
(optional) arguments:
|
||||
</para>
|
||||
<para>
|
||||
<literal>seconds_interval</literal>
|
||||
</para>
|
||||
<para>
|
||||
: specifies how often the condition should be polled:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>seconds_interval</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
specifies how often the condition should be polled:
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<programlisting language="python">
|
||||
@polling_condition(seconds_interval=10)
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
</programlisting>
|
||||
<para>
|
||||
<literal>description</literal>
|
||||
</para>
|
||||
<para>
|
||||
: is used in the log when the condition is checked. If this is not
|
||||
provided, the description is pulled from the docstring of the
|
||||
function. These two are therefore equivalent:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>description</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
is used in the log when the condition is checked. If this is
|
||||
not provided, the description is pulled from the docstring
|
||||
of the function. These two are therefore equivalent:
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<programlisting language="python">
|
||||
@polling_condition
|
||||
def foo_running():
|
||||
|
@ -739,7 +751,7 @@ def foo_running():
|
|||
<literal>extraPythonPackages</literal>. For example, you could add
|
||||
<literal>numpy</literal> like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
extraPythonPackages = p: [ p.numpy ];
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ $ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd
|
|||
can create the following file at
|
||||
<literal>modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
|
|
|
@ -94,7 +94,7 @@ $ ./result/bin/run-*-vm
|
|||
unless you have set <literal>mutableUsers = false</literal>. Another
|
||||
way is to temporarily add the following to your configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.users.your-user.initialHashedPassword = "test";
|
||||
</programlisting>
|
||||
<para>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<literal>/mnt/etc/nixos/configuration.nix</literal> to keep the
|
||||
internet accessible after reboot.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
networking.proxy.default = "http://user:password@proxy:port/";
|
||||
networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
</programlisting>
|
||||
|
|
|
@ -129,7 +129,7 @@ $ sudo `which nixos-generate-config` --root /mnt
|
|||
Ubuntu, you may want to add something like this to your
|
||||
<literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.loader.grub.extraEntries = ''
|
||||
menuentry "Ubuntu" {
|
||||
search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e
|
||||
|
@ -229,7 +229,7 @@ $ sudo `which nixos-generate-config`
|
|||
account with <literal>sudo passwd -l root</literal> if you use
|
||||
<literal>sudo</literal>)
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
users.users.root.initialHashedPassword = "";
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
|
|
@ -69,7 +69,7 @@ nix-build -A kexec.x86_64-linux '<nixpkgs/nixos/release.nix>'
|
|||
instead of the default installer image, you can build your own
|
||||
<literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ modulesPath, ... }: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/netboot/netboot-minimal.nix")
|
||||
|
|
|
@ -58,14 +58,14 @@
|
|||
There are a few modifications you should make in configuration.nix.
|
||||
Enable booting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
</programlisting>
|
||||
<para>
|
||||
Also remove the fsck that runs at startup. It will always fail to
|
||||
run, stopping your boot until you press <literal>*</literal>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
boot.initrd.checkJournalingFS = false;
|
||||
</programlisting>
|
||||
<para>
|
||||
|
@ -76,7 +76,7 @@ boot.initrd.checkJournalingFS = false;
|
|||
If you do not add <literal>"nofail"</literal>, the system
|
||||
will not boot properly.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ...} :
|
||||
{
|
||||
fileSystems."/virtualboxshare" = {
|
||||
|
|
|
@ -128,7 +128,7 @@ nixos https://nixos.org/channels/nixos-unstable
|
|||
You can keep a NixOS system up-to-date automatically by adding the
|
||||
following to <literal>configuration.nix</literal>:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
system.autoUpgrade.enable = true;
|
||||
system.autoUpgrade.allowReboot = true;
|
||||
</programlisting>
|
||||
|
@ -145,7 +145,7 @@ system.autoUpgrade.allowReboot = true;
|
|||
contains a different kernel, initrd or kernel modules. You can
|
||||
also specify a channel explicitly, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11;
|
||||
</programlisting>
|
||||
</section>
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
the NixOS configuration. For instance, if a package
|
||||
<literal>foo</literal> provides systemd units, you can say:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.packages = [ pkgs.foo ];
|
||||
}
|
||||
|
@ -88,7 +88,7 @@
|
|||
to enable those units. You can then set or override unit options
|
||||
in the usual way, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.foo.wantedBy = [ "multi-user.target" ];
|
||||
systemd.services.foo.serviceConfig.MemoryLimit = "512M";
|
||||
|
@ -105,7 +105,7 @@
|
|||
NixOS configuration requires unfree packages from Nixpkgs, you
|
||||
need to enable support for them explicitly by setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
|
@ -123,7 +123,7 @@
|
|||
The Adobe Flash player is no longer enabled by default in the
|
||||
Firefox and Chromium wrappers. To enable it, you must set:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.firefox.enableAdobeFlash = true; # for Firefox
|
||||
|
@ -136,7 +136,7 @@
|
|||
The firewall is now enabled by default. If you don’t want this,
|
||||
you need to disable it explicitly:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
networking.firewall.enable = false;
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@
|
|||
documentation</link> for details. If you wish to continue to use
|
||||
httpd 2.2, add the following line to your NixOS configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.httpd.package = pkgs.apacheHttpd_2_2;
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
system.autoUpgrade.enable = true;
|
||||
}
|
||||
|
@ -432,7 +432,7 @@
|
|||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
system.stateVersion = "14.12";
|
||||
}
|
||||
|
@ -523,7 +523,7 @@
|
|||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
fileSystems."/shiny" = {
|
||||
device = "myshinysharedfolder";
|
||||
|
@ -662,7 +662,7 @@ infinite recursion encountered
|
|||
<literal>lib</literal>, after adding it as argument of the
|
||||
module. The following module
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
@ -677,7 +677,7 @@ with pkgs.lib;
|
|||
<para>
|
||||
should be modified to look like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
@ -695,7 +695,7 @@ with lib;
|
|||
replaced by <literal>(import <nixpkgs> {})</literal>. The
|
||||
following module
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
@ -712,7 +712,7 @@ in
|
|||
<para>
|
||||
should be modified to look like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
|
@ -378,7 +378,7 @@
|
|||
You will need to add an import statement to your NixOS
|
||||
configuration in order to use it, e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
imports = [ <nixpkgs/nixos/modules/services/misc/gitit.nix> ];
|
||||
}
|
||||
|
@ -395,7 +395,7 @@
|
|||
to be built in. All modules now reside in
|
||||
<literal>nginxModules</literal> set. Example configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
nginx.override {
|
||||
modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
|
||||
}
|
||||
|
@ -468,7 +468,7 @@ nginx.override {
|
|||
continue to work, but print a warning, until the 16.09 release.
|
||||
An example of the new style:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
fileSystems."/example" = {
|
||||
device = "/dev/sdc";
|
||||
|
@ -524,7 +524,7 @@ nginx.override {
|
|||
used input method name, <literal>"ibus"</literal> for
|
||||
ibus. An example of the new style:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
i18n.inputMethod.enabled = "ibus";
|
||||
i18n.inputMethod.ibus.engines = with pkgs.ibus-engines; [ anthy mozc ];
|
||||
|
@ -533,7 +533,7 @@ nginx.override {
|
|||
<para>
|
||||
That is equivalent to the old version:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
programs.ibus.enable = true;
|
||||
programs.ibus.plugins = with pkgs; [ ibus-anthy mozc ];
|
||||
|
@ -587,7 +587,7 @@ $TTL 1800
|
|||
point to exact folder where syncthing is writing to. Example
|
||||
configuration should look something like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
|
|
|
@ -192,7 +192,7 @@
|
|||
interface has been streamlined. Desktop users should be able to
|
||||
simply set
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
security.grsecurity.enable = true;
|
||||
}
|
||||
|
|
|
@ -581,7 +581,7 @@
|
|||
<literal>service.nylon</literal> is now declared using named
|
||||
instances. As an example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.nylon = {
|
||||
enable = true;
|
||||
|
@ -594,7 +594,7 @@
|
|||
<para>
|
||||
should be replaced with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.nylon.myvpn = {
|
||||
enable = true;
|
||||
|
@ -615,7 +615,7 @@
|
|||
<link xlink:href="https://nixos.org/nixpkgs/manual/#sec-overlays-install">
|
||||
overlays</link>. For example, the following code:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let
|
||||
pkgs = import <nixpkgs> {};
|
||||
in
|
||||
|
@ -624,7 +624,7 @@ in
|
|||
<para>
|
||||
should be replaced by:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
let
|
||||
pkgs = import <nixpkgs> {};
|
||||
in
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
head. Apart from that, it’s now possible to also set
|
||||
additional options by using an attribute set, for example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ services.xserver.xrandrHeads = [
|
||||
"HDMI-0"
|
||||
{
|
||||
|
|
|
@ -830,7 +830,7 @@
|
|||
<para>
|
||||
In order to have the previous default configuration add
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.xserver.displayManager.lightdm.greeters.gtk.indicators = [
|
||||
"~host" "~spacer"
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<para>
|
||||
For example
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
programs.firejail = {
|
||||
enable = true;
|
||||
|
@ -695,7 +695,7 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
|
|||
A NixOS system can now be constructed more easily based on a
|
||||
preexisting invocation of Nixpkgs. For example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
inherit (pkgs.nixos {
|
||||
boot.loader.grub.enable = false;
|
||||
|
@ -791,7 +791,7 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
|
|||
<para>
|
||||
An example usage of this would be:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
|
|
|
@ -374,7 +374,7 @@
|
|||
setting the <literal>services.nscd.config</literal> option
|
||||
with the desired caching parameters.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.nscd.config =
|
||||
''
|
||||
|
|
|
@ -133,7 +133,7 @@
|
|||
option to improve support for upstream session files. If you
|
||||
used something like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.xserver.desktopManager.default = "xfce";
|
||||
services.xserver.windowManager.default = "icewm";
|
||||
|
@ -142,7 +142,7 @@
|
|||
<para>
|
||||
you should change it to:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.xserver.displayManager.defaultSession = "xfce+icewm";
|
||||
}
|
||||
|
@ -821,7 +821,7 @@ See https://github.com/NixOS/nixpkgs/pull/71684 for details.
|
|||
is a <literal>loaOf</literal> option that is commonly used as
|
||||
follows:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
users.users =
|
||||
[ { name = "me";
|
||||
|
@ -836,7 +836,7 @@ See https://github.com/NixOS/nixpkgs/pull/71684 for details.
|
|||
value of <literal>name</literal> as the name of the attribute
|
||||
set:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
users.users.me =
|
||||
{ description = "My personal user.";
|
||||
|
@ -940,7 +940,7 @@ See https://github.com/NixOS/nixpkgs/pull/71684 for details.
|
|||
because it permitted root auto-login you can override the
|
||||
lightdm-autologin pam module like:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
security.pam.services.lightdm-autologin.text = lib.mkForce ''
|
||||
auth requisite pam_nologin.so
|
||||
|
@ -1004,7 +1004,7 @@ auth required pam_succeed_if.so quiet
|
|||
Additionally, some Postfix configuration must now be set
|
||||
manually instead of automatically by the Mailman module:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.postfix.relayDomains = [ "hash:/var/lib/mailman/data/postfix_domains" ];
|
||||
services.postfix.config.transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
|
||||
|
@ -1066,7 +1066,7 @@ auth required pam_succeed_if.so quiet
|
|||
or by passing a TOML configuration file via
|
||||
<link xlink:href="options.html#opt-services.dnscrypt-proxy2.configFile">services.dnscrypt-proxy2.configFile</link>.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
# Example configuration:
|
||||
services.dnscrypt-proxy2.enable = true;
|
||||
|
@ -1229,7 +1229,7 @@ auth required pam_succeed_if.so quiet
|
|||
when upgrading. Otherwise, the package can be deployed
|
||||
using the following config:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ pkgs, ... }: {
|
||||
services.hydra.package = pkgs.hydra-migration;
|
||||
}
|
||||
|
@ -1319,7 +1319,7 @@ $ hydra-backfill-ids
|
|||
<para>
|
||||
To continue to use the old approach, you can configure:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.nginx.appendConfig = let cfg = config.services.nginx; in ''user ${cfg.user} ${cfg.group};'';
|
||||
systemd.services.nginx.serviceConfig.User = lib.mkForce "root";
|
||||
|
@ -1432,7 +1432,7 @@ $ hydra-backfill-ids
|
|||
older, you simply need to enable postgresql-support
|
||||
explicitly:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{ ... }: {
|
||||
services.matrix-synapse = {
|
||||
enable = true;
|
||||
|
|
|
@ -730,7 +730,7 @@
|
|||
traditional mysql_native_password plugin method, one must run
|
||||
the following:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
|
||||
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("verysecret");
|
||||
|
@ -755,7 +755,7 @@ services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
|
|||
allow MySQL to read from /home and /tmp directories when using
|
||||
<literal>LOAD DATA INFILE</literal>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.mysql.serviceConfig.ProtectHome = lib.mkForce "read-only";
|
||||
}
|
||||
|
@ -766,7 +766,7 @@ services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
|
|||
<literal>SELECT * INTO OUTFILE</literal>, assuming the mysql
|
||||
user has write access to <literal>/var/data</literal>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.mysql.serviceConfig.ReadWritePaths = [ "/var/data" ];
|
||||
}
|
||||
|
@ -885,7 +885,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
<literal>phantomJsSupport = true</literal> to the package
|
||||
instantiation:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
|
||||
phantomJsSupport = true;
|
||||
|
@ -958,7 +958,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
<literal>opcache</literal>, <literal>pdo</literal> and
|
||||
<literal>pdo_mysql</literal> loaded:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
environment.systemPackages = [
|
||||
(pkgs.php.withExtensions
|
||||
|
@ -997,7 +997,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
The remaining configuration flags can now be set directly on
|
||||
the <literal>php</literal> attribute. For example, instead of
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
php.override {
|
||||
config.php.embed = true;
|
||||
|
@ -1008,7 +1008,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
<para>
|
||||
you should now write
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
php.override {
|
||||
embedSupport = true;
|
||||
|
@ -1062,7 +1062,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
writing to other folders, use
|
||||
<literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
||||
}
|
||||
|
@ -1076,7 +1076,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
docs</link> for details). If you require serving files from
|
||||
home directories, you may choose to set e.g.
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.nginx.serviceConfig.ProtectHome = "read-only";
|
||||
}
|
||||
|
@ -1093,7 +1093,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
<para>
|
||||
Replace a <literal>nesting.clone</literal> entry with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
specialisation.example-sub-configuration = {
|
||||
configuration = {
|
||||
|
@ -1104,7 +1104,7 @@ WHERE table_schema = "zabbix" AND COLLATION_NAME = "utf8_general_
|
|||
<para>
|
||||
Replace a <literal>nesting.children</literal> entry with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
specialisation.example-sub-configuration = {
|
||||
inheritParentConfig = false;
|
||||
|
@ -1385,7 +1385,7 @@ $ sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test
|
|||
multi-instance config with an existing bitcoind data directory
|
||||
and user, you have to adjust the original config, e.g.:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.bitcoind = {
|
||||
enable = true;
|
||||
|
@ -1397,7 +1397,7 @@ $ sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test
|
|||
<para>
|
||||
To something similar:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.bitcoind.mainnet = {
|
||||
enable = true;
|
||||
|
@ -1447,7 +1447,7 @@ $ sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test
|
|||
the original SSL settings, you have to adjust the original
|
||||
config, e.g.:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.dokuwiki = {
|
||||
enable = true;
|
||||
|
@ -1458,7 +1458,7 @@ $ sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test
|
|||
<para>
|
||||
To something similar:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.dokuwiki."mywiki" = {
|
||||
enable = true;
|
||||
|
@ -1492,7 +1492,7 @@ $ sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test
|
|||
option is (<literal>/var/db/postgresql</literal>) and then
|
||||
explicitly set this value to maintain compatibility:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.postgresql.dataDir = "/var/db/postgresql";
|
||||
}
|
||||
|
@ -1825,7 +1825,7 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
|||
you must include those directories into the
|
||||
<literal>BindPaths</literal> of the service:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
systemd.services.transmission.serviceConfig.BindPaths = [ "/path/to/alternative/download-dir" ];
|
||||
}
|
||||
|
@ -1835,7 +1835,7 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
|||
<literal>transmission-daemon</literal> is now only available
|
||||
on the local network interface by default. Use:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.transmission.settings.rpc-bind-address = "0.0.0.0";
|
||||
}
|
||||
|
@ -1900,7 +1900,7 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
|||
<para>
|
||||
This means that a configuration like this
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.dovecot2.mailboxes = [
|
||||
{ name = "Junk";
|
||||
|
@ -1912,7 +1912,7 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
|||
<para>
|
||||
should now look like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.dovecot2.mailboxes = {
|
||||
Junk.auto = "create";
|
||||
|
|
|
@ -330,7 +330,7 @@
|
|||
<literal>mediatomb</literal> package. If you want to keep the
|
||||
old behavior, you must declare it with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.mediatomb.package = pkgs.mediatomb;
|
||||
}
|
||||
|
@ -341,7 +341,7 @@
|
|||
service declaration to add the firewall rules itself before,
|
||||
you should now declare it with:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.mediatomb.openFirewall = true;
|
||||
}
|
||||
|
@ -368,7 +368,7 @@
|
|||
<link xlink:href="options.html#opt-services.uwsgi.capabilities">services.uwsgi.capabilities</link>.
|
||||
The previous behaviour can be restored by setting:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.uwsgi.user = "root";
|
||||
services.uwsgi.group = "root";
|
||||
|
@ -552,7 +552,7 @@ $ slapcat -F $TMPDIR -n0 -H 'ldap:///???(!(objectClass=olcSchemaConfig))'
|
|||
has been removed. To enable Privoxy, and to configure it to
|
||||
use Tor’s faster port, use the following configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
opt-services.privoxy.enable = true;
|
||||
opt-services.privoxy.enableTor = true;
|
||||
|
@ -689,7 +689,7 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
|
|||
<literal>mpich</literal> instead of the default
|
||||
<literal>openmpi</literal> can now be achived like this:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
self: super:
|
||||
{
|
||||
mpi = super.mpich;
|
||||
|
@ -850,7 +850,7 @@ self: super:
|
|||
kodiPackages.inputstream-adaptive and kodiPackages.vfs-sftp
|
||||
addons:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.kodi
|
||||
|
@ -867,7 +867,7 @@ self: super:
|
|||
and as a result the above configuration should now be written
|
||||
as:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
environment.systemPackages = [
|
||||
(pkgs.kodi.withPackages (p: with p; [
|
||||
|
@ -1158,7 +1158,7 @@ self: super:
|
|||
users to declare autoscan media directories from their nixos
|
||||
configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.mediatomb.mediaDirectories = [
|
||||
{ path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; }
|
||||
|
@ -1519,7 +1519,7 @@ self: super:
|
|||
been dropped. Users that still want it should add the
|
||||
following to their system configuration:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.gvfs.package = pkgs.gvfs.override { samba = null; };
|
||||
}
|
||||
|
|
|
@ -642,7 +642,7 @@
|
|||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.paperless-ng.extraConfig = {
|
||||
# Provide languages as ISO 639-2 codes
|
||||
|
@ -737,7 +737,7 @@ Superuser created successfully.
|
|||
insecure. Out-of-tree modules are likely to require
|
||||
adaptation: instead of
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
users.users.foo = {
|
||||
isSystemUser = true;
|
||||
|
@ -747,7 +747,7 @@ Superuser created successfully.
|
|||
<para>
|
||||
also create a group for your user:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
users.users.foo = {
|
||||
isSystemUser = true;
|
||||
|
|
|
@ -714,7 +714,7 @@
|
|||
<literal>programs.msmtp.*</literal> can be used instead for an
|
||||
equivalent setup. For example:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
# Original ssmtp configuration:
|
||||
services.ssmtp = {
|
||||
|
@ -847,7 +847,7 @@
|
|||
<literal>config.nixpkgs.config.allowUnfree</literal> are
|
||||
enabled. If you still want these fonts, use:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
fonts.fonts = [
|
||||
pkgs.xorg.fontbhlucidatypewriter100dpi
|
||||
|
@ -942,7 +942,7 @@
|
|||
<para>
|
||||
Before:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.matrix-synapse = {
|
||||
enable = true;
|
||||
|
@ -977,7 +977,7 @@
|
|||
<para>
|
||||
After:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.matrix-synapse = {
|
||||
enable = true;
|
||||
|
@ -1143,7 +1143,7 @@
|
|||
<para>
|
||||
Before:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.keycloak = {
|
||||
enable = true;
|
||||
httpPort = "8080";
|
||||
|
@ -1157,7 +1157,7 @@
|
|||
<para>
|
||||
After:
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
services.keycloak = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
|
@ -1082,7 +1082,7 @@ services.github-runner.serviceOverrides.SupplementaryGroups = [
|
|||
removed. This option was an association of environment
|
||||
variables for Grafana. If you had an expression like
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.grafana.extraOptions.SECURITY_ADMIN_USER = "foobar";
|
||||
}
|
||||
|
@ -1096,7 +1096,7 @@ services.github-runner.serviceOverrides.SupplementaryGroups = [
|
|||
For the migration, it is recommended to turn it into the
|
||||
INI format, i.e. to declare
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<programlisting language="nix">
|
||||
{
|
||||
services.grafana.settings.security.admin_user = "foobar";
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/21.11 -i bash -p pandoc
|
||||
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/22.11 -i bash -p pandoc
|
||||
|
||||
# This script is temporarily needed while we transition the manual to
|
||||
# CommonMark. It converts the .md files in the regular manual folder
|
||||
|
|
Loading…
Reference in a new issue