mirror of
https://github.com/rubenhensen/k8scd.git
synced 2026-09-17 02:12:55 +02:00
Add nix-infra-machine
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
{ config, pkgs, lib, ... }: {
|
||||
# ==========================================================================
|
||||
# PostgreSQL Database for Nextcloud (using infrastructure module)
|
||||
# ==========================================================================
|
||||
config.infrastructure.postgresql = {
|
||||
enable = true;
|
||||
bindToIp = "127.0.0.1";
|
||||
bindToPort = 5432;
|
||||
initialDatabases = [ "nextcloud" ];
|
||||
authentication = ''
|
||||
# TYPE DATABASE USER ADDRESS METHOD
|
||||
local all all trust
|
||||
host all all 127.0.0.1/32 trust
|
||||
host all all ::1/128 trust
|
||||
'';
|
||||
};
|
||||
|
||||
# ==========================================================================
|
||||
# Redis for Nextcloud Caching (using infrastructure module)
|
||||
# ==========================================================================
|
||||
config.infrastructure.redis = {
|
||||
enable = true;
|
||||
servers.nextcloud = {
|
||||
bindToIp = "127.0.0.1";
|
||||
bindToPort = 6379;
|
||||
};
|
||||
};
|
||||
|
||||
# ==========================================================================
|
||||
# Nextcloud Configuration
|
||||
# ==========================================================================
|
||||
config.infrastructure.nextcloud = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud31;
|
||||
hostName = "localhost";
|
||||
https = false;
|
||||
|
||||
admin = {
|
||||
user = "admin";
|
||||
passwordFile = "/run/secrets/nextcloud-admin-pass";
|
||||
};
|
||||
|
||||
database = {
|
||||
type = "pgsql";
|
||||
name = "nextcloud";
|
||||
user = "nextcloud";
|
||||
host = "/run/postgresql";
|
||||
createLocally = true; # Creates the nextcloud user and grants permissions
|
||||
};
|
||||
|
||||
caching = {
|
||||
redis = true;
|
||||
apcu = true;
|
||||
};
|
||||
|
||||
maxUploadSize = "1G";
|
||||
|
||||
settings = {
|
||||
default_phone_region = "US";
|
||||
log_type = "file";
|
||||
loglevel = 2;
|
||||
};
|
||||
};
|
||||
|
||||
# ==========================================================================
|
||||
# Create admin password file
|
||||
# ==========================================================================
|
||||
config.systemd.services.nextcloud-create-admin-pass = {
|
||||
description = "Create Nextcloud admin password file";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
before = [ "nextcloud-setup.service" ];
|
||||
requiredBy = [ "nextcloud-setup.service" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
script = ''
|
||||
mkdir -p /run/secrets
|
||||
echo "testadminpass123" > /run/secrets/nextcloud-admin-pass
|
||||
chmod 400 /run/secrets/nextcloud-admin-pass
|
||||
chown nextcloud:nextcloud /run/secrets/nextcloud-admin-pass
|
||||
'';
|
||||
};
|
||||
|
||||
# ==========================================================================
|
||||
# Ensure correct service ordering
|
||||
# ==========================================================================
|
||||
|
||||
# Nextcloud setup depends on PostgreSQL and Redis
|
||||
config.systemd.services.nextcloud-setup = {
|
||||
after = [
|
||||
"postgresql.service"
|
||||
"redis-nextcloud.service"
|
||||
"nextcloud-create-admin-pass.service"
|
||||
];
|
||||
requires = [
|
||||
"postgresql.service"
|
||||
];
|
||||
wants = [
|
||||
"redis-nextcloud.service"
|
||||
"nextcloud-create-admin-pass.service"
|
||||
];
|
||||
};
|
||||
|
||||
# PHP-FPM depends on nextcloud-setup
|
||||
config.systemd.services.phpfpm-nextcloud = {
|
||||
after = [
|
||||
"nextcloud-setup.service"
|
||||
];
|
||||
requires = [
|
||||
"nextcloud-setup.service"
|
||||
];
|
||||
};
|
||||
|
||||
# Nginx depends on PHP-FPM
|
||||
config.systemd.services.nginx = {
|
||||
after = [
|
||||
"phpfpm-nextcloud.service"
|
||||
];
|
||||
wants = [
|
||||
"phpfpm-nextcloud.service"
|
||||
];
|
||||
};
|
||||
|
||||
# ==========================================================================
|
||||
# Test utilities
|
||||
# ==========================================================================
|
||||
config.environment.systemPackages = with pkgs; [
|
||||
curl
|
||||
jq
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user