63 lines
1.8 KiB
Nix
63 lines
1.8 KiB
Nix
{ config, lib, pkgs, user, ... }:
|
|
with lib;
|
|
|
|
let
|
|
nextcloudService = {
|
|
project.name = "nextcloud";
|
|
services = {
|
|
nextcloud = {
|
|
service = {
|
|
image = "lscr.io/linuxserver/nextcloud:latest";
|
|
environment = {
|
|
PUID = "1000"; # User ID
|
|
PGID = "1000"; # Group ID
|
|
TZ = "Asia/Kuwait"; # Time zone
|
|
};
|
|
volumes = [
|
|
"/home/${user}/dockers/nextcloud/config:/config" # Config path
|
|
"/home/${user}/dockers/nextcloud/data:/data" # Data path
|
|
"/home/${user}/dockers/nextcloud/postgres_data:/var/lib/postgresql/data" # PostgreSQL data path
|
|
];
|
|
ports = [
|
|
"4400:443"
|
|
];
|
|
restart = "unless-stopped";
|
|
networks = [ "nextcloud_network" ];
|
|
env_file = [ "${config.sops.templates."my-env.env".path}" ];
|
|
};
|
|
};
|
|
nextcloud-postgres = {
|
|
service = {
|
|
image = "postgres:latest";
|
|
environment = {
|
|
POSTGRES_USER = "$NEXTCLOUD_DB_USER";
|
|
POSTGRES_PASSWORD = "$NEXTCLOUD_DB_PASSWORD";
|
|
POSTGRES_DB = "$NEXTCLOUD_DB";
|
|
};
|
|
ports = [
|
|
"5432:5432"
|
|
];
|
|
volumes = [
|
|
"/home/${user}/dockers/nextcloud/pgdata:/var/lib/postgresql/data"
|
|
];
|
|
env_file = [ "${config.sops.templates."my-env.env".path}" ]; #idk why the image isnt reading this file. will fix later
|
|
networks = [ "nextcloud_network" ];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options.vps.nextcloud.enable = mkEnableOption "Enable Nextcloud service for VPS";
|
|
|
|
config = mkIf config.vps.nextcloud.enable {
|
|
virtualisation.arion = {
|
|
backend = "docker";
|
|
projects.nextcloud = {
|
|
serviceName = "nextcloud";
|
|
settings = nextcloudService;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|