dotfiles/config/media.nix

91 lines
1.9 KiB
Nix

{ config, pkgs, inputs, ... }: {
imports = [
../hardware/media.nix
./headless.nix
];
users.users.media = import ./user.nix;
networking.hostName = "r330-media";
# Conigure a static IP address.
networking.defaultGateway = "192.168.100.1";
networking.nameservers = [ "192.168.100.1" ];
networking.firewall.allowedTCPPorts = [ 80 443 32400 ];
networking.interfaces.enp6s18.ipv4.addresses = [
{
address = "192.168.100.5";
prefixLength = 24;
}
];
# Setup drivers for NVIDIA GPU
services.xserver = {
enable = false;
videoDrivers = [ "nvidia" ];
};
hardware = {
nvidia = {
open = false;
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
nvidiaSettings = true;
};
graphics = {
enable = true;
enable32Bit = true;
};
};
# Plex Setup
services.plex = {
enable = true;
openFirewall = true;
user = "media";
dataDir = "/mnt/storage/plex";
};
# Nextcloud Setup
services.nextcloud = {
enable = true;
configureRedis = true;
database.createLocally = true;
autoUpdateApps.enable = true;
https = true;
hostName = "nextcloud.randomctf.com";
datadir = "/mnt/storage/nextcloud";
maxUploadSize = "50G";
settings = {
overwriteprotocol = "https";
htaccess.rewriteBase = "/";
};
config = {
dbtype = "mysql";
adminpassFile = "/var/nextcloud-admin-pass";
};
};
# NGINX Reverse Proxy Setup
services.nginx = {
enable = true;
virtualHosts.${config.services.nextcloud.hostName} = {
enableACME = true;
forceSSL = true;
};
};
security.acme = {
acceptTerms = true;
certs = {
${config.services.nextcloud.hostName}.email = "admin@randomctf.com";
};
};
}