Gancio
Shared agenda for local communities that supports Activity Pub
Declared in: projects/Gancio/default.nix
Demo
Implement missing demoOptions
services.gancio
- 
  
  
Whether to enable Gancio, a shared agenda for local communities.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Extra configuration for the nginx virtual host of gancio.
- Type:
 submodule- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Host which to proxy requests to if ACME challenge is not found. Useful if you want multiple hosts to be able to verify the same domain name.
With this option, you could request certificates for the present domain with an ACME client that is running on another host, which you would specify here.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Directory for the ACME challenge, which is public. Don't put certs or keys in here. Set to null to inherit from config.security.acme.
- Type:
 null or string- Default:
 "/var/lib/acme/acme-challenge"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable HTTPS in addition to plain HTTP. This will set defaults for
listento listen on all interfaces on the respective default ports (80, 443).- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Basic Auth protection for a vhost.
WARNING: This is implemented to store the password in plain text in the Nix store.
- Type:
 attribute set of string- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Basic Auth password file for a vhost. Can be created by running {command}
nix-shell --packages apacheHttpd --run 'htpasswd -B -c FILENAME USERNAME'.- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Makes this vhost the default.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to ask Let's Encrypt to sign a certificate for this vhost. Alternately, you can use an existing certificate through {option}
useACMEHost.- Type:
 boolean- Default:
 true- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
These lines go to the end of the vhost verbatim.
- Type:
 strings concatenated with "\n"- Default:
 ""- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to add a separate nginx server block that redirects (defaults to 301, configurable with
redirectCode) all plain HTTP traffic to HTTPS. This will set defaults forlistento listen on all interfaces on the respective default ports (80, 443), where the non-SSL listens are used for the redirect vhosts.- Type:
 boolean- Default:
 true- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
If set, all requests for this host are redirected (defaults to 301, configurable with
redirectCode) to the given hostname.- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable the HTTP/2 protocol. Note that (as of writing) due to nginx's implementation, to disable HTTP/2 you have to disable it on all vhosts that use a given IP address / port. If there is one server block configured to enable http2, then it is enabled for all server blocks on this IP. See https://stackoverflow.com/a/39466948/263061.
- Type:
 boolean- Default:
 true- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable the HTTP/3 protocol. This requires using
pkgs.nginxQuicpackage which can be achieved by settingservices.nginx.package = pkgs.nginxQuic;and activate the QUIC transport protocolservices.nginx.virtualHosts.<name>.quic = true;. Note that HTTP/3 support is experimental and not yet recommended for production. Read more at https://quic.nginx.org/ HTTP/3 availability must be manually advertised, preferably in each location block.- Type:
 boolean- Default:
 true- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable the HTTP/0.9 protocol negotiation used in QUIC interoperability tests. This requires using
pkgs.nginxQuicpackage which can be achieved by settingservices.nginx.package = pkgs.nginxQuic;and activate the QUIC transport protocolservices.nginx.virtualHosts.<name>.quic = true;. Note that special application protocol support is experimental and not yet recommended for production. Read more at https://quic.nginx.org/- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable kTLS support. Implementing TLS in the kernel (kTLS) improves performance by significantly reducing the need for copying operations between user space and the kernel. Required Nginx version 1.21.4 or later.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Listen addresses and ports for this virtual host. IPv6 addresses must be enclosed in square brackets. Note: this option overrides
addSSLandonlySSL.If you only want to set the addresses manually and not the ports, take a look at
listenAddresses.- Type:
 list of (submodule)- Default:
 [ ]- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Listen address.
- Type:
 string- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Extra parameters of this listen directive.
- Type:
 list of string- Default:
 [ ]- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Port number to listen on. If unset and the listen address is not a socket then nginx defaults to 80.
- Type:
 null or 16 bit unsigned integer; between 0 and 65535 (both inclusive)- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Enable PROXY protocol.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Enable SSL.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Listen addresses for this virtual host. Compared to
listenthis only sets the addresses and the ports are chosen automatically.Note: This option overrides
enableIPv6- Type:
 list of string- Default:
 [ ]- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Declarative location config
- Type:
 attribute set of (submodule)- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Alias directory for requests.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Basic Auth protection for a vhost.
WARNING: This is implemented to store the password in plain text in the Nix store.
- Type:
 attribute set of string- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Basic Auth password file for a vhost. Can be created by running {command}
nix-shell --packages apacheHttpd --run 'htpasswd -B -c FILENAME USERNAME'.- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
These lines go to the end of the location verbatim.
- Type:
 strings concatenated with "\n"- Default:
 ""- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
FastCGI parameters to override. Unlike in the Nginx configuration file, overriding only some default parameters won't unset the default values for other parameters.
- Type:
 attribute set of (string or absolute path)- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Adds index directive.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Order of this location block in relation to the others in the vhost. The semantics are the same as with
lib.mkOrder. Smaller values have a greater priority.- Type:
 signed integer- Default:
 1000- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Adds proxy_pass directive and sets recommended proxy headers if recommendedProxySettings is enabled.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to support proxying websocket connections with HTTP/1.1.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Enable recommended proxy settings.
- Type:
 boolean- Default:
 config.services.nginx.recommendedProxySettings- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Enable recommended uwsgi settings.
- Type:
 boolean- Default:
 config.services.nginx.recommendedUwsgiSettings- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Adds a return directive, for e.g. redirections.
- Type:
 null or string or signed integer- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Root directory for requests.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Adds try_files directive.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Adds uwsgi_pass directive and sets recommended proxy headers if recommendedUwsgiSettings is enabled.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable HTTPS and reject plain HTTP connections. This will set defaults for
listento listen on all interfaces on port 443.- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to enable the QUIC transport protocol. This requires using
pkgs.nginxQuicpackage which can be achieved by settingservices.nginx.package = pkgs.nginxQuic;. Note that QUIC support is experimental and not yet recommended for production. Read more at https://quic.nginx.org/- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
HTTP status used by
globalRedirectandforceSSL. Possible usecases include temporary (302, 307) redirects, keeping the request method and body (307, 308), or explicitly resetting the method to GET (303). See https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections.- Type:
 integer between 300 and 399 (both inclusive)- Default:
 301- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Whether to listen for and reject all HTTPS connections to this vhost. Useful in default server blocks to avoid serving the certificate for another vhost. Uses the
ssl_reject_handshakedirective available in nginx versions 1.19.4 and above.- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Create an individual listening socket . It is required to specify only once on one of the hosts.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The path of the web root directory.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Additional names of virtual hosts served by this virtual host configuration.
- Type:
 list of string- Default:
 [ ]- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Name of this virtual host. Defaults to attribute name in virtualHosts.
- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Path to server SSL certificate.
- Type:
 absolute path- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Path to server SSL certificate key.
- Type:
 absolute path- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Path to root SSL certificate for stapling and client certificates.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
A host of an existing Let's Encrypt certificate to use. This is useful if you have many subdomains and want to avoid hitting the rate limit. Alternately, you can generate a certificate through {option}
enableACME. Note that this option does not create any certificates, nor it does add subdomains to existing ones – you will need to create them manually using .- Type:
 null or string- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The gancio package to use.
- Type:
 package- Default:
 pkgs.gancio- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Paths of gancio plugins to activate (linked under $WorkingDirectory/plugins/).
- Type:
 list of package- Default:
 [ ]- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Configuration for Gancio, see https://gancio.org/install/config for supported values.
- Type:
 open submodule of (JSON value)- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The full URL under which the server is reachable.
- Type:
 string- Default:
 "https://${config.services.gancio.settings.hostname}"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  Read-only
  
Name of the PostgreSQL database
- Type:
 null or string- Default:
 "if config.services.gancio.settings.db.dialect == \"postgres\" then cfg.user else null"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The database dialect to use
- Type:
 one of "sqlite", "postgres"- Default:
 "sqlite"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  Read-only
  
Connection string for the PostgreSQL database
- Type:
 null or string- Default:
 "if config.services.gancio.settings.db.dialect == \"postgres\" then \"/run/postgresql\" else null"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  Read-only
  
Location for the SQLite database.
- Type:
 null or string- Default:
 "if config.services.gancio.settings.db.dialect == \"sqlite\" then \"/var/lib/gancio/db.sqlite\" else null"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The domain name under which the server is reachable.
- Type:
 string- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Gancio log level.
- Type:
 one of "debug", "info", "warning", "error"- Default:
 "info"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  Read-only
  
Directory Gancio logs into
- Type:
 string- Default:
 "/var/log/gancio"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  Read-only
  
The unix socket for the gancio server to listen on.
- Type:
 absolute path- Default:
 "/run/gancio/socket"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
The user (and PostgreSQL database name) used to run the gancio server
- Type:
 string- Default:
 "gancio"- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 - 
  
  
Override default locales within gancio. See default languages and locales.
- Type:
 attribute set of attribute set of attribute set of string- Default:
 { }- Declared in:
 - nixos/modules/services/web-apps/gancio.nix
 
 
services.gancio.enable
services.gancio.nginx
services.gancio.nginx.acmeFallbackHost
services.gancio.nginx.acmeRoot
services.gancio.nginx.addSSL
services.gancio.nginx.basicAuth
services.gancio.nginx.basicAuthFile
services.gancio.nginx.default
services.gancio.nginx.enableACME
services.gancio.nginx.extraConfig
services.gancio.nginx.forceSSL
services.gancio.nginx.globalRedirect
services.gancio.nginx.http2
services.gancio.nginx.http3
services.gancio.nginx.http3_hq
services.gancio.nginx.kTLS
services.gancio.nginx.listen
services.gancio.nginx.listen.*.addr
services.gancio.nginx.listen.*.extraParameters
services.gancio.nginx.listen.*.port
services.gancio.nginx.listen.*.proxyProtocol
services.gancio.nginx.listen.*.ssl
services.gancio.nginx.listenAddresses
services.gancio.nginx.locations
services.gancio.nginx.locations..alias 
services.gancio.nginx.locations..basicAuth 
services.gancio.nginx.locations..basicAuthFile 
services.gancio.nginx.locations..extraConfig 
services.gancio.nginx.locations..fastcgiParams 
services.gancio.nginx.locations..index 
services.gancio.nginx.locations..priority 
services.gancio.nginx.locations..proxyPass 
services.gancio.nginx.locations..proxyWebsockets 
services.gancio.nginx.locations..recommendedProxySettings 
services.gancio.nginx.locations..recommendedUwsgiSettings 
services.gancio.nginx.locations..return 
services.gancio.nginx.locations..root 
services.gancio.nginx.locations..tryFiles 
services.gancio.nginx.locations..uwsgiPass 
services.gancio.nginx.onlySSL
services.gancio.nginx.quic
services.gancio.nginx.redirectCode
services.gancio.nginx.rejectSSL
services.gancio.nginx.reuseport
services.gancio.nginx.root
services.gancio.nginx.serverAliases
services.gancio.nginx.serverName
services.gancio.nginx.sslCertificate
services.gancio.nginx.sslCertificateKey
services.gancio.nginx.sslTrustedCertificate
services.gancio.nginx.useACMEHost
services.gancio.package
services.gancio.plugins
services.gancio.settings
services.gancio.settings.baseurl
services.gancio.settings.db.database
services.gancio.settings.db.dialect
services.gancio.settings.db.host
services.gancio.settings.db.storage
services.gancio.settings.hostname
services.gancio.settings.log_level
services.gancio.settings.log_path
services.gancio.settings.server.socket
services.gancio.user
services.gancio.userLocale
Examples
Enable Gancio
{ pkgs, ... }: { services.gancio = { enable = true; plugins = [ pkgs.gancioPlugins.telegram-bridge ]; settings = { hostname = "agenda.example.org"; # postgress is available as well db.dialect = "sqlite"; }; nginx = { enableACME = false; forceSSL = false; }; }; }
Declared in: projects/Gancio/example.nix
This project is funded by NLnet through these subgrants:
- Core
 - Gancio