Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2022-11-11 00:17:01 +00:00 committed by GitHub
commit a4ffa492ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
189 changed files with 1047 additions and 1492 deletions

View file

@ -2265,6 +2265,12 @@
githubId = 5394722;
name = "Spencer Baugh";
};
catouc = {
email = "catouc@philipp.boeschen.me";
github = "catouc";
githubId = 25623213;
name = "Philipp Böschen";
};
caugner = {
email = "nixos@caugner.de";
github = "caugner";
@ -13234,6 +13240,12 @@
githubId = 19905904;
name = "Simon Weber";
};
sweenu = {
name = "sweenu";
email = "contact@sweenu.xyz";
github = "sweenu";
githubId = 7051978;
};
swflint = {
email = "swflint@flintfam.org";
github = "swflint";
@ -14216,6 +14228,12 @@
githubId = 928084;
name = "Utku Demir";
};
uthar = {
email = "galkowskikasper@gmail.com";
github = "uthar";
githubId = 15697697;
name = "Kasper Gałkowski";
};
uvnikita = {
email = "uv.nikita@gmail.com";
github = "uvNikita";

View file

@ -861,6 +861,12 @@
for <literal>termonad</literal> has been removed.
</para>
</listitem>
<listitem>
<para>
Linux 4.9 has been removed because it will reach its end of
life within the lifespan of 22.11.
</para>
</listitem>
<listitem>
<para>
(Neo)Vim can not be configured with
@ -1189,6 +1195,13 @@ signald -d /var/lib/signald/db \
will be removed once the transition to CommonMark is complete.
</para>
</listitem>
<listitem>
<para>
The redis module now persists each instances configuration
file in the state directory, in order to support some more
advanced use cases like sentinel.
</para>
</listitem>
<listitem>
<para>
The udisks2 service, available at

View file

@ -265,6 +265,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The top-level `termonad-with-packages` alias for `termonad` has been removed.
- Linux 4.9 has been removed because it will reach its end of life within the lifespan of 22.11.
- (Neo)Vim can not be configured with `configure.pathogen` anymore to reduce maintainance burden.
Use `configure.packages` instead.
- Neovim can not be configured with plug anymore (still works for vim).
@ -362,6 +364,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The `documentation.nixos.options.allowDocBook` option was added to ease the transition to CommonMark option documentation. Setting this option to `false` causes an error for every option included in the manual that uses DocBook documentation; it defaults to `true` to preserve the previous behavior and will be removed once the transition to CommonMark is complete.
- The redis module now persists each instance's configuration file in the state directory, in order to support some more advanced use cases like sentinel.
- The udisks2 service, available at `services.udisks2.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
This also means that polkit will now actually be disabled by default. The default for `security.polkit.enable` was already flipped in the previous release, but udisks2 being enabled by default re-enabled it.

View file

@ -8,13 +8,12 @@ in
options = {
hardware.brillo = {
enable = mkEnableOption (lib.mdDoc ''
Enable brillo in userspace.
This will allow brightness control from users in the video group.
brillo in userspace.
This will allow brightness control from users in the video group
'');
};
};
config = mkIf cfg.enable {
services.udev.packages = [ pkgs.brillo ];
environment.systemPackages = [ pkgs.brillo ];

View file

@ -10,7 +10,7 @@ let
};
in {
options.hardware.ubertooth = {
enable = mkEnableOption (lib.mdDoc "Enable the Ubertooth software and its udev rules.");
enable = mkEnableOption (lib.mdDoc "Ubertooth software and its udev rules");
group = mkOption {
type = types.str;

View file

@ -3,7 +3,7 @@
with lib;
{
options.hardware.wooting.enable =
mkEnableOption (lib.mdDoc "Enable support for Wooting keyboards");
mkEnableOption (lib.mdDoc "support for Wooting keyboards");
config = mkIf config.hardware.wooting.enable {
environment.systemPackages = [ pkgs.wootility ];

View file

@ -4,7 +4,7 @@ let
cfg = config.programs.kclock;
kclockPkg = pkgs.libsForQt5.kclock;
in {
options.programs.kclock = { enable = mkEnableOption (lib.mdDoc "Enable KClock"); };
options.programs.kclock = { enable = mkEnableOption (lib.mdDoc "KClock"); };
config = mkIf cfg.enable {
services.dbus.packages = [ kclockPkg ];

View file

@ -29,7 +29,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = config.services.mpd.network.port;
defaultText = literalExpression "config.services.mpd.network.port";
description = lib.mdDoc "The port where MPD is listening.";

View file

@ -314,7 +314,7 @@ in {
port = mkOption {
default = 9102;
type = types.int;
type = types.port;
description = lib.mdDoc ''
This specifies the port number on which the Client listens for
Director connections. It must agree with the FDPort specified in
@ -374,7 +374,7 @@ in {
port = mkOption {
default = 9103;
type = types.int;
type = types.port;
description = lib.mdDoc ''
Specifies port number on which the Storage daemon listens for
Director connections.
@ -451,7 +451,7 @@ in {
port = mkOption {
default = 9101;
type = types.int;
type = types.port;
description = lib.mdDoc ''
Specify the port (a positive integer) on which the Director daemon
will listen for Bacula Console connections. This same port number

View file

@ -12,7 +12,7 @@ in
port = mkOption {
default = 8200;
type = types.int;
type = types.port;
description = lib.mdDoc ''
Port serving the web interface
'';

View file

@ -12,7 +12,7 @@ in
{
###### interface
options.services.kubernetes.flannel = {
enable = mkEnableOption (lib.mdDoc "enable flannel networking");
enable = mkEnableOption (lib.mdDoc "flannel networking");
};
###### implementation

View file

@ -18,7 +18,7 @@ in
'')
];
options.services.foldingathome = {
enable = mkEnableOption (lib.mdDoc "Enable the Folding@home client");
enable = mkEnableOption (lib.mdDoc "Folding@home client");
package = mkOption {
type = types.package;

View file

@ -170,6 +170,9 @@ with lib;
# If running in ephemeral mode, restart the service on-exit (i.e., successful de-registration of the runner)
# to trigger a fresh registration.
Restart = if cfg.ephemeral then "on-success" else "no";
# If the runner exits with `ReturnCode.RetryableError = 2`, always restart the service:
# https://github.com/actions/runner/blob/40ed7f8/src/Runner.Common/Constants.cs#L146
RestartForceExitStatus = [ 2 ];
# Contains _diag
LogsDirectory = [ systemdDir ];

View file

@ -34,13 +34,7 @@ in {
services.couchdb = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to run CouchDB Server.
'';
};
enable = mkEnableOption (lib.mdDoc "CouchDB Server");
package = mkOption {
type = types.package;

View file

@ -15,13 +15,7 @@ in {
services.opentsdb = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to run OpenTSDB.
'';
};
enable = mkEnableOption (lib.mdDoc "OpenTSDB");
package = mkOption {
type = types.package;
@ -49,7 +43,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = 4242;
description = lib.mdDoc ''
Which port OpenTSDB listens on.

View file

@ -85,7 +85,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = 8080;
description = lib.mdDoc ''
This tells pgmanage what port to listen on for browser requests.

View file

@ -105,6 +105,13 @@ in {
'';
};
extraParams = mkOption {
type = with types; listOf str;
default = [];
description = lib.mdDoc "Extra parameters to append to redis-server invocation";
example = [ "--sentinel" ];
};
bind = mkOption {
type = with types; nullOr str;
default = "127.0.0.1";
@ -340,16 +347,24 @@ in {
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/redis-server /run/${redisName name}/redis.conf";
ExecStartPre = [("+"+pkgs.writeShellScript "${redisName name}-credentials" (''
install -o '${conf.user}' -m 600 ${redisConfig conf.settings} /run/${redisName name}/redis.conf
'' + optionalString (conf.requirePassFile != null) ''
{
printf requirePass' '
cat ${escapeShellArg conf.requirePassFile}
} >>/run/${redisName name}/redis.conf
'')
)];
ExecStart = "${cfg.package}/bin/redis-server /var/lib/${redisName name}/redis.conf ${escapeShellArgs conf.extraParams}";
ExecStartPre = "+"+pkgs.writeShellScript "${redisName name}-prep-conf" (let
redisConfVar = "/var/lib/${redisName name}/redis.conf";
redisConfRun = "/run/${redisName name}/nixos.conf";
redisConfStore = redisConfig conf.settings;
in ''
touch "${redisConfVar}" "${redisConfRun}"
chown '${conf.user}' "${redisConfVar}" "${redisConfRun}"
chmod 0600 "${redisConfVar}" "${redisConfRun}"
if [ ! -s ${redisConfVar} ]; then
echo 'include "${redisConfRun}"' > "${redisConfVar}"
fi
echo 'include "${redisConfStore}"' > "${redisConfRun}"
${optionalString (conf.requirePassFile != null) ''
{echo -n "requirepass "
cat ${escapeShellArg conf.requirePassFile}} >> "${redisConfRun}"
''}
'');
Type = "notify";
# User and group
User = conf.user;

View file

@ -70,7 +70,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8303;
description = lib.mdDoc ''
Port the server will listen on.

View file

@ -18,7 +18,7 @@ in
];
options.services.zigbee2mqtt = {
enable = mkEnableOption (lib.mdDoc "enable zigbee2mqtt service");
enable = mkEnableOption (lib.mdDoc "zigbee2mqtt service");
package = mkOption {
description = lib.mdDoc "Zigbee2mqtt package to use";

View file

@ -12,11 +12,7 @@ in {
options = {
services.fluentd = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Whether to enable fluentd.";
};
enable = mkEnableOption (lib.mdDoc "fluentd");
config = mkOption {
type = types.lines;

View file

@ -109,13 +109,7 @@ in
{
options = {
services.logcheck = {
enable = mkOption {
default = false;
type = types.bool;
description = lib.mdDoc ''
Enable the logcheck cron job.
'';
};
enable = mkEnableOption (lib.mdDoc "logcheck cron job");
user = mkOption {
default = "logcheck";

View file

@ -110,7 +110,6 @@ in {
in
{
preStart = ''
cp ${conf} /var/rss2email/conf.cfg
if [ ! -f /var/rss2email/db.json ]; then
echo '{"version":2,"feeds":[]}' > /var/rss2email/db.json
fi
@ -118,7 +117,7 @@ in {
path = [ pkgs.system-sendmail ];
serviceConfig = {
ExecStart =
"${pkgs.rss2email}/bin/r2e -c /var/rss2email/conf.cfg -d /var/rss2email/db.json run";
"${pkgs.rss2email}/bin/r2e -c ${conf} -d /var/rss2email/db.json run";
User = "rss2email";
};
};

View file

@ -128,6 +128,18 @@ in {
after = [ "network-online.target" ] ++ cfg.serviceDependencies;
path = [ pkgs.lottieconverter ];
# mautrix-telegram tries to generate a dotfile in the home directory of
# the running user if using a postgresql databse:
#
# File "python3.10/site-packages/asyncpg/connect_utils.py", line 257, in _dot_postgre>
# return (pathlib.Path.home() / '.postgresql' / filename).resolve()
# File "python3.10/pathlib.py", line 1000, in home
# return cls("~").expanduser()
# File "python3.10/pathlib.py", line 1440, in expanduser
# raise RuntimeError("Could not determine home directory.")
# RuntimeError: Could not determine home directory.
environment.HOME = dataDir;
preStart = ''
# Not all secrets can be passed as environment variable (yet)
# https://github.com/tulir/mautrix-telegram/issues/584

View file

@ -48,7 +48,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = 4040;
description = lib.mdDoc ''
The port on which Airsonic will listen for

View file

@ -44,7 +44,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 27701;
description = lib.mdDoc "ankisyncd port";
};

View file

@ -40,7 +40,7 @@ in {
port = mkOption {
description = lib.mdDoc "Port number the broker should listen on.";
default = 9092;
type = types.int;
type = types.port;
};
hostname = mkOption {

View file

@ -68,17 +68,12 @@ in
{
options = {
services.exhibitor = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to enable the exhibitor server.
'';
};
enable = mkEnableOption (lib.mdDoc "exhibitor server");
# See https://github.com/soabase/exhibitor/wiki/Running-Exhibitor for what these mean
# General options for any type of config
port = mkOption {
type = types.int;
type = types.port;
default = 8080;
description = lib.mdDoc ''
The port for exhibitor to listen on and communicate with other exhibitors.

View file

@ -90,7 +90,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 3306;
description = lib.mdDoc "Database host port.";
};
@ -167,7 +167,7 @@ in
};
httpPort = mkOption {
type = types.int;
type = types.port;
default = 3000;
description = lib.mdDoc "HTTP listen port.";
};

View file

@ -8,11 +8,7 @@ in
{
options.services.gollum = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Enable the Gollum service.";
};
enable = mkEnableOption (lib.mdDoc "Gollum service");
address = mkOption {
type = types.str;
@ -21,7 +17,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 4567;
description = lib.mdDoc "Port on which the web server will run.";
};

View file

@ -70,7 +70,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8000;
description = lib.mdDoc ''
Port to listen on.

View file

@ -28,7 +28,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 1688;
description = lib.mdDoc "The port on which to listen.";
};

View file

@ -161,7 +161,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = if cfg.database.type == "postgresql" then 5432 else 3306;
defaultText = literalExpression "3306";
description = lib.mdDoc "Database host port.";

View file

@ -98,7 +98,7 @@ let
port = mkOption {
description = lib.mdDoc "Port where rippled listens.";
type = types.int;
type = types.port;
};
protocol = mkOption {

View file

@ -27,7 +27,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8181;
description = lib.mdDoc "TCP port where Tautulli listens.";
};

View file

@ -97,7 +97,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = 8095;
description = lib.mdDoc ''
The port on which to listen.

View file

@ -24,16 +24,12 @@ let
in {
options.services.zookeeper = {
enable = mkOption {
description = lib.mdDoc "Whether to enable Zookeeper.";
default = false;
type = types.bool;
};
enable = mkEnableOption (lib.mdDoc "Zookeeper");
port = mkOption {
description = lib.mdDoc "Zookeeper Client port.";
default = 2181;
type = types.int;
type = types.port;
};
id = mkOption {

View file

@ -24,7 +24,7 @@ in
enable = mkEnableOption (lib.mdDoc "alerta");
port = mkOption {
type = types.int;
type = types.port;
default = 5000;
description = lib.mdDoc "Port of Alerta";
};

View file

@ -7,13 +7,7 @@ let
in {
options = {
services.arbtt = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Enable the arbtt statistics capture service.
'';
};
enable = mkEnableOption (lib.mdDoc "Arbtt statistics capture service");
package = mkOption {
type = types.package;

View file

@ -22,13 +22,7 @@ in {
services.bosun = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to run bosun.
'';
};
enable = mkEnableOption (lib.mdDoc "bosun");
package = mkOption {
type = types.package;

View file

@ -8,11 +8,7 @@ let
in {
options = {
services.cadvisor = {
enable = mkOption {
default = false;
type = types.bool;
description = lib.mdDoc "Whether to enable cadvisor service.";
};
enable = mkEnableOption (lib.mdDoc "Cadvisor service");
listenAddress = mkOption {
default = "127.0.0.1";
@ -22,7 +18,7 @@ in {
port = mkOption {
default = 8080;
type = types.int;
type = types.port;
description = lib.mdDoc "Cadvisor listening port";
};

View file

@ -49,13 +49,7 @@ let
};
in {
options.services.datadog-agent = {
enable = mkOption {
description = lib.mdDoc ''
Whether to enable the datadog-agent v7 monitoring service
'';
default = false;
type = types.bool;
};
enable = mkEnableOption (lib.mdDoc "Datadog-agent v7 monitoring service");
package = mkOption {
default = pkgs.datadog-agent;

View file

@ -23,7 +23,7 @@ in {
port = mkOption {
description = lib.mdDoc "Grafana port.";
default = 3000;
type = types.int;
type = types.port;
};
};
@ -36,7 +36,7 @@ in {
port = mkOption {
description = lib.mdDoc "Listening port.";
default = 8686;
type = types.int;
type = types.port;
};
templateDir = mkOption {

View file

@ -6,11 +6,7 @@ let
cfg = config.services.heapster;
in {
options.services.heapster = {
enable = mkOption {
description = lib.mdDoc "Whether to enable heapster monitoring";
default = false;
type = types.bool;
};
enable = mkEnableOption (lib.mdDoc "Heapster monitoring");
source = mkOption {
description = lib.mdDoc "Heapster metric source";

View file

@ -1563,13 +1563,7 @@ in
options.services.prometheus = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Enable the Prometheus monitoring daemon.
'';
};
enable = mkEnableOption (lib.mdDoc "Prometheus monitoring daemon");
package = mkOption {
type = types.package;

View file

@ -33,7 +33,7 @@ let
'';
};
port = mkOption {
type = types.int;
type = types.port;
example = 587;
description = lib.mdDoc ''
Port to use for SMTP.

View file

@ -17,7 +17,7 @@ in
};
torControlPort = mkOption {
type = types.int;
type = types.port;
default = 9051;
description = lib.mdDoc ''
Tor control port.

View file

@ -27,13 +27,8 @@ in {
options = {
services.riemann = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Enable the Riemann network monitoring daemon.
'';
};
enable = mkEnableOption (lib.mdDoc "Riemann network monitoring daemon");
config = mkOption {
type = types.lines;
description = lib.mdDoc ''

View file

@ -94,7 +94,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = if cfg.database.type == "mysql" then mysql.port else pgsql.port;
defaultText = literalExpression ''
if config.${opt.database.type} == "mysql"

View file

@ -9,7 +9,7 @@ in {
options = {
services.samba-wsdd = {
enable = mkEnableOption (lib.mdDoc ''
Enable Web Services Dynamic Discovery host daemon. This enables (Samba) hosts, like your local NAS device,
Web Services Dynamic Discovery host daemon. This enables (Samba) hosts, like your local NAS device,
to be found by Web Service Discovery Clients like Windows.
::: {.note}

View file

@ -68,7 +68,7 @@ in
portNumber = mkOption {
default = 6667;
type = types.int;
type = types.port;
description = lib.mdDoc ''
Number of the port BitlBee will be listening to.
'';

View file

@ -135,7 +135,7 @@ in {
};
port = mkOption {
type = types.int;
type = types.port;
default = 5353;
description = lib.mdDoc ''
The DNSCrypt wrapper will listen for DNS queries on this port.
@ -182,7 +182,7 @@ in {
};
upstream.port = mkOption {
type = types.int;
type = types.port;
default = 53;
description = lib.mdDoc ''
The port of the upstream DNS server DNSCrypt will "wrap".

View file

@ -20,7 +20,7 @@ in
port = mkOption {
default = 2022;
type = types.int;
type = types.port;
description = lib.mdDoc ''
The port the server should listen on. Will use the server's default (2022) if not specified.

View file

@ -9,7 +9,7 @@ let
in
{
options.services.magic-wormhole-mailbox-server = {
enable = mkEnableOption (lib.mdDoc "Enable Magic Wormhole Mailbox Server");
enable = mkEnableOption (lib.mdDoc "Magic Wormhole Mailbox Server");
};
config = mkIf cfg.enable {

View file

@ -1,13 +1,8 @@
{ config, lib, pkgs, ... }:
{
options.services.mozillavpn.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = lib.mdDoc ''
Enable the Mozilla VPN daemon.
'';
};
options.services.mozillavpn.enable =
lib.mkEnableOption (lib.mdDoc "Mozilla VPN daemon");
config = lib.mkIf config.services.mozillavpn.enable {
environment.systemPackages = [ pkgs.mozillavpn ];

View file

@ -365,7 +365,7 @@ in {
If you enable this option the
`networkmanager_strongswan` plugin will be added to
the {option}`networking.networkmanager.plugins` option
so you don't need to to that yourself.
so you don't need to do that yourself.
'';
};

View file

@ -71,7 +71,7 @@ in
};
upstreamPort = mkOption {
type = types.int;
type = types.port;
default = 563;
description = lib.mdDoc ''
Upstream server port
@ -112,7 +112,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 5555;
description = lib.mdDoc ''
Proxy listen port

View file

@ -26,11 +26,7 @@ in {
### Interface
options.services.onedrive = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = lib.mdDoc "Enable OneDrive service";
};
enable = lib.mkEnableOption (lib.mdDoc "OneDrive service");
package = lib.mkOption {
type = lib.types.package;

View file

@ -29,7 +29,7 @@ in
enable = mkEnableOption (lib.mdDoc "Ostinato agent-controller (Drone)");
port = mkOption {
type = types.int;
type = types.port;
default = 7878;
description = lib.mdDoc ''
Port to listen on.

View file

@ -10,7 +10,7 @@ in
###### interface
options = {
services.owamp.enable = mkEnableOption (lib.mdDoc "Enable OWAMP server");
services.owamp.enable = mkEnableOption (lib.mdDoc "OWAMP server");
};

View file

@ -23,11 +23,7 @@ in
services.polipo = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Whether to run the polipo caching web proxy.";
};
enable = mkEnableOption (lib.mdDoc "polipo caching web proxy");
proxyAddress = mkOption {
type = types.str;
@ -36,7 +32,7 @@ in
};
proxyPort = mkOption {
type = types.int;
type = types.port;
default = 8123;
description = lib.mdDoc "TCP port on which Polipo will listen.";
};

View file

@ -48,7 +48,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8388;
description = lib.mdDoc ''
Port which the server uses.

View file

@ -49,11 +49,8 @@ in
{
options = {
services.smokeping = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Enable the smokeping service";
};
enable = mkEnableOption (lib.mdDoc "smokeping service");
alertConfig = mkOption {
type = types.lines;
default = ''
@ -186,7 +183,7 @@ in
'';
};
port = mkOption {
type = types.int;
type = types.port;
default = 8081;
description = lib.mdDoc "TCP port to use for the web server.";
};

View file

@ -70,7 +70,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 443;
description = lib.mdDoc "Listening port.";
};

View file

@ -65,7 +65,7 @@ in
};
port = mkOption {
type = int;
type = port;
default = 3000;
description = lib.mdDoc "Metrics and diagnostics port.";
};

View file

@ -29,7 +29,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 33445;
description = lib.mdDoc "Listening port (UDP).";
};

View file

@ -14,7 +14,7 @@ with lib;
};
port = mkOption {
type = types.int;
type = types.port;
default = 33445;
description = lib.mdDoc "udp port for toxcore, port-forward to help with connectivity if you run many nodes behind one NAT";
};

View file

@ -54,7 +54,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 3389;
description = lib.mdDoc ''
Specifies on which port the xrdp daemon listens.

View file

@ -19,7 +19,7 @@ in
options.services.zerotierone.port = mkOption {
default = 9993;
type = types.int;
type = types.port;
description = lib.mdDoc ''
Network port used by ZeroTier.
'';

View file

@ -21,7 +21,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8983;
description = lib.mdDoc "Port on which Solr is ran.";
};

View file

@ -61,7 +61,7 @@ in
};
listenPort = mkOption {
type = types.int;
type = types.port;
default = 8092;
description = lib.mdDoc "Port to listen on.";
};
@ -95,7 +95,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 443;
example = 80;
description = lib.mdDoc "Port used at the proxy";

View file

@ -75,7 +75,7 @@ let
in {
options.services.peertube = {
enable = lib.mkEnableOption (lib.mdDoc "Enable Peertubes service");
enable = lib.mkEnableOption (lib.mdDoc "Peertube");
user = lib.mkOption {
type = lib.types.str;
@ -96,13 +96,13 @@ in {
};
listenHttp = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
default = 9000;
description = lib.mdDoc "listen port for HTTP server.";
};
listenWeb = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
default = 9000;
description = lib.mdDoc "listen port for WEB server.";
};
@ -177,7 +177,7 @@ in {
};
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
default = 5432;
description = lib.mdDoc "Database host port.";
};

View file

@ -69,7 +69,7 @@ in
};
listenPort = mkOption {
type = types.int;
type = types.port;
default = 3000;
description = lib.mdDoc ''
Listen port for the virtualhost to use.
@ -132,7 +132,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 25;
description = lib.mdDoc ''
Port used to connect to SMTP server.

View file

@ -67,7 +67,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 8080;
description = lib.mdDoc ''
The port number to bind to.

View file

@ -208,7 +208,7 @@ let
};
port = mkOption {
type = types.nullOr types.int;
type = types.nullOr types.port;
default = null;
description = lib.mdDoc ''
The database's port. If not set, the default ports will be provided (5432

View file

@ -68,7 +68,7 @@ in
The port youtrack will listen on.
'';
default = 8080;
type = types.int;
type = types.port;
};
statePath = mkOption {

View file

@ -28,13 +28,7 @@ let
cfg.settings));
in {
options.services.clight = {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to enable clight or not.
'';
};
enable = mkEnableOption (lib.mdDoc "clight");
temperature = {
day = mkOption {

View file

@ -25,7 +25,7 @@ in
};
port = mkOption {
type = types.int;
type = types.port;
default = 22;
description = lib.mdDoc ''
Port on which SSH initrd service should listen.

View file

@ -0,0 +1,85 @@
{ lib
, rustPlatform
, fetchFromGitHub
, cmake
, pkg-config
, makeWrapper
, bzip2
, fontconfig
, freetype
, libGL
, libX11
, libXcursor
, libXrandr
, libXi
, gnome
, kdialog
}:
rustPlatform.buildRustPackage rec {
pname = "ludusavi";
version = "0.15.0";
src = fetchFromGitHub {
owner = "mtkennerly";
repo = pname;
rev = "v${version}";
sha256 = "sha256-3nh1EhjiH+dUBw3CNeFSg/+Wkxr5AYgVdM1HzVKbqJI=";
};
cargoSha256 = "sha256-l9jYqmKC0GJL9MSRbrNng4rO6/dx4q8EVCxfuin4v6E=";
nativeBuildInputs = [
cmake
pkg-config
makeWrapper
];
buildInputs = [
fontconfig
freetype
libX11
libXcursor
libXrandr
libXi
];
postInstall = ''
install -Dm644 assets/com.github.mtkennerly.ludusavi.metainfo.xml -t \
"$out/share/metainfo/"
install -Dm644 assets/icon.png \
"$out/share/icons/hicolor/64x64/apps/${pname}.png"
install -Dm644 assets/icon.svg \
"$out/share/icons/hicolor/scalable/apps/${pname}.svg"
install -Dm644 "assets/${pname}.desktop" -t "$out/share/applications/"
install -Dm644 assets/MaterialIcons-Regular.ttf -t "$out/share/fonts/TTF/"
install -Dm644 LICENSE -t "$out/share/licenses/${pname}/"
'';
postFixup =
let
libPath = lib.makeLibraryPath [
libGL
bzip2
fontconfig
freetype
libX11
libXcursor
libXrandr
libXi
];
in
''
patchelf --set-rpath "${libPath}" "$out/bin/$pname"
wrapProgram $out/bin/$pname --prefix PATH : ${lib.makeBinPath [ gnome.zenity kdialog ]}
'';
meta = with lib; {
description = "Backup tool for PC game saves";
homepage = "https://github.com/mtkennerly/ludusavi";
changelog = "https://github.com/mtkennerly/ludusavi/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ pasqui23 ];
};
}

View file

@ -1,5 +1,4 @@
[
"tree-sitter-agda",
"tree-sitter-bash",
"tree-sitter-c",
"tree-sitter-c-sharp",
@ -7,11 +6,11 @@
"tree-sitter-css",
"tree-sitter-elixir",
"tree-sitter-elm",
"tree-sitter-fluent",
"tree-sitter-go",
"tree-sitter-haskell",
"tree-sitter-hcl",
"tree-sitter-html",
"tree-sitter-janet-simple",
"tree-sitter-java",
"tree-sitter-javascript",
"tree-sitter-jsdoc",
@ -19,6 +18,8 @@
"tree-sitter-julia",
"tree-sitter-nix",
"tree-sitter-ocaml",
"tree-sitter-perl",
"tree-sitter-pgn",
"tree-sitter-php",
"tree-sitter-prisma",
"tree-sitter-python",
@ -27,5 +28,6 @@
"tree-sitter-scala",
"tree-sitter-typescript",
"tree-sitter-verilog",
"tree-sitter-yaml",
"tree-sitter-zig"
]

View file

@ -5,9 +5,9 @@ let
in
{
sublime4 = common {
buildVersion = "4126";
x64sha256 = "sha256-XGTlNMzgAy5U08cCjo1rO97yjz/SiiYkSjYKLOdUUKE=";
aarch64sha256 = "0gmnxyczj2wk9dilhkpa6gi2fkvbic6smyiimd3lq0s7ilbarm0a";
buildVersion = "4142";
x64sha256 = "JrFL17trcsUcS/bYbSbMhTnSMyla6AkoMII2lt2nAwY=";
aarch64sha256 = "r6bxOYXVA2RAo8prdBQ7/gSNKFPmwDW5osblIE0azT4=";
} {};
sublime4-dev = common {

View file

@ -0,0 +1,23 @@
{ lib, buildGoModule, fetchFromGitHub, git }:
buildGoModule rec {
pname = "semver";
version = "1.0.0";
src = fetchFromGitHub {
owner = "catouc";
repo = "semver-go";
rev = "v${version}";
sha256 = "0v3j7rw917wnmp4lyjscqzk4qf4azfiz70ynbq3wl4gwp1m783vv";
};
vendorSha256 = null;
nativeBuildInputs = [ git ];
meta = with lib; {
homepage = "https://github.com/catouc/semver-go";
description = "A small CLI to fish out the current or next semver version from a git repository";
maintainers = with maintainers; [ catouc ];
license = licenses.mit;
};
}

View file

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "tasktimer";
version = "1.9.4";
version = "1.11.0";
src = fetchFromGitHub {
owner = "caarlos0";
repo = pname;
rev = "v${version}";
sha256 = "sha256-M88JzcK9HwHeWbQ0McbCF1rIEiKnwh08oEoRck4A/Ho=";
sha256 = "sha256-CAqOsxmJxDgQRMx8cN23TajHd6BNiCFraFvhf5kKnzc=";
};
vendorSha256 = "sha256-5OSAa7tGPtGyx0bet82FRoIozhhlFtakbPt6PtCTHd0=";
vendorSha256 = "sha256-Tk0yI/WFr0FV0AxJDStlP3XLem3v78ueuXyadhrLAog=";
postInstall = ''
mv $out/bin/tasktimer $out/bin/tt

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "tippecanoe";
version = "2.9.1";
version = "2.11.0";
src = fetchFromGitHub {
owner = "felt";
repo = "tippecanoe";
rev = finalAttrs.version;
hash = "sha256-DNIkQwJUeBdVdx06NM0KMWpTTwtMyBfKc/PwGiK4wvQ=";
hash = "sha256-WFvpq0g+P9gs0VudKB5mVTo/cvWMsaxf13ZORUTf/7c=";
};
buildInputs = [ sqlite zlib ];

View file

@ -1,8 +1,8 @@
{
"stable": {
"version": "107.0.5304.87",
"sha256": "0n9wr5v7zcdmbqs7mmnyydjvzw0glh5l3skpj7i1nap2hv0h03kc",
"sha256bin64": "16a6qisxkfmx60qh67rvfy3knp66hdgxan48cga6j3zd683inas2",
"version": "107.0.5304.110",
"sha256": "1k7yjsb4i7m8i5mk018v7z25r4x1ypyprz4hnyrn7vk2983lhdfk",
"sha256bin64": "06rlxwbvp7rpw2rdpnjzl1cn7cr1rwlb20wz8r0cndjcjyzd3rjj",
"deps": {
"gn": {
"version": "2022-09-14",
@ -19,9 +19,9 @@
}
},
"beta": {
"version": "108.0.5359.30",
"sha256": "1sxvlmz9k6r3qmlpljlis3p7vac26k62w21n8x29733hsq3hdra7",
"sha256bin64": "03x79s394xzwncfcgc4lw825q15i1ww2kmy2y7lcld9h52qyns8q",
"version": "108.0.5359.40",
"sha256": "1fsp5fkabgqx4jp650nkngkc49vzcy8rgnfqqz4dsyl92ng8q34y",
"sha256bin64": "1zd8dbs5w2vdnck91pqiymwa2bnz53jgjbg89cr96y6jwab3i4b0",
"deps": {
"gn": {
"version": "2022-10-05",
@ -45,9 +45,9 @@
}
},
"ungoogled-chromium": {
"version": "107.0.5304.88",
"sha256": "1k4j4j9b1m7kjybfgns9akb7adfby3gnjpibk0kjd22n3sprar8y",
"sha256bin64": null,
"version": "107.0.5304.110",
"sha256": "1k7yjsb4i7m8i5mk018v7z25r4x1ypyprz4hnyrn7vk2983lhdfk",
"sha256bin64": "06rlxwbvp7rpw2rdpnjzl1cn7cr1rwlb20wz8r0cndjcjyzd3rjj",
"deps": {
"gn": {
"version": "2022-09-14",
@ -56,8 +56,8 @@
"sha256": "1c0dvpp4im1hf277bs5w7rgqxz3g2bax266i2g6smi3pl7a8jpnp"
},
"ungoogled-patches": {
"rev": "107.0.5304.88-1",
"sha256": "1m9hjbs79ga5jw7x332jl882lh7yrr4n4r4qrzy37ai75x371pz2"
"rev": "107.0.5304.110-1",
"sha256": "14z9qi9i9l7kjx7gf74lzs63bpxqyd3wbqqpsvzvqgr2v0cgqahx"
}
}
}

View file

@ -45,7 +45,7 @@ assert with lib.strings; (
stdenv.mkDerivation rec {
pname = "palemoon";
version = "31.3.0.1";
version = "31.3.1";
src = fetchFromGitea {
domain = "repo.palemoon.org";
@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
repo = "Pale-Moon";
rev = "${version}_Release";
fetchSubmodules = true;
sha256 = "sha256-qspzTlhK9MRJBsXxmYzl5K6in09LZPvaVc+ibovJAD8=";
sha256 = "sha256-oLtCS5Izdk2ImyzKx2IXkzv6pJp86mvP99P0+XIteRA=";
};
nativeBuildInputs = [

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "terragrunt";
version = "0.40.0";
version = "0.40.1";
src = fetchFromGitHub {
owner = "gruntwork-io";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ZDoGlm/H2xh9+azb7N1EWUXwfF919K9B4PmQZol4RV8=";
sha256 = "sha256-jTo+CydRpb0Pak8NUwAJbSJDUZnDz4vUZ1577OZQOHg=";
};
vendorSha256 = "sha256-CqImT90jFFLi6XR7jfzFKwhnCHK6B+aM+Ba/L+G3bEg=";

View file

@ -10,13 +10,13 @@
buildGoModule rec {
pname = "werf";
version = "1.2.187";
version = "1.2.188";
src = fetchFromGitHub {
owner = "werf";
repo = "werf";
rev = "v${version}";
hash = "sha256-rezLmdAR6OCDVsi/rguc3iLjkeQ7Jrny4MlnCFYD5+4=";
hash = "sha256-C8y86q+uf+8EZ9kBAZehld7PpGByJLjhYQOrc3YKH1A=";
};
vendorHash = "sha256-GjcmpHyjhjCWE5gQR/oTHfhHYg5WRu8uhgAuWhdxlYk=";

View file

@ -0,0 +1,37 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "goeland";
version = "0.11.0";
src = fetchFromGitHub {
owner = "slurdge";
repo = pname;
rev = "v${version}";
sha256 = "sha256-9SxlxRco+eLyyIrMjNCdqAyttDnoc8nuMh+ecCpk3bg=";
};
vendorSha256 = "sha256-a29TtT6xSapIiHvC9KHQm4gd1QCK3l0RpKe1ieaKUKA=";
ldflags = [
"-s"
"-w"
"-X github.com/slurdge/goeland/version.GitCommit=${version}"
];
meta = with lib; {
description = "An alternative to RSS2Email written in golang with many filters.";
longDescription = ''
Goeland excels at creating beautiful emails from RSS,
tailored for daily or weekly digest. It include a number of
filters that can transform the RSS content along the way.
It can also consume other sources, such as a Imgur tag.
'';
homepage = "https://github.com/slurdge/goeland";
license = with licenses; [ mit ];
maintainers = [ maintainers.sweenu ];
};
}

View file

@ -2,12 +2,12 @@
stdenv.mkDerivation rec {
pname = "signal-cli";
version = "0.11.4";
version = "0.11.5.1";
# Building from source would be preferred, but is much more involved.
src = fetchurl {
url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}-Linux.tar.gz";
sha256 = "sha256-1NwaR8EMH2EQKskkPSrfWbUu8Ib7DwI6UNL3nOtc/tM=";
sha256 = "sha256-VHQz7FlEugTv5gJrJr5WLdYHkoQ6lTlUP3JVy20j1mM=";
};
buildInputs = lib.optionals stdenv.isLinux [ libmatthew_java dbus dbus_java ];

View file

@ -0,0 +1,26 @@
{
rustPlatform,
fetchFromGitHub,
lib,
}:
rustPlatform.buildRustPackage rec {
pname = "lls";
version = "0.1.0";
src = fetchFromGitHub {
owner = "jcaesar";
repo = "lls";
rev = "v${version}";
hash = "sha256-Aq0MGhzSoJCkM0Wt/r5JSOz96LyRSgSryD7+m4aFZEA=";
};
cargoSha256 = "sha256-WY4MnPNDWFEzFOehm7TqCL05Ea6n93f8VWBTOuqjBAg=";
meta = with lib; {
description = "Tool to list listening sockets";
license = licenses.mit;
maintainers = [ maintainers.k900 ];
platforms = platforms.linux;
homepage = "https://github.com/jcaesar/lls";
};
}

View file

@ -26,7 +26,7 @@
mkDerivation rec {
pname = "nextcloud-client";
version = "3.6.1";
version = "3.6.2";
outputs = [ "out" "dev" ];
@ -34,7 +34,7 @@ mkDerivation rec {
owner = "nextcloud";
repo = "desktop";
rev = "v${version}";
sha256 = "sha256-RCYiUxTZSuZbDocueW0d8PdsRTR9bTjDgx0H53UGDP4=";
sha256 = "sha256-eTcQrbYYY+V87i6PuIEWCFczIqL8oxtdojPY/mZpJBU=";
};
patches = [

View file

@ -7,16 +7,16 @@
buildGoModule rec {
pname = "seaweedfs";
version = "3.32";
version = "3.34";
src = fetchFromGitHub {
owner = "chrislusf";
repo = "seaweedfs";
rev = version;
hash = "sha256-GMOLlkBfY3ShVojdRrmpMYgoea52kq4aXr/oZj5bJWo=";
hash = "sha256-lOCZHkLJCDvaT3CcHUBbsybdy0H6BfKKGpd/73cxcWA=";
};
vendorHash = "sha256-cEzPKx54rssyAytYenIcud3K0f7xuO8WzE8wdMqZipE=";
vendorHash = "sha256-1RUWONkXArXYg8gQogKUhMSGdIYyT3lq5qWuUQBsFig=";
subPackages = [ "weed" ];

View file

@ -17,7 +17,7 @@
, libxcrypt
, lz4
, xz
, gsl_1
, gsl
, xxHash
, Cocoa
, OpenGL
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ pcre python2 zlib libxml2 lz4 xz gsl_1 xxHash libxcrypt ]
buildInputs = [ pcre python2 zlib libxml2 lz4 xz gsl xxHash libxcrypt ]
++ lib.optionals (!stdenv.isDarwin) [ libX11 libXpm libXft libXext libGLU libGL ]
++ lib.optionals (stdenv.isDarwin) [ Cocoa OpenGL ]
;
@ -144,6 +144,7 @@ stdenv.mkDerivation rec {
homepage = "https://root.cern.ch/";
description = "A data analysis framework";
platforms = platforms.unix;
broken = !stdenv.isx86_64;
maintainers = with maintainers; [ veprbl ];
license = licenses.lgpl21;
};

View file

@ -1,17 +1,20 @@
{ lib, fetchFromGitHub, rustPlatform, stdenv, Security }:
{ lib, rustPlatform, fetchFromGitHub, stdenv, Security }:
rustPlatform.buildRustPackage rec {
pname = "srvc";
version = "0.7.0";
version = "0.8.0";
src = fetchFromGitHub {
owner = "insilica";
repo = "rs-srvc";
rev = "v${version}";
sha256 = "sha256-XGZ6Jr/RVDOLDa0sANZIsKtNjY3pEBlOtei+xNGPBBY=";
sha256 = "sha256-2eEuKAMxxTwjDInpYcOlFJha5DTe0IrxT5rI6ymN0hc=";
};
cargoSha256 = "sha256-sjMg5XMnAQZjp6z9prtRq+0pyNQ1oTm0/KWOZPxDW4w=";
cargoSha256 = "sha256-nJM7/w4awbCZQysUOSTO6bfsBXO3agJRdp1RyRZhtUY=";
# remove timeouts in tests to make them less flaky
patches = [ ./tests-no-timeout.patch ];
buildInputs = lib.optionals stdenv.isDarwin [
Security
@ -22,5 +25,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/insilica/rs-srvc";
license = licenses.asl20;
maintainers = with maintainers; [ john-shaffer ];
mainProgram = "sr";
};
}

View file

@ -0,0 +1,36 @@
--- a/tests/common/mod.rs
+++ b/tests/common/mod.rs
@@ -1,15 +1,13 @@
#![allow(dead_code)]
use std::path::PathBuf;
-use std::time::Duration;
use assert_cmd::Command;
#[cfg(unix)]
use rexpect::session::PtySession;
-pub fn cmd(timeout_millis: u64) -> Command {
+pub fn cmd(_: u64) -> Command {
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
- cmd.timeout(Duration::from_millis(timeout_millis));
cmd.env_remove("RUST_BACKTRACE");
cmd
}
@@ -19,14 +17,14 @@ pub fn spawn(
dir: &str,
args: Vec<&str>,
timestamp_override: u64,
- timeout_millis: u64,
+ _: u64,
) -> Result<PtySession, rexpect::errors::Error> {
let mut cmd = std::process::Command::new(env!("CARGO_BIN_EXE_sr"));
cmd.args(args);
cmd.current_dir(dir);
cmd.env("SR_TIMESTAMP_OVERRIDE", timestamp_override.to_string());
cmd.env_remove("RUST_BACKTRACE");
- Ok(rexpect::session::spawn_command(cmd, Some(timeout_millis))?)
+ rexpect::session::spawn_command(cmd, None)
}
pub fn remove_sink(dir: &str) -> Result<(), std::io::Error> {

View file

@ -16,13 +16,13 @@
mkDerivation rec {
pname = "libfm-qt";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "lxqt";
repo = "libfm-qt";
rev = version;
sha256 = "kF3u1Eh45l/HvL5R0PazIfGIdOVYyB2VAI33NwRfLJk=";
sha256 = "Lg+BQ0VFLF5Nhxzr4eeaDVWQG/pC1/w60pQg+lTddHY=";
};
nativeBuildInputs = [

View file

@ -15,13 +15,13 @@
mkDerivation rec {
pname = "liblxqt";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "lxqt";
repo = pname;
rev = version;
sha256 = "vfqEB9Vh/BL47dlEvnyWwDBO0pRIUS1IuixW8A0PRds=";
sha256 = "x1gzqmTHDnpAdLxacKyl+gDob1M7toTDUufaM0y+AHA=";
};
nativeBuildInputs = [

View file

@ -10,13 +10,13 @@
mkDerivation rec {
pname = "libqtxdg";
version = "3.9.1";
version = "3.10.0";
src = fetchFromGitHub {
owner = "lxqt";
repo = pname;
rev = version;
sha256 = "zrlaOiIsfbwjHFjqhYZ9lCo+oTsddICxl2UAum9Xoi4=";
sha256 = "Lynm6Qxy02Os69YQ1cb2W0hV7sq9kBhbACqjHTGj7Tw=";
};
nativeBuildInputs = [

View file

@ -18,13 +18,13 @@
mkDerivation rec {
pname = "lximage-qt";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "lxqt";
repo = pname;
rev = version;
sha256 = "QvQ0LBGP9XD7vwuUD+A1x8oGDvqTeCkYyd2XyjU0fUo=";
sha256 = "T/LvxnHi0094wvxjB+6W7Ztg2lxkSu5yzjGx/jSzM8Y=";
};
nativeBuildInputs = [

View file

@ -14,13 +14,13 @@
mkDerivation rec {
pname = "lxqt-about";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "lxqt";
repo = pname;
rev = version;
sha256 = "GTnjmMVbkO5CeNLxNisD6XncqX32otaATZSka4YVNHo=";
sha256 = "aOGbT8DwDAfp8odcOkNsZkuI/guSRbQnETii5o24jcU=";
};
nativeBuildInputs = [

Some files were not shown because too many files have changed in this diff Show more