All checks were successful
Check Flake / check-flake (push) Successful in 1h32m23s
Flake lock file updates: • Updated input 'agenix': 'github:ryantm/agenix/c2fc0762bbe8feb06a2e59a364fa81b3a57671c9' (2024-05-24) → 'github:ryantm/agenix/f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41' (2024-08-10) • Updated input 'deploy-rs': 'github:serokell/deploy-rs/3867348fa92bc892eba5d9ddb2d7a97b9e127a8a' (2024-06-12) → 'github:serokell/deploy-rs/aa07eb05537d4cd025e2310397a6adcedfe72c76' (2024-09-27) • Updated input 'flake-utils': 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17) • Updated input 'nix-index-database': 'github:Mic92/nix-index-database/ff80cb4a11bb87f3ce8459be6f16a25ac86eb2ac' (2024-05-27) → 'github:Mic92/nix-index-database/5fce10c871bab6d7d5ac9e5e7efbb3a2783f5259' (2024-10-07) • Updated input 'nixos-hardware': 'github:NixOS/nixos-hardware/7b49d3967613d9aacac5b340ef158d493906ba79' (2024-06-01) → 'github:NixOS/nixos-hardware/b7ca02c7565fbf6d27ff20dd6dbd49c5b82eef28' (2024-10-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/805a384895c696f802a9bf5bf4720f37385df547' (2024-05-31) → 'github:NixOS/nixpkgs/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6' (2024-10-06) • Updated input 'simple-nixos-mailserver': 'gitlab:simple-nixos-mailserver/nixos-mailserver/29916981e7b3b5782dc5085ad18490113f8ff63b' (2024-06-11) → 'gitlab:simple-nixos-mailserver/nixos-mailserver/af7d3bf5daeba3fc28089b015c0dd43f06b176f2' (2024-08-05) • Removed input 'simple-nixos-mailserver/utils'
154 lines
3.5 KiB
Nix
154 lines
3.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
{
|
|
imports = [
|
|
./hardware-configuration.nix
|
|
];
|
|
|
|
# system.autoUpgrade.enable = true;
|
|
|
|
# p2p mesh network
|
|
services.tailscale.exitNode = true;
|
|
|
|
# email server
|
|
mailserver.enable = true;
|
|
|
|
# nextcloud
|
|
services.nextcloud.enable = true;
|
|
|
|
# git
|
|
services.gitea = {
|
|
enable = true;
|
|
hostname = "git.neet.dev";
|
|
};
|
|
|
|
# IRC
|
|
services.thelounge = {
|
|
enable = true;
|
|
port = 9000;
|
|
fileUploadBaseUrl = "https://files.neet.cloud/irc/";
|
|
host = "irc.neet.dev";
|
|
fileHost = {
|
|
host = "files.neet.cloud";
|
|
path = "/irc";
|
|
};
|
|
};
|
|
|
|
# mumble
|
|
services.murmur = {
|
|
enable = true;
|
|
port = 23563;
|
|
domain = "voice.neet.space";
|
|
};
|
|
|
|
# IRC bot
|
|
services.drastikbot = {
|
|
enable = true;
|
|
wolframAppIdFile = "/run/agenix/wolframalpha";
|
|
};
|
|
age.secrets.wolframalpha = {
|
|
file = ../../secrets/wolframalpha.age;
|
|
owner = config.services.drastikbot.user;
|
|
};
|
|
backup.group."dailybot".paths = [
|
|
config.services.drastikbot.dataDir
|
|
];
|
|
|
|
# music radio
|
|
vpn-container.enable = true;
|
|
vpn-container.config = {
|
|
services.radio = {
|
|
enable = true;
|
|
host = "radio.runyan.org";
|
|
};
|
|
};
|
|
pia.wireguard.badPortForwardPorts = [ ];
|
|
services.nginx.virtualHosts = {
|
|
"radio.runyan.org" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations = {
|
|
"/stream.mp3" = {
|
|
proxyPass = "http://vpn.containers:8001/stream.mp3";
|
|
extraConfig = ''
|
|
add_header Access-Control-Allow-Origin *;
|
|
'';
|
|
};
|
|
"/".root = config.inputs.radio-web;
|
|
};
|
|
};
|
|
"radio.neet.space" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations = {
|
|
"/stream.mp3" = {
|
|
proxyPass = "http://vpn.containers:8001/stream.mp3";
|
|
extraConfig = ''
|
|
add_header Access-Control-Allow-Origin *;
|
|
'';
|
|
};
|
|
"/".root = config.inputs.radio-web;
|
|
};
|
|
};
|
|
};
|
|
|
|
# matrix home server
|
|
services.matrix = {
|
|
enable = true;
|
|
host = "neet.space";
|
|
enable_registration = false;
|
|
element-web = {
|
|
enable = true;
|
|
host = "chat.neet.space";
|
|
};
|
|
jitsi-meet = {
|
|
enable = false; # disabled until vulnerable libolm dependency is removed/fixed
|
|
host = "meet.neet.space";
|
|
};
|
|
turn = {
|
|
host = "turn.neet.space";
|
|
secret = "a8369a0e96922abf72494bb888c85831b";
|
|
};
|
|
};
|
|
# pin postgresql for matrix (will need to migrate eventually)
|
|
services.postgresql.package = pkgs.postgresql_15;
|
|
|
|
# iodine DNS-based vpn
|
|
services.iodine.server.enable = true;
|
|
|
|
# proxied web services
|
|
services.nginx.enable = true;
|
|
services.nginx.virtualHosts."navidrome.neet.cloud" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/".proxyPass = "http://s0.koi-bebop.ts.net:4533";
|
|
};
|
|
|
|
# TODO replace with a proper file hosting service
|
|
services.nginx.virtualHosts."tmp.neet.dev" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
root = "/var/www/tmp";
|
|
};
|
|
|
|
# redirect runyan.org to github
|
|
services.nginx.virtualHosts."runyan.org" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
extraConfig = ''
|
|
rewrite ^/(.*)$ https://github.com/GoogleBot42 redirect;
|
|
'';
|
|
};
|
|
|
|
# owncast live streaming
|
|
services.owncast.enable = true;
|
|
services.owncast.hostname = "live.neet.dev";
|
|
|
|
# librechat
|
|
services.librechat.enable = true;
|
|
services.librechat.host = "chat.neet.dev";
|
|
|
|
services.actual-server.enable = true;
|
|
services.actual-server.hostname = "actual.runyan.org";
|
|
}
|