Files
nix-config/systems/x86_64-linux/jallen-nas/apps.nix
mjallen18 3af0d99f98 attic
2026-04-08 15:08:00 -05:00

488 lines
11 KiB
Nix
Executable File

{
config,
lib,
namespace,
...
}:
let
inherit (lib.${namespace}) enabled disabled;
net = lib.${namespace}.network;
in
{
${namespace} = {
services = {
actual = {
enable = true;
port = 3333;
createUser = true;
reverseProxy = disabled;
hostedService = {
group = "Finance";
icon = "si:actualbudget";
};
};
ai = {
enable = true;
};
arrs.enable = true;
attic = {
enable = false;
port = 9012;
listenAddress = "[::]";
environmentFile = "/run/secrets/jallen-nas/attic-key";
ntfy = {
enable = true;
envFile = config.sops.templates."ntfy.env".path;
};
reverseProxy = {
enable = true;
subdomain = "cache";
};
hostedService = {
group = "Dev";
};
};
authentik = {
enable = true;
configureDb = true;
port = 9000;
reverseProxy = enabled;
environmentFile = "/run/secrets/jallen-nas/authentik-env";
hostedService = {
group = "Infrastructure";
};
redis = {
enable = true;
port = 6379;
};
};
authentikRac = {
enable = true;
port = 4823;
# environmentFile = "/run/secrets/jallen-nas/authentik-env"; # TODO
};
bookshelf = {
enable = true;
port = 8787;
};
caddy = enabled;
cockpit = {
enable = true;
port = 9091;
};
calibre = {
enable = false;
port = 8084;
};
calibre-web = {
enable = false;
port = 8083;
};
code-server = {
enable = true;
port = 4444;
extraEnvironment = {
PROXY_DOMAIN = "code.mjallen.dev";
};
};
coturn = {
enable = true;
port = 3478;
reverseProxy = enabled;
};
collabora = {
enable = true;
port = 9980;
reverseProxy = {
enable = true;
subdomain = "office";
};
};
crowdsec = {
enable = true;
port = 8181;
apiKey = config.sops.secrets."jallen-nas/crowdsec-capi".path;
ntfy = {
enable = true;
envFile = config.sops.templates."ntfy.env".path;
};
};
databasus = {
enable = true;
port = 4005;
reverseProxy = enabled;
};
dispatcharr = {
enable = false;
port = 9191;
};
tunarr = {
enable = true;
port = 8000;
};
free-games-claimer = {
enable = false;
port = 6080;
};
gitea = {
enable = true;
port = 3000;
reverseProxy = enabled;
hostedService = {
group = "Dev";
icon = "si:gitea";
};
};
guacd = {
enable = true;
port = 4822;
};
glance = {
enable = true;
port = 5555;
hostedServiceGroups = true;
weather = {
enable = true;
location = "Saint Paul, Minnesota, United States";
units = "imperial";
hour-format = "12h";
};
servers = [
{
name = "NAS";
mountpoints."/media/nas/main" = {
name = "Main Pool";
};
}
{
name = "Pi5";
mountpoints."/" = {
name = "Root";
};
}
];
bookmarks = [
{
title = "General";
links = [
{
title = "Gmail";
url = "https://mail.google.com/mail/u/0/";
}
{
title = "Proton Mail";
url = "https://mail.proton.me/u/0/inbox";
}
{
title = "MyNixOS";
url = "https://www.mynixos.com/";
}
{
title = "Github";
url = "https://github.com/";
}
];
}
{
title = "Entertainment";
links = [
{
title = "YouTube";
url = "https://www.youtube.com/";
}
{
title = "Prime Video";
url = "https://www.primevideo.com/";
}
{
title = "Disney+";
url = "https://www.disneyplus.com/";
}
];
}
{
title = "Social";
links = [
{
title = "Reddit";
url = "https://www.reddit.com/";
}
{
title = "Twitter";
url = "https://twitter.com/";
}
{
title = "Instagram";
url = "https://www.instagram.com/";
}
];
}
];
reddit = [
"hockey"
"formula1"
];
search = [
{
title = "YouTube";
shortcut = "!yt";
url = "https://www.youtube.com/results?search_query={QUERY}";
}
{
title = "Wikipedia";
shortcut = "!w";
url = "https://en.wikipedia.org/wiki/{QUERY}";
}
];
extraSites = [
{
title = "Home Assistant";
url = "http://${net.hosts.nuc.lan}:${toString net.ports.nuc.homeAssistant}/";
icon = "si:vscodium";
allow-insecure = true;
}
{
title = "ESPHome";
url = "http://${net.hosts.nuc.lan}:${toString net.ports.nuc.esphome}/";
icon = "si:vscodium";
allow-insecure = true;
}
{
title = "Sonarr";
url = "http://${net.hosts.nas.lan}:${toString net.ports.nas.sonarr}/";
icon = "si:sonarr";
allow-insecure = true;
basic-auth = true;
}
{
title = "Radarr";
url = "http://${net.hosts.nas.lan}:${toString net.ports.nas.radarr}/";
icon = "si:radarr";
allow-insecure = true;
basic-auth = true;
}
{
title = "Sabnzbd";
url = "http://${net.hosts.nas.lan}:${toString net.ports.nas.sabnzbd}/";
icon = "si:sabnzbd";
allow-insecure = true;
basic-auth = true;
}
{
title = "AdGuard";
url = "http://${net.hosts.pi5.lan}:${toString net.ports.pi5.adguard}/";
icon = "si:adguard";
allow-insecure = true;
}
{
title = "Manyfold";
url = "http://${net.hosts.nas.lan}:${toString net.ports.nas.manyfold}/collections";
icon = "sh:manyfold";
allow-insecure = true;
}
{
title = "Code Server";
url = "http://${net.hosts.nas.lan}:${toString net.ports.nas.codeServer}/";
icon = "si:vscodium";
allow-insecure = true;
}
{
title = "NAS KVM";
url = "http://nas-kvm.local/";
icon = "si:iterm2";
allow-insecure = true;
}
{
title = "NUC KVM";
url = "http://pikvm.local/";
icon = "si:raspberrypi";
allow-insecure = true;
}
];
};
glances = {
enable = true;
port = 61208;
createUser = true;
};
grimmory = {
enable = false;
port = 6066;
};
headscale = {
enable = false;
port = 2112;
reverseProxy.enable = true;
};
immich = {
enable = true;
port = 2283;
reverseProxy = enabled;
hostedService = {
group = "Media";
icon = "si:immich";
};
};
jellyfin = {
enable = true;
port = 8096;
reverseProxy = enabled;
hostedService = {
group = "Media";
icon = "si:jellyfin";
};
};
kavita = {
enable = true;
port = 5000;
reverseProxy = enabled;
};
lemonade = {
enable = false;
port = 8001;
modelsDir = "/media/nas/main/ai/lemonade/models";
reverseProxy = disabled;
};
lubelogger = {
enable = true;
port = 6754;
reverseProxy = enabled;
hostedService = {
group = "Finance";
};
};
manyfold = {
enable = true;
port = 3214;
};
matrix = {
enable = true;
port = 8448;
reverseProxy = enabled;
hostedService = {
group = "Infrastructure";
icon = "si:element";
};
};
minecraft = disabled;
mongodb = disabled;
nebula = {
enable = true;
port = 4242;
lighthouses = [ "10.1.1.1" ];
staticHostMap = {
"10.1.1.1" = [ "mjallen.dev:4242" ];
};
secretsPrefix = "jallen-nas/nebula";
secretsFile = lib.snowfall.fs.get-file "secrets/nas-secrets.yaml";
hostSecretName = "nas";
};
netbootxyz = {
enable = false;
port = 4000;
};
nextcloud = {
enable = true;
port = 9988;
reverseProxy = {
enable = true;
subdomain = "cloud";
};
hostedService = {
group = "Infrastructure";
icon = "si:nextcloud";
};
};
ntfy = {
enable = true;
port = 2586;
createUser = true;
reverseProxy = enabled;
hostedService = {
group = "Infrastructure";
};
};
ocis = disabled;
onlyoffice = {
enable = false;
port = 9200;
};
opencloud = {
enable = false;
port = 9200;
reverseProxy.enable = false;
};
orca-slicer = {
enable = true;
port = 3100;
httpsPort = 3101;
};
paperless = {
enable = true;
port = 28981;
};
paperless-ai = {
enable = true;
port = 28982;
};
protonmail-bridge = {
enable = true;
smtpPort = 1025;
imapPort = 1143;
};
restic-server = {
enable = true;
port = 8008;
};
seerr = {
enable = true;
port = 5055;
createUser = true;
reverseProxy = enabled;
hostedService = {
group = "Media";
};
};
sparky-fitness-server = {
enable = true;
port = 3010;
};
sparky-fitness = {
enable = true;
port = 3004;
reverseProxy = {
enable = true;
subdomain = "sparky";
};
};
suggestarr = {
enable = true;
port = 5001;
};
sunshine = {
enable = true;
port = 47989;
};
tdarr = {
enable = false;
port = 8265;
serverPort = 8266;
};
termix = {
enable = true;
port = 7777;
reverseProxy = enabled;
};
unmanic = {
enable = true;
port = 8265;
};
uptime-kuma = {
enable = true;
port = 3001;
};
wyoming = enabled;
};
};
}