Files
nixos-config/nixos-configurations/server/default.nix

154 lines
4.1 KiB
Nix
Raw Normal View History

2023-09-26 20:35:05 +02:00
{ inputs, pkgs, ... }:
2023-07-02 00:18:17 +02:00
{
imports = [
2023-10-31 12:10:31 +01:00
inputs.agenix.nixosModules.default
2023-07-02 00:18:17 +02:00
./hardware-configuration.nix
../shared.nix
];
2023-08-04 09:32:11 +00:00
nix.settings.trusted-users = [ "thiloho" ];
environment.systemPackages = with pkgs; [
nodejs_20
];
2023-07-29 22:59:36 +02:00
networking = {
2023-07-29 23:01:20 +02:00
hostName = "server";
2023-07-29 22:59:36 +02:00
firewall = {
allowedTCPPorts = [ 80 443 25565 ];
2023-10-03 16:59:01 +02:00
allowedUDPPorts = [ 80 443 25565 ];
2023-07-29 22:59:36 +02:00
};
};
2023-07-24 15:17:18 +02:00
2023-07-29 22:33:53 +02:00
services = {
2023-08-04 20:44:41 +02:00
openssh = {
enable = true;
settings.PasswordAuthentication = false;
};
2023-07-29 22:33:53 +02:00
minecraft-server = {
enable = true;
eula = true;
declarative = true;
openFirewall = true;
whitelist = {
thilo_ho = "4e4d744d-7748-46bc-add8-b3e8ca3b4cf5";
2023-08-19 00:59:50 +02:00
PegasusIsHere = "24155f74-eb04-4f45-a743-f2b7eb71c6a2";
BakaZaps = "1888532c-6df7-4514-b96a-99ed4e7684f2";
2023-08-25 07:28:22 +02:00
Liaxswan = "ccbf3468-a6b4-4d7b-9837-5a2451deca79";
2023-07-29 22:33:53 +02:00
};
serverProperties = {
difficulty = 3;
max-players = 10;
motd = "Minecraft server of Thilo.";
white-list = true;
};
2023-07-23 04:24:55 +02:00
};
2023-10-03 16:09:14 +02:00
terraria = {
enable = true;
maxPlayers = 10;
messageOfTheDay = "Terraria server of Thilo";
openFirewall = true;
secure = true;
};
2023-07-29 22:33:53 +02:00
nginx = {
enable = true;
2023-09-26 20:35:05 +02:00
recommendedProxySettings = true;
recommendedTlsSettings = true;
2023-07-29 22:33:53 +02:00
virtualHosts = {
"thilohohlt.com" = {
2023-07-29 23:19:54 +02:00
enableACME = true;
forceSSL = true;
2023-07-29 22:33:53 +02:00
root = inputs.website;
};
2023-08-01 21:58:41 +00:00
"aurora.thilohohlt.com" = {
enableACME = true;
forceSSL = true;
2023-08-01 23:28:39 +00:00
root = inputs.aurora-blog-template.packages.${pkgs.system}.default;
2023-08-01 21:58:41 +00:00
};
2023-09-26 20:35:05 +02:00
"collab.thilohohlt.com" = {
enableACME = true;
forceSSL = true;
locations."/".proxyPass = "http://localhost:3300";
locations."/socket.io/" = {
proxyPass = "http://localhost:3300";
proxyWebsockets = true;
extraConfig = "proxy_ssl_server_name on;";
};
};
2023-08-04 20:44:41 +02:00
};
};
2023-09-25 15:50:20 +02:00
hedgedoc = {
enable = true;
settings = {
port = 3300;
domain = "collab.thilohohlt.com";
db = {
dialect = "postgres";
host = "/run/postgresql";
database = "hedgedoc";
};
2023-09-26 20:35:05 +02:00
protocolUseSSL = true;
allowAnonymous = false;
allowEmailRegister = false;
email = false;
2023-09-25 15:50:20 +02:00
};
environmentFile = "/var/lib/hedgedoc/hedgedoc.env";
2023-09-25 15:50:20 +02:00
};
postgresql = {
enable = true;
package = pkgs.postgresql_15;
ensureDatabases = [ "dcbot" "hedgedoc" ];
2023-09-26 20:35:05 +02:00
ensureUsers = [
{
name = "hedgedoc";
ensurePermissions."DATABASE hedgedoc" = "ALL PRIVILEGES";
}
];
2023-09-25 15:50:20 +02:00
authentication = pkgs.lib.mkOverride 10 ''
#type database DBuser auth-method
local all all trust
'';
};
2023-07-24 14:38:54 +02:00
};
2023-08-04 20:44:41 +02:00
security = {
acme = {
acceptTerms = true;
defaults.email = "thilo.hohlt@tutanota.com";
};
sudo.extraConfig = ''
%wheel ALL=(ALL) NOPASSWD: ALL, SETENV: ALL
'';
2023-07-29 23:19:54 +02:00
};
systemd.services.denbot = {
description = "Thilo's Den discord bot";
wantedBy = ["multi-user.target"];
after = ["network-online.target"];
serviceConfig = {
Type = "simple";
ExecStartPre = [
"${pkgs.nodejs_20}/bin/node dbInit.js"
"${pkgs.nodejs_20}/bin/node deploy-commands.js --token=%d/bot.token --clientId=1142441791459704912"
];
2023-09-10 23:19:41 +02:00
ExecStart = "${pkgs.nodejs_20}/bin/node index.js --token=%d/bot.token";
LoadCredential = "bot.token:/var/run/bot-token.txt";
2023-09-10 23:19:41 +02:00
WorkingDirectory = inputs.denbot.packages.${pkgs.system}.default;
Restart = "always";
};
};
2023-07-24 14:38:54 +02:00
users.users.thiloho.openssh.authorizedKeys.keys = [
2023-08-11 17:04:19 +02:00
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMkvr+vT7Ik0fjquxb9xQBfVVWJPgrfC+vJZsyG2V+/G thiloho@pc"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ5jOELdhQ85uKV8l2QkbLhjdPr142p1AmPzpawaJ7ws thiloho@laptop"
2023-07-24 14:38:54 +02:00
];
2023-07-02 00:18:17 +02:00
home-manager.users.thiloho = { pkgs, lib, ... }: {
2023-10-31 12:10:31 +01:00
home = {
stateVersion = "23.05";
packages = [ inputs.agenix.packages."x86_64-linux".default ];
};
2023-07-02 00:18:17 +02:00
};
system.stateVersion = "23.05";
2023-09-26 20:35:05 +02:00
}