···2930 nixpkgs-vet --base ${filtered base} ${filtered head}
3132+ # TODO: Upstream into nixpkgs-vet, see:
33+ # https://github.com/NixOS/nixpkgs-vet/issues/164
34+ badFiles=$(find ${filtered head}/pkgs -type f -name '*.nix' -print | xargs grep -l '^[^#]*<nixpkgs/' || true)
35+ if [[ -n $badFiles ]]; then
36+ echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
37+ echo "The offending files:"
38+ echo "$badFiles"
39+ exit 1
40+ fi
41+42+ # TODO: Upstream into nixpkgs-vet, see:
43+ # https://github.com/NixOS/nixpkgs-vet/issues/166
44+ conflictingPaths=$(find ${filtered head} | awk '{ print $1 " " tolower($1) }' | sort -k2 | uniq -D -f 1 | cut -d ' ' -f 1)
45+ if [[ -n $conflictingPaths ]]; then
46+ echo "Files in nixpkgs must not vary only by case."
47+ echo "The offending paths:"
48+ echo "$conflictingPaths"
49+ exit 1
50+ fi
51+52 touch $out
53 ''
+1
doc/release-notes/rl-2511.section.md
···1718- `base16-builder` node package has been removed due to lack of upstream maintenance.
19- `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier.
02021## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes}
22
···1718- `base16-builder` node package has been removed due to lack of upstream maintenance.
19- `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier.
20+- `space-orbit` package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011.
2122## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes}
23
···3637- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
380039- `renovate` was updated to v40. See the [upstream release notes](https://github.com/renovatebot/renovate/releases/tag/40.0.0) for breaking changes.
4041- The `boot.readOnlyNixStore` has been removed. Control over bind mount options on `/nix/store` is now offered by the `boot.nixStoreMountOpts` option.
···3637- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
3839+- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
40+41- `renovate` was updated to v40. See the [upstream release notes](https://github.com/renovatebot/renovate/releases/tag/40.0.0) for breaking changes.
4243- The `boot.readOnlyNixStore` has been removed. Control over bind mount options on `/nix/store` is now offered by the `boot.nixStoreMountOpts` option.
···223 "services"
224 "shout"
225 ] "shout was removed because it was deprecated upstream in favor of thelounge.")
00000226 (mkRemovedOptionModule [ "services" "ssmtp" ] ''
227 The ssmtp package and the corresponding module have been removed due to
228 the program being unmaintained. The options `programs.msmtp.*` can be
···223 "services"
224 "shout"
225 ] "shout was removed because it was deprecated upstream in favor of thelounge.")
226+ (mkRemovedOptionModule [ "services" "siproxd" ] ''
227+ The siproxd package and the corresponding module have been removed due to
228+ the service being unmaintained. `services.asterisk.*` or `services.freeswitch.*`
229+ could be used instead.
230+ '')
231 (mkRemovedOptionModule [ "services" "ssmtp" ] ''
232 The ssmtp package and the corresponding module have been removed due to
233 the program being unmaintained. The options `programs.msmtp.*` can be
-196
nixos/modules/services/misc/siproxd.nix
···1-{
2- config,
3- lib,
4- pkgs,
5- ...
6-}:
7-let
8-9- cfg = config.services.siproxd;
10-11- conf = ''
12- daemonize = 0
13- rtp_proxy_enable = 1
14- user = siproxd
15- if_inbound = ${cfg.ifInbound}
16- if_outbound = ${cfg.ifOutbound}
17- sip_listen_port = ${toString cfg.sipListenPort}
18- rtp_port_low = ${toString cfg.rtpPortLow}
19- rtp_port_high = ${toString cfg.rtpPortHigh}
20- rtp_dscp = ${toString cfg.rtpDscp}
21- sip_dscp = ${toString cfg.sipDscp}
22- ${lib.optionalString (
23- cfg.hostsAllowReg != [ ]
24- ) "hosts_allow_reg = ${lib.concatStringsSep "," cfg.hostsAllowReg}"}
25- ${lib.optionalString (
26- cfg.hostsAllowSip != [ ]
27- ) "hosts_allow_sip = ${lib.concatStringsSep "," cfg.hostsAllowSip}"}
28- ${lib.optionalString (
29- cfg.hostsDenySip != [ ]
30- ) "hosts_deny_sip = ${lib.concatStringsSep "," cfg.hostsDenySip}"}
31- ${lib.optionalString (cfg.passwordFile != "") "proxy_auth_pwfile = ${cfg.passwordFile}"}
32- ${cfg.extraConfig}
33- '';
34-35- confFile = builtins.toFile "siproxd.conf" conf;
36-37-in
38-{
39- ##### interface
40-41- options = {
42-43- services.siproxd = {
44-45- enable = lib.mkOption {
46- type = lib.types.bool;
47- default = false;
48- description = ''
49- Whether to enable the Siproxd SIP
50- proxy/masquerading daemon.
51- '';
52- };
53-54- ifInbound = lib.mkOption {
55- type = lib.types.str;
56- example = "eth0";
57- description = "Local network interface";
58- };
59-60- ifOutbound = lib.mkOption {
61- type = lib.types.str;
62- example = "ppp0";
63- description = "Public network interface";
64- };
65-66- hostsAllowReg = lib.mkOption {
67- type = lib.types.listOf lib.types.str;
68- default = [ ];
69- example = [
70- "192.168.1.0/24"
71- "192.168.2.0/24"
72- ];
73- description = ''
74- Access control list for incoming SIP registrations.
75- '';
76- };
77-78- hostsAllowSip = lib.mkOption {
79- type = lib.types.listOf lib.types.str;
80- default = [ ];
81- example = [
82- "123.45.0.0/16"
83- "123.46.0.0/16"
84- ];
85- description = ''
86- Access control list for incoming SIP traffic.
87- '';
88- };
89-90- hostsDenySip = lib.mkOption {
91- type = lib.types.listOf lib.types.str;
92- default = [ ];
93- example = [
94- "10.0.0.0/8"
95- "11.0.0.0/8"
96- ];
97- description = ''
98- Access control list for denying incoming
99- SIP registrations and traffic.
100- '';
101- };
102-103- sipListenPort = lib.mkOption {
104- type = lib.types.int;
105- default = 5060;
106- description = ''
107- Port to listen for incoming SIP messages.
108- '';
109- };
110-111- rtpPortLow = lib.mkOption {
112- type = lib.types.int;
113- default = 7070;
114- description = ''
115- Bottom of UDP port range for incoming and outgoing RTP traffic
116- '';
117- };
118-119- rtpPortHigh = lib.mkOption {
120- type = lib.types.int;
121- default = 7089;
122- description = ''
123- Top of UDP port range for incoming and outgoing RTP traffic
124- '';
125- };
126-127- rtpTimeout = lib.mkOption {
128- type = lib.types.int;
129- default = 300;
130- description = ''
131- Timeout for an RTP stream. If for the specified
132- number of seconds no data is relayed on an active
133- stream, it is considered dead and will be killed.
134- '';
135- };
136-137- rtpDscp = lib.mkOption {
138- type = lib.types.int;
139- default = 46;
140- description = ''
141- DSCP (differentiated services) value to be assigned
142- to RTP packets. Allows QOS aware routers to handle
143- different types traffic with different priorities.
144- '';
145- };
146-147- sipDscp = lib.mkOption {
148- type = lib.types.int;
149- default = 0;
150- description = ''
151- DSCP (differentiated services) value to be assigned
152- to SIP packets. Allows QOS aware routers to handle
153- different types traffic with different priorities.
154- '';
155- };
156-157- passwordFile = lib.mkOption {
158- type = lib.types.str;
159- default = "";
160- description = ''
161- Path to per-user password file.
162- '';
163- };
164-165- extraConfig = lib.mkOption {
166- type = lib.types.lines;
167- default = "";
168- description = ''
169- Extra configuration to add to siproxd configuration.
170- '';
171- };
172-173- };
174-175- };
176-177- ##### implementation
178-179- config = lib.mkIf cfg.enable {
180-181- users.users.siproxyd = {
182- uid = config.ids.uids.siproxd;
183- };
184-185- systemd.services.siproxd = {
186- description = "SIP proxy/masquerading daemon";
187- wantedBy = [ "multi-user.target" ];
188- after = [ "network.target" ];
189- serviceConfig = {
190- ExecStart = "${pkgs.siproxd}/sbin/siproxd -c ${confFile}";
191- };
192- };
193-194- };
195-196-}
···71 };
7273 patches = [
00074 # Upstream C++ wrap script only defines fixed-sized integers on macOS but
75 # this is required on aarch64-linux too.
76 ./fix-cpp-build.patch
77 ];
7879 postPatch = ''
80- substituteInPlace Makerules --replace "(shell pkg-config" "(shell $PKG_CONFIG"
8182 patchShebangs scripts/mupdfwrap.py
83···8687 # fix libclang unnamed struct format
88 for wrapper in ./scripts/wrap/{cpp,state}.py; do
89- substituteInPlace "$wrapper" --replace 'struct (unnamed' '(unnamed struct'
90 done
91 '';
92···259260 enableParallelBuilding = true;
261262- env.USE_SONAME = "yes";
263264 passthru = {
265 tests = {
···71 };
7273 patches = [
74+ # Upstream makefile does not work with system deps on macOS by default, so
75+ # we reuse the Linux section instead.
76+ ./fix-darwin-system-deps.patch
77 # Upstream C++ wrap script only defines fixed-sized integers on macOS but
78 # this is required on aarch64-linux too.
79 ./fix-cpp-build.patch
80 ];
8182 postPatch = ''
83+ substituteInPlace Makerules --replace-fail "(shell pkg-config" "(shell $PKG_CONFIG"
8485 patchShebangs scripts/mupdfwrap.py
86···8990 # fix libclang unnamed struct format
91 for wrapper in ./scripts/wrap/{cpp,state}.py; do
92+ substituteInPlace "$wrapper" --replace-fail 'struct (unnamed' '(unnamed struct'
93 done
94 '';
95···262263 enableParallelBuilding = true;
264265+ env.USE_SONAME = if (stdenv.hostPlatform.isDarwin) then "no" else "yes";
266267 passthru = {
268 tests = {
···3742 - lxd-client # failure in job https://hydra.nixos.org/build/233231826 at 2023-09-02
3743 - lxd-client-config # failure in job https://hydra.nixos.org/build/233225008 at 2023-09-02
3744 - lye # failure in job https://hydra.nixos.org/build/233229866 at 2023-09-02
3745- - lz4-frame-conduit # failure in job https://hydra.nixos.org/build/233225578 at 2023-09-02
3746 - lzip # failure in job https://hydra.nixos.org/build/233215027 at 2023-09-02
3747 - lzma-streams # failure in job https://hydra.nixos.org/build/233229106 at 2023-09-02
3748 - lzo # failure in job https://hydra.nixos.org/build/233200657 at 2023-09-02
···3742 - lxd-client # failure in job https://hydra.nixos.org/build/233231826 at 2023-09-02
3743 - lxd-client-config # failure in job https://hydra.nixos.org/build/233225008 at 2023-09-02
3744 - lye # failure in job https://hydra.nixos.org/build/233229866 at 2023-09-02
03745 - lzip # failure in job https://hydra.nixos.org/build/233215027 at 2023-09-02
3746 - lzma-streams # failure in job https://hydra.nixos.org/build/233229106 at 2023-09-02
3747 - lzo # failure in job https://hydra.nixos.org/build/233200657 at 2023-09-02
···1+{
2+ lib,
3+ buildDunePackage,
4+ fetchurl,
5+}:
6+buildDunePackage rec {
7+ pname = "ancient";
8+ version = "0.10.0";
9+10+ minimalOCamlVersion = "4.12";
11+12+ src = fetchurl {
13+ url = "https://github.com/OCamlPro/ocaml-ancient/releases/download/${version}/ancient-${version}.tbz";
14+ hash = "sha256-XeVUPrdg7QSV7V0Tz8Mkj5jvzKtYD9DON+tt9kkuCHM=";
15+ };
16+17+ doCheck = true;
18+19+ meta = {
20+ description = "Use data structures larger than available memory";
21+ longDescription = ''
22+ This module allows you to use in-memory data structures which are
23+ larger than available memory and so are kept in swap. If you try this
24+ in normal OCaml code, you'll find that the machine quickly descends
25+ into thrashing as the garbage collector repeatedly iterates over
26+ swapped memory structures. This module lets you break that
27+ limitation. Of course the module doesn't work by magic :-) If your
28+ program tries to access these large structures, they still need to be
29+ swapped back in, but it is suitable for large, sparsely accessed
30+ structures.
31+32+ Secondly, this module allows you to share those structures between
33+ processes. In this mode, the structures are backed by a disk file,
34+ and any process that has read/write access that disk file can map that
35+ file in and see the structures.
36+ '';
37+ homepage = "https://github.com/OCamlPro/ocaml-ancient";
38+ changelog = "https://raw.githubusercontent.com/OCamlPro/ocaml-ancient/refs/tags/${version}/CHANGES.md";
39+ license = lib.licenses.lgpl21Plus;
40+ maintainers = with lib.maintainers; [ momeemt ];
41+ };
42+}
···67buildDunePackage rec {
8 pname = "benchmark";
9+ version = "1.7";
10+11+ minimalOCamlVersion = "4.03";
1213 src = fetchurl {
14+ url = "https://github.com/Chris00/ocaml-benchmark/releases/download/v${version}/benchmark-${version}.tbz";
15+ hash = "sha256-Aij7vJzamNWQfjLeGgENlIp6Il8+Wc9hsahr4eDGs68=";
16 };
1718 meta = {
19 homepage = "https://github.com/Chris00/ocaml-benchmark";
20 description = "Benchmark running times of code";
21+ longDescription = ''
22+ This module provides a set of tools to measure the running times of
23+ your functions and to easily compare the results. A statistical test
24+ is used to determine whether the results truly differ.
25+ '';
26+ changelog = "https://raw.githubusercontent.com/Chris00/ocaml-benchmark/refs/tags/v${version}/CHANGES.md";
27+ license = lib.licenses.lgpl3;
28+ maintainers = with lib.maintainers; [ momeemt ];
29 };
30}
···1690 riko4 = throw "'riko4' has been removed as it was unmaintained, failed to build and dependend on outdated libraries"; # Added 2025-05-18
1691 rippled = throw "rippled has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
1692 rippled-validator-keys-tool = throw "rippled-validator-keys-tool has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
01693 rke2_testing = throw "'rke2_testing' has been removed from nixpkgs as the RKE2 testing channel no longer serves releases"; # Added 2025-06-02
1694 rl_json = tclPackages.rl_json; # Added 2025-05-03
1695 rockbox_utility = rockbox-utility; # Added 2022-03-17
···1761 signal-desktop-source = lib.warnOnInstantiate "'signal-desktop-source' is now exposed at 'signal-desktop'." signal-desktop; # Added 2025-04-16
1762 silc_server = throw "'silc_server' has been removed because it is unmaintained"; # Added 2025-05-12
1763 silc_client = throw "'silc_client' has been removed because it is unmaintained"; # Added 2025-05-12
1764- siproxd = throw "'siproxd' has been as it was unmaintained and incompatible with newer libosip versions"; # Added 2025-05-18
1765 sheesy-cli = throw "'sheesy-cli' has been removed due to lack of upstream maintenance"; # Added 2025-01-26
1766 shout = nodePackages.shout; # Added unknown; moved 2024-10-19
1767 sky = throw "'sky' has been removed because its upstream website disappeared"; # Added 2024-07-21
···1781 SP800-90B_EntropyAssessment = sp800-90b-entropyassessment; # Added on 2024-06-12
1782 SPAdes = spades; # Added 2024-06-12
1783 spark2014 = gnatprove; # Added 2024-02-25
01784 spatialite_gui = throw "spatialite_gui has been renamed to spatialite-gui"; # Added 2025-01-12
1785 spatialite_tools = throw "spatialite_tools has been renamed to spatialite-tools"; # Added 2025-02-06
1786
···1690 riko4 = throw "'riko4' has been removed as it was unmaintained, failed to build and dependend on outdated libraries"; # Added 2025-05-18
1691 rippled = throw "rippled has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
1692 rippled-validator-keys-tool = throw "rippled-validator-keys-tool has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
1693+ rke2_1_29 = throw "'rke2_1_29' has been removed from nixpkgs as it has reached end of life"; # Added 2025-05-05
1694 rke2_testing = throw "'rke2_testing' has been removed from nixpkgs as the RKE2 testing channel no longer serves releases"; # Added 2025-06-02
1695 rl_json = tclPackages.rl_json; # Added 2025-05-03
1696 rockbox_utility = rockbox-utility; # Added 2022-03-17
···1762 signal-desktop-source = lib.warnOnInstantiate "'signal-desktop-source' is now exposed at 'signal-desktop'." signal-desktop; # Added 2025-04-16
1763 silc_server = throw "'silc_server' has been removed because it is unmaintained"; # Added 2025-05-12
1764 silc_client = throw "'silc_client' has been removed because it is unmaintained"; # Added 2025-05-12
1765+ siproxd = throw "'siproxd' has been removed as it was unmaintained and incompatible with newer libosip versions"; # Added 2025-05-18
1766 sheesy-cli = throw "'sheesy-cli' has been removed due to lack of upstream maintenance"; # Added 2025-01-26
1767 shout = nodePackages.shout; # Added unknown; moved 2024-10-19
1768 sky = throw "'sky' has been removed because its upstream website disappeared"; # Added 2024-07-21
···1782 SP800-90B_EntropyAssessment = sp800-90b-entropyassessment; # Added on 2024-06-12
1783 SPAdes = spades; # Added 2024-06-12
1784 spark2014 = gnatprove; # Added 2024-02-25
1785+ space-orbit = throw "'space-orbit' has been removed because it is unmaintained; Debian upstream stopped tracking it in 2011."; # Added 2025-06-08
1786 spatialite_gui = throw "spatialite_gui has been renamed to spatialite-gui"; # Added 2025-01-12
1787 spatialite_tools = throw "spatialite_tools has been renamed to spatialite-tools"; # Added 2025-02-06
1788