NixOS/modules/servers/homepage.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 // { }
);
};
};
}