Last active
January 29, 2021 22:27
-
-
Save afix-space/da78514893fc2a614492316e08cb99e9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ../make-test-python.nix ({ pkgs, ...}: let | |
adminpass = "NixOS"; | |
adminuser = "root"; | |
in { | |
name = "nextcloud-example-from-man"; | |
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 443 ]; | |
services.nextcloud = { | |
enable = true; | |
hostName = "nextcloud"; | |
package = pkgs.nextcloud20; | |
config = { | |
dbtype = "pgsql"; | |
dbuser = "nextcloud"; | |
dbhost = "/run/postgresql"; | |
dbname = "nextcloud"; | |
inherit adminuser; | |
adminpassFile = toString (pkgs.writeText "admin-pass-file" '' | |
${adminpass} | |
''); | |
}; | |
}; | |
systemd.services.nextcloud-setup= { | |
requires = ["postgresql.service"]; | |
after = [ | |
"postgresql.service" | |
]; | |
}; | |
services.postgresql = { | |
enable = true; | |
ensureDatabases = [ "nextcloud" ]; | |
ensureUsers = [ | |
{ name = "nextcloud"; | |
ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES"; | |
} | |
]; | |
}; | |
}; | |
}; | |
testScript = let | |
withRcloneEnv = pkgs.writeScript "with-rclone-env" '' | |
#!${pkgs.runtimeShell} | |
export RCLONE_CONFIG_NEXTCLOUD_TYPE=webdav | |
export RCLONE_CONFIG_NEXTCLOUD_URL="http://nextcloud/remote.php/webdav/" | |
export RCLONE_CONFIG_NEXTCLOUD_VENDOR="nextcloud" | |
export RCLONE_CONFIG_NEXTCLOUD_USER="${adminuser}" | |
export RCLONE_CONFIG_NEXTCLOUD_PASS="$(${pkgs.rclone}/bin/rclone obscure ${adminpass})" | |
"''${@}" | |
''; | |
copySharedFile = pkgs.writeScript "copy-shared-file" '' | |
#!${pkgs.runtimeShell} | |
echo 'hi' | ${pkgs.rclone}/bin/rclone rcat nextcloud:test-shared-file | |
''; | |
diffSharedFile = pkgs.writeScript "diff-shared-file" '' | |
#!${pkgs.runtimeShell} | |
diff <(echo 'hi') <(${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file) | |
''; | |
in '' | |
start_all() | |
nextcloud.wait_for_unit("multi-user.target") | |
nextcloud.succeed("curl -sSf http://nextcloud/login") | |
nextcloud.succeed( | |
"${withRcloneEnv} ${copySharedFile}" | |
) | |
client.wait_for_unit("multi-user.target") | |
client.succeed( | |
"${withRcloneEnv} ${diffSharedFile}" | |
) | |
''; | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment