args@{ nextcloudVersion ? 27, ... }: (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 ma27 ]; }; 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"; package = pkgs.${"nextcloud" + (toString nextcloudVersion)}; 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 = { dbindex = 0; timeout = 1.5; # password handled via secretfile below }; configureRedis = true; }; services.redis.servers."nextcloud" = { enable = true; port = 6379; requirePass = "secret"; }; 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 <