import ../make-test-python.nix ({ pkgs, ...}: let username = "custom_admin_username"; # This will be used both for redis and postgresql pass = "hunter2"; # Don't do this at home, use a file outside of the nix store instead passFile = toString (pkgs.writeText "pass-file" '' ${pass} ''); in { name = "nextcloud-with-declarative-redis"; meta = with pkgs.lib.maintainers; { maintainers = [ eqyiel ]; }; nodes = { # The only thing the client needs to do is download a file. client = { ... }: {}; nextcloud = { config, pkgs, ... }: { networking.firewall.allowedTCPPorts = [ 80 ]; services.nextcloud = { enable = true; hostName = "nextcloud"; caching = { apcu = false; redis = true; memcached = false; }; # This test also validates that we can use an "external" database database.createLocally = false; config = { dbtype = "pgsql"; dbname = "nextcloud"; dbuser = username; dbpassFile = passFile; adminuser = username; adminpassFile = passFile; }; secretFile = "/etc/nextcloud-secrets.json"; extraOptions.redis = { host = "/run/redis/redis.sock"; port = 0; dbindex = 0; timeout = 1.5; # password handled via secretfile below }; extraOptions.memcache = { local = "\OC\Memcache\Redis"; locking = "\OC\Memcache\Redis"; }; }; services.redis.servers."nextcloud".enable = true; services.redis.servers."nextcloud".port = 6379; systemd.services.nextcloud-setup= { requires = ["postgresql.service"]; after = [ "postgresql.service" ]; }; services.postgresql = { enable = true; }; systemd.services.postgresql.postStart = pkgs.lib.mkAfter '' password=$(cat ${passFile}) ${config.services.postgresql.package}/bin/psql <