···107107108108- The `dovecot` systemd service was renamed from `dovecot2` to `dovecot`. The former is now just an alias. Update any overrides on the systemd unit to the new name.
109109110110+- `Prosody` has been updated to major release 13 which removed some obsoleted modules and brought a couple of major and breaking changes:
111111+ - The `http_files` module is now disabled by default because it now requires `http_files_dir` to be configured.
112112+ - The `vcard_muc` module has been removed and got replaced by the inbuilt `muc_vcard` module.
113113+ - The `http_upload` module has been removed and you must migrate to the `http_file_share` module to stay XEP-0423 compliant. The `httpFileShare` options got expanded to better facility that.
114114+ - The `admin_shell` module is now always being loaded to make `prosodyctl` functional.
115115+ - The `mime_types_file` setting is now set to `"${pkgs.mailcap}/etc/mime.types"` to prevent errors.
116116+ For a complete list of changes, please see [their announcement](https://blog.prosody.im/prosody-13.0.0-released/).
117117+110118- The `yeahwm` package and `services.xserver.windowManager.yeahwm` module were removed due to the package being broken and unmaintained upstream.
111119112120- The `services.postgresql` module now sets up a systemd unit `postgresql.target`. Depending on `postgresql.target` guarantees that postgres is in read-write mode and initial/ensure scripts were executed. Depending on `postgresql.service` only guarantees a read-only connection.
+88-102
nixos/modules/services/networking/prosody.nix
···182182183183 http_files = mkOption {
184184 type = types.bool;
185185- default = true;
185185+ default = false;
186186 description = "Serve static files from a directory over HTTP";
187187 };
188188···369369 kick other. Useful in jitsi-meet to kick ghosts.
370370 '';
371371 };
372372- vcard_muc = mkOption {
373373- type = types.bool;
374374- default = true;
375375- description = "Adds the ability to set vCard for Multi User Chat rooms";
376376- };
377372378373 # Extra parameters. Defaulting to prosody default values.
379374 # Adding them explicitly to make them visible from the options
···423418 };
424419 };
425420426426- uploadHttpOpts = _: {
427427- options = {
428428- domain = mkOption {
429429- type = types.nullOr types.str;
430430- description = "Domain name for the http-upload service";
431431- };
432432- uploadFileSizeLimit = mkOption {
433433- type = types.str;
434434- default = "50 * 1024 * 1024";
435435- description = "Maximum file size, in bytes. Defaults to 50MB.";
436436- };
437437- uploadExpireAfter = mkOption {
438438- type = types.str;
439439- default = "60 * 60 * 24 * 7";
440440- description = "Max age of a file before it gets deleted, in seconds.";
441441- };
442442- userQuota = mkOption {
443443- type = types.nullOr types.int;
444444- default = null;
445445- example = 1234;
446446- description = ''
447447- Maximum size of all uploaded files per user, in bytes. There
448448- will be no quota if this option is set to null.
449449- '';
450450- };
451451- httpUploadPath = mkOption {
452452- type = types.str;
453453- description = ''
454454- Directory where the uploaded files will be stored when the http_upload module is used.
455455- By default, uploaded files are put in a sub-directory of the default Prosody storage path (usually /var/lib/prosody).
456456- '';
457457- default = "/var/lib/prosody";
458458- };
459459- };
460460- };
461461-462462- httpFileShareOpts = _: {
463463- freeformType =
464464- with types;
465465- let
466466- atom = oneOf [
467467- int
468468- bool
469469- str
470470- (listOf atom)
471471- ];
472472- in
473473- attrsOf (nullOr atom)
474474- // {
475475- description = "int, bool, string or list of them";
421421+ httpFileShareOpts =
422422+ { config, options, ... }:
423423+ {
424424+ freeformType =
425425+ with types;
426426+ let
427427+ atom = oneOf [
428428+ int
429429+ bool
430430+ str
431431+ (listOf atom)
432432+ ];
433433+ in
434434+ attrsOf (nullOr atom)
435435+ // {
436436+ description = "int, bool, string or list of them";
437437+ };
438438+ options = {
439439+ domain = mkOption {
440440+ type = with types; nullOr str;
441441+ description = "Domain name for a http_file_share service.";
442442+ };
443443+ http_host = mkOption {
444444+ type = types.nullOr types.str;
445445+ default = null;
446446+ description = ''
447447+ To avoid an additional DNS record and certificate, you may set this option to your primary domain (e.g. "example.com")
448448+ or use a reverse proxy to handle the HTTP for that domain.
449449+ '';
450450+ };
451451+ size_limit = mkOption {
452452+ type = types.int;
453453+ default = 10 * 1024 * 1024;
454454+ defaultText = "10 * 1024 * 1024";
455455+ description = "Maximum file size, in bytes.";
456456+ };
457457+ expires_after = mkOption {
458458+ type = types.str;
459459+ default = "1 week";
460460+ description = "Max age of a file before it gets deleted.";
461461+ };
462462+ daily_quota = mkOption {
463463+ type = types.nullOr types.int;
464464+ default = 10 * config.size_limit;
465465+ defaultText = lib.literalExpression "10 * ${options.size_limit}";
466466+ example = "100*1024*1024";
467467+ description = ''
468468+ Maximum size of daily uploaded files per user, in bytes.
469469+ '';
470470+ };
476471 };
477477- options.domain = mkOption {
478478- type = with types; nullOr str;
479479- description = "Domain name for a http_file_share service.";
480472 };
481481- };
482473483474 vHostOpts = _: {
484475 options = {
···510501511502 configFile =
512503 let
513513- httpDiscoItems =
514514- optional (cfg.uploadHttp != null) {
515515- url = cfg.uploadHttp.domain;
516516- description = "HTTP upload endpoint";
517517- }
518518- ++ optional (cfg.httpFileShare != null) {
519519- url = cfg.httpFileShare.domain;
520520- description = "HTTP file share endpoint";
521521- };
504504+ httpDiscoItems = optional (cfg.httpFileShare != null) {
505505+ url = cfg.httpFileShare.domain;
506506+ description = "HTTP file share endpoint";
507507+ };
522508 mucDiscoItems = builtins.foldl' (
523509 acc: muc:
524510 [
···546532 admins = ${toLua cfg.admins}
547533548534 modules_enabled = {
549549-535535+ "admin_shell"; -- for prosodyctl
550536 ${lib.concatStringsSep "\n " (
551537 lib.mapAttrsToList (name: val: optionalString val "${toLua name};") cfg.modules
552538 )}
···575561 http_ports = ${toLua cfg.httpPorts}
576562 https_ports = ${toLua cfg.httpsPorts}
577563564564+ mime_types_file = "${pkgs.mailcap}/etc/mime.types"
565565+578566 ${cfg.extraConfig}
579567580568 ${lib.concatMapStrings (muc: ''
581569 Component ${toLua muc.domain} "muc"
582582- modules_enabled = { "muc_mam"; ${optionalString muc.vcard_muc ''"vcard_muc";''} ${optionalString muc.allowners_muc ''"muc_allowners";''} }
570570+ modules_enabled = {${optionalString cfg.modules.mam ''" muc_mam",''}${optionalString muc.allowners_muc ''" muc_allowners",''} }
583571 name = ${toLua muc.name}
584572 restrict_room_creation = ${toLua muc.restrictRoomCreation}
585573 max_history_messages = ${toLua muc.maxHistoryMessages}
···597585 ${muc.extraConfig}
598586 '') cfg.muc}
599587600600- ${lib.optionalString (cfg.uploadHttp != null) ''
601601- Component ${toLua cfg.uploadHttp.domain} "http_upload"
602602- http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
603603- http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
604604- ${lib.optionalString (
605605- cfg.uploadHttp.userQuota != null
606606- ) "http_upload_quota = ${toLua cfg.uploadHttp.userQuota}"}
607607- http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath}
608608- ''}
609609-610610- ${lib.optionalString (cfg.httpFileShare != null) ''
611611- Component ${toLua cfg.httpFileShare.domain} "http_file_share"
612612- ${settingsToLua " http_file_share_" (cfg.httpFileShare // { domain = null; })}
613613- ''}
588588+ ${
589589+ lib.optionalString (cfg.httpFileShare != null) ''
590590+ Component ${toLua cfg.httpFileShare.domain} "http_file_share"
591591+ modules_disabled = { "s2s" }
592592+ ''
593593+ + lib.optionalString (cfg.httpFileShare.http_host != null) ''
594594+ http_host = "${cfg.httpFileShare.http_host}"
595595+ ''
596596+ + ''
597597+ ${settingsToLua " http_file_share_" (cfg.httpFileShare // { domain = null; })}
598598+ ''
599599+ }
614600615601 ${lib.concatStringsSep "\n" (
616602 lib.mapAttrsToList (n: v: ''
···621607 '') cfg.virtualHosts
622608 )}
623609 '';
624624-625610in
626611{
627612 options = {
···817802 description = "Additional path in which to look find plugins/modules";
818803 };
819804820820- uploadHttp = mkOption {
821821- description = ''
822822- Configures the old Prosody builtin HTTP server to handle user uploads.
823823- '';
824824- type = types.nullOr (types.submodule uploadHttpOpts);
825825- default = null;
826826- example = {
827827- domain = "uploads.my-xmpp-example-host.org";
828828- };
829829- };
830830-831805 httpFileShare = mkOption {
832806 description = ''
833807 Configures the http_file_share module to handle user uploads.
808808+809809+ See <https://prosody.im/doc/modules/mod_http_file_share> for a full list of options.
834810 '';
835811 type = types.nullOr (types.submodule httpFileShareOpts);
836812 default = null;
···919895 };
920896 };
921897898898+ imports = [
899899+ (lib.mkRemovedOptionModule [ "services" "prosody" "uploadHttp" ]
900900+ "mod_http_upload has been obsoloted and been replaced by mod_http_file_share which can be configured with httpFileShare options."
901901+ )
902902+ ];
903903+922904 config = mkIf cfg.enable {
923905 assertions =
924906 let
···941923 + genericErrMsg;
942924 }
943925 {
944944- assertion = cfg.uploadHttp != null || cfg.httpFileShare != null || !cfg.xmppComplianceSuite;
926926+ assertion = cfg.httpFileShare != null || !cfg.xmppComplianceSuite;
945927 message = ''
946946- You need to setup the http_upload or http_file_share modules through config.services.prosody.uploadHttp
947947- or config.services.prosody.httpFileShare to comply with XEP-0423.
928928+ You need to setup http_file_share modules through config.services.prosody.httpFileShare to comply with XEP-0423.
948929 ''
949930 + genericErrMsg;
950931 }
···953934 errors;
954935955936 environment.systemPackages = [ cfg.package ];
937937+938938+ # prevent error if not all certs are configured by the user
939939+ environment.etc."prosody/certs/.dummy".text = "";
956940957941 environment.etc."prosody/prosody.cfg.lua".source =
958942 if cfg.checkConfig then
···993977 {
994978 User = cfg.user;
995979 Group = cfg.group;
996996- Type = "forking";
980980+ Type = "simple";
997981 RuntimeDirectory = [ "prosody" ];
998982 PIDFile = "/run/prosody/prosody.pid";
999999- ExecStart = "${cfg.package}/bin/prosodyctl start";
983983+ ExecStart = "${lib.getExe cfg.package} -F";
1000984 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
985985+ Restart = "on-abnormal";
1001986987987+ AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
1002988 MemoryDenyWriteExecute = true;
1003989 PrivateDevices = true;
1004990 PrivateMounts = true;
+6-44
nixos/tests/paretosecurity.nix
···88 {
99 imports = [ ./common/user-account.nix ];
10101111- networking.firewall.enable = true;
1212- services.paretosecurity = {
1313- enable = true;
1414-1515- # Create a patched version of the package that points to the local dashboard
1616- # for easier testing
1717- package = pkgs.paretosecurity.overrideAttrs (oldAttrs: {
1818- postPatch = oldAttrs.postPatch or "" + ''
1919- substituteInPlace team/report.go \
2020- --replace-warn 'const reportURL = "https://cloud.paretosecurity.com"' \
2121- 'const reportURL = "http://cloud"'
2222- '';
2323- });
2424- };
1111+ services.paretosecurity.enable = true;
25122613 };
27142828- nodes.cloud = {
2929- networking.firewall.allowedTCPPorts = [ 80 ];
3030-3131- services.nginx = {
3232- enable = true;
3333- virtualHosts."cloud" = {
3434- locations."/api/v1/team/".extraConfig = ''
3535- add_header Content-Type application/json;
3636- return 200 '{"message": "Linked device."}';
3737- '';
3838- };
3939- };
4040- };
4141-4215 nodes.xfce =
4316 { pkgs, ... }:
4417 {
···7043 testScript = ''
7144 # Test setup
7245 terminal.succeed("su - alice -c 'mkdir -p /home/alice/.config'")
7373- for m in [terminal, cloud]:
7474- m.systemctl("start network-online.target")
7575- m.wait_for_unit("network-online.target")
4646+ terminal.systemctl("start network-online.target")
4747+ terminal.wait_for_unit("network-online.target")
76487749 # Test 1: Test the systemd socket is installed & enabled
7850 terminal.succeed('systemctl is-enabled paretosecurity.socket')
···9163 + "'"
9264 )
93659494- # Test 3: Test linking
9595- terminal.succeed("su - alice -c 'paretosecurity link"
9696- + " paretosecurity://enrollTeam/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."
9797- + "eyJ0b2tlbiI6ImR1bW15LXRva2VuIiwidGVhbUlEIjoiZHVtbXktdGVhbS1pZCIsImlhdCI6"
9898- + "MTcwMDAwMDAwMCwiZXhwIjoxOTAwMDAwMDAwfQ.WgnL6_S0EBJHwF1wEVUG8GtIcoVvK5IjWbZpUeZr4Qw'")
9999-100100- config = terminal.succeed("cat /home/alice/.config/pareto.toml")
101101- assert 'AuthToken = "dummy-token"' in config
102102- assert 'TeamID = "dummy-team-id"' in config
103103-104104- # Test 4: Test the tray icon
6666+ # Test 3: Test the tray icon
10567 xfce.wait_for_x()
10668 for unit in [
10769 'paretosecurity-trayicon',
···11577 xfce.succeed("xdotool click 1")
11678 xfce.wait_for_text("Run Checks")
11779118118- # Test 5: Desktop entry
8080+ # Test 4: Desktop entry
11981 xfce.succeed("xdotool mousemove 10 10")
12082 xfce.succeed("xdotool click 1") # hide the tray icon window
12183 xfce.succeed("xdotool click 1") # show the Applications menu
···12385 xfce.succeed("xdotool click 1")
12486 xfce.wait_for_text("Pareto Security")
12587126126- # Test 6: paretosecurity:// URL handler is registered
8888+ # Test 5: paretosecurity:// URL handler is registered
12789 xfce.succeed("su - alice -c 'xdg-open paretosecurity://foo'")
12890 '';
12991}
+25-37
nixos/tests/xmpp/prosody.nix
···22 cert =
33 pkgs:
44 pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
55- openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=uploads.example.com/CN=conference.example.com' -days 36500
55+ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 \
66+ -subj '/C=GB/CN=example.com' -addext "subjectAltName = DNS:example.com,DNS:uploads.example.com,DNS:conference.example.com"
67 mkdir -p $out
78 cp key.pem cert.pem $out
89 '';
1010+1111+ # Creates and set password for the 2 xmpp test users.
1212+ #
1313+ # Doing that in a bash script instead of doing that in the test
1414+ # script allow us to easily provision the users when running that
1515+ # test interactively.
916 createUsers =
1017 pkgs:
1111- pkgs.writeScriptBin "create-prosody-users" ''
1212- #!${pkgs.bash}/bin/bash
1818+ pkgs.writeShellScriptBin "create-prosody-users" ''
1319 set -e
1414-1515- # Creates and set password for the 2 xmpp test users.
1616- #
1717- # Doing that in a bash script instead of doing that in the test
1818- # script allow us to easily provision the users when running that
1919- # test interactively.
2020-2120 prosodyctl register cthon98 example.com nothunter2
2221 prosodyctl register azurediamond example.com hunter2
2322 '';
2323+ # Deletes the test users.
2424 delUsers =
2525 pkgs:
2626- pkgs.writeScriptBin "delete-prosody-users" ''
2727- #!${pkgs.bash}/bin/bash
2626+ pkgs.writeShellScriptBin "delete-prosody-users" ''
2827 set -e
2929-3030- # Deletes the test users.
3131- #
3232- # Doing that in a bash script instead of doing that in the test
3333- # script allow us to easily provision the users when running that
3434- # test interactively.
3535-3628 prosodyctl deluser cthon98@example.com
3729 prosodyctl deluser azurediamond@example.com
3830 '';
···4436 {
4537 nodes,
4638 pkgs,
4747- config,
4839 ...
4940 }:
5041 {
5142 security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
5252- console.keyMap = "fr-bepo";
5343 networking.extraHosts = ''
5454- ${nodes.server.config.networking.primaryIPAddress} example.com
5555- ${nodes.server.config.networking.primaryIPAddress} conference.example.com
5656- ${nodes.server.config.networking.primaryIPAddress} uploads.example.com
4444+ ${nodes.server.networking.primaryIPAddress} example.com
4545+ ${nodes.server.networking.primaryIPAddress} conference.example.com
4646+ ${nodes.server.networking.primaryIPAddress} uploads.example.com
5747 '';
5848 environment.systemPackages = [
5949 (pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = "example.com"; })
6050 ];
6151 };
5252+6253 server =
6354 { config, pkgs, ... }:
6455 {
6556 security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
6666- console.keyMap = "fr-bepo";
6757 networking.extraHosts = ''
6858 ${config.networking.primaryIPAddress} example.com
6959 ${config.networking.primaryIPAddress} conference.example.com
···8979 domain = "conference.example.com";
9080 }
9181 ];
9292- uploadHttp = {
8282+ httpFileShare = {
9383 domain = "uploads.example.com";
9484 };
9585 };
9686 };
9787 };
98889999- testScript =
100100- { nodes, ... }:
101101- ''
102102- # Check with sqlite storage
103103- start_all()
104104- server.wait_for_unit("prosody.service")
105105- server.succeed('prosodyctl status | grep "Prosody is running"')
8989+ testScript = _: ''
9090+ # Check with sqlite storage
9191+ start_all()
9292+ server.wait_for_unit("prosody.service")
9393+ server.succeed('prosodyctl status | grep "Prosody is running"')
10694107107- server.succeed("create-prosody-users")
108108- client.succeed("send-message")
109109- server.succeed("delete-prosody-users")
110110- '';
9595+ server.succeed("create-prosody-users")
9696+ client.succeed("send-message")
9797+ server.succeed("delete-prosody-users")
9898+ '';
11199}
···393393 ];
394394 };
395395396396+ checkmate-nvim = super.checkmate-nvim.overrideAttrs {
397397+ checkInputs = with self; [
398398+ # checkmate.snippets
399399+ luasnip
400400+ ];
401401+ };
402402+396403 clang_complete = super.clang_complete.overrideAttrs {
397404 # In addition to the arguments you pass to your compiler, you also need to
398405 # specify the path of the C++ std header (if you are using C++).
···2121 runHook postInstall
2222 '';
23232424- meta = with lib; {
2424+ meta = {
2525 description = "Japanese font package with Mincho and Gothic fonts";
2626 longDescription = ''
2727 IPAex font is a Japanese font developed by the Information-technology
···3131 This is the successor to the IPA fonts.
3232 '';
3333 homepage = "https://moji.or.jp/ipafont/";
3434- license = licenses.ipa;
3535- maintainers = with maintainers; [ ];
3434+ license = lib.licenses.ipa;
3535+ maintainers = with lib.maintainers; [ stephen-huan ];
3636 };
3737}
···55}:
66rustPlatform.buildRustPackage (finalAttrs: {
77 pname = "zeekstd";
88- version = "0.4.0";
88+ version = "0.4.1";
991010 src = fetchFromGitHub {
1111 owner = "rorosen";
1212 repo = "zeekstd";
1313 tag = "v${finalAttrs.version}-cli";
1414- hash = "sha256-ulbmqkayIyzt4Wcb5Qfm2jamuTFkqxt6jAvLedLn0k8=";
1414+ hash = "sha256-vvFBMDzypiAaLT5R6RTXJQZQhNCuiG3PxMEPmmPd7/I=";
1515 };
16161717- cargoHash = "sha256-d4h2oAd+Posk8TzwNZVB6cSDN/wCIjPTanV9+8tf2iY=";
1717+ cargoHash = "sha256-z1y12v71jxo8z3sZOAkSNvgBvexUGu0Z43HHxLCHSjg=";
18181919 meta = {
2020 description = "CLI tool that works with the zstd seekable format";
+13-3
pkgs/development/beam-modules/build-mix.nix
···2525 meta ? { },
2626 enableDebugInfo ? false,
2727 mixEnv ? "prod",
2828+ removeConfig ? true,
2829 # A config directory that is considered for all the dependencies of an app, typically in $src/config/
2930 # This was initially added, as some of Mobilizon's dependencies need to access the config at build time.
3031 appConfigPath ? null,
3132 ...
3233}@attrs:
3434+3535+assert appConfigPath != null -> removeConfig;
33363437let
3538 shell =
···7982 runHook preConfigure
80838184 ${./mix-configure-hook.sh}
8585+ ${lib.optionalString (removeConfig && isNull appConfigPath)
8686+ # By default, we don't want to include whatever config a dependency brings; per
8787+ # https://hexdocs.pm/elixir/main/Config.html, config is application specific.
8888+ ''
8989+ rm -rf config
9090+ mkdir config
9191+ ''
9292+ }
8293 ${lib.optionalString (!isNull appConfigPath)
8383- # Due to https://hexdocs.pm/elixir/main/Config.html the config directory
8484- # of a library seems to be not considered, as config is always
8585- # application specific. So we can safely delete it.
9494+ # Some more tightly-coupled dependencies do depend on the config of the application
9595+ # they're being built for.
8696 ''
8797 rm -rf config
8898 cp -r ${appConfigPath} config
···476476 # find_isa
477477 "x86_64-darwin"
478478 ];
479479+ # ValueError: 'aimv2' is already used by a Transformers config, pick another name.
480480+ # Version bump ongoing in https://github.com/NixOS/nixpkgs/pull/429117
481481+ broken = true;
479482 };
480483}
···3535 ++ withExtraLuaPackages p
3636 );
3737in
3838-stdenv.mkDerivation rec {
3939- version = "0.12.5"; # also update communityModules
3838+stdenv.mkDerivation (finalAttrs: {
4039 pname = "prosody";
4040+ version = "13.0.2"; # also update communityModules
4141+4242+ src = fetchurl {
4343+ url = "https://prosody.im/downloads/source/prosody-${finalAttrs.version}.tar.gz";
4444+ hash = "sha256-PmG9OW83ylJF3r/WvkmkemGRMy8Pqi1O5fAPuwQK3bA=";
4545+ };
4646+4147 # The following community modules are necessary for the nixos module
4248 # prosody module to comply with XEP-0423 and provide a working
4349 # default setup.
4450 nixosModuleDeps = [
4551 "cloud_notify"
4646- "vcard_muc"
4747- "http_upload"
4852 ];
4949- src = fetchurl {
5050- url = "https://prosody.im/downloads/source/${pname}-${version}.tar.gz";
5151- sha256 = "sha256-d4+3cHoPEDmVlbp6ucZt0qIojArjp/5Kt4+X1GK9OZ8=";
5252- };
53535454 # A note to all those merging automated updates: Please also update this
5555 # attribute as some modules might not be compatible with a newer prosody
5656 # version.
5757 communityModules = fetchhg {
5858 url = "https://hg.prosody.im/prosody-modules";
5959- rev = "fc521fb5ffa0";
6060- hash = "sha256-Ci52Xkx1xd3GW9lBPKgWFBB52SocxKyj8f/Hq3hZeak=";
5959+ rev = "a4d7fefa4a8b";
6060+ hash = "sha256-lPxKZlIVyAt1Nx+PQ0ru0qihJ1ecBbvO0fMk+5D+NzE=";
6161 };
62626363 nativeBuildInputs = [ makeWrapper ];
6464+6465 buildInputs = [
6566 luaEnv
6667 libidn
···7778 "--c-compiler=${stdenv.cc.targetPrefix}cc"
7879 "--linker=${stdenv.cc.targetPrefix}cc"
7980 ];
8181+8082 configurePlatforms = [ ];
81838284 postBuild = ''
···9395 postInstall = ''
9496 ${lib.concatMapStringsSep "\n"
9597 (module: ''
9696- cp -r $communityModules/mod_${module} $out/lib/prosody/modules/
9898+ cp -r ${finalAttrs.communityModules}/mod_${module} $out/lib/prosody/modules/
9799 '')
9898- (lib.lists.unique (nixosModuleDeps ++ withCommunityModules ++ withOnlyInstalledCommunityModules))
100100+ (
101101+ lib.lists.unique (
102102+ finalAttrs.nixosModuleDeps ++ withCommunityModules ++ withOnlyInstalledCommunityModules
103103+ )
104104+ )
99105 }
100106 make -C tools/migration install
101107 '';
···110116 license = licenses.mit;
111117 homepage = "https://prosody.im";
112118 platforms = platforms.linux;
113113- maintainers = with maintainers; [ toastal ];
119119+ mainProgram = "prosody";
120120+ maintainers = with maintainers; [
121121+ toastal
122122+ mirror230469
123123+ ];
124124+ teams = with lib.teams; [ c3d2 ];
114125 };
115115-}
126126+})
+1
pkgs/top-level/aliases.nix
···12791279 mathematica9 = throw "mathematica9 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
12801280 mathematica10 = throw "mathematica10 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
12811281 mathematica11 = throw "mathematica11 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
12821282+ mathlibtools = throw "mathlibtools has been removed as it was archived upstream in 2023"; # Added 2025-07-09
12821283 matomo_5 = matomo; # Added 2024-12-12
12831284 matomo-beta = throw "matomo-beta has been removed as it mostly just pointed to the latest matomo release, use `matomo.overrideAttrs` to access a specific beta version instead"; # Added 2025-01-15
12841285 matrique = throw "'matrique' has been renamed to/replaced by 'spectral'"; # Converted to throw 2024-10-17
···422422 mapbox = throw "mapbox has been removed because the upstream repository was archived in 2022"; # Added 2024-10-04
423423 marshmallow-enum = throw "marshmallow-enum has been removed because it was archived in 2022 and had no maintainer"; # added 2024-05-10
424424 markerlib = throw "markerlib has been removed because it's abandoned since 2013"; # added 2023-05-19
425425+ mathlibtools = throw "mathlibtools has been removed because the upstream repository was archived in 2023"; # added 2025-07-09
425426 matrix-api-async = throw "matrix-api-async has been removed as it is an old wrapper and no longer in use"; # added 2025-01-01
426427 memory_profiler = memory-profiler; # added 2023-10-09
427428 mir_eval = mir-eval; # added 2024-01-07
···735736 setuptoolsCheckHook = throw "The setuptoolsCheckHook has been removed, since the test command has been removed in setuptools 72.0."; # added 2024-08-06
736737 setuptoolsTrial = setuptools-trial; # added 2023-11-11
737738 sharkiqpy = sharkiq; # added 2022-05-21
739739+ shippai = throw "shippai has been removed because the upstream repository was archived in 2023"; # added 2025-07-09
738740 shouldbe = throw "shouldbe was removed, because it was disabled on all python version since 3.8 and last updated in 2019."; # added 2024-05-12
739741 sip_4 = sip4; # added 2024-01-07
740742 slackclient = slack-sdk; # added 2024-06-27