diff options
author | Yt <raphael@megzari.com> | 2024-05-30 21:31:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-30 21:31:59 +0000 |
commit | 0509bb87793ad3b0fde46546d89b09e049f478c2 (patch) | |
tree | 50e25cb8a2821cd6e82a498e69a3b7da654a3269 /nixos | |
parent | 3b964ec0da493742895d2e6cf4c8751292800663 (diff) | |
parent | 0174aa1c564e30eeaab2f0f5e418f060c9009192 (diff) |
Merge pull request #315908 from pacien/nixos-stalwart-default-rocksdb
nixos/stalwart-mail: rocksdb as default storage
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2411.section.md | 4 | ||||
-rw-r--r-- | nixos/modules/services/mail/stalwart-mail.nix | 23 |
2 files changed, 21 insertions, 6 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index e50ec83fa05ea..07f7dc9142936 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -23,6 +23,10 @@ before changing the package to `pkgs.stalwart-mail` in [`services.stalwart-mail.package`](#opt-services.stalwart-mail.package). +- The `stalwart-mail` module now uses RocksDB as the default storage backend + for `stateVersion` ≥ 24.11. (It was previously using SQLite for structured + data and the filesystem for blobs). + ## Other Notable Changes {#sec-release-24.11-notable-changes} <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> diff --git a/nixos/modules/services/mail/stalwart-mail.nix b/nixos/modules/services/mail/stalwart-mail.nix index 6b0d73be8a557..477660e454b8e 100644 --- a/nixos/modules/services/mail/stalwart-mail.nix +++ b/nixos/modules/services/mail/stalwart-mail.nix @@ -7,6 +7,7 @@ let configFormat = pkgs.formats.toml { }; configFile = configFormat.generate "stalwart-mail.toml" cfg.settings; dataDir = "/var/lib/stalwart-mail"; + useLegacyStorage = versionOlder config.system.stateVersion "24.11"; in { options.services.stalwart-mail = { @@ -38,14 +39,22 @@ in { }; queue.path = mkDefault "${dataDir}/queue"; report.path = mkDefault "${dataDir}/reports"; - store.db.type = mkDefault "sqlite"; - store.db.path = mkDefault "${dataDir}/data/index.sqlite3"; - store.blob.type = mkDefault "fs"; - store.blob.path = mkDefault "${dataDir}/data/blobs"; + store = if useLegacyStorage then { + # structured data in SQLite, blobs on filesystem + db.type = mkDefault "sqlite"; + db.path = mkDefault "${dataDir}/data/index.sqlite3"; + fs.type = mkDefault "fs"; + fs.path = mkDefault "${dataDir}/data/blobs"; + } else { + # everything in RocksDB + db.type = mkDefault "rocksdb"; + db.path = mkDefault "${dataDir}/db"; + db.compression = mkDefault "lz4"; + }; storage.data = mkDefault "db"; storage.fts = mkDefault "db"; storage.lookup = mkDefault "db"; - storage.blob = mkDefault "blob"; + storage.blob = mkDefault (if useLegacyStorage then "fs" else "db"); directory.internal.type = mkDefault "internal"; directory.internal.store = mkDefault "db"; storage.directory = mkDefault "internal"; @@ -71,8 +80,10 @@ in { wantedBy = [ "multi-user.target" ]; after = [ "local-fs.target" "network.target" ]; - preStart = '' + preStart = if useLegacyStorage then '' mkdir -p ${dataDir}/{queue,reports,data/blobs} + '' else '' + mkdir -p ${dataDir}/{queue,reports,db} ''; serviceConfig = { |