diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2021-03-13 19:16:43 +0100 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2021-03-13 19:16:43 +0100 |
commit | 01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0 (patch) | |
tree | fa3b5948ed7c99764e1cd234beba97cc0b2d141b /nixos | |
parent | 1df29ee4562a573f0528dcfb8866bd309865ba47 (diff) | |
parent | 5e367ecef917dadbe3e977b281a33c1fc9cf6e59 (diff) | |
download | nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar.gz nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar.bz2 nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar.lz nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar.xz nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.tar.zst nixpkgs-01a4d350c7d8ee4cc9c9e918fe53af9588b2e6e0.zip |
Merge branch 'master' into staging-next
Reverted https://github.com/NixOS/nixpkgs/pull/115228 for kodi to avoid conflict. It does not look like unzip would be used but not investigating now to speed up merge conflict resolution.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2105.xml | 50 | ||||
-rw-r--r-- | nixos/modules/services/misc/mautrix-telegram.nix | 20 | ||||
-rw-r--r-- | nixos/modules/services/monitoring/prometheus/exporters.nix | 3 | ||||
-rw-r--r-- | nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix | 40 | ||||
-rw-r--r-- | nixos/tests/prometheus-exporters.nix | 23 |
5 files changed, 130 insertions, 6 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml index 678894a521d..218bb3ae309 100644 --- a/nixos/doc/manual/release-notes/rl-2105.xml +++ b/nixos/doc/manual/release-notes/rl-2105.xml @@ -36,7 +36,17 @@ now point to an externally wrapped by default derivations, that allow you to also add `extraPythonPackages` to the Python interpreter used by GNURadio. Missing environmental variables needed for operational GUI were also added - (<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#7547</link>). + (<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>). + </para> + </listitem> + <listitem> + <para> + <link xlink:href="https://www.gnuradio.org/">GNURadio</link> has a + <code>pkgs</code> attribute set, and there's a <code>gnuradio.callPackage</code> + function that extends <code>pkgs</code> with a <code>mkDerivation</code>, and a + <code>mkDerivationWith</code>, like Qt5. Now all <code>gnuradio.pkgs</code> are + defined with <code>gnuradio.callPackage</code> and some packages that depend + on gnuradio are defined with this as well. </para> </listitem> <listitem> @@ -57,6 +67,13 @@ for the motivation). </para> </listitem> + <listitem> + <para> + <link xlink:href="https://kodi.tv/">Kodi</link> has been updated to version 19.0 "Matrix". See + the <link xlink:href="https://kodi.tv/article/kodi-190-matrix-release">announcement</link> for + further details. + </para> + </listitem> </itemizedlist> </section> @@ -577,6 +594,37 @@ self: super: for your Kafka version. </para> </listitem> + <listitem> + <para> + The <package>kodi</package> package has been modified to allow concise addon management. Consider + the following configuration from previous releases of NixOS to install <package>kodi</package>, + including the <package>kodiPackages.inputstream-adaptive</package> and <package>kodiPackages.vfs-sftp</package> + addons: + + <programlisting> +environment.systemPackages = [ + pkgs.kodi +]; + +nixpkgs.config.kodi = { + enableInputStreamAdaptive = true; + enableVFSSFTP = true; +}; + </programlisting> + + All Kodi <literal>config</literal> flags have been removed, and as a result the above configuration + should now be written as: + + <programlisting> +environment.systemPackages = [ + (pkgs.kodi.withPackages (p: with p; [ + inputstream-adaptive + vfs-sftp + ])) +]; + </programlisting> + </para> + </listitem> </itemizedlist> </section> diff --git a/nixos/modules/services/misc/mautrix-telegram.nix b/nixos/modules/services/misc/mautrix-telegram.nix index caeb4b04164..0ae5797fea0 100644 --- a/nixos/modules/services/misc/mautrix-telegram.nix +++ b/nixos/modules/services/misc/mautrix-telegram.nix @@ -6,8 +6,9 @@ let dataDir = "/var/lib/mautrix-telegram"; registrationFile = "${dataDir}/telegram-registration.yaml"; cfg = config.services.mautrix-telegram; - # TODO: switch to configGen.json once RFC42 is implemented - settingsFile = pkgs.writeText "mautrix-telegram-settings.json" (builtins.toJSON cfg.settings); + settingsFormat = pkgs.formats.json {}; + settingsFileUnsubstituted = settingsFormat.generate "mautrix-telegram-config-unsubstituted.json" cfg.settings; + settingsFile = "${dataDir}/config.json"; in { options = { @@ -15,9 +16,8 @@ in { enable = mkEnableOption "Mautrix-Telegram, a Matrix-Telegram hybrid puppeting/relaybot bridge"; settings = mkOption rec { - # TODO: switch to types.config.json as prescribed by RFC42 once it's implemented - type = types.attrs; apply = recursiveUpdate default; + inherit (settingsFormat) type; default = { appservice = rec { database = "sqlite:///${dataDir}/mautrix-telegram.db"; @@ -124,6 +124,16 @@ in { after = [ "network-online.target" ] ++ cfg.serviceDependencies; preStart = '' + # Not all secrets can be passed as environment variable (yet) + # https://github.com/tulir/mautrix-telegram/issues/584 + [ -f ${settingsFile} ] && rm -f ${settingsFile} + old_umask=$(umask) + umask 0277 + ${pkgs.envsubst}/bin/envsubst \ + -o ${settingsFile} \ + -i ${settingsFileUnsubstituted} + umask $old_umask + # generate the appservice's registration file if absent if [ ! -f '${registrationFile}' ]; then ${pkgs.mautrix-telegram}/bin/mautrix-telegram \ @@ -159,6 +169,8 @@ in { --config='${settingsFile}' ''; }; + + restartTriggers = [ settingsFileUnsubstituted ]; }; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 115ecbf12b5..5811cda1125 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -31,6 +31,7 @@ let "dovecot" "fritzbox" "json" + "jitsi" "keylight" "knot" "lnd" @@ -130,7 +131,7 @@ let inherit name port; } // extraOpts); } ({ config, ... }: mkIf config.openFirewall { - firewallFilter = mkOptionDefault "-p tcp -m tcp --dport ${toString config.port}"; + firewallFilter = mkDefault "-p tcp -m tcp --dport ${toString config.port}"; })]; internal = true; default = {}; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix b/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix new file mode 100644 index 00000000000..c93a8f98e55 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.jitsi; +in +{ + port = 9700; + extraOpts = { + url = mkOption { + type = types.str; + default = "http://localhost:8080/colibri/stats"; + description = '' + Jitsi Videobridge metrics URL to monitor. + This is usually /colibri/stats on port 8080 of the jitsi videobridge host. + ''; + }; + interval = mkOption { + type = types.str; + default = "30s"; + example = "1min"; + description = '' + How often to scrape new data + ''; + }; + }; + serviceOpts = { + serviceConfig = { + ExecStart = '' + ${pkgs.prometheus-jitsi-exporter}/bin/jitsiexporter \ + -url ${escapeShellArg cfg.url} \ + -host ${cfg.listenAddress} \ + -port ${toString cfg.port} \ + -interval ${toString cfg.interval} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + }; +} diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index 78a3afad0ba..290cb87abbe 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -233,6 +233,29 @@ let ''; }; + jitsi = { + exporterConfig = { + enable = true; + }; + metricProvider = { + systemd.services.prometheus-jitsi-exporter.after = [ "jitsi-videobridge2.service" ]; + services.jitsi-videobridge = { + enable = true; + apis = [ "colibri" "rest" ]; + }; + }; + exporterTest = '' + wait_for_unit("jitsi-videobridge2.service") + wait_for_open_port(8080) + wait_for_unit("prometheus-jitsi-exporter.service") + wait_for_open_port(9700) + wait_until_succeeds( + 'journalctl -eu prometheus-jitsi-exporter.service -o cat | grep -q "key=participants"' + ) + succeed("curl -sSf 'localhost:9700/metrics' | grep -q 'jitsi_participants 0'") + ''; + }; + json = { exporterConfig = { enable = true; |