mirror of
https://github.com/TheWanderingCrow/CrOS.git
synced 2026-01-24 07:34:15 -05:00
225 lines
6.3 KiB
Nix
225 lines
6.3 KiB
Nix
let
|
|
volumePath = "/overseer/services";
|
|
in
|
|
{
|
|
lib,
|
|
inputs,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}:
|
|
lib.mkIf config.user.overseer.enable {
|
|
|
|
# Create the dirs we need
|
|
systemd.tmpfiles.rules = [
|
|
"d ${volumePath}"
|
|
|
|
"d ${volumePath}/bar-assistant 770 33 33"
|
|
"d ${volumePath}/meilisearch"
|
|
];
|
|
|
|
# (Arguably) Most Important Service - backups
|
|
services.restic.backups = {
|
|
homebox = {
|
|
user = "root";
|
|
timerConfig = {
|
|
OnCalendar = "hourly";
|
|
Persistent = true;
|
|
};
|
|
paths = [
|
|
"/var/lib/homebox/data"
|
|
];
|
|
repositoryFile = config.sops.secrets."restic/url".path;
|
|
passwordFile = config.sops.secrets."restic/key".path;
|
|
};
|
|
};
|
|
|
|
# These ports are needed for NGINX Proxy Manager
|
|
networking.firewall.allowedTCPPorts = [
|
|
443
|
|
80
|
|
];
|
|
|
|
services.nginx = {
|
|
enable = true;
|
|
recommendedProxySettings = true;
|
|
virtualHosts = {
|
|
"homebox.wanderingcrow.net" = {
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:7745";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
"home.wanderingcrow.net" = {
|
|
locations."/" = {
|
|
extraConfig = ''
|
|
allow 192.168.0.0/16;
|
|
deny all;
|
|
'';
|
|
proxyPass = "http://localhost:8082";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
"bar.wanderingcrow.net" = {
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://10.88.0.5:8080";
|
|
};
|
|
};
|
|
};
|
|
"api.bar.wanderingcrow.net" = {
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://10.88.0.4:8080";
|
|
};
|
|
};
|
|
};
|
|
"search.bar.wanderingcrow.net" = {
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://10.88.0.3:7700";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
services = {
|
|
homebox = {
|
|
enable = true;
|
|
settings = {
|
|
HBOX_OPTIONS_ALLOW_REGISTRATION = "true";
|
|
};
|
|
};
|
|
homepage-dashboard = {
|
|
enable = true;
|
|
environmentFile = config.sops.templates."homepage-environment".path;
|
|
settings = {
|
|
theme = "dark";
|
|
};
|
|
widgets = [
|
|
{
|
|
search = {
|
|
provider = "duckduckgo";
|
|
target = "_blank";
|
|
};
|
|
}
|
|
{
|
|
openmeteo = {
|
|
timezone = "America/New_York";
|
|
units = "imperial";
|
|
cache = "5";
|
|
latitude = "{{HOMEPAGE_VAR_LAT}}";
|
|
longitude = "{{HOMEPAGE_VAR_LONG}}";
|
|
};
|
|
}
|
|
];
|
|
bookmarks = [
|
|
{
|
|
WCE = [
|
|
{
|
|
Homebox = [
|
|
{
|
|
icon = "http://homebox.wanderingcrow.net/favicon.svg";
|
|
href = "http://homebox.wanderingcrow.net";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
}
|
|
{
|
|
"Day to Day" = [
|
|
{
|
|
Messages = [
|
|
{
|
|
icon = "google-messages.svg";
|
|
href = "https://messages.google.com/web";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
YouTube = [
|
|
{
|
|
icon = "youtube.svg";
|
|
href = "https://youtube.com";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
"Proton Mail" = [
|
|
{
|
|
icon = "proton-mail.svg";
|
|
href = "https://mail.proton.me";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
Instagram = [
|
|
{
|
|
icon = "instagram.svg";
|
|
href = "https://instagram.com";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
Aetolia = [
|
|
{
|
|
icon = "https://aetolia.com/wp-content/uploads/2020/04/favicon.ico";
|
|
href = "https://aetolia.com";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
Amazon = [
|
|
{
|
|
icon = "amazon.svg";
|
|
href = "https://amazon.com";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
virtualisation.oci-containers = {
|
|
backend = "podman";
|
|
containers = {
|
|
"meilisearch" = {
|
|
image = "getmeili/meilisearch:v1.8";
|
|
volumes = ["${volumePath}/meilisearch:/meili_data"];
|
|
extraOptions = [ "--ip=10.88.0.3" ];
|
|
environmentFiles = [config.sops.templates."meilisearch-environment".path];
|
|
environment = {
|
|
MEILI_ENV = "production";
|
|
MEILI_NO_ANALYTICS = "true";
|
|
};
|
|
};
|
|
"bar-assistant" = {
|
|
image = "barassistant/server:v4";
|
|
volumes = ["${volumePath}/bar-assistant:/var/www/cocktails/storage/bar-assistant"];
|
|
dependsOn = ["meilisearch"];
|
|
extraOptions = [ "--ip=10.88.0.4" ];
|
|
environmentFiles = [config.sops.templates."bar_assistant-env".path];
|
|
environment = {
|
|
APP_URL = "http://api.bar.wanderingcrow.net";
|
|
MEILISEARCH_HOST = "http://search.bar.wanderingcrow.net";
|
|
CACHE_DRIVER = "file";
|
|
SESSION_DRIVER = "file";
|
|
ALLOW_REGISTRATION = "true";
|
|
};
|
|
};
|
|
"salt-rim" = {
|
|
image = "barassistant/salt-rim:v3";
|
|
dependsOn = ["bar-assistant"];
|
|
extraOptions = [ "--ip=10.88.0.5" ];
|
|
ports = [ "3001:8080" ];
|
|
environment = {
|
|
API_URL = "http://api.bar.wanderingcrow.net";
|
|
MEILIESEARCH_URL = "http://search.bar.wanderingcrow.net";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|