···125125126126- [Rosenpass](https://rosenpass.eu/), a service for post-quantum-secure VPNs with WireGuard. Available as [services.rosenpass](#opt-services.rosenpass.enable).
127127128128+- [c2FmZQ](https://github.com/c2FmZQ/c2FmZQ/), an application that can securely encrypt, store, and share files, including but not limited to pictures and videos. Available as [services.c2fmzq-server](#opt-services.c2fmzq-server.enable).
129129+128130## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
129131130132- `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`.
···11+# c2FmZQ {#module-services-c2fmzq}
22+33+c2FmZQ is an application that can securely encrypt, store, and share files,
44+including but not limited to pictures and videos.
55+66+The service `c2fmzq-server` can be enabled by setting
77+```
88+{
99+ services.c2fmzq-server.enable = true;
1010+}
1111+```
1212+This will spin up an instance of the server which is API-compatible with
1313+[Stingle Photos](https://stingle.org) and an experimental Progressive Web App
1414+(PWA) to interact with the storage via the browser.
1515+1616+In principle the server can be exposed directly on a public interface and there
1717+are command line options to manage HTTPS certificates directly, but the module
1818+is designed to be served behind a reverse proxy or only accessed via localhost.
1919+2020+```
2121+{
2222+ services.c2fmzq-server = {
2323+ enable = true;
2424+ bindIP = "127.0.0.1"; # default
2525+ port = 8080; # default
2626+ };
2727+2828+ services.nginx = {
2929+ enable = true;
3030+ recommendedProxySettings = true;
3131+ virtualHosts."example.com" = {
3232+ enableACME = true;
3333+ forceSSL = true;
3434+ locations."/" = {
3535+ proxyPass = "http://127.0.0.1:8080";
3636+ };
3737+ };
3838+ };
3939+}
4040+```
4141+4242+For more information, see <https://github.com/c2FmZQ/c2FmZQ/>.