···18181919## Backward Incompatibilities {#sec-release-23.11-incompatibilities}20202121+- `writeTextFile` now requires `executable` to be boolean, values like `null` or `""` will now fail to evaluate.2222+2123- The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`.22242325- `python3.pkgs.fetchPypi` (and `python3Packages.fetchPypi`) has been deprecated in favor of top-level `fetchPypi`.
+14-3
nixos/modules/services/mail/public-inbox.nix
···275275 default = {};276276 description = lib.mdDoc "public inboxes";277277 type = types.submodule {278278- # Keeping in line with the tradition of unnecessarily specific types, allow users to set279279- # freeform settings either globally under the `publicinbox` section, or for specific280280- # inboxes through additional nesting.278278+ # Support both global options like `services.public-inbox.settings.publicinbox.imapserver`279279+ # and inbox specific options like `services.public-inbox.settings.publicinbox.foo.address`.281280 freeformType = with types; attrsOf (oneOf [ iniAtom (attrsOf iniAtom) ]);282281283282 options.css = mkOption {···284285 default = [];285286 description = lib.mdDoc "The local path name of a CSS file for the PSGI web interface.";286287 };288288+ options.imapserver = mkOption {289289+ type = with types; listOf str;290290+ default = [];291291+ example = [ "imap.public-inbox.org" ];292292+ description = lib.mdDoc "IMAP URLs to this public-inbox instance";293293+ };287294 options.nntpserver = mkOption {288295 type = with types; listOf str;289296 default = [];290297 example = [ "nntp://news.public-inbox.org" "nntps://news.public-inbox.org" ];291298 description = lib.mdDoc "NNTP URLs to this public-inbox instance";299299+ };300300+ options.pop3server = mkOption {301301+ type = with types; listOf str;302302+ default = [];303303+ example = [ "pop.public-inbox.org" ];304304+ description = lib.mdDoc "POP3 URLs to this public-inbox instance";292305 };293306 options.wwwlisting = mkOption {294307 type = with types; enum [ "all" "404" "match=domain" ];
+3-3
nixos/tests/public-inbox.nix
···14141515 meta.maintainers = with pkgs.lib.maintainers; [ julm ];16161717- machine = { config, pkgs, nodes, ... }: let1717+ nodes.machine = { config, pkgs, nodes, ... }: let1818 inherit (config.services) gitolite public-inbox;1919 # Git repositories paths in Gitolite.2020 # Only their baseNameOf is used for configuring public-inbox.···221221 # Delete a mail.222222 # Note that the use of an extension not listed in the addresses223223 # require to use --all224224- machine.succeed("curl -L https://machine.example.localdomain/inbox/repo1/repo1@root-1/raw | sudo -u public-inbox public-inbox-learn rm --all")225225- machine.fail("curl -L https://machine.example.localdomain/inbox/repo1/repo1@root-1/T/#u | grep 'This is a testing mail.'")224224+ machine.succeed("curl -L https://machine.${domain}/inbox/repo1/repo1@root-1/raw | sudo -u public-inbox public-inbox-learn rm --all")225225+ machine.fail("curl -L https://machine.${domain}/inbox/repo1/repo1@root-1/T/#u | grep 'This is a testing mail.'")226226 '';227227})