summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-11-19 20:08:15 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-11-19 20:08:15 +0100
commitea7b8978ef9dc85c07080a0826ddf170df95a67f (patch)
tree829920e179a348da4dc214db52bbefcaab7e7044 /nixos
parent45ed0b7018f0e2db1bb06fbc909b213077c29b17 (diff)
parent93b430bc6ba3c084d66f96546dd7b95a2835eceb (diff)
Merge master into staging-next
Diffstat (limited to 'nixos')
-rw-r--r--nixos/doc/manual/release-notes/rl-2103.xml6
-rw-r--r--nixos/modules/services/monitoring/telegraf.nix18
-rw-r--r--nixos/modules/services/network-filesystems/openafs/server.nix1
-rw-r--r--nixos/modules/tasks/filesystems/nfs.nix48
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/fcitx/config12
-rw-r--r--nixos/tests/fcitx/default.nix142
-rw-r--r--nixos/tests/fcitx/profile4
-rw-r--r--nixos/tests/telegraf.nix4
9 files changed, 209 insertions, 27 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml
index 5c017c65a253..da4f083d01ac 100644
--- a/nixos/doc/manual/release-notes/rl-2103.xml
+++ b/nixos/doc/manual/release-notes/rl-2103.xml
@@ -172,6 +172,12 @@
please note that your non-root pools will now be forcibly imported.
</para>
</listitem>
+ <listitem>
+ <para>
+ <package>openafs</package> now points to <package>openafs_1_8</package>,
+ which is the new stable release. OpenAFS 1.6 was removed.
+ </para>
+ </listitem>
</itemizedlist>
</section>
diff --git a/nixos/modules/services/monitoring/telegraf.nix b/nixos/modules/services/monitoring/telegraf.nix
index 1fc17ec72daf..b341a9005c2a 100644
--- a/nixos/modules/services/monitoring/telegraf.nix
+++ b/nixos/modules/services/monitoring/telegraf.nix
@@ -21,7 +21,7 @@ in {
};
environmentFiles = mkOption {
- type = types.nullOr (types.listOf types.path);
+ type = types.listOf types.path;
default = [];
example = "/run/keys/telegraf.env";
description = ''
@@ -38,17 +38,13 @@ in {
description = "Extra configuration options for telegraf";
type = settingsFormat.type;
example = {
- outputs = {
- influxdb = {
- urls = ["http://localhost:8086"];
- database = "telegraf";
- };
+ outputs.influxdb = {
+ urls = ["http://localhost:8086"];
+ database = "telegraf";
};
- inputs = {
- statsd = {
- service_address = ":8125";
- delete_timings = true;
- };
+ inputs.statsd = {
+ service_address = ":8125";
+ delete_timings = true;
};
};
};
diff --git a/nixos/modules/services/network-filesystems/openafs/server.nix b/nixos/modules/services/network-filesystems/openafs/server.nix
index 095024d2c8af..d782f7821656 100644
--- a/nixos/modules/services/network-filesystems/openafs/server.nix
+++ b/nixos/modules/services/network-filesystems/openafs/server.nix
@@ -251,7 +251,6 @@ in {
wantedBy = [ "multi-user.target" ];
restartIfChanged = false;
unitConfig.ConditionPathExists = [
- "|/etc/openafs/server/rxkad.keytab"
"|/etc/openafs/server/KeyFileExt"
];
preStart = ''
diff --git a/nixos/modules/tasks/filesystems/nfs.nix b/nixos/modules/tasks/filesystems/nfs.nix
index ddcc0ed8f5a4..fd35c35d32ad 100644
--- a/nixos/modules/tasks/filesystems/nfs.nix
+++ b/nixos/modules/tasks/filesystems/nfs.nix
@@ -10,20 +10,9 @@ let
rpcMountpoint = "${nfsStateDir}/rpc_pipefs";
- idmapdConfFile = pkgs.writeText "idmapd.conf" ''
- [General]
- Pipefs-Directory = ${rpcMountpoint}
- ${optionalString (config.networking.domain != null)
- "Domain = ${config.networking.domain}"}
-
- [Mapping]
- Nobody-User = nobody
- Nobody-Group = nogroup
-
- [Translation]
- Method = nsswitch
- '';
+ format = pkgs.formats.ini {};
+ idmapdConfFile = format.generate "idmapd.conf" cfg.idmapd.settings;
nfsConfFile = pkgs.writeText "nfs.conf" cfg.extraConfig;
requestKeyConfFile = pkgs.writeText "request-key.conf" ''
create id_resolver * * ${pkgs.nfs-utils}/bin/nfsidmap -t 600 %k %d
@@ -38,6 +27,25 @@ in
options = {
services.nfs = {
+ idmapd.settings = mkOption {
+ type = format.type;
+ default = {};
+ description = ''
+ libnfsidmap configuration. Refer to
+ <link xlink:href="https://linux.die.net/man/5/idmapd.conf"/>
+ for details.
+ '';
+ example = literalExample ''
+ {
+ Translation = {
+ GSS-Methods = "static,nsswitch";
+ };
+ Static = {
+ "root/hostname.domain.com@REALM.COM" = "root";
+ };
+ }
+ '';
+ };
extraConfig = mkOption {
type = types.lines;
default = "";
@@ -54,6 +62,20 @@ in
services.rpcbind.enable = true;
+ services.nfs.idmapd.settings = {
+ General = mkMerge [
+ { Pipefs-Directory = rpcMountpoint; }
+ (mkIf (config.networking.domain != null) { Domain = config.networking.domain; })
+ ];
+ Mapping = {
+ Nobody-User = "nobody";
+ Nobody-Group = "nogroup";
+ };
+ Translation = {
+ Method = "nsswitch";
+ };
+ };
+
system.fsPackages = [ pkgs.nfs-utils ];
boot.initrd.kernelModules = mkIf inInitrd [ "nfs" ];
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 640cc84c8032..3c10d6215186 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -103,6 +103,7 @@ in
etcd = handleTestOn ["x86_64-linux"] ./etcd.nix {};
etcd-cluster = handleTestOn ["x86_64-linux"] ./etcd-cluster.nix {};
fancontrol = handleTest ./fancontrol.nix {};
+ fcitx = handleTest ./fcitx {};
ferm = handleTest ./ferm.nix {};
firefox = handleTest ./firefox.nix {};
firefox-esr = handleTest ./firefox.nix { esr = true; };
diff --git a/nixos/tests/fcitx/config b/nixos/tests/fcitx/config
new file mode 100644
index 000000000000..169768994e28
--- /dev/null
+++ b/nixos/tests/fcitx/config
@@ -0,0 +1,12 @@
+[Hotkey]
+SwitchKey=Disabled
+IMSwitchHotkey=ALT_SHIFT
+TimeInterval=240
+
+[Program]
+DelayStart=5
+
+[Output]
+
+[Appearance]
+
diff --git a/nixos/tests/fcitx/default.nix b/nixos/tests/fcitx/default.nix
new file mode 100644
index 000000000000..d28a5801f97f
--- /dev/null
+++ b/nixos/tests/fcitx/default.nix
@@ -0,0 +1,142 @@
+import ../make-test-python.nix (
+ {
+ pkgs, ...
+ }:
+ # copy_from_host works only for store paths
+ rec {
+ name = "fcitx";
+ machine =
+ {
+ pkgs,
+ ...
+ }:
+ {
+ virtualisation.memorySize = 1024;
+
+ imports = [
+ ../common/user-account.nix
+ ];
+
+ environment.systemPackages = [
+ # To avoid clashing with xfce4-terminal
+ pkgs.alacritty
+ ];
+
+
+ services.xserver =
+ {
+ enable = true;
+
+ displayManager = {
+ lightdm.enable = true;
+ autoLogin = {
+ enable = true;
+ user = "alice";
+ };
+ };
+
+ desktopManager.xfce.enable = true;
+ };
+
+ i18n = {
+ inputMethod = {
+ enabled = "fcitx";
+ fcitx.engines = [
+ pkgs.fcitx-engines.m17n
+ pkgs.fcitx-engines.table-extra
+ ];
+ };
+ };
+ }
+ ;
+
+ testScript = { nodes, ... }:
+ let
+ user = nodes.machine.config.users.users.alice;
+ userName = user.name;
+ userHome = user.home;
+ xauth = "${userHome}/.Xauthority";
+ fcitx_confdir = "${userHome}/.config/fcitx";
+ in
+ ''
+ # We need config files before login session
+ # So copy first thing
+
+ # Point and click would be expensive,
+ # So configure using files
+ machine.copy_from_host(
+ "${./profile}",
+ "${fcitx_confdir}/profile",
+ )
+ machine.copy_from_host(
+ "${./config}",
+ "${fcitx_confdir}/config",
+ )
+
+ start_all()
+
+ machine.wait_for_file("${xauth}")
+ machine.succeed("xauth merge ${xauth}")
+
+ machine.sleep(5)
+
+ machine.succeed("su - ${userName} -c 'alacritty&'")
+ machine.succeed("su - ${userName} -c 'fcitx&'")
+ machine.sleep(10)
+
+ ### Type on terminal
+ machine.send_chars("echo ")
+ machine.sleep(1)
+
+ ### Start fcitx Unicode input
+ machine.send_key("ctrl-alt-shift-u")
+ machine.sleep(5)
+ machine.sleep(1)
+
+ ### Search for smiling face
+ machine.send_chars("smil")
+ machine.sleep(1)
+
+ ### Navigate to the second one
+ machine.send_key("tab")
+ machine.sleep(1)
+
+ ### Choose it
+ machine.send_key("\n")
+ machine.sleep(1)
+
+ ### Start fcitx language input
+ machine.send_key("ctrl-spc")
+ machine.sleep(1)
+
+ ### Default zhengma, enter 一下
+ machine.send_chars("a2")
+ machine.sleep(1)
+
+ ### Switch to Harvard Kyoto
+ machine.send_key("alt-shift")
+ machine.sleep(1)
+
+ ### Enter क
+ machine.send_chars("ka ")
+ machine.sleep(1)
+
+ machine.send_key("alt-shift")
+ machine.sleep(1)
+
+ ### Turn off Fcitx
+ machine.send_key("ctrl-spc")
+ machine.sleep(1)
+
+ ### Redirect typed characters to a file
+ machine.send_chars(" > fcitx_test.out\n")
+ machine.sleep(1)
+ machine.screenshot("terminal_chars")
+
+ ### Verify that file contents are as expected
+ file_content = machine.succeed("cat ${userHome}/fcitx_test.out")
+ assert file_content == "☺一下क\n"
+ ''
+ ;
+ }
+)
diff --git a/nixos/tests/fcitx/profile b/nixos/tests/fcitx/profile
new file mode 100644
index 000000000000..77497a1496bd
--- /dev/null
+++ b/nixos/tests/fcitx/profile
@@ -0,0 +1,4 @@
+[Profile]
+IMName=zhengma-large
+EnabledIMList=fcitx-keyboard-us:True,zhengma-large:True,m17n_sa_harvard-kyoto:True
+PreeditStringInClientWindow=False
diff --git a/nixos/tests/telegraf.nix b/nixos/tests/telegraf.nix
index 938bbd518b5a..7f4b36752582 100644
--- a/nixos/tests/telegraf.nix
+++ b/nixos/tests/telegraf.nix
@@ -6,9 +6,9 @@ import ./make-test-python.nix ({ pkgs, ...} : {
machine = { ... }: {
services.telegraf.enable = true;
- services.telegraf.environmentFiles = [pkgs.writeText "secrets" ''
+ services.telegraf.environmentFiles = [(pkgs.writeText "secrets" ''
SECRET=example
- ''];
+ '')];
services.telegraf.extraConfig = {
agent.interval = "1s";
agent.flush_interval = "1s";