feat(arion): add homepage setup
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
ab77c767b6
commit
181985484d
5 changed files with 334 additions and 0 deletions
|
@ -5,6 +5,7 @@ in {
|
||||||
../../../../modules/arion.nix
|
../../../../modules/arion.nix
|
||||||
|
|
||||||
./forgejo/compose.nix
|
./forgejo/compose.nix
|
||||||
|
./homepage/compose.nix
|
||||||
./music/jbots/compose.nix
|
./music/jbots/compose.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
58
devices/nas/modules/arion/homepage/compose.nix
Normal file
58
devices/nas/modules/arion/homepage/compose.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{config, ...}: let
|
||||||
|
inherit (config.arion) toYAML;
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
in {
|
||||||
|
arion.projects."homepage" = {
|
||||||
|
"homepage" = {
|
||||||
|
image = ./images/homepage.nix;
|
||||||
|
restart = "always";
|
||||||
|
|
||||||
|
ports = [
|
||||||
|
"3020:3000"
|
||||||
|
];
|
||||||
|
|
||||||
|
env_file = [secrets.homepage.path];
|
||||||
|
|
||||||
|
volumes = let
|
||||||
|
services = toYAML "services.yaml" (import ./services.nix);
|
||||||
|
|
||||||
|
bookmarks = toYAML "bookmarks.yaml" {};
|
||||||
|
|
||||||
|
settings = toYAML "settings.yaml" {
|
||||||
|
# FIXME: title not working
|
||||||
|
title = "bruh";
|
||||||
|
theme = "dark";
|
||||||
|
color = "gray";
|
||||||
|
target = "_self";
|
||||||
|
|
||||||
|
layout.video = {
|
||||||
|
style = "columns";
|
||||||
|
row = 4;
|
||||||
|
# columns = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
widgets = toYAML "widgets.yaml" [
|
||||||
|
{
|
||||||
|
resources = {
|
||||||
|
cpu = true;
|
||||||
|
memory = true;
|
||||||
|
disk = "/";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
search = {
|
||||||
|
provider = "duckduckgo";
|
||||||
|
target = "_blank";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in [
|
||||||
|
"${bookmarks}:/app/config/bookmarks.yaml:ro"
|
||||||
|
"${services}:/app/config/services.yaml:ro"
|
||||||
|
"${settings}:/app/config/settings.yaml:ro"
|
||||||
|
"${widgets}:/app/config/widgets.yaml:ro"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
8
devices/nas/modules/arion/homepage/images/homepage.nix
Normal file
8
devices/nas/modules/arion/homepage/images/homepage.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
pkgs:
|
||||||
|
pkgs.dockerTools.pullImage {
|
||||||
|
imageName = "ghcr.io/gethomepage/homepage";
|
||||||
|
imageDigest = "sha256:0f066a6d6fba3a810a85aa79a483302b0fee21139b67adaeb245edae5051f3e8";
|
||||||
|
sha256 = "1isj9xai2m723g1m6ma2x8g11j6cb8g9jpvrlg3z6m8jhdnn33d7";
|
||||||
|
finalImageName = "ghcr.io/gethomepage/homepage";
|
||||||
|
finalImageTag = "latest";
|
||||||
|
}
|
267
devices/nas/modules/arion/homepage/services.nix
Normal file
267
devices/nas/modules/arion/homepage/services.nix
Normal file
|
@ -0,0 +1,267 @@
|
||||||
|
[
|
||||||
|
#####################################################
|
||||||
|
## PUBLIC
|
||||||
|
#####################################################
|
||||||
|
{
|
||||||
|
public = [
|
||||||
|
{
|
||||||
|
jellyfin = rec {
|
||||||
|
href = "https://jelly.nelim.org";
|
||||||
|
icon = "jellyfin.png";
|
||||||
|
description = "ourflix";
|
||||||
|
widget = {
|
||||||
|
type = "jellyfin";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_JELLY_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
accounts = {
|
||||||
|
href = "https://jelly.nelim.org/accounts";
|
||||||
|
icon = "jellyfin.png";
|
||||||
|
description = "manage jellyfin users";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
jellyseerr = rec {
|
||||||
|
href = "https://seerr.nelim.org";
|
||||||
|
icon = "jellyseerr.png";
|
||||||
|
description = "request handler";
|
||||||
|
widget = {
|
||||||
|
type = "jellyseerr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_SEERR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
gitea = {
|
||||||
|
href = "https://git.nelim.org";
|
||||||
|
icon = "gitea.png";
|
||||||
|
description = "git";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
immich = rec {
|
||||||
|
href = "https://photos.nelim.org";
|
||||||
|
icon = "immich.png";
|
||||||
|
description = "gphotos replacement";
|
||||||
|
widget = {
|
||||||
|
type = "immich";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_IMMICH_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
gameyfin = {
|
||||||
|
href = "https://games.nelim.org";
|
||||||
|
description = "steam (tm)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
nextcloud = rec {
|
||||||
|
href = "https://cloud.nelim.org";
|
||||||
|
icon = "nextcloud.png";
|
||||||
|
description = "PDrive";
|
||||||
|
widget = {
|
||||||
|
type = "nextcloud";
|
||||||
|
url = href;
|
||||||
|
username = "mathis";
|
||||||
|
password = "{{HOMEPAGE_VAR_CLOUD_PASS}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"public vaultwarden" = {
|
||||||
|
href = "https://vault.nelim.org";
|
||||||
|
icon = "bitwarden.png";
|
||||||
|
description = "password manager";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
calibre-web = {
|
||||||
|
href = "https://books.nelim.org";
|
||||||
|
icon = "calibreweb.png";
|
||||||
|
description = "online library";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
#####################################################
|
||||||
|
## VIDEO AUTOMATION
|
||||||
|
#####################################################
|
||||||
|
{
|
||||||
|
"video automation" = [
|
||||||
|
{
|
||||||
|
qbit = rec {
|
||||||
|
href = "https://lan.nelim.org/qbt";
|
||||||
|
icon = "qbittorrent.png";
|
||||||
|
description = "torrent client";
|
||||||
|
widget = {
|
||||||
|
type = "qbittorrent";
|
||||||
|
url = href;
|
||||||
|
username = "admin";
|
||||||
|
password = "{{HOMEPAGE_VAR_QBIT_PASS}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
sabnzbd = rec {
|
||||||
|
href = "https://lan.nelim.org/sabnzbd";
|
||||||
|
icon = "sabnzbd.png";
|
||||||
|
description = "nzb client";
|
||||||
|
widget = {
|
||||||
|
type = "sabnzbd";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_SAB_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
sonarr = rec {
|
||||||
|
href = "https://lan.nelim.org/sonarr";
|
||||||
|
icon = "sonarr.png";
|
||||||
|
description = "fetches tv shows";
|
||||||
|
widget = {
|
||||||
|
type = "sonarr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_SONARR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
radarr = rec {
|
||||||
|
href = "https://lan.nelim.org/radarr";
|
||||||
|
icon = "radarr.png";
|
||||||
|
description = "fetches movies";
|
||||||
|
widget = {
|
||||||
|
type = "radarr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_RADARR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bazarr = rec {
|
||||||
|
href = "https://lan.nelim.org/bazarr";
|
||||||
|
icon = "bazarr.png";
|
||||||
|
description = "fetches subs";
|
||||||
|
widget = {
|
||||||
|
type = "bazarr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_BAZARR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"bazarr french" = rec {
|
||||||
|
href = "https://lan.nelim.org/bafrr";
|
||||||
|
icon = "bazarr.png";
|
||||||
|
description = "fetches subs";
|
||||||
|
widget = {
|
||||||
|
type = "bazarr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_BAZARRFR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
prowlarr = rec {
|
||||||
|
href = "https://lan.nelim.org/prowlarr";
|
||||||
|
icon = "prowlarr.png";
|
||||||
|
description = "fetches tracker queries";
|
||||||
|
widget = {
|
||||||
|
type = "prowlarr";
|
||||||
|
url = href;
|
||||||
|
key = "{{HOMEPAGE_VAR_PROWLARR_API}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
joal = {
|
||||||
|
href = "https://joal.nelim.org";
|
||||||
|
icon = "joal.png";
|
||||||
|
description = "boosts YGGTorrent ratio";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
#####################################################
|
||||||
|
## MISC PROJECTS
|
||||||
|
#####################################################
|
||||||
|
{
|
||||||
|
"misc projects" = [
|
||||||
|
{
|
||||||
|
freshrss = {
|
||||||
|
href = "https://rss.nelim.org";
|
||||||
|
icon = "freshrss.png";
|
||||||
|
description = "rss client";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
docker-hub-rss = {
|
||||||
|
href = "https://drss.nelim.org";
|
||||||
|
icon = "freshrss.png";
|
||||||
|
description = "dockerhub feed maker";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
calibre = {
|
||||||
|
href = "https://lan.nelim.org/calibre";
|
||||||
|
icon = "calibre.png";
|
||||||
|
description = "library backend";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
#####################################################
|
||||||
|
## MANAGEMENT
|
||||||
|
#####################################################
|
||||||
|
{
|
||||||
|
management = [
|
||||||
|
{
|
||||||
|
cloudflare = {
|
||||||
|
href = "https://dash.cloudflare.com/3152abbe78daf6d91c57b6fcc424f958/nelim.org/dns";
|
||||||
|
icon = "cloudflare.png";
|
||||||
|
description = "dns to the world";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
vaultwarden = {
|
||||||
|
href = "https://lan.nelim.org/vault";
|
||||||
|
icon = "bitwarden.png";
|
||||||
|
description = "password manager";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
wireguard = {
|
||||||
|
href = "https://wg.nelim.org";
|
||||||
|
icon = "wireguard.png";
|
||||||
|
description = "wireguard gui";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
steampunk = {
|
||||||
|
icon = "minecraft.png";
|
||||||
|
description = "minecwaf";
|
||||||
|
widget = {
|
||||||
|
type = "minecraft";
|
||||||
|
url = "udp://mc.nelim.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
creative = {
|
||||||
|
icon = "minecraft.png";
|
||||||
|
description = "minecwaf";
|
||||||
|
widget = {
|
||||||
|
type = "minecraft";
|
||||||
|
url = "udp://cv.nelim.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
BIN
flake.lock
BIN
flake.lock
Binary file not shown.
Loading…
Reference in a new issue