139 lines
4.2 KiB
Nix
139 lines
4.2 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
proxyReverse,
|
|
setup,
|
|
...
|
|
}:
|
|
let
|
|
services = import ./homepage/services.nix { inherit config lib; };
|
|
cfg = config.my.servers.homepage;
|
|
in
|
|
{
|
|
options.my.servers.homepage = setup.mkOptions "homepage" "home" 8082;
|
|
config = {
|
|
networking.firewall.allowedTCPPorts = lib.mkIf (!cfg.isLocal) [ cfg.port ];
|
|
sops.secrets = lib.mkIf cfg.enable { homepage.sopsFile = ../../secrets/homepage.yaml; };
|
|
services = {
|
|
homepage-dashboard = lib.mkIf cfg.enable {
|
|
enable = true;
|
|
listenPort = cfg.port;
|
|
environmentFile = config.sops.secrets.homepage.path;
|
|
settings = {
|
|
background = {
|
|
image = "https://wallup.net/wp-content/uploads/2019/10/1027227-artwork-classic-art-painting-sailing-ship-sea-clouds-people-claude-joseph-vernet-night-moon.jpg";
|
|
blur = "sm";
|
|
};
|
|
layout = {
|
|
stash = {
|
|
header = false;
|
|
tab = "secret";
|
|
style = "row";
|
|
};
|
|
multimedia = {
|
|
header = false;
|
|
tab = "servers";
|
|
style = "row";
|
|
columns = 4;
|
|
};
|
|
piracy = {
|
|
header = false;
|
|
tab = "servers";
|
|
style = "row";
|
|
columns = 4;
|
|
};
|
|
main = {
|
|
header = false;
|
|
tab = "servers";
|
|
style = "row";
|
|
columns = 3;
|
|
};
|
|
"server bookmarks" = {
|
|
header = false;
|
|
tab = "servers";
|
|
style = "row";
|
|
columns = 3;
|
|
};
|
|
art.tab = "bookmarks";
|
|
entertainment.tab = "bookmarks";
|
|
torrents.tab = "bookmarks";
|
|
shopping.tab = "bookmarks";
|
|
social.tab = "bookmarks";
|
|
development.tab = "bookmarks";
|
|
"secret art".tab = "secret";
|
|
"secret media".tab = "secret";
|
|
"secret social".tab = "secret";
|
|
};
|
|
};
|
|
widgets = [
|
|
{
|
|
resources = {
|
|
cpu = true;
|
|
cputemp = true;
|
|
units = "metric";
|
|
disk = "/";
|
|
memory = true;
|
|
};
|
|
}
|
|
{
|
|
search = {
|
|
provider = [
|
|
"brave"
|
|
"bing"
|
|
"google"
|
|
];
|
|
target = "_blank";
|
|
showSearchSuggestions = true;
|
|
};
|
|
}
|
|
];
|
|
services = [
|
|
{ "stash" = [ { inherit (services) stash; } ]; }
|
|
{
|
|
"multimedia" = [
|
|
{ inherit (services) jellyfin; }
|
|
{ inherit (services) "now playing"; }
|
|
{ inherit (services) audiobookshelf; }
|
|
{ inherit (services) kavita; }
|
|
];
|
|
}
|
|
{
|
|
"piracy" = [
|
|
{ inherit (services) sonarr; }
|
|
{ inherit (services) radarr; }
|
|
{ inherit (services) lidarr; }
|
|
{ inherit (services) bazarr; }
|
|
{ inherit (services) prowlarr; }
|
|
{ inherit (services) sabnzbd; }
|
|
{ inherit (services) "qbittorrent server"; }
|
|
{ inherit (services) "qbittorrent miniserver"; }
|
|
];
|
|
}
|
|
{
|
|
"main" = [
|
|
{ inherit (services) nextcloud; }
|
|
{ inherit (services) mealie; }
|
|
{ inherit (services) paperless; }
|
|
];
|
|
}
|
|
];
|
|
bookmarks = [
|
|
(import ./homepage/bookmarks/servers.nix)
|
|
(import ./homepage/bookmarks/art.nix)
|
|
(import ./homepage/bookmarks/entertainment.nix)
|
|
(import ./homepage/bookmarks/torrents.nix)
|
|
(import ./homepage/bookmarks/shopping.nix)
|
|
(import ./homepage/bookmarks/social.nix)
|
|
(import ./homepage/bookmarks/development.nix)
|
|
(import ./homepage/bookmarks/secret-art.nix)
|
|
(import ./homepage/bookmarks/secret-media.nix)
|
|
(import ./homepage/bookmarks/secret-social.nix)
|
|
];
|
|
};
|
|
nginx.virtualHosts."${cfg.host}" = lib.mkIf cfg.enableProxy (
|
|
proxyReverse cfg.hostName cfg.port // { }
|
|
);
|
|
};
|
|
};
|
|
}
|