···267268- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
269000000000000000270- `programs.fzf.keybindings` now supports the fish shell.
271272<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
···267268- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
269270+- Caddy can now be built with plugins by using `caddy.withPlugins`, a `passthru` function that accepts an attribute set as a parameter. The `plugins` argument represents a list of Caddy plugins, with each Caddy plugin being a versioned module. The `hash` argument represents the `vendorHash` of the resulting Caddy source code with the plugins added.
271+272+ Example:
273+ ```nix
274+ services.caddy = {
275+ enable = true;
276+ package = pkgs.caddy.withPlugins {
277+ plugins = [ "github.com/caddy-dns/powerdns@v1.0.1" ];
278+ hash = "sha256-F/jqR4iEsklJFycTjSaW8B/V3iTGqqGOzwYBUXxRKrc=";
279+ };
280+ };
281+ ```
282+283+ To get the necessary hash of the vendored dependencies, omit `hash`. The build will fail and tell you the correct value.
284+285- `programs.fzf.keybindings` now supports the fish shell.
286287<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+1-2
nixos/modules/hardware/wooting.nix
···1{ config, lib, pkgs, ... }:
2{
3- options.hardware.wooting.enable = lib.mkEnableOption ''support for Wooting keyboards.
4- Note that users must be in the "input" group for udev rules to apply'';
56 config = lib.mkIf config.hardware.wooting.enable {
7 environment.systemPackages = [ pkgs.wootility ];
···29 "${pkgs.dovecot}/libexec/dovecot/deliver -d %{user.username}"
30 match from any for local action dovecot_deliver
3132- action do_relay relay
33- # DO NOT DO THIS IN PRODUCTION!
34- # Setting up authentication requires a certificate which is painful in
35- # a test environment, but THIS WOULD BE DANGEROUS OUTSIDE OF A
36- # WELL-CONTROLLED ENVIRONMENT!
37- match from any for any action do_relay
38 '';
39 };
40 services.dovecot2 = {
···107 import smtplib, sys
108109 with smtplib.SMTP('192.168.1.1') as smtp:
110- smtp.sendmail('alice@[192.168.1.1]', 'bob@[192.168.1.2]', """
111 From: alice@smtp1
112 To: bob@smtp2
113 Subject: Test
···29 "${pkgs.dovecot}/libexec/dovecot/deliver -d %{user.username}"
30 match from any for local action dovecot_deliver
3132+ action relay_smtp2 relay host "smtp://192.168.1.2"
33+ match from any for any action relay_smtp2
000034 '';
35 };
36 services.dovecot2 = {
···103 import smtplib, sys
104105 with smtplib.SMTP('192.168.1.1') as smtp:
106+ smtp.sendmail('alice@smtp1', 'bob@smtp2', """
107 From: alice@smtp1
108 To: bob@smtp2
109 Subject: Test
+34-11
nixos/tests/opensmtpd.nix
···16 }
17 ];
18 };
19- environment.systemPackages = [ pkgs.opensmtpd ];
000000000000000000020 services.opensmtpd = {
21 enable = true;
22 extraServerArgs = [ "-v" ];
23 serverConfiguration = ''
24 listen on 0.0.0.0
25- action do_relay relay
26- # DO NOT DO THIS IN PRODUCTION!
27- # Setting up authentication requires a certificate which is painful in
28- # a test environment, but THIS WOULD BE DANGEROUS OUTSIDE OF A
29- # WELL-CONTROLLED ENVIRONMENT!
30- match from any for any action do_relay
31 '';
32 };
33 };
···87 import smtplib, sys
8889 with smtplib.SMTP('192.168.1.1') as smtp:
90- smtp.sendmail('alice@[192.168.1.1]', 'bob@[192.168.1.2]', """
91 From: alice@smtp1
92 To: bob@smtp2
93 Subject: Test
···105 imap.select()
106 status, refs = imap.search(None, 'ALL')
107 assert status == 'OK'
108- assert len(refs) == 1
109- status, msg = imap.fetch(refs[0], 'BODY[TEXT]')
110 assert status == 'OK'
111 content = msg[0][1]
112 print("===> content:", content)
113 split = content.split(b'\r\n')
114 print("===> split:", split)
115- lastline = split[-3]
0116 print("===> lastline:", lastline)
117 assert lastline.strip() == b'Hello World'
00118 '';
119 in
120 [
···140 smtp2.wait_for_open_port(143)
141142 client.succeed("send-a-test-mail")
00000143 smtp1.wait_until_fails("smtpctl show queue | egrep .")
144 smtp2.wait_until_fails("smtpctl show queue | egrep .")
145 client.succeed("check-mail-landed >&2")
···1-yarnConfigHook(){
2 echo "Executing yarnConfigHook"
34 # Use a constant HOME directory
5- mkdir -p /tmp/home
6- export HOME=/tmp/home
7 if [[ -n "$yarnOfflineCache" ]]; then
8 offlineCache="$yarnOfflineCache"
9 fi
···1+yarnConfigHook() {
2 echo "Executing yarnConfigHook"
34 # Use a constant HOME directory
5+ export HOME=$(mktemp -d)
06 if [[ -n "$yarnOfflineCache" ]]; then
7 offlineCache="$yarnOfflineCache"
8 fi
···361 fi
362 done
36300000364 # Don't depend on build python
365 patchShebangs --host --update $out/bin/*
366
···361 fi
362 done
363364+ # update symlinks pointing to libgallium in $out
365+ for link in $drivers/lib/dri/*_drv_video.so $drivers/lib/vdpau/*.so.1.0.0; do
366+ ln -sf $drivers/lib/libgallium*.so $link
367+ done
368+369 # Don't depend on build python
370 patchShebangs --host --update $out/bin/*
371
+2-2
pkgs/development/python-modules/ansible/core.nix
···3132buildPythonPackage rec {
33 pname = "ansible-core";
34- version = "2.17.6";
35 pyproject = true;
3637 src = fetchPypi {
38 pname = "ansible_core";
39 inherit version;
40- hash = "sha256-PlOXC3zr/irbObcRweL4u/y+2sgo2lHcA1ehkHBjjpU=";
41 };
4243 # ansible_connection is already wrapped, so don't pass it through
···3132buildPythonPackage rec {
33 pname = "ansible-core";
34+ version = "2.18.1";
35 pyproject = true;
3637 src = fetchPypi {
38 pname = "ansible_core";
39 inherit version;
40+ hash = "sha256-FMrB+Su9rogcsGFu3esXkl6MtQfkhgh5deckUz2d508=";
41 };
4243 # ansible_connection is already wrapped, so don't pass it through
···503 gnuradio3_9 = throw "gnuradio3_9 has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
504 gnuradio3_9Minimal = throw "gnuradio3_9Minimal has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
505 gnuradio3_9Packages = throw "gnuradio3_9Minimal has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
000506 gn1924 = throw "gn1924 has been removed because it was broken and no longer used by envoy."; # Added 2024-11-03
507 gobby5 = throw "'gobby5' has been renamed to/replaced by 'gobby'"; # Converted to throw 2024-10-17
508 gradle_6 = throw "Gradle 6 has been removed, as it is end-of-life (https://endoflife.date/gradle) and has many vulnerabilities that are not resolved until Gradle 7."; # Added 2024-10-30
···633 LASzip2 = laszip_2; # Added 2024-06-12
634 latencytop = throw "'latencytop' has been removed due to lack of maintenance upstream."; # Added 2024-12-04
635 latinmodern-math = lmmath;
0636 leafpad = throw "'leafpad' has been removed due to lack of maintenance upstream. Consider using 'xfce.mousepad' instead"; # Added 2024-10-19
637 ledger_agent = ledger-agent; # Added 2024-01-07
638 lfs = dysk; # Added 2023-07-03
···662 liblastfm = throw "'liblastfm' has been renamed to/replaced by 'libsForQt5.liblastfm'"; # Converted to throw 2024-10-17
663 libmx = throw "'libmx' has been removed due to lack of maintenance upstream."; # Added 2024-12-04
664 liboop = throw "liboop has been removed as it is unmaintained upstream."; # Added 2024-08-14
0665 libpqxx_6 = throw "libpqxx_6 has been removed, please use libpqxx"; # Added 2024-10-02
666 libpulseaudio-vanilla = libpulseaudio; # Added 2022-04-20
0667 libquotient = libsForQt5.libquotient; # Added 2023-11-11
668 librarian-puppet-go = throw "'librarian-puppet-go' has been removed, as it's upstream is unmaintained"; # Added 2024-06-10
669 librdf = throw "'librdf' has been renamed to/replaced by 'lrdf'"; # Converted to throw 2024-10-17
···1252 swiPrologWithGui = lib.warnOnInstantiate "swiPrologWithGui has been renamed to swi-prolog-gui" swi-prolog-gui; # Added 2024-09-07
1253 swig1 = throw "swig1 has been removed as it is obsolete"; # Added 2024-08-23
1254 swig2 = throw "swig2 has been removed as it is obsolete"; # Added 2024-08-23
01255 swig4 = swig; # Added 2024-09-12
1256 swigWithJava = throw "swigWithJava has been removed as the main swig package has supported Java since 2009"; # Added 2024-09-12
1257 swtpm-tpm2 = throw "'swtpm-tpm2' has been renamed to/replaced by 'swtpm'"; # Converted to throw 2024-10-17
···503 gnuradio3_9 = throw "gnuradio3_9 has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
504 gnuradio3_9Minimal = throw "gnuradio3_9Minimal has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
505 gnuradio3_9Packages = throw "gnuradio3_9Minimal has been removed because it is not compatible with the latest volk and it had no dependent packages which justified it's distribution"; # Added 2024-07-28
506+ gnuradio3_8 = throw "gnuradio3_8 has been removed because it was too old and incompatible with a not EOL swig"; # Added 2024-11-18
507+ gnuradio3_8Minimal = throw "gnuradio3_8Minimal has been removed because it was too old and incompatible with a not EOL swig"; # Added 2024-11-18
508+ gnuradio3_8Packages = throw "gnuradio3_8Minimal has been removed because it was too old and incompatible with a not EOL swig"; # Added 2024-11-18
509 gn1924 = throw "gn1924 has been removed because it was broken and no longer used by envoy."; # Added 2024-11-03
510 gobby5 = throw "'gobby5' has been renamed to/replaced by 'gobby'"; # Converted to throw 2024-10-17
511 gradle_6 = throw "Gradle 6 has been removed, as it is end-of-life (https://endoflife.date/gradle) and has many vulnerabilities that are not resolved until Gradle 7."; # Added 2024-10-30
···636 LASzip2 = laszip_2; # Added 2024-06-12
637 latencytop = throw "'latencytop' has been removed due to lack of maintenance upstream."; # Added 2024-12-04
638 latinmodern-math = lmmath;
639+ lazarus-qt = lazarus-qt5; # Added 2024-12-25
640 leafpad = throw "'leafpad' has been removed due to lack of maintenance upstream. Consider using 'xfce.mousepad' instead"; # Added 2024-10-19
641 ledger_agent = ledger-agent; # Added 2024-01-07
642 lfs = dysk; # Added 2023-07-03
···666 liblastfm = throw "'liblastfm' has been renamed to/replaced by 'libsForQt5.liblastfm'"; # Converted to throw 2024-10-17
667 libmx = throw "'libmx' has been removed due to lack of maintenance upstream."; # Added 2024-12-04
668 liboop = throw "liboop has been removed as it is unmaintained upstream."; # Added 2024-08-14
669+ libosmo-sccp = libosmo-sigtran; # Added 2024-12-20
670 libpqxx_6 = throw "libpqxx_6 has been removed, please use libpqxx"; # Added 2024-10-02
671 libpulseaudio-vanilla = libpulseaudio; # Added 2022-04-20
672+ libqt5pas = libsForQt5.libqtpas; # Added 2024-12-25
673 libquotient = libsForQt5.libquotient; # Added 2023-11-11
674 librarian-puppet-go = throw "'librarian-puppet-go' has been removed, as it's upstream is unmaintained"; # Added 2024-06-10
675 librdf = throw "'librdf' has been renamed to/replaced by 'lrdf'"; # Converted to throw 2024-10-17
···1258 swiPrologWithGui = lib.warnOnInstantiate "swiPrologWithGui has been renamed to swi-prolog-gui" swi-prolog-gui; # Added 2024-09-07
1259 swig1 = throw "swig1 has been removed as it is obsolete"; # Added 2024-08-23
1260 swig2 = throw "swig2 has been removed as it is obsolete"; # Added 2024-08-23
1261+ swig3 = throw "swig3 has been removed as it is obsolete"; # Added 2024-11-18
1262 swig4 = swig; # Added 2024-09-12
1263 swigWithJava = throw "swigWithJava has been removed as the main swig package has supported Java since 2009"; # Added 2024-09-12
1264 swtpm-tpm2 = throw "'swtpm-tpm2' has been renamed to/replaced by 'swtpm'"; # Converted to throw 2024-10-17