diff --git a/nixos/doc/manual/development/writing-nixos-tests.xml b/nixos/doc/manual/development/writing-nixos-tests.xml index 32321deeddf9..e372c66410de 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.xml +++ b/nixos/doc/manual/development/writing-nixos-tests.xml @@ -274,8 +274,29 @@ start_all() </term> <listitem> <para> - Execute a shell command, raising an exception if the exit status is not - zero, otherwise returning the standard output. + Execute a shell command, raising an exception if the exit status + is not zero, otherwise returning the standard output. Commands + are run with <literal>set -euo pipefail</literal> set: + <itemizedlist> + <listitem> + <para> + If several commands are separated by <literal>;</literal> + and one fails, the command as a whole will fail. + </para> + </listitem> + <listitem> + <para> + For pipelines, the last non-zero exit status will be + returned (if there is one, zero will be returned + otherwise). + </para> + </listitem> + <listitem> + <para> + Dereferencing unset variables fail the command. + </para> + </listitem> + </itemizedlist> </para> </listitem> </varlistentry> diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml index 54abbb6e38e4..bdc2386f24c8 100644 --- a/nixos/doc/manual/release-notes/rl-2105.xml +++ b/nixos/doc/manual/release-notes/rl-2105.xml @@ -181,6 +181,15 @@ <para>GNOME desktop environment was upgraded to 40, see the release notes for <link xlink:href="https://help.gnome.org/misc/release-notes/40.0/">40.0</link> and <link xlink:href="https://help.gnome.org/misc/release-notes/3.38/">3.38</link>. The <code>gnome3</code> attribute set has been renamed to <code>gnome</code> and so have been the NixOS options.</para> </listitem> + <listitem> + <para> + Enabling wireless networking now requires specifying at least one network + interface using <xref linkend="opt-networking.wireless.interfaces"/>. + This is to avoid a race condition with the card initialisation (see + <link xlink:href="https://github.com/NixOS/nixpkgs/issues/101963">issue + #101963</link> for more information). + </para> + </listitem> <listitem> <para> If you are using <option>services.udev.extraRules</option> to assign diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py index e0e8b0fb71f4..ab739ce3222f 100644 --- a/nixos/lib/test-driver/test-driver.py +++ b/nixos/lib/test-driver/test-driver.py @@ -441,7 +441,7 @@ class Machine: def execute(self, command: str) -> Tuple[int, str]: self.connect() - out_command = "( {} ); echo '|!=EOF' $?\n".format(command) + out_command = "( set -euo pipefail; {} ); echo '|!=EOF' $?\n".format(command) self.shell.send(out_command.encode()) output = "" diff --git a/nixos/modules/services/networking/wpa_supplicant.nix b/nixos/modules/services/networking/wpa_supplicant.nix index 8a0685c3d96b..d9308b37064a 100644 --- a/nixos/modules/services/networking/wpa_supplicant.nix +++ b/nixos/modules/services/networking/wpa_supplicant.nix @@ -40,8 +40,7 @@ in { default = []; example = [ "wlan0" "wlan1" ]; description = '' - The interfaces <command>wpa_supplicant</command> will use. If empty, it will - automatically use all wireless interfaces. + The interfaces <command>wpa_supplicant</command> will use. ''; }; @@ -220,7 +219,14 @@ in { }; config = mkIf cfg.enable { - assertions = flip mapAttrsToList cfg.networks (name: cfg: { + assertions = [ + { assertion = cfg.interfaces != []; + message = '' + No network interfaces for wpa_supplicant have been configured. + Please, specify at least one using networking.wireless.interfaces. + ''; + } + ] ++ flip mapAttrsToList cfg.networks (name: cfg: { assertion = with cfg; count (x: x != null) [ psk pskRaw auth ] <= 1; message = ''options networking.wireless."${name}".{psk,pskRaw,auth} are mutually exclusive''; }); @@ -255,20 +261,7 @@ in { then echo >&2 "<3>/etc/wpa_supplicant.conf present but ignored. Generated ${configFile} is used instead." fi iface_args="-s -u -D${cfg.driver} ${configStr}" - ${if ifaces == [] then '' - for i in $(cd /sys/class/net && echo *); do - DEVTYPE= - UEVENT_PATH=/sys/class/net/$i/uevent - if [ -e "$UEVENT_PATH" ]; then - source "$UEVENT_PATH" - if [ "$DEVTYPE" = "wlan" -o -e /sys/class/net/$i/wireless ]; then - args+="''${args:+ -N} -i$i $iface_args" - fi - fi - done - '' else '' - args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" - ''} + args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" exec wpa_supplicant $args ''; }; diff --git a/nixos/tests/calibre-web.nix b/nixos/tests/calibre-web.nix index 4f73b3311124..0af997317fcd 100644 --- a/nixos/tests/calibre-web.nix +++ b/nixos/tests/calibre-web.nix @@ -36,7 +36,7 @@ import ./make-test-python.nix ( default.wait_for_unit("calibre-web.service") default.wait_for_open_port(${toString defaultPort}) default.succeed( - "curl --fail 'http://localhost:${toString defaultPort}/basicconfig' | grep -q 'Basic Configuration'" + "curl --fail 'http://localhost:${toString defaultPort}/basicconfig' | grep 'Basic Configuration'" ) customized.succeed( @@ -46,7 +46,7 @@ import ./make-test-python.nix ( customized.wait_for_unit("calibre-web.service") customized.wait_for_open_port(${toString port}) customized.succeed( - "curl --fail -H X-User:admin 'http://localhost:${toString port}' | grep -q test-book" + "curl --fail -H X-User:admin 'http://localhost:${toString port}' | grep test-book" ) ''; } diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index 831ef2fb77ad..4c3c26980aa2 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -23,15 +23,15 @@ import ./make-test-python.nix ({ pkgs, ... }: { with subtest("includeStorePath"): with subtest("assumption"): docker.succeed("${examples.helloOnRoot} | docker load") - docker.succeed("set -euo pipefail; docker run --rm hello | grep -i hello") + docker.succeed("docker run --rm hello | grep -i hello") docker.succeed("docker image rm hello:latest") with subtest("includeStorePath = false; breaks example"): docker.succeed("${examples.helloOnRootNoStore} | docker load") - docker.fail("set -euo pipefail; docker run --rm hello | grep -i hello") + docker.fail("docker run --rm hello | grep -i hello") docker.succeed("docker image rm hello:latest") with subtest("includeStorePath = false; works with mounted store"): docker.succeed("${examples.helloOnRootNoStore} | docker load") - docker.succeed("set -euo pipefail; docker run --rm --volume ${builtins.storeDir}:${builtins.storeDir}:ro hello | grep -i hello") + docker.succeed("docker run --rm --volume ${builtins.storeDir}:${builtins.storeDir}:ro hello | grep -i hello") docker.succeed("docker image rm hello:latest") with subtest("Ensure Docker images use a stable date by default"): diff --git a/nixos/tests/doh-proxy-rust.nix b/nixos/tests/doh-proxy-rust.nix index ca150cafab50..23f8616849c3 100644 --- a/nixos/tests/doh-proxy-rust.nix +++ b/nixos/tests/doh-proxy-rust.nix @@ -38,6 +38,6 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: { machine.wait_for_unit("doh-proxy-rust.service") machine.wait_for_open_port(53) machine.wait_for_open_port(3000) - machine.succeed(f"curl --fail '{url}?dns={query}' | grep -qF {bin_ip}") + machine.succeed(f"curl --fail '{url}?dns={query}' | grep -F {bin_ip}") ''; }) diff --git a/nixos/tests/elk.nix b/nixos/tests/elk.nix index fee350de65b5..71d39a647a5a 100644 --- a/nixos/tests/elk.nix +++ b/nixos/tests/elk.nix @@ -178,7 +178,7 @@ let one.systemctl("stop logstash") one.systemctl("start elasticsearch-curator") one.wait_until_succeeds( - '! curl --silent --show-error "${esUrl}/_cat/indices" | grep logstash | grep -q ^' + '! curl --silent --show-error "${esUrl}/_cat/indices" | grep logstash | grep ^' ) ''; }) {}; diff --git a/nixos/tests/gitlab.nix b/nixos/tests/gitlab.nix index af2ab12bf4bd..696ebabb5806 100644 --- a/nixos/tests/gitlab.nix +++ b/nixos/tests/gitlab.nix @@ -102,7 +102,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : with lib; { # `doSetup` is is true. test = doSetup: '' gitlab.succeed( - "curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in" + "curl -isSf http://gitlab | grep -i location | grep http://gitlab/users/sign_in" ) gitlab.succeed( "${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2" diff --git a/nixos/tests/gocd-agent.nix b/nixos/tests/gocd-agent.nix index 75edf43ee295..686d0b971d30 100644 --- a/nixos/tests/gocd-agent.nix +++ b/nixos/tests/gocd-agent.nix @@ -42,7 +42,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { "curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].uuid" ) agent.succeed( - "curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].agent_state | grep -q Idle" + "curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].agent_state | grep Idle" ) ''; }) diff --git a/nixos/tests/grafana.nix b/nixos/tests/grafana.nix index 4ba091b893f4..174d664d8772 100644 --- a/nixos/tests/grafana.nix +++ b/nixos/tests/grafana.nix @@ -74,7 +74,7 @@ in { declarativePlugins.wait_for_unit("grafana.service") declarativePlugins.wait_for_open_port(3000) declarativePlugins.succeed( - "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/plugins | grep -q grafana-clock-panel" + "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/plugins | grep grafana-clock-panel" ) declarativePlugins.shutdown() @@ -82,7 +82,7 @@ in { sqlite.wait_for_unit("grafana.service") sqlite.wait_for_open_port(3000) sqlite.succeed( - "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost" + "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" ) sqlite.shutdown() @@ -92,7 +92,7 @@ in { postgresql.wait_for_open_port(3000) postgresql.wait_for_open_port(5432) postgresql.succeed( - "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost" + "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" ) postgresql.shutdown() @@ -102,7 +102,7 @@ in { mysql.wait_for_open_port(3000) mysql.wait_for_open_port(3306) mysql.succeed( - "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost" + "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" ) mysql.shutdown() ''; diff --git a/nixos/tests/miniflux.nix b/nixos/tests/miniflux.nix index 797a2787d1aa..9a25a9e77cc9 100644 --- a/nixos/tests/miniflux.nix +++ b/nixos/tests/miniflux.nix @@ -48,23 +48,23 @@ with lib; default.wait_for_unit("miniflux.service") default.wait_for_open_port(${toString defaultPort}) - default.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep -q OK") + default.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep OK") default.succeed( - "curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'" + "curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep '\"is_admin\":true'" ) withoutSudo.wait_for_unit("miniflux.service") withoutSudo.wait_for_open_port(${toString defaultPort}) - withoutSudo.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep -q OK") + withoutSudo.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep OK") withoutSudo.succeed( - "curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'" + "curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep '\"is_admin\":true'" ) customized.wait_for_unit("miniflux.service") customized.wait_for_open_port(${toString port}) - customized.succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep -q OK") + customized.succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep OK") customized.succeed( - "curl 'http://localhost:${toString port}/v1/me' -u '${username}:${password}' -H Content-Type:application/json | grep -q '\"is_admin\":true'" + "curl 'http://localhost:${toString port}/v1/me' -u '${username}:${password}' -H Content-Type:application/json | grep '\"is_admin\":true'" ) ''; }) diff --git a/nixos/tests/nginx-variants.nix b/nixos/tests/nginx-variants.nix index ca4655391bc5..a535030663bd 100644 --- a/nixos/tests/nginx-variants.nix +++ b/nixos/tests/nginx-variants.nix @@ -29,5 +29,5 @@ builtins.listToAttrs ( }; } ) - [ "nginxStable" "nginxUnstable" "nginxShibboleth" "openresty" "tengine" ] + [ "nginxStable" "nginxMainline" "nginxShibboleth" "openresty" "tengine" ] ) diff --git a/nixos/tests/nginx.nix b/nixos/tests/nginx.nix index 5686afcd043e..d9d073822a14 100644 --- a/nixos/tests/nginx.nix +++ b/nixos/tests/nginx.nix @@ -56,11 +56,11 @@ import ./make-test-python.nix ({ pkgs, ... }: { }; specialisation.reloadRestartSystem.configuration = { - services.nginx.package = pkgs.nginxUnstable; + services.nginx.package = pkgs.nginxMainline; }; specialisation.reloadWithErrorsSystem.configuration = { - services.nginx.package = pkgs.nginxUnstable; + services.nginx.package = pkgs.nginxMainline; services.nginx.virtualHosts."!@$$(#*%".locations."~@#*$*!)".proxyPass = ";;;"; }; }; diff --git a/nixos/tests/pomerium.nix b/nixos/tests/pomerium.nix index 531b6212711f..7af828326448 100644 --- a/nixos/tests/pomerium.nix +++ b/nixos/tests/pomerium.nix @@ -88,15 +88,15 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: { with subtest("no authentication required"): pomerium.succeed( - "curl --resolve my.website:80:127.0.0.1 http://my.website | grep -q 'hello world'" + "curl --resolve my.website:80:127.0.0.1 http://my.website | grep 'hello world'" ) with subtest("login required"): pomerium.succeed( - "curl -I --resolve login.required:80:127.0.0.1 http://login.required | grep -q pom-auth" + "curl -I --resolve login.required:80:127.0.0.1 http://login.required | grep pom-auth" ) pomerium.succeed( - "curl -L --resolve login.required:80:127.0.0.1 http://login.required | grep -q 'hello I am login page'" + "curl -L --resolve login.required:80:127.0.0.1 http://login.required | grep 'hello I am login page'" ) ''; }) diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index d13058dff4c3..17b71e82ed21 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -71,7 +71,7 @@ let wait_for_open_port(3551) wait_for_unit("prometheus-apcupsd-exporter.service") wait_for_open_port(9162) - succeed("curl -sSf http://localhost:9162/metrics | grep -q 'apcupsd_info'") + succeed("curl -sSf http://localhost:9162/metrics | grep 'apcupsd_info'") ''; }; @@ -85,7 +85,7 @@ let wait_for_unit("prometheus-artifactory-exporter.service") wait_for_open_port(9531) succeed( - "curl -sSf http://localhost:9531/metrics | grep -q 'artifactory_up'" + "curl -sSf http://localhost:9531/metrics | grep 'artifactory_up'" ) ''; }; @@ -106,7 +106,7 @@ let wait_for_unit("prometheus-bind-exporter.service") wait_for_open_port(9119) succeed( - "curl -sSf http://localhost:9119/metrics | grep -q 'bind_query_recursions_total 0'" + "curl -sSf http://localhost:9119/metrics | grep 'bind_query_recursions_total 0'" ) ''; }; @@ -135,7 +135,7 @@ let wait_for_unit("prometheus-bird-exporter.service") wait_for_open_port(9324) wait_until_succeeds( - "curl -sSf http://localhost:9324/metrics | grep -q 'MyObviousTestString'" + "curl -sSf http://localhost:9324/metrics | grep 'MyObviousTestString'" ) ''; }; @@ -154,7 +154,7 @@ let wait_for_unit("prometheus-bitcoin-exporter.service") wait_for_unit("bitcoind-default.service") wait_for_open_port(9332) - succeed("curl -sSf http://localhost:9332/metrics | grep -q '^bitcoin_blocks '") + succeed("curl -sSf http://localhost:9332/metrics | grep '^bitcoin_blocks '") ''; }; @@ -172,7 +172,7 @@ let wait_for_unit("prometheus-blackbox-exporter.service") wait_for_open_port(9115) succeed( - "curl -sSf 'http://localhost:9115/probe?target=localhost&module=icmp_v6' | grep -q 'probe_success 1'" + "curl -sSf 'http://localhost:9115/probe?target=localhost&module=icmp_v6' | grep 'probe_success 1'" ) ''; }; @@ -204,7 +204,7 @@ let "curl -sSfH 'Content-Type: application/json' -X POST --data @/tmp/data.json localhost:9103/collectd" ) succeed( - "curl -sSf localhost:9103/metrics | grep -q 'collectd_testplugin_gauge{instance=\"testhost\"} 23'" + "curl -sSf localhost:9103/metrics | grep 'collectd_testplugin_gauge{instance=\"testhost\"} 23'" ) ''; }; @@ -220,7 +220,7 @@ let exporterTest = '' wait_for_unit("prometheus-dnsmasq-exporter.service") wait_for_open_port(9153) - succeed("curl -sSf http://localhost:9153/metrics | grep -q 'dnsmasq_leases 0'") + succeed("curl -sSf http://localhost:9153/metrics | grep 'dnsmasq_leases 0'") ''; }; @@ -235,7 +235,7 @@ let wait_for_unit("prometheus-domain-exporter.service") wait_for_open_port(9222) succeed( - "curl -sSf 'http://localhost:9222/probe?target=nixos.org' | grep -q 'domain_probe_success 0'" + "curl -sSf 'http://localhost:9222/probe?target=nixos.org' | grep 'domain_probe_success 0'" ) ''; }; @@ -254,7 +254,7 @@ let wait_for_unit("prometheus-dovecot-exporter.service") wait_for_open_port(9166) succeed( - "curl -sSf http://localhost:9166/metrics | grep -q 'dovecot_up{scope=\"global\"} 1'" + "curl -sSf http://localhost:9166/metrics | grep 'dovecot_up{scope=\"global\"} 1'" ) ''; }; @@ -268,7 +268,7 @@ let wait_for_unit("prometheus-fritzbox-exporter.service") wait_for_open_port(9133) succeed( - "curl -sSf http://localhost:9133/metrics | grep -q 'fritzbox_exporter_collect_errors 0'" + "curl -sSf http://localhost:9133/metrics | grep 'fritzbox_exporter_collect_errors 0'" ) ''; }; @@ -290,9 +290,9 @@ let 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"' + 'journalctl -eu prometheus-jitsi-exporter.service -o cat | grep "key=participants"' ) - succeed("curl -sSf 'localhost:9700/metrics' | grep -q 'jitsi_participants 0'") + succeed("curl -sSf 'localhost:9700/metrics' | grep 'jitsi_participants 0'") ''; }; @@ -321,7 +321,7 @@ let wait_for_unit("prometheus-json-exporter.service") wait_for_open_port(7979) succeed( - "curl -sSf 'localhost:7979/probe?target=http://localhost' | grep -q 'json_test_metric 1'" + "curl -sSf 'localhost:7979/probe?target=http://localhost' | grep 'json_test_metric 1'" ) ''; }; @@ -426,7 +426,7 @@ let wait_for_unit("knot.service") wait_for_unit("prometheus-knot-exporter.service") wait_for_open_port(9433) - succeed("curl -sSf 'localhost:9433' | grep -q 'knot_server_zone_count 1.0'") + succeed("curl -sSf 'localhost:9433' | grep 'knot_server_zone_count 1.0'") ''; }; @@ -441,10 +441,10 @@ let wait_for_unit("prometheus-keylight-exporter.service") wait_for_open_port(9288) succeed( - "curl -sS --write-out '%{http_code}' -o /dev/null http://localhost:9288/metrics | grep -q '400'" + "curl -sS --write-out '%{http_code}' -o /dev/null http://localhost:9288/metrics | grep '400'" ) succeed( - "curl -sS --write-out '%{http_code}' -o /dev/null http://localhost:9288/metrics?target=nosuchdevice | grep -q '500'" + "curl -sS --write-out '%{http_code}' -o /dev/null http://localhost:9288/metrics?target=nosuchdevice | grep '500'" ) ''; }; @@ -489,7 +489,7 @@ let wait_for_open_port(10009) wait_for_unit("prometheus-lnd-exporter.service") wait_for_open_port(9092) - succeed("curl -sSf localhost:9092/metrics | grep -q '^promhttp_metric_handler'") + succeed("curl -sSf localhost:9092/metrics | grep '^promhttp_metric_handler'") ''; }; @@ -531,7 +531,7 @@ let wait_for_unit("prometheus-mail-exporter.service") wait_for_open_port(9225) wait_until_succeeds( - "curl -sSf http://localhost:9225/metrics | grep -q 'mail_deliver_success{configname=\"testserver\"} 1'" + "curl -sSf http://localhost:9225/metrics | grep 'mail_deliver_success{configname=\"testserver\"} 1'" ) ''; }; @@ -571,7 +571,7 @@ let wait_for_unit("prometheus-mikrotik-exporter.service") wait_for_open_port(9436) succeed( - "curl -sSf http://localhost:9436/metrics | grep -q 'mikrotik_scrape_collector_success{device=\"router\"} 0'" + "curl -sSf http://localhost:9436/metrics | grep 'mikrotik_scrape_collector_success{device=\"router\"} 0'" ) ''; }; @@ -596,7 +596,7 @@ let wait_for_unit("prometheus-modemmanager-exporter.service") wait_for_open_port(9539) succeed( - "curl -sSf http://localhost:9539/metrics | grep -q 'modemmanager_info'" + "curl -sSf http://localhost:9539/metrics | grep 'modemmanager_info'" ) ''; }; @@ -634,7 +634,7 @@ let wait_for_unit("nginx.service") wait_for_unit("prometheus-nextcloud-exporter.service") wait_for_open_port(9205) - succeed("curl -sSf http://localhost:9205/metrics | grep -q 'nextcloud_up 1'") + succeed("curl -sSf http://localhost:9205/metrics | grep 'nextcloud_up 1'") ''; }; @@ -653,7 +653,7 @@ let wait_for_unit("nginx.service") wait_for_unit("prometheus-nginx-exporter.service") wait_for_open_port(9113) - succeed("curl -sSf http://localhost:9113/metrics | grep -q 'nginx_up 1'") + succeed("curl -sSf http://localhost:9113/metrics | grep 'nginx_up 1'") ''; }; @@ -708,12 +708,12 @@ let succeed("curl http://localhost") execute("sleep 1") succeed( - "curl -sSf http://localhost:9117/metrics | grep 'filelogger_http_response_count_total' | grep -q 1" + "curl -sSf http://localhost:9117/metrics | grep 'filelogger_http_response_count_total' | grep 1" ) succeed("curl http://localhost:81") execute("sleep 1") succeed( - "curl -sSf http://localhost:9117/metrics | grep 'syslogger_http_response_count_total' | grep -q 1" + "curl -sSf http://localhost:9117/metrics | grep 'syslogger_http_response_count_total' | grep 1" ) ''; }; @@ -726,7 +726,7 @@ let wait_for_unit("prometheus-node-exporter.service") wait_for_open_port(9100) succeed( - "curl -sSf http://localhost:9100/metrics | grep -q 'node_exporter_build_info{.\\+} 1'" + "curl -sSf http://localhost:9100/metrics | grep 'node_exporter_build_info{.\\+} 1'" ) ''; }; @@ -786,7 +786,7 @@ let wait_for_open_port(389) wait_for_open_port(9330) wait_until_succeeds( - "curl -sSf http://localhost:9330/metrics | grep -q 'openldap_scrape{result=\"ok\"} 1'" + "curl -sSf http://localhost:9330/metrics | grep 'openldap_scrape{result=\"ok\"} 1'" ) ''; }; @@ -812,7 +812,7 @@ let exporterTest = '' wait_for_unit("openvpn-test.service") wait_for_unit("prometheus-openvpn-exporter.service") - succeed("curl -sSf http://localhost:9176/metrics | grep -q 'openvpn_up{.*} 1'") + succeed("curl -sSf http://localhost:9176/metrics | grep 'openvpn_up{.*} 1'") ''; }; @@ -828,9 +828,9 @@ let wait_for_file("/var/lib/postfix/queue/public/showq") wait_for_open_port(9154) succeed( - "curl -sSf http://localhost:9154/metrics | grep -q 'postfix_smtpd_connects_total 0'" + "curl -sSf http://localhost:9154/metrics | grep 'postfix_smtpd_connects_total 0'" ) - succeed("curl -sSf http://localhost:9154/metrics | grep -q 'postfix_up{.*} 1'") + succeed("curl -sSf http://localhost:9154/metrics | grep 'postfix_up{.*} 1'") ''; }; @@ -847,20 +847,20 @@ let wait_for_open_port(9187) wait_for_unit("postgresql.service") succeed( - "curl -sSf http://localhost:9187/metrics | grep -q 'pg_exporter_last_scrape_error 0'" + "curl -sSf http://localhost:9187/metrics | grep 'pg_exporter_last_scrape_error 0'" ) - succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 1'") + succeed("curl -sSf http://localhost:9187/metrics | grep 'pg_up 1'") systemctl("stop postgresql.service") succeed( - "curl -sSf http://localhost:9187/metrics | grep -qv 'pg_exporter_last_scrape_error 0'" + "curl -sSf http://localhost:9187/metrics | grep -v 'pg_exporter_last_scrape_error 0'" ) - succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 0'") + succeed("curl -sSf http://localhost:9187/metrics | grep 'pg_up 0'") systemctl("start postgresql.service") wait_for_unit("postgresql.service") succeed( - "curl -sSf http://localhost:9187/metrics | grep -q 'pg_exporter_last_scrape_error 0'" + "curl -sSf http://localhost:9187/metrics | grep 'pg_exporter_last_scrape_error 0'" ) - succeed("curl -sSf http://localhost:9187/metrics | grep -q 'pg_up 1'") + succeed("curl -sSf http://localhost:9187/metrics | grep 'pg_up 1'") ''; }; @@ -893,7 +893,7 @@ let wait_for_unit("prometheus-py-air-control-exporter.service") wait_for_open_port(9896) succeed( - "curl -sSf http://localhost:9896/metrics | grep -q 'py_air_control_sampling_error_total'" + "curl -sSf http://localhost:9896/metrics | grep 'py_air_control_sampling_error_total'" ) ''; }; @@ -908,7 +908,7 @@ let wait_for_unit("prometheus-redis-exporter.service") wait_for_open_port(6379) wait_for_open_port(9121) - wait_until_succeeds("curl -sSf localhost:9121/metrics | grep -q 'redis_up 1'") + wait_until_succeeds("curl -sSf localhost:9121/metrics | grep 'redis_up 1'") ''; }; @@ -926,7 +926,7 @@ let wait_for_open_port(11334) wait_for_open_port(7980) wait_until_succeeds( - "curl -sSf 'localhost:7980/probe?target=http://localhost:11334/stat' | grep -q 'rspamd_scanned{host=\"rspamd\"} 0'" + "curl -sSf 'localhost:7980/probe?target=http://localhost:11334/stat' | grep 'rspamd_scanned{host=\"rspamd\"} 0'" ) ''; }; @@ -957,7 +957,7 @@ let wait_for_unit("prometheus-rtl_433-exporter.service") wait_for_open_port(9550) wait_until_succeeds( - "curl -sSf localhost:9550/metrics | grep -q '{}'".format( + "curl -sSf localhost:9550/metrics | grep '{}'".format( 'rtl_433_temperature_celsius{channel="3",id="55",location="",model="zopieux"} 18' ) ) @@ -973,12 +973,12 @@ let wait_for_unit("prometheus-smokeping-exporter.service") wait_for_open_port(9374) wait_until_succeeds( - "curl -sSf localhost:9374/metrics | grep '{}' | grep -qv ' 0$'".format( + "curl -sSf localhost:9374/metrics | grep '{}' | grep -v ' 0$'".format( 'smokeping_requests_total{host="127.0.0.1",ip="127.0.0.1"} ' ) ) wait_until_succeeds( - "curl -sSf localhost:9374/metrics | grep -q '{}'".format( + "curl -sSf localhost:9374/metrics | grep '{}'".format( 'smokeping_response_ttl{host="127.0.0.1",ip="127.0.0.1"}' ) ) @@ -996,7 +996,7 @@ let exporterTest = '' wait_for_unit("prometheus-snmp-exporter.service") wait_for_open_port(9116) - succeed("curl -sSf localhost:9116/metrics | grep -q 'snmp_request_errors_total 0'") + succeed("curl -sSf localhost:9116/metrics | grep 'snmp_request_errors_total 0'") ''; }; @@ -1040,7 +1040,7 @@ let exporterTest = '' wait_for_unit("prometheus-sql-exporter.service") wait_for_open_port(9237) - succeed("curl http://localhost:9237/metrics | grep -c 'sql_points{' | grep -q 2") + succeed("curl http://localhost:9237/metrics | grep -c 'sql_points{' | grep 2") ''; }; @@ -1063,7 +1063,7 @@ let wait_for_open_port(80) wait_for_unit("prometheus-surfboard-exporter.service") wait_for_open_port(9239) - succeed("curl -sSf localhost:9239/metrics | grep -q 'surfboard_up 1'") + succeed("curl -sSf localhost:9239/metrics | grep 'surfboard_up 1'") ''; }; @@ -1076,7 +1076,7 @@ let wait_for_unit("prometheus-systemd-exporter.service") wait_for_open_port(9558) succeed( - "curl -sSf localhost:9558/metrics | grep -q '{}'".format( + "curl -sSf localhost:9558/metrics | grep '{}'".format( 'systemd_unit_state{name="basic.target",state="active",type="target"} 1' ) ) @@ -1098,7 +1098,7 @@ let wait_for_open_port(9051) wait_for_unit("prometheus-tor-exporter.service") wait_for_open_port(9130) - succeed("curl -sSf localhost:9130/metrics | grep -q 'tor_version{.\\+} 1'") + succeed("curl -sSf localhost:9130/metrics | grep 'tor_version{.\\+} 1'") ''; }; @@ -1110,7 +1110,7 @@ let wait_for_unit("prometheus-unifi-poller-exporter.service") wait_for_open_port(9130) succeed( - "curl -sSf localhost:9130/metrics | grep -q 'unifipoller_build_info{.\\+} 1'" + "curl -sSf localhost:9130/metrics | grep 'unifipoller_build_info{.\\+} 1'" ) ''; }; @@ -1134,7 +1134,7 @@ let wait_for_unit("unbound.service") wait_for_unit("prometheus-unbound-exporter.service") wait_for_open_port(9167) - succeed("curl -sSf localhost:9167/metrics | grep -q 'unbound_up 1'") + succeed("curl -sSf localhost:9167/metrics | grep 'unbound_up 1'") ''; }; @@ -1163,7 +1163,7 @@ let wait_for_unit("prometheus-varnish-exporter.service") wait_for_open_port(6081) wait_for_open_port(9131) - succeed("curl -sSf http://localhost:9131/metrics | grep -q 'varnish_up 1'") + succeed("curl -sSf http://localhost:9131/metrics | grep 'varnish_up 1'") ''; }; diff --git a/nixos/tests/shiori.nix b/nixos/tests/shiori.nix index a5771262c6f2..418bee43c939 100644 --- a/nixos/tests/shiori.nix +++ b/nixos/tests/shiori.nix @@ -28,7 +28,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...}: machine.wait_for_unit("shiori.service") machine.wait_for_open_port(8080) machine.succeed("curl --fail http://localhost:8080/") - machine.succeed("curl --fail --location http://localhost:8080/ | grep -qi shiori") + machine.succeed("curl --fail --location http://localhost:8080/ | grep -i shiori") with subtest("login"): auth_json = machine.succeed( diff --git a/nixos/tests/wiki-js.nix b/nixos/tests/wiki-js.nix index 9aa87d15366b..783887d2dcaa 100644 --- a/nixos/tests/wiki-js.nix +++ b/nixos/tests/wiki-js.nix @@ -119,7 +119,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : { with subtest("Setup"): result = machine.succeed( - "set -o pipefail; curl -sSf localhost:3000/finalize -X POST -d " + "curl -sSf localhost:3000/finalize -X POST -d " + "@${payloads.finalize} -H 'Content-Type: application/json' " + "| jq .ok | xargs echo" ) @@ -132,7 +132,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : { with subtest("Base functionality"): auth = machine.succeed( - "set -o pipefail; curl -sSf localhost:3000/graphql -X POST " + "curl -sSf localhost:3000/graphql -X POST " + "-d @${payloads.login} -H 'Content-Type: application/json' " + "| jq '.[0].data.authentication.login.jwt' | xargs echo" ).strip() @@ -140,7 +140,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : { assert auth create = machine.succeed( - "set -o pipefail; curl -sSf localhost:3000/graphql -X POST " + "curl -sSf localhost:3000/graphql -X POST " + "-d @${payloads.content} -H 'Content-Type: application/json' " + f"-H 'Authorization: Bearer {auth}' " + "| jq '.[0].data.pages.create.responseResult.succeeded'|xargs echo" diff --git a/nixos/tests/xandikos.nix b/nixos/tests/xandikos.nix index 48c770a3d168..69d78ee21e76 100644 --- a/nixos/tests/xandikos.nix +++ b/nixos/tests/xandikos.nix @@ -44,7 +44,7 @@ import ./make-test-python.nix ( xandikos_default.wait_for_open_port(8080) xandikos_default.succeed("curl --fail http://localhost:8080/") xandikos_default.succeed( - "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos" + "curl -s --fail --location http://localhost:8080/ | grep -i Xandikos" ) xandikos_client.wait_for_unit("network.target") xandikos_client.fail("curl --fail http://xandikos_default:8080/") @@ -55,15 +55,15 @@ import ./make-test-python.nix ( xandikos_proxy.wait_for_open_port(8080) xandikos_proxy.succeed("curl --fail http://localhost:8080/") xandikos_proxy.succeed( - "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos" + "curl -s --fail --location http://localhost:8080/ | grep -i Xandikos" ) xandikos_client.wait_for_unit("network.target") xandikos_client.fail("curl --fail http://xandikos_proxy:8080/") xandikos_client.succeed( - "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/ | grep -qi Xandikos" + "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/ | grep -i Xandikos" ) xandikos_client.succeed( - "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/user/ | grep -qi Xandikos" + "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/user/ | grep -i Xandikos" ) ''; } diff --git a/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix b/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix new file mode 100644 index 000000000000..658a18c05867 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "apheleia"; + version = "2021-05-23"; + + src = fetchFromGitHub { + owner = "raxod502"; + repo = "apheleia"; + rev = "f865c165dac606187a66b2b25a57d5099b452120"; + sha256 = "sha256-n37jJsNOGhSjUtQysG3NVIjjayhbOa52iTXBc8SyKXE="; + }; + + buildInputs = [ emacs ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Reformat buffer stably"; + homepage = "https://github.com/raxod502/apheleia"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix b/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix new file mode 100644 index 000000000000..74fc1a179219 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, emacs, emacsPackages, lib }: + +let + runtimeDeps = with emacsPackages; [ + evil + markdown-mode + ]; +in +stdenv.mkDerivation { + pname = "evil-markdown"; + version = "2020-06-01"; + + src = fetchFromGitHub { + owner = "Somelauw"; + repo = "evil-markdown"; + rev = "064fe9b4767470472356d20bdd08e2f30ebbc9ac"; + sha256 = "sha256-Kt2wxG1XCFowavVWtj0urM/yURKegonpZcxTy/+CrJY="; + }; + + buildInputs = [ + emacs + ] ++ runtimeDeps; + + propagatedUserEnvPkgs = runtimeDeps; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Vim-like keybindings for markdown-mode"; + homepage = "https://github.com/Somelauw/evil-markdown"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix b/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix new file mode 100644 index 000000000000..1b4da6340dc2 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "git-undo"; + version = "2019-10-13"; + + src = fetchFromGitHub { + owner = "jwiegley"; + repo = "git-undo-el"; + rev = "cf31e38e7889e6ade7d2d2b9f8719fd44f52feb5"; + sha256 = "sha256-cVkK9EF6qQyVV3uVqnBEjF8e9nEx/8ixnM8PvxqCyYE="; + }; + + buildInputs = [ emacs ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Revert region to most recent Git-historical version"; + homepage = "https://github.com/jwiegley/git-undo-el"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix b/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix new file mode 100644 index 000000000000..64cfbde98b77 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "isearch-plus"; + version = "2021-01-01"; + + src = fetchFromGitHub { + owner = "emacsmirror"; + repo = "isearch-plus"; + rev = "376a8f9f8a9666d7e61d125abcdb645847cb8619"; + sha256 = "sha256-Kd5vpu+mI1tJPcsu7EpnnBcPVdVAijkAeTz+bLB3WlQ="; + }; + + buildInputs = [ emacs ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Extensions to isearch"; + homepage = "https://www.emacswiki.org/emacs/download/isearch%2b.el"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix b/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix new file mode 100644 index 000000000000..0db28255f70c --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "isearch-prop"; + version = "2019-05-01"; + + src = fetchFromGitHub { + owner = "emacsmirror"; + repo = "isearch-prop"; + rev = "4a2765f835dd115d472142da05215c4c748809f4"; + sha256 = "sha256-A1Kt4nm7iRV9J5yaLupwiNL5g7ddZvQs79dggmqZ7Rk="; + }; + + buildInputs = [ emacs ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Search text- or overlay-property contexts"; + homepage = "https://www.emacswiki.org/emacs/download/isearch-prop.el"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix index 80cc7578b4fb..f862a1ae8a54 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix @@ -65,11 +65,15 @@ }; }; + apheleia = callPackage ./apheleia {}; + emacspeak = callPackage ./emacspeak {}; ess-R-object-popup = callPackage ./ess-R-object-popup { }; + evil-markdown = callPackage ./evil-markdown { }; + font-lock-plus = callPackage ./font-lock-plus { }; ghc-mod = melpaBuild { @@ -88,6 +92,8 @@ }; }; + git-undo = callPackage ./git-undo { }; + haskell-unicode-input-method = melpaBuild { pname = "emacs-haskell-unicode-input-method"; version = "20110905.2307"; @@ -111,6 +117,10 @@ helm-words = callPackage ./helm-words { }; + isearch-plus = callPackage ./isearch-plus { }; + + isearch-prop = callPackage ./isearch-prop { }; + jam-mode = callPackage ./jam-mode { }; llvm-mode = trivialBuild { @@ -177,6 +187,8 @@ }; + mu4e-patch = callPackage ./mu4e-patch { }; + org-mac-link = callPackage ./org-mac-link { }; @@ -206,6 +218,8 @@ tramp = callPackage ./tramp { }; + youtube-dl = callPackage ./youtube-dl { }; + zeitgeist = callPackage ./zeitgeist { }; # From old emacsPackages (pre emacsPackagesNg) diff --git a/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix b/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix new file mode 100644 index 000000000000..4a436339ebc4 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "mu4e-patch"; + version = "2019-05-09"; + + src = fetchFromGitHub { + owner = "seanfarley"; + repo = "mu4e-patch"; + rev = "522da46c1653b1cacc79cde91d6534da7ae9517d"; + sha256 = "sha256-1lV4dDuCdyCUXi/In2DzYJPEHuAc9Jfbz2ZecNZwn4I="; + }; + + buildInputs = [ + emacs + ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Colorize patch emails in mu4e"; + homepage = "https://github.com/seanfarley/mu4e-patch"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix b/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix new file mode 100644 index 000000000000..c99693463a64 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, emacs, lib }: + +stdenv.mkDerivation { + pname = "youtube-dl"; + version = "2018-10-12"; + + src = fetchFromGitHub { + owner = "skeeto"; + repo = "youtube-dl-emacs"; + rev = "af877b5bc4f01c04fccfa7d47a2c328926f20ef4"; + sha256 = "sha256-Etl95rcoRACDPjcTPQqYK2L+w8OZbOrTrRT0JadMdH4="; + }; + + buildInputs = [ emacs ]; + + buildPhase = '' + runHook preBuild + emacs -L . --batch -f batch-byte-compile *.el + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + runHook postInstall + ''; + + meta = { + description = "Emacs frontend to the youtube-dl utility"; + homepage = "https://github.com/skeeto/youtube-dl-emacs"; + license = lib.licenses.unlicense; + maintainers = with lib.maintainers; [ leungbk ]; + platforms = emacs.meta.platforms; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix index 5972843ab314..8d0e86b1a93b 100644 --- a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix @@ -54,11 +54,11 @@ stdenv.mkDerivation rec { pname = "gnome-boxes"; - version = "40.1"; + version = "40.2"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "seKPLH+3a/T7uGLQ1S6BG5TL6f8W8GdAiWRWhpCILvg="; + sha256 = "hzN1mi2GpWNnWWpTSQRjO4HKqlxFpWNtsulZDHFK6Nk="; }; doCheck = true; diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix index 9c0b1f659768..da2e37e51fc4 100644 --- a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix @@ -24,11 +24,11 @@ stdenv.mkDerivation rec { pname = "gnome-calendar"; - version = "40.1"; + version = "40.2"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "2M30n57uHDo8aZHDL4VjxKfE2w23ymPOUcyRjkM7M6U="; + sha256 = "njcB/UoOWJgA0iUgN3BkTzHVI0ZV9UqDqF/wVW3X6jM="; }; patches = [ diff --git a/pkgs/desktops/gnome/apps/gnome-maps/default.nix b/pkgs/desktops/gnome/apps/gnome-maps/default.nix index 2818215a4ff9..0a07428b1b22 100644 --- a/pkgs/desktops/gnome/apps/gnome-maps/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-maps/default.nix @@ -29,11 +29,11 @@ stdenv.mkDerivation rec { pname = "gnome-maps"; - version = "40.1"; + version = "40.2"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "sha256-mAXUwFs6NpV0bTdisoFr/+bZ19VuF7y7nZ1B3C0CYxo="; + sha256 = "sha256-g+gVAFTQxLWmPJoJvyx9+YmuaQ7Kwb5r97ExKqpjm9Q="; }; doCheck = true; diff --git a/pkgs/desktops/gnome/core/epiphany/default.nix b/pkgs/desktops/gnome/core/epiphany/default.nix index f286d384c4e8..0b4191b2266c 100644 --- a/pkgs/desktops/gnome/core/epiphany/default.nix +++ b/pkgs/desktops/gnome/core/epiphany/default.nix @@ -37,11 +37,11 @@ stdenv.mkDerivation rec { pname = "epiphany"; - version = "40.1"; + version = "40.2"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "1l0sb1xg16g4wg3z99xb0w2kbyczbn7q4mphs3w4lxq22xml4sk9"; + sha256 = "dRGeIgZWV89w7ytgPU9zg1VzvQNPHmGMD2YkeP1saDU="; }; nativeBuildInputs = [ diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix index 0ed3565d7f03..8781a2aa7fde 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix +++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "evolution-data-server"; - version = "3.40.1"; + version = "3.40.2"; outputs = [ "out" "dev" ]; src = fetchurl { url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "08iykha7zhk21b3axsp3v1jfwda612v0m8rz8zlzppm5i8s5ziza"; + sha256 = "7IKVFjnzKlzs6AqLC5qj9mt9MY4+4sHDUjTy4r3opBg="; }; patches = [ diff --git a/pkgs/desktops/gnome/core/gnome-software/default.nix b/pkgs/desktops/gnome/core/gnome-software/default.nix index 64cd214e8090..226b251ec46a 100644 --- a/pkgs/desktops/gnome/core/gnome-software/default.nix +++ b/pkgs/desktops/gnome/core/gnome-software/default.nix @@ -43,11 +43,11 @@ in stdenv.mkDerivation rec { pname = "gnome-software"; - version = "40.1"; + version = "40.2"; src = fetchurl { url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "16q2902swxsjdxb1nj335sv1bb76rvq4w6dn4yszkwf3s0fd86in"; + sha256 = "y9HdKguvw/U93kIAPEpKA3RsuNZNxdJ+uNvmc27nJ5Y="; }; patches = [ diff --git a/pkgs/development/compilers/llvm/12/compiler-rt/darwin-targetconditionals.patch b/pkgs/development/compilers/llvm/12/compiler-rt/darwin-targetconditionals.patch new file mode 100644 index 000000000000..425dc2af01e7 --- /dev/null +++ b/pkgs/development/compilers/llvm/12/compiler-rt/darwin-targetconditionals.patch @@ -0,0 +1,71 @@ +diff --git a/lib/sanitizer_common/sanitizer_mac.cpp b/lib/sanitizer_common/sanitizer_mac.cpp +--- a/lib/sanitizer_common/sanitizer_mac.cpp ++++ b/lib/sanitizer_common/sanitizer_mac.cpp +@@ -613,9 +613,15 @@ HandleSignalMode GetHandleSignalMode(int signum) { + // Offset example: + // XNU 17 -- macOS 10.13 -- iOS 11 -- tvOS 11 -- watchOS 4 + constexpr u16 GetOSMajorKernelOffset() { +- if (TARGET_OS_OSX) return 4; +- if (TARGET_OS_IOS || TARGET_OS_TV) return 6; +- if (TARGET_OS_WATCH) return 13; ++#if TARGET_OS_OSX ++ return 4; ++#endif ++#if TARGET_OS_IOS || TARGET_OS_TV ++ return 6; ++#endif ++#if TARGET_OS_WATCH ++ return 13; ++#endif + } + + using VersStr = char[64]; +@@ -627,13 +633,13 @@ static uptr ApproximateOSVersionViaKernelVersion(VersStr vers) { + u16 os_major = kernel_major - offset; + + const char *format = "%d.0"; +- if (TARGET_OS_OSX) { +- if (os_major >= 16) { // macOS 11+ +- os_major -= 5; +- } else { // macOS 10.15 and below +- format = "10.%d"; +- } ++#if TARGET_OS_OSX ++ if (os_major >= 16) { // macOS 11+ ++ os_major -= 5; ++ } else { // macOS 10.15 and below ++ format = "10.%d"; + } ++#endif + return internal_snprintf(vers, sizeof(VersStr), format, os_major); + } + +@@ -681,15 +687,14 @@ void ParseVersion(const char *vers, u16 *major, u16 *minor) { + // Aligned versions example: + // macOS 10.15 -- iOS 13 -- tvOS 13 -- watchOS 6 + static void MapToMacos(u16 *major, u16 *minor) { +- if (TARGET_OS_OSX) +- return; +- +- if (TARGET_OS_IOS || TARGET_OS_TV) ++#if !TARGET_OS_OSX ++#if TARGET_OS_IOS || TARGET_OS_TV + *major += 2; +- else if (TARGET_OS_WATCH) ++#elif TARGET_OS_WATCH + *major += 9; +- else ++#else + UNREACHABLE("unsupported platform"); ++#endif + + if (*major >= 16) { // macOS 11+ + *major -= 5; +@@ -697,6 +702,7 @@ static void MapToMacos(u16 *major, u16 *minor) { + *minor = *major; + *major = 10; + } ++#endif + } + + static MacosVersion GetMacosAlignedVersionInternal() { diff --git a/pkgs/development/compilers/llvm/12/compiler-rt/default.nix b/pkgs/development/compilers/llvm/12/compiler-rt/default.nix index 895af8f2f020..cde1317ca35d 100644 --- a/pkgs/development/compilers/llvm/12/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/12/compiler-rt/default.nix @@ -59,6 +59,8 @@ stdenv.mkDerivation { # extra `/`. ./normalize-var.patch ]# ++ lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch + # Prevent a compilation error on darwin + ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin-targetconditionals.patch ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch; # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks diff --git a/pkgs/development/interpreters/erlang/R21.nix b/pkgs/development/interpreters/erlang/R21.nix index 3959c13e57bc..7706bd69fbf5 100644 --- a/pkgs/development/interpreters/erlang/R21.nix +++ b/pkgs/development/interpreters/erlang/R21.nix @@ -1,6 +1,6 @@ { mkDerivation }: mkDerivation { - version = "21.3.8.23"; - sha256 = "sha256-zIEXn2HuXeRKHfXmm0AAv9rEqqc4gIgaYek0hSUK5YU="; + version = "21.3.8.24"; + sha256 = "sha256-FNs+M4KFFKzfb4EG513HtyQ9eRRtxSPMpYq0bmRgY3g="; } diff --git a/pkgs/development/libraries/cpp-utilities/default.nix b/pkgs/development/libraries/cpp-utilities/default.nix index 14e2c8878fd9..de7bf560d3ea 100644 --- a/pkgs/development/libraries/cpp-utilities/default.nix +++ b/pkgs/development/libraries/cpp-utilities/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation rec { pname = "cpp-utilities"; - version = "5.10.3"; + version = "5.10.4"; src = fetchFromGitHub { owner = "Martchus"; repo = pname; rev = "v${version}"; - sha256 = "sha256-bEdDRvm5W12wJnW4xC+AcRLevZ0H7C625eknKzNrLLU="; + sha256 = "sha256-pZh/NbTzQR2kjMeauv1HcRn0hDBaCNRbaZ3+1qs5rxU="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/tools/go-toml/default.nix b/pkgs/development/tools/go-toml/default.nix index 355f468237c4..fee8d94f754b 100644 --- a/pkgs/development/tools/go-toml/default.nix +++ b/pkgs/development/tools/go-toml/default.nix @@ -2,13 +2,13 @@ buildGoPackage rec { pname = "go-toml"; - version = "1.9.1"; + version = "1.9.2"; src = fetchFromGitHub { owner = "pelletier"; repo = pname; rev = "v${version}"; - sha256 = "sha256-O3gfQon8ktObLVED4A5sCSOw8K1NIXP3a5AsLq3Svb4="; + sha256 = "sha256-x740f6I+szhq4mEsed4bsXcC8PvzF6PKFJNJ9SKMGIE="; }; goPackagePath = "github.com/pelletier/go-toml"; diff --git a/pkgs/development/tools/lazygit/default.nix b/pkgs/development/tools/lazygit/default.nix index 7038b7c1eb03..af33938c1a6f 100644 --- a/pkgs/development/tools/lazygit/default.nix +++ b/pkgs/development/tools/lazygit/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "lazygit"; - version = "0.28.1"; + version = "0.28.2"; src = fetchFromGitHub { owner = "jesseduffield"; repo = pname; rev = "v${version}"; - sha256 = "sha256-tan8ksSyMIeDL7oRAWd3Qtz/sKbhAAfY7IknfwjyvgQ="; + sha256 = "sha256-s5Ou0FhL9+2/xm7lKMG/3ya5P8idI0cgtJ28cV37pJQ="; }; vendorSha256 = null; diff --git a/pkgs/development/tools/parsing/tree-sitter/grammar.nix b/pkgs/development/tools/parsing/tree-sitter/grammar.nix index 5ca381e6d2ff..93e1cb3804fb 100644 --- a/pkgs/development/tools/parsing/tree-sitter/grammar.nix +++ b/pkgs/development/tools/parsing/tree-sitter/grammar.nix @@ -1,5 +1,7 @@ { stdenv , tree-sitter +, libcxx +, lib }: # Build a parser grammar and put the resulting shared object in `$out/parser` @@ -27,6 +29,7 @@ stdenv.mkDerivation { "${source}/${location}" ; + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1"; buildInputs = [ tree-sitter ]; dontUnpack = true; diff --git a/pkgs/games/stockfish/default.nix b/pkgs/games/stockfish/default.nix index ef9c7fbe4d64..b09dc523d1ac 100644 --- a/pkgs/games/stockfish/default.nix +++ b/pkgs/games/stockfish/default.nix @@ -12,13 +12,13 @@ let if stdenv.isi686 then "x86-32" else if stdenv.isAarch64 then "armv8" else "unknown"; - version = "12"; + version = "13"; - nnueFile = "nn-82215d0fd0df.nnue"; + nnueFile = "nn-62ef826d1a6d.nnue"; nnue = fetchurl { name = nnueFile; url = "https://tests.stockfishchess.org/api/nn/${nnueFile}"; - sha256 = "1r4yqrh4di05syyhl84hqcz84djpbd605b27zhbxwg6zs07ms8c2"; + sha256 = "0qsy9rr4zgxrpgwhwbi96z01a2560am2b00q2klbj4bd39nq5vv2"; }; in @@ -28,7 +28,7 @@ stdenv.mkDerivation { src = fetchurl { url = "https://github.com/official-stockfish/Stockfish/archive/sf_${version}.tar.gz"; - sha256 = "16980aicm5i6i9252239q4f9bcxg1gnqkv6nphrmpz4drg8i3v6i"; + sha256 = "0qhxp2w543psanzhzn8jhfafx8aip57v9nsvafbwa5xynchlgl8m"; }; # This addresses a linker issue with Darwin diff --git a/pkgs/tools/misc/silicon/default.nix b/pkgs/tools/misc/silicon/default.nix index ae5805451140..40586f6be656 100644 --- a/pkgs/tools/misc/silicon/default.nix +++ b/pkgs/tools/misc/silicon/default.nix @@ -18,16 +18,16 @@ rustPlatform.buildRustPackage rec { pname = "silicon"; - version = "0.4.1"; + version = "0.4.2"; src = fetchFromGitHub { owner = "Aloxaf"; repo = "silicon"; rev = "v${version}"; - sha256 = "sha256-ci0gq4rOQHBmFPvhXZseIlwnqAWd06/qg/i/luhV79s="; + sha256 = "sha256-k+p8AEEL1BBJTmPc58QoIk7EOzu8QKdG00RQ58EN3bg="; }; - cargoSha256 = "sha256-sUPOf9er+BOMqDJ8C6+Xjjqj6NQUV2JTzGA4yUWtDWM="; + cargoSha256 = "sha256-vpegobS7lpRkt/oZePW9WggYeg0JXDte8fQP/bf7oAI="; buildInputs = [ llvmPackages.libclang expat freetype fira-code ] ++ lib.optionals stdenv.isLinux [ libxcb ]