···76767777- `spamassassin` no longer supports the `Hashcash` module. The module needs to be removed from the `loadplugin` list if it was copied over from the default `initPreConf` option.
78787979+- `services.outline.sequelizeArguments` has been removed, as `outline` no longer executes database migrations via the `sequelize` cli.
8080+7981- The Caddy module gained a new option named `services.caddy.enableReload` which is enabled by default. It allows reloading the service instead of restarting it, if only a config file has changed. This option must be disabled if you have turned off the [Caddy admin API](https://caddyserver.com/docs/caddyfile/options#admin). If you keep this option enabled, you should consider setting [`grace_period`](https://caddyserver.com/docs/caddyfile/options#grace-period) to a non-infinite value to prevent Caddy from delaying the reload indefinitely.
80828183## Other Notable Changes {#sec-release-23.11-notable-changes}
+1-1
nixos/lib/eval-config.nix
···3131, prefix ? []
3232, lib ? import ../../lib
3333, extraModules ? let e = builtins.getEnv "NIXOS_EXTRA_MODULE_PATH";
3434- in if e == "" then [] else [(import e)]
3434+ in lib.optional (e != "") (import e)
3535}:
36363737let pkgs_ = pkgs;
···187187 sed -i "s/^as_token:.*$/$as_token/g" ${registrationFile}
188188 fi
189189 # Allow synapse access to the registration
190190- if ${getBin pkgs.glibc}/bin/getent group matrix-synapse > /dev/null; then
190190+ if ${pkgs.getent}/bin/getent group matrix-synapse > /dev/null; then
191191 chgrp matrix-synapse ${registrationFile}
192192 chmod g+r ${registrationFile}
193193 fi
+1-1
nixos/modules/services/misc/heisenbridge.nix
···137137 mv -f ${registrationFile}.new ${registrationFile}
138138139139 # Grant Synapse access to the registration
140140- if ${getBin pkgs.glibc}/bin/getent group matrix-synapse > /dev/null; then
140140+ if ${pkgs.getent}/bin/getent group matrix-synapse > /dev/null; then
141141 chgrp -v matrix-synapse ${registrationFile}
142142 chmod -v g+r ${registrationFile}
143143 fi
···5959 path = [
6060 config.networking.resolvconf.package # for configuring DNS in some configs
6161 pkgs.procps # for collecting running services (opt-in feature)
6262- pkgs.glibc # for `getent` to look up user shells
6262+ pkgs.getent # for `getent` to look up user shells
6363 pkgs.kmod # required to pass tailscale's v6nat check
6464 ];
6565 serviceConfig.Environment = [
+2-2
nixos/modules/services/search/kibana.nix
···130130131131 This defaults to the singleton list [ca] when the {option}`ca` option is defined.
132132 '';
133133- default = if cfg.elasticsearch.ca == null then [] else [ca];
133133+ default = lib.optional (cfg.elasticsearch.ca != null) ca;
134134 defaultText = literalExpression ''
135135- if config.${opt.elasticsearch.ca} == null then [ ] else [ ca ]
135135+ lib.optional (config.${opt.elasticsearch.ca} != null) ca
136136 '';
137137 type = types.listOf types.path;
138138 };
+1-1
nixos/modules/services/security/kanidm.nix
···1717 # If the new path is a prefix to some existing path, we need to filter it out
1818 filteredPaths = lib.filter (p: !lib.hasPrefix (builtins.toString newPath) (builtins.toString p)) merged;
1919 # If a prefix of the new path is already in the list, do not add it
2020- filteredNew = if hasPrefixInList filteredPaths newPath then [] else [ newPath ];
2020+ filteredNew = lib.optional (!hasPrefixInList filteredPaths newPath) newPath;
2121 in filteredPaths ++ filteredNew) [];
22222323 defaultServiceConfig = {
+5-52
nixos/modules/services/web-apps/outline.nix
···33let
44 defaultUser = "outline";
55 cfg = config.services.outline;
66+ inherit (lib) mkRemovedOptionModule;
67in
78{
99+ imports = [
1010+ (mkRemovedOptionModule [ "services" "outline" "sequelizeArguments" ] "Database migration are run agains configurated database by outline directly")
1111+ ];
812 # See here for a reference of all the options:
913 # https://github.com/outline/outline/blob/v0.67.0/.env.sample
1014 # https://github.com/outline/outline/blob/v0.67.0/app.json
···2529 # to still land in the same team. Note that this effectively makes
2630 # Outline a single-team instance.
2731 patchPhase = ${"''"}
2828- sed -i 's/const domain = parts\.length && parts\[1\];/const domain = "example.com";/g' server/routes/auth/providers/oidc.ts
3232+ sed -i 's/const domain = parts\.length && parts\[1\];/const domain = "example.com";/g' plugins/oidc/server/auth/oidc.ts
2933 ${"''"};
3034 })
3135 '';
···4852 description = lib.mdDoc ''
4953 Group under which the service should run. If this is the default value,
5054 the group will be created.
5151- '';
5252- };
5353-5454- sequelizeArguments = lib.mkOption {
5555- type = lib.types.str;
5656- default = "";
5757- example = "--env=production-ssl-disabled";
5858- description = lib.mdDoc ''
5959- Optional arguments to pass to `sequelize` calls.
6055 '';
6156 };
6257···583578 systemd.services.outline = let
584579 localRedisUrl = "redis+unix:///run/redis-outline/redis.sock";
585580 localPostgresqlUrl = "postgres://localhost/outline?host=/run/postgresql";
586586-587587- # Create an outline-sequalize wrapper (a wrapper around the wrapper) that
588588- # has the config file's path baked in. This is necessary because there is
589589- # at least two occurrences of outline calling this from its own code.
590590- sequelize = pkgs.writeShellScriptBin "outline-sequelize" ''
591591- exec ${cfg.package}/bin/outline-sequelize \
592592- --config $RUNTIME_DIRECTORY/database.json \
593593- ${cfg.sequelizeArguments} \
594594- "$@"
595595- '';
596581 in {
597582 description = "Outline wiki and knowledge base";
598583 wantedBy = [ "multi-user.target" ];
···603588 ++ lib.optional (cfg.redisUrl == "local") "redis-outline.service";
604589 path = [
605590 pkgs.openssl # Required by the preStart script
606606- sequelize
607591 ];
608592609593···687671 openssl rand -hex 32 > ${lib.escapeShellArg cfg.utilsSecretFile}
688672 fi
689673690690- # The config file is required for the sequelize CLI.
691691- ${if (cfg.databaseUrl == "local") then ''
692692- cat <<EOF > $RUNTIME_DIRECTORY/database.json
693693- {
694694- "production-ssl-disabled": {
695695- "host": "/run/postgresql",
696696- "username": null,
697697- "password": null,
698698- "dialect": "postgres"
699699- }
700700- }
701701- EOF
702702- '' else ''
703703- cat <<EOF > $RUNTIME_DIRECTORY/database.json
704704- {
705705- "production": {
706706- "use_env_variable": "DATABASE_URL",
707707- "dialect": "postgres",
708708- "dialectOptions": {
709709- "ssl": {
710710- "rejectUnauthorized": false
711711- }
712712- }
713713- },
714714- "production-ssl-disabled": {
715715- "use_env_variable": "DATABASE_URL",
716716- "dialect": "postgres"
717717- }
718718- }
719719- EOF
720720- ''}
721674 '';
722675723676 script = ''
···11111212buildPythonPackage {
1313 pname = "pylion";
1414- version = "0.5.2";
1414+ version = "0.5.3";
1515 format = "setuptools";
16161717 src = fetchFromBitbucket {
1818 owner = "dtrypogeorgos";
1919 repo = "pylion";
2020 # Version is set in setup.cfg, but not in a git tag / bitbucket release
2121- rev = "8945a7b6f1912ae6b9c705f8a2bd521101f5ba59";
2222- hash = "sha256-4AdJkoQ1hAssDUpgmARGmN+ihQqRPPOncWJ5ErQyWII=";
2121+ rev = "3e6b96b542b97107c622d66b0be0551c3bd9f948";
2222+ hash = "sha256-c0UOv2Vlv9wJ6YW+QdHinhpdaclUh3As5TDvyoRhpSI=";
2323 };
24242525 # Docs are not available online, besides the article: