From 2f627902f3deee3ea3daeb218aa1edc24db5a414 Mon Sep 17 00:00:00 2001 From: blake Date: Mon, 13 Oct 2025 16:25:33 -0500 Subject: [PATCH] update "${services}" --- ...nix.template => .default.nix.template.nix} | 85 +++--- .../homelab/services/arr/bazarr/default.nix | 6 +- .../services/arr/flaresolverr/default.nix | 6 +- .../homelab/services/arr/prowlarr/default.nix | 6 +- .../homelab/services/arr/radarr/default.nix | 10 +- .../homelab/services/arr/sonarr/default.nix | 6 +- .../services/audiobookshelf/default.nix | 10 +- modules/homelab/services/caddy/default.nix | 6 +- modules/homelab/services/gitea/default.nix | 6 +- modules/homelab/services/glance/default.nix | 162 ++++++++---- .../homelab/services/glance/default.nix.bak | 247 ------------------ modules/homelab/services/glance/test.nix | 11 - modules/homelab/services/glance/yml.yaml | 63 ----- .../services/home/mosquitto/default.nix | 10 +- .../services/home/zigbee2mqtt/default.nix | 10 +- modules/homelab/services/immich/default.nix | 6 +- modules/homelab/services/jellyfin/default.nix | 6 +- .../homelab/services/qbittorrent/default.nix | 6 +- .../homelab/services/vaultwarden/default.nix | 2 +- .../homelab/services/yacreader/default.nix | 7 - users/blake/dots/neovim/default.nix | 142 +++++++--- 21 files changed, 321 insertions(+), 492 deletions(-) rename modules/homelab/services/{.default.nix.template => .default.nix.template.nix} (50%) delete mode 100644 modules/homelab/services/glance/default.nix.bak delete mode 100644 modules/homelab/services/glance/test.nix delete mode 100644 modules/homelab/services/glance/yml.yaml diff --git a/modules/homelab/services/.default.nix.template b/modules/homelab/services/.default.nix.template.nix similarity index 50% rename from modules/homelab/services/.default.nix.template rename to modules/homelab/services/.default.nix.template.nix index 05d74d4..db34b5f 100644 --- a/modules/homelab/services/.default.nix.template +++ b/modules/homelab/services/.default.nix.template.nix @@ -1,4 +1,9 @@ -{ pkgs, config, lib, ... }: +{ + pkgs, + config, + lib, + ... +}: let service = ""; @@ -39,9 +44,11 @@ in }; config = lib.mkIf cfg.enable { - + # declare ${service} group - users.groups.${service} = { gid = lib.mkForce cfg.ids; }; + users.groups.${service} = { + gid = lib.mkForce cfg.ids; + }; # declare ${service} user users.users.${service} = { @@ -50,7 +57,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -58,8 +65,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; dataDir = cfg.data_dir; settings = { server.port = cfg.port; @@ -69,40 +76,52 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; -# User = "${service}"; -# Group = "${service}"; + # User = service; + # Group = service; }; -# # open firewall -# networking.firewall.allowedTCPPorts = [ cfg.port ]; + # # open firewall + # networking.firewall.allowedTCPPorts = [ cfg.port ]; + # add to caddy for reverse proxy + services.caddy.virtualHosts."${cfg.url}" = { + serverAliases = [ "${service}.${homelab.public_domain}" ]; + extraConfig = '' + tls /etc/ssl/blakedheld.xyz.crt /etc/ssl/blakedheld.xyz.key + reverse_proxy 127.0.0.1:${toString cfg.port} + ''; + }; -# # add to glance public service -# modules.services.glance.links. = [{ -# title = service; -# url = "https://${service}.${homelab.public_domain}"; -# error-url = "http://${homelab.host_ip}:${toString cfg.port}"; -# check-url = "http://${homelab.host_ip}:${toString cfg.port}"; -# icon = "di:${service}"; }]; -#--------------------------------------------------------------------------- -# # add to glance local service -# modules.services.glance.links. = [{ -# title = service; -# url = "https://${cfg.url}"; -# error-url = "http://${homelab.host_ip}:${toString cfg.port}"; -# check-url = "http://${homelab.host_ip}:${toString cfg.port}"; -# icon = "di:${service}"; }]; -# -# sops.secrets = { -# "${service}_" = { -# owner = "${service}"; -# group = "${service}"; -# }; -# }; + #--------------------------------------------------------------------------- + # # add to glance (public service) + # modules.services.glance.links. = [{ + # title = service; + # url = "https://${service}.${homelab.public_domain}"; + # error-url = "http://${homelab.host_ip}:${toString cfg.port}"; + # check-url = "http://${homelab.host_ip}:${toString cfg.port}"; + # icon = "di:${service}"; }]; + #--------------------------------------------------------------------------- + # # add to glance (local service) + # modules.services.glance.links. = [{ + # title = service; + # url = "https://${cfg.url}"; + # error-url = "http://${homelab.host_ip}:${toString cfg.port}"; + # check-url = "http://${homelab.host_ip}:${toString cfg.port}"; + # icon = "di:${service}"; }]; + #--------------------------------------------------------------------------- + # + # sops.secrets = { + # "${service}_" = { + # owner = ; + # group = ; + # }; + # }; # add to backups modules.system.backups.baks = { - ${service} = { paths = [ cfg.data_dir ]; }; + ${service} = { + paths = [ cfg.data_dir ]; + }; }; }; } diff --git a/modules/homelab/services/arr/bazarr/default.nix b/modules/homelab/services/arr/bazarr/default.nix index 1c632b7..154567d 100644 --- a/modules/homelab/services/arr/bazarr/default.nix +++ b/modules/homelab/services/arr/bazarr/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -58,8 +58,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; listenPort = cfg.port; }; diff --git a/modules/homelab/services/arr/flaresolverr/default.nix b/modules/homelab/services/arr/flaresolverr/default.nix index f5104f1..53f49c3 100644 --- a/modules/homelab/services/arr/flaresolverr/default.nix +++ b/modules/homelab/services/arr/flaresolverr/default.nix @@ -48,7 +48,7 @@ in description = "${service} server user"; uid = lib.mkForce cfg.ids; isSystemUser = true; - group = "${service}"; + group = service; }; # enable the ${service} service @@ -60,8 +60,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { - User = "${service}"; - Group = "${service}"; + User = service; + Group = service; }; # # open firewall diff --git a/modules/homelab/services/arr/prowlarr/default.nix b/modules/homelab/services/arr/prowlarr/default.nix index a38baa2..c2f0bfc 100644 --- a/modules/homelab/services/arr/prowlarr/default.nix +++ b/modules/homelab/services/arr/prowlarr/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -66,8 +66,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; - User = "${service}"; - Group = "${service}"; + User = service; + Group = service; }; # # open firewall diff --git a/modules/homelab/services/arr/radarr/default.nix b/modules/homelab/services/arr/radarr/default.nix index 54f3e73..5b96e51 100644 --- a/modules/homelab/services/arr/radarr/default.nix +++ b/modules/homelab/services/arr/radarr/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -58,8 +58,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; dataDir = cfg.data_dir; settings = { server.port = cfg.port; @@ -69,8 +69,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; -# User = "${service}"; -# Group = "${service}"; +# User = service; +# Group = service; }; # # open firewall diff --git a/modules/homelab/services/arr/sonarr/default.nix b/modules/homelab/services/arr/sonarr/default.nix index 47bab4b..66883a8 100644 --- a/modules/homelab/services/arr/sonarr/default.nix +++ b/modules/homelab/services/arr/sonarr/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -58,8 +58,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; dataDir = cfg.data_dir; settings = { server.port = cfg.port; diff --git a/modules/homelab/services/audiobookshelf/default.nix b/modules/homelab/services/audiobookshelf/default.nix index f1b4980..fdb6011 100644 --- a/modules/homelab/services/audiobookshelf/default.nix +++ b/modules/homelab/services/audiobookshelf/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; # home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -58,8 +58,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; # dataDir = cfg.data_dir; host = "0.0.0.0"; port = cfg.port; @@ -68,8 +68,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; -# User = "${service}"; -# Group = "${service}"; +# User = service; +# Group = service; }; # # open firewall diff --git a/modules/homelab/services/caddy/default.nix b/modules/homelab/services/caddy/default.nix index d7080ea..c0287b4 100644 --- a/modules/homelab/services/caddy/default.nix +++ b/modules/homelab/services/caddy/default.nix @@ -34,15 +34,15 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = []; }; # enable the ${service} service services.${service} = { enable = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; dataDir = cfg.data_dir; email = "me@blakedheld.xyz"; globalConfig = '' diff --git a/modules/homelab/services/gitea/default.nix b/modules/homelab/services/gitea/default.nix index 48248ab..5ec0144 100644 --- a/modules/homelab/services/gitea/default.nix +++ b/modules/homelab/services/gitea/default.nix @@ -56,7 +56,7 @@ in shell = pkgs.bash; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = []; }; @@ -112,8 +112,8 @@ in # manage secrets with sops sops.secrets = { "${service}_database_password" = { - owner = "${service}"; - group = "${service}"; + owner = service; + group = service; }; }; diff --git a/modules/homelab/services/glance/default.nix b/modules/homelab/services/glance/default.nix index ab51764..197643b 100644 --- a/modules/homelab/services/glance/default.nix +++ b/modules/homelab/services/glance/default.nix @@ -1,19 +1,24 @@ -{ pkgs, config, lib, ... }: +{ + pkgs, + config, + lib, + ... +}: /* -this is a wrapper module for glance that allows you to -to pass monitor entries in with nix, all declaratively! + this is a wrapper module for glance that allows you to + to pass monitor entries in with nix, all declaratively! - | <8yy> | - V V - # add to glance - modules.services.glance.links.mediastack = [{ - title = service; - url = "https://${cfg.url}"; - error-url = "http://${homelab.host_ip}:${toString cfg.port}"; - check-url = "http://${homelab.host_ip}:${toString cfg.port}"; - icon = "di:${service}"; - allow-insecure = true; }]; + | <8yy> | + V V + # add to glance + modules.services.glance.links.mediastack = [{ + title = service; + url = "https://${cfg.url}"; + error-url = "http://${homelab.host_ip}:${toString cfg.port}"; + check-url = "http://${homelab.host_ip}:${toString cfg.port}"; + icon = "di:${service}"; + allow-insecure = true; }]; */ let @@ -58,27 +63,28 @@ in links = { services = lib.mkOption { type = lib.types.listOf lib.types.attrs; - default = []; + default = [ ]; description = "list of links for ${service}"; }; mediastack = lib.mkOption { type = lib.types.listOf lib.types.attrs; - default = []; + default = [ ]; description = "list of links for ${service}"; }; system = lib.mkOption { type = lib.types.listOf lib.types.attrs; - default = []; + default = [ ]; description = "list of links for ${service}"; }; }; }; config = lib.mkIf cfg.enable { - # declare ${service} group - users.groups.${service} = { gid = lib.mkForce cfg.ids; }; + users.groups.${service} = { + gid = lib.mkForce cfg.ids; + }; # declare ${service} user users.users.${service} = { @@ -87,11 +93,11 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; - extraGroups = []; + group = service; + extraGroups = [ ]; }; - services.${service} = { + services.${service} = { enable = true; openFirewall = true; settings = { @@ -100,16 +106,20 @@ in port = cfg.port; assets-path = "${cfg.data_dir}/assets"; }; -# theme = {custom-css-file = "/assets/user.css";}; + # theme = {custom-css-file = "/assets/user.css";}; auth = { secret-key = "+mYVAc1uO85hUUz5Ij6Lpelv1RqiLlneYqZD5Jv45buoF2+LZtIt2okRrbFCppiRQbqXkGoRMtSI0bROg4uFUw=="; - users = {blake = {password-hash = "$2a$10$RwPCkcto35DCp4vNTDpH6.G3TpecPJ/zUL1jI93uzr.lg6v233Sie";};}; + users = { + blake = { + password-hash = "$2a$10$RwPCkcto35DCp4vNTDpH6.G3TpecPJ/zUL1jI93uzr.lg6v233Sie"; + }; + }; }; branding = { logo-url = "/assets/icons/snowbelle.png"; favicon-url = "/assets/icons/favicon.ico"; }; - pages = [ + pages = [ { name = "snowbelle"; hide-desktop-navigation = true; @@ -117,17 +127,43 @@ in { size = "small"; widgets = [ - { type = "calendar"; first-day-of-week = "monday"; } - { type = "server-stats"; servers = [ { type = "local"; name = "snowbelle"; } ]; } + { + type = "calendar"; + first-day-of-week = "monday"; + } + { + type = "server-stats"; + servers = [ + { + type = "local"; + name = "snowbelle"; + } + ]; + } { type = "clock"; hour-format = "24h"; timezones = [ - { timezone = "America/Chicago"; label = "HTX"; } - { timezone = "America/Denver"; label = "AF"; } + { + timezone = "America/Chicago"; + label = "HTX"; + } + { + timezone = "America/Denver"; + label = "AF"; + } + ]; + } + { + type = "twitch-channels"; + channels = [ + "mang0" + "SaltSSBM" + "thewaffle77" + "ironmouse" + "linustech" ]; } - { type = "twitch-channels"; channels = [ "mang0" "SaltSSBM" "thewaffle77" "ironmouse" "linustech" ]; } ]; } { @@ -139,9 +175,21 @@ in search-engine = "https://www.ecosia.org/search?q={QUERY}"; new-tab = true; bangs = [ - { title = "YouTube"; shortcut = "!y"; url = "https://www.youtube.com/results?search_query={QUERY}"; } - { title = "Google"; shortcut = "!g"; url = "https://www.google.com/search?q={QUERY}"; } - { title = "Github"; shortcut = "!gh"; url = "https://github.com/search?q={QUERY}&type=repositories"; } + { + title = "YouTube"; + shortcut = "!y"; + url = "https://www.youtube.com/results?search_query={QUERY}"; + } + { + title = "Google"; + shortcut = "!g"; + url = "https://www.google.com/search?q={QUERY}"; + } + { + title = "Github"; + shortcut = "!gh"; + url = "https://github.com/search?q={QUERY}&type=repositories"; + } ]; } { @@ -174,24 +222,48 @@ in { size = "small"; widgets = [ - { type = "weather"; location = "Pearland, Texas, United States"; units = "imperial"; hour-format = "24h"; } + { + type = "weather"; + location = "Pearland, Texas, United States"; + units = "imperial"; + hour-format = "24h"; + } { type = "custom-api"; title = "uptime"; title-url = "\${uptimekuma_url}"; url = "\${uptimekuma_url}/api/status-page/\${uptimekuma_page}"; - subrequests = {heartbeats = {url = "\${uptimekuma_url}/api/status-page/heartbeat/\${uptimekuma_page}";};}; + subrequests = { + heartbeats = { + url = "\${uptimekuma_url}/api/status-page/heartbeat/\${uptimekuma_page}"; + }; + }; cache = "10m"; template = "{{ $hb := .Subrequest \"heartbeats\" }}\n\n{{ if not (.JSON.Exists \"publicGroupList\") }}\n

Error reading response

\n{{ else if eq (len (.JSON.Array \"publicGroupList\")) 0 }}\n

No monitors found

\n{{ else }}\n\n
    \n {{ range .JSON.Array \"publicGroupList\" }}\n {{ range .Array \"monitorList\" }}\n {{ $id := .String \"id\" }}\n {{ $hbArray := $hb.JSON.Array (print \"heartbeatList.\" $id) }}\n
    \n \n {{ .String \"name\" }} \n\n {{ if gt (len $hbArray) 0 }}\n {{ $latest := index $hbArray (sub (len $hbArray) 1) }}\n {{ if eq ($latest.Int \"status\") 1 }}\n
    {{ $latest.Int \"ping\" }}ms
    \n
    \n \n \n \n
    \n {{ else }}\n
    DOWN
    \n
    \n \n \n \n
    \n {{ end }}\n {{ else }}\n
    No data
    \n
    \n \n \n \n
    \n {{ end }}\n
    \n {{ end }}\n {{ end }}\n
\n{{ end }}\n"; } { type = "markets"; markets = [ - { symbol = "SPY"; name = "S&P 500"; } - { symbol = "XMR-USD"; name = "Monero"; } - { symbol = "NVDA"; name = "NVIDIA"; } - { symbol = "AAPL"; name = "Apple"; } - { symbol = "MSFT"; name = "Microsoft"; } + { + symbol = "SPY"; + name = "S&P 500"; + } + { + symbol = "XMR-USD"; + name = "Monero"; + } + { + symbol = "NVDA"; + name = "NVIDIA"; + } + { + symbol = "AAPL"; + name = "Apple"; + } + { + symbol = "MSFT"; + name = "Microsoft"; + } ]; } { @@ -209,10 +281,8 @@ in ]; } ]; - }; - }; - - + }; + }; # override umask to make permissions work out systemd.services.${service}.serviceConfig = { @@ -223,7 +293,7 @@ in # add to caddy for reverse proxy services.caddy.virtualHosts."${cfg.url}" = { -# serverAliases = [ "${homelab.public_domain}" ]; + # serverAliases = [ "${homelab.public_domain}" ]; extraConfig = '' tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path} reverse_proxy 127.0.0.1:${toString cfg.port} @@ -232,7 +302,9 @@ in # add to backups modules.system.backups.baks = { - ${service} = { paths = [ cfg.data_dir ]; }; + ${service} = { + paths = [ cfg.data_dir ]; + }; }; }; } diff --git a/modules/homelab/services/glance/default.nix.bak b/modules/homelab/services/glance/default.nix.bak deleted file mode 100644 index f2635a4..0000000 --- a/modules/homelab/services/glance/default.nix.bak +++ /dev/null @@ -1,247 +0,0 @@ -{ pkgs, config, lib, ... }: - -/* -this is a wrapper module for glance that allows you to -to pass monitor entries in with nix, all declaratively! - - | <8yy> | - V V - # add to glance - modules.services.glance.links.mediastack = [{ - title = service; - url = "https://${cfg.url}"; - error-url = "http://${homelab.host_ip}:${toString cfg.port}"; - check-url = "http://${homelab.host_ip}:${toString cfg.port}"; - icon = "di:${service}"; - allow-insecure = true; }]; -*/ - -let - service = "glance"; - cfg = config.modules.services.${service}; - sec = config.sops.secrets; - homelab = config.modules.homelab; -in -{ - options.modules.services.${service} = { - enable = lib.mkEnableOption "enables ${service}"; - - # set port options - port = lib.mkOption { - type = lib.types.int; - default = 7700; - description = "set port for ${service} (default: ${toString cfg.port}"; - }; - url = lib.mkOption { - type = lib.types.str; - default = "${homelab.base_domain}"; - description = "set domain for ${service}"; - }; - data_dir = lib.mkOption { - type = lib.types.str; - default = "/var/lib/${service}"; - description = "set data directory for ${service}"; - }; - ids = lib.mkOption { - type = lib.types.int; - default = cfg.port; - description = "set uid and pid of ${service} user (matches port by default)"; - }; - backup = lib.mkOption { - type = lib.types.bool; - default = true; - description = "enable backups for ${service}"; - }; - links = { - services = lib.mkOption { - type = lib.types.listOf lib.types.attrs; - default = []; - description = "list of links for ${service}"; - }; - mediastack = lib.mkOption { - type = lib.types.listOf lib.types.attrs; - default = []; - description = "list of links for ${service}"; - }; - system = lib.mkOption { - type = lib.types.listOf lib.types.attrs; - default = []; - description = "list of links for ${service}"; - }; - }; - }; - - config = lib.mkIf cfg.enable { - - - # declare ${service} group - users.groups.${service} = { gid = lib.mkForce cfg.ids; }; - - # declare ${service} user - users.users.${service} = { - description = "${service} server user"; - uid = lib.mkForce cfg.ids; - isSystemUser = true; - home = cfg.data_dir; - createHome = true; - group = "${service}"; - extraGroups = []; - }; - - services.${service} = { - enable = true; - openFirewall = true; - settings = { - server = { - host = "0.0.0.0"; - port = cfg.port; - }; - pages = [ - { - name = "violet"; - hide-desktop-navigation = true; - columns = [ - { - size = "small"; - widgets = [ - { type = "calendar"; first-day-of-week = "monday"; } - { type = "server-stats"; servers = [ { type = "local"; name = "violet"; } ]; } - { - type = "clock"; - hour-format = "24h"; - timezones = [ - { timezone = "America/Chicago"; label = "HTX"; } - { timezone = "America/Denver"; label = "AF"; } - ]; - } - { type = "twitch-channels"; channels = [ "mang0" "SaltSSBM" "thewaffle77" "ironmouse" "linustech" ]; } - ]; - } - { - size = "full"; - widgets = [ - { - type = "search"; - autofocus = true; - search-engine = "https://www.ecosia.org/search?q={QUERY}"; - new-tab = true; - bangs = [ - { title = "YouTube"; shortcut = "!y"; url = "https://www.youtube.com/results?search_query={QUERY}"; } - { title = "Google"; shortcut = "!g"; url = "https://www.google.com/search?q={QUERY}"; } - { title = "Github"; shortcut = "!gh"; url = "https://github.com/search?q={QUERY}&type=repositories"; } - ]; - } - { - type = "monitor"; - cache = "1m"; - title = "services"; - sites = cfg.links.services; -# sites = [ -# { title = "jellyfin"; url = "https://media.blakedheld.xyz"; icon = "di:jellyfin"; } -# { title = "audiobookshelf"; url = "https://audiobooks.blakedheld.xyz"; icon = "di:audiobookshelf"; } -# { title = "yacreader"; url = "http://10.10.0.30:3434"; icon = "/assets/icons/yacreader.png"; } -# { title = "sonarr"; url = "http://10.10.0.30:3636"; icon = "di:sonarr"; } -# { title = "qbittorrent"; url = "http://10.10.0.40:3333"; icon = "di:qbittorrent"; } -# { title = "radarr"; url = "http://10.10.0.30:3737"; icon = "di:radarr"; } -# { title = "kiwix"; url = "http://10.10.0.30:5050"; icon = "di:kiwix"; } -# { title = "prowlarr"; url = "http://10.10.0.30:3535"; icon = "di:prowlarr"; } -# { title = "bazarr"; url = "http://10.10.0.30:3838"; icon = "di:bazarr"; } -# ]; - } - { - type = "monitor"; - cache = "1m"; - title = "mediastack"; - sites = cfg.links.mediastack; -# [ -# { title = "immich"; url = "https://pics.blakedheld.xyz"; icon = "di:immich"; } -# { title = "vaultwarden"; url = "https://pass.blakedheld.xyz"; icon = "di:vaultwarden"; } -# { title = "gitea"; url = "https://git.blakedheld.xyz"; icon = "di:gitea"; } -# { title = "home assistant"; url = "https://home.blakedheld.xyz"; icon = "di:home-assistant"; } -# { title = "zigbee2mqtt"; url = "http://10.10.0.30:4142"; icon = "di:zigbee2mqtt"; } -# { title = "syncthing"; url = "http://10.10.0.20:2222"; icon = "di:syncthing"; } -# { title = "archivebox"; url = "http://10.10.0.30:5656"; icon = "sh:archivebox"; } -# { title = "copyparty"; url = "http://10.10.0.20:3923"; icon = "sh:copyparty"; } -# ]; - } - { - type = "monitor"; - cache = "1m"; - title = "system"; - sites = cfg.links.system; -# [ -# { title = "proxmox"; url = "http://10.10.0.10:8006"; icon = "di:proxmox"; allow-insecure = true; } -# { title = "nginx"; url = "http://10.10.0.30:8080"; icon = "di:nginx"; } -# { title = "uptime kuma"; url = "http://10.10.0.30:8181"; icon = "di:uptime-kuma"; } -# { title = "tn holocron"; url = "https://10.10.0.20"; icon = "di:truenas"; allow-insecure = true; } -# { title = "bebe"; url = "https://10.10.0.1"; icon = "di:unifi"; allow-insecure = true; } -# ]; - } - ]; - } - { - size = "small"; - widgets = [ - { type = "weather"; location = "Pearland, Texas, United States"; units = "imperial"; hour-format = "24h"; } - { - type = "markets"; - markets = [ - { symbol = "SPY"; name = "S&P 500"; } - { symbol = "XMR-USD"; name = "Monero"; } - { symbol = "NVDA"; name = "NVIDIA"; } - { symbol = "AAPL"; name = "Apple"; } - { symbol = "MSFT"; name = "Microsoft"; } - ]; - } - { - type = "releases"; - cache = "1d"; - repositories = [ - "glanceapp/glance" - "go-gitea/gitea" - "immich-app/immich" - "syncthing/syncthing" - ]; - } - ]; - } - ]; - } - ]; - }; - }; - - - - # override umask to make permissions work out - systemd.services.${service}.serviceConfig = { - UMask = lib.mkForce "0007"; -# User = "${service}"; -# Group = "${service}"; - }; - -# # open firewall -# networking.firewall.allowedTCPPorts = [ cfg.port ]; - -# sops.secrets = { -# "${service}_" = { -# owner = "${service}"; -# group = "${service}"; -# }; -# }; - - # add to caddy for reverse proxy - services.caddy.virtualHosts."${cfg.url}" = { -# serverAliases = [ "${homelab.public_domain}" ]; - extraConfig = '' - tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path} - reverse_proxy http://127.0.0.1:${toString cfg.port} - ''; - }; - - # add to backups - modules.system.backups.baks = { - ${service} = { paths = [ cfg.data_dir ]; }; - }; - }; -} diff --git a/modules/homelab/services/glance/test.nix b/modules/homelab/services/glance/test.nix deleted file mode 100644 index fc2d7a5..0000000 --- a/modules/homelab/services/glance/test.nix +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - type = "custom-api"; - title = "Uptime Kumas"; - title-url = "\${UPTIME_KUMA_URL}"; - url = "\${UPTIME_KUMA_URL}/api/status-page/\${UPTIME_KUMA_STATUS_SLUG}"; - subrequests = {heartbeats = {url = "\${UPTIME_KUMA_URL}/api/status-page/heartbeat/\${UPTIME_KUMA_STATUS_SLUG}";};}; - cache = "10m"; - template = "{{ $hb := .Subrequest \"heartbeats\" }}\n\n{{ if not (.JSON.Exists \"publicGroupList\") }}\n

Error reading response

\n{{ else if eq (len (.JSON.Array \"publicGroupList\")) 0 }}\n

No monitors found

\n{{ else }}\n\n
    \n {{ range .JSON.Array \"publicGroupList\" }}\n {{ range .Array \"monitorList\" }}\n {{ $id := .String \"id\" }}\n {{ $hbArray := $hb.JSON.Array (print \"heartbeatList.\" $id) }}\n
    \n \n {{ .String \"name\" }} \n\n {{ if gt (len $hbArray) 0 }}\n {{ $latest := index $hbArray (sub (len $hbArray) 1) }}\n {{ if eq ($latest.Int \"status\") 1 }}\n
    {{ $latest.Int \"ping\" }}ms
    \n
    \n \n \n \n
    \n {{ else }}\n
    DOWN
    \n
    \n \n \n \n
    \n {{ end }}\n {{ else }}\n
    No data
    \n
    \n \n \n \n
    \n {{ end }}\n
    \n {{ end }}\n {{ end }}\n
\n{{ end }}\n"; - } -] diff --git a/modules/homelab/services/glance/yml.yaml b/modules/homelab/services/glance/yml.yaml deleted file mode 100644 index 2ce7bf8..0000000 --- a/modules/homelab/services/glance/yml.yaml +++ /dev/null @@ -1,63 +0,0 @@ -- type: custom-api - title: Uptime Kumas - title-url: ${UPTIME_KUMA_URL} - url: ${UPTIME_KUMA_URL}/api/status-page/${UPTIME_KUMA_STATUS_SLUG} - subrequests: - heartbeats: - url: ${UPTIME_KUMA_URL}/api/status-page/heartbeat/${UPTIME_KUMA_STATUS_SLUG} - cache: 10m - template: | - {{ $hb := .Subrequest "heartbeats" }} - - {{ if not (.JSON.Exists "publicGroupList") }} -

Error reading response

- {{ else if eq (len (.JSON.Array "publicGroupList")) 0 }} -

No monitors found

- {{ else }} - -
    - {{ range .JSON.Array "publicGroupList" }} - {{ range .Array "monitorList" }} - {{ $id := .String "id" }} - {{ $hbArray := $hb.JSON.Array (print "heartbeatList." $id) }} -
    - - {{ .String "name" }} - - {{ if gt (len $hbArray) 0 }} - {{ $latest := index $hbArray (sub (len $hbArray) 1) }} - {{ if eq ($latest.Int "status") 1 }} -
    {{ $latest.Int "ping" }}ms
    -
    - - - -
    - {{ else }} -
    DOWN
    -
    - - - -
    - {{ end }} - {{ else }} -
    No data
    -
    - - - -
    - {{ end }} -
    - {{ end }} - {{ end }} -
- {{ end }} - diff --git a/modules/homelab/services/home/mosquitto/default.nix b/modules/homelab/services/home/mosquitto/default.nix index 6b3988f..7b56871 100644 --- a/modules/homelab/services/home/mosquitto/default.nix +++ b/modules/homelab/services/home/mosquitto/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = []; }; @@ -73,8 +73,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; - User = "${service}"; - Group = "${service}"; + User = service; + Group = service; }; # open firewall @@ -82,8 +82,8 @@ in sops.secrets = { "${service}_hashed_passwd" = { - owner = "${service}"; - group = "${service}"; + owner = service; + group = service; }; }; diff --git a/modules/homelab/services/home/zigbee2mqtt/default.nix b/modules/homelab/services/home/zigbee2mqtt/default.nix index 0eed28b..03f7215 100644 --- a/modules/homelab/services/home/zigbee2mqtt/default.nix +++ b/modules/homelab/services/home/zigbee2mqtt/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = []; }; @@ -87,8 +87,8 @@ in # override umask to make permissions work out systemd.services.${service}.serviceConfig = { UMask = lib.mkForce "0007"; - User = "${service}"; - Group = "${service}"; + User = service; + Group = service; }; # # open firewall @@ -113,8 +113,8 @@ in sops.secrets = { "mosquitto_passwd.yaml" = { - owner = "${service}"; - group = "${service}"; + owner = service; + group = service; }; }; diff --git a/modules/homelab/services/immich/default.nix b/modules/homelab/services/immich/default.nix index 19c055e..df041c0 100644 --- a/modules/homelab/services/immich/default.nix +++ b/modules/homelab/services/immich/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "video" "render" ]; }; @@ -59,8 +59,8 @@ in enable = true; package = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.immich; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; mediaLocation = cfg.data_dir; host = "0.0.0.0"; port = cfg.port; diff --git a/modules/homelab/services/jellyfin/default.nix b/modules/homelab/services/jellyfin/default.nix index 74ff737..b18366b 100644 --- a/modules/homelab/services/jellyfin/default.nix +++ b/modules/homelab/services/jellyfin/default.nix @@ -50,7 +50,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" "video" "render" ]; }; @@ -58,8 +58,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; dataDir = cfg.data_dir; }; diff --git a/modules/homelab/services/qbittorrent/default.nix b/modules/homelab/services/qbittorrent/default.nix index 6de1df3..d7c86f8 100644 --- a/modules/homelab/services/qbittorrent/default.nix +++ b/modules/homelab/services/qbittorrent/default.nix @@ -60,7 +60,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = [ "media" ]; }; @@ -68,8 +68,8 @@ in services.${service} = { enable = true; openFirewall = true; - user = "${service}"; - group = "${service}"; + user = service; + group = service; profileDir = cfg.data_dir; webuiPort = cfg.port; # torrentingPort = cfg.torrenting_port; diff --git a/modules/homelab/services/vaultwarden/default.nix b/modules/homelab/services/vaultwarden/default.nix index 5dcd989..dfe18d2 100644 --- a/modules/homelab/services/vaultwarden/default.nix +++ b/modules/homelab/services/vaultwarden/default.nix @@ -51,7 +51,7 @@ in isSystemUser = true; home = cfg.data_dir; createHome = true; - group = "${service}"; + group = service; extraGroups = []; }; diff --git a/modules/homelab/services/yacreader/default.nix b/modules/homelab/services/yacreader/default.nix index 750ce11..ad1896d 100644 --- a/modules/homelab/services/yacreader/default.nix +++ b/modules/homelab/services/yacreader/default.nix @@ -96,13 +96,6 @@ in check-url = "http://${homelab.host_ip}:${toString cfg.port}"; icon = "di:yac-reader"; }]; -# sops.secrets = { -# "${service}_" = { -# owner = "${service}"; -# group = "${service}"; -# }; -# }; - # add to backups modules.system.backups.baks = { ${service} = { paths = [ cfg.data_dir ]; }; diff --git a/users/blake/dots/neovim/default.nix b/users/blake/dots/neovim/default.nix index c475ceb..ce461a4 100644 --- a/users/blake/dots/neovim/default.nix +++ b/users/blake/dots/neovim/default.nix @@ -1,8 +1,13 @@ -{ pkgs, config, lib, inputs, ... }: - +{ + pkgs, + config, + lib, + inputs, + ... +}: { imports = [ - inputs.nvf.homeManagerModules.default + inputs.nvf.homeManagerModules.default ]; programs.nvf = { @@ -16,59 +21,114 @@ vimAlias = true; - lsp = { - enable = true; - servers.nix = { - enable = true; - format = { - enable = true; - command = "alejandra"; - args = []; - }; - }; - }; - + lsp.enable = true; statusline.lualine.enable = true; telescope.enable = true; autocomplete.nvim-cmp.enable = true; - keymaps = [ # visual line movement (insert mode) - { key = ""; mode = [ "i" ]; action = "gk"; desc = "Visual Line Up (Insert)"; } - { key = ""; mode = [ "i" ]; action = "gj"; desc = "Visual Line Down (Insert)"; } + { + key = ""; + mode = [ "i" ]; + action = "gk"; + desc = "Visual Line Up (Insert)"; + } + { + key = ""; + mode = [ "i" ]; + action = "gj"; + desc = "Visual Line Down (Insert)"; + } # visual line movement (normal/visual) - { key = ""; mode = [ "n" "v" ]; action = "g"; desc = "Visual Line Up"; } - { key = ""; mode = [ "n" "v" ]; action = "g"; desc = "Visual Line Down"; } + { + key = ""; + mode = [ + "n" + "v" + ]; + action = "g"; + desc = "Visual Line Up"; + } + { + key = ""; + mode = [ + "n" + "v" + ]; + action = "g"; + desc = "Visual Line Down"; + } # lsp #{ key = "gd"; mode = [ "n" ]; action = "lua vim.lsp.buf.definition()"; desc = "Go to definition"; } #{ key = "K"; mode = [ "n" ]; action = "lua vim.lsp.buf.hover()"; desc = "Hover info"; } #{ key = "f"; mode = [ "n" ]; action = "lua vim.lsp.buf.format({ async = true })"; desc = "Format buffer"; } - { key = "gd"; mode = [ "n" ]; silent = true; action = "lua vim.lsp.buf.definition()"; desc = "Go to definition"; } + { + key = "gd"; + mode = [ "n" ]; + silent = true; + action = "lua vim.lsp.buf.definition()"; + desc = "Go to definition"; + } # Hover info - { key = "K"; mode = [ "n" ]; silent = true; action = "lua vim.lsp.buf.hover()"; desc = "Hover info"; } + { + key = "K"; + mode = [ "n" ]; + silent = true; + action = "lua vim.lsp.buf.hover()"; + desc = "Hover info"; + } # Format buffer (Alejandra for Nix) - { key = "F"; mode = [ "n" ]; silent = true; action = "lua vim.lsp.buf.format({ async = true })"; desc = "Format buffer"; } + { + key = "F"; + mode = [ "n" ]; + silent = true; + action = "lua vim.lsp.buf.format({ async = true })"; + desc = "Format buffer"; + } # Code actions / quickfix - { key = "a"; mode = [ "n" ]; silent = true; action = "lua vim.lsp.buf.code_action()"; desc = "Code action"; } + { + key = "a"; + mode = [ "n" ]; + silent = true; + action = "lua vim.lsp.buf.code_action()"; + desc = "Code action"; + } # Rename symbol - { key = "r"; mode = [ "n" ]; silent = true; action = "lua vim.lsp.buf.rename()"; desc = "Rename symbol"; } + { + key = "r"; + mode = [ "n" ]; + silent = true; + action = "lua vim.lsp.buf.rename()"; + desc = "Rename symbol"; + } # Diagnostics - { key = "e"; mode = [ "n" ]; silent = true; action = "lua vim.diagnostic.open_float()"; desc = "Show diagnostic"; } - { key = "[d"; mode = [ "n" ]; silent = true; action = "lua vim.diagnostic.goto_prev()"; desc = "Previous diagnostic"; } - { key = "]d"; mode = [ "n" ]; silent = true; action = "lua vim.diagnostic.goto_next()"; desc = "Next diagnostic"; } - - + { + key = "e"; + mode = [ "n" ]; + silent = true; + action = "lua vim.diagnostic.open_float()"; + desc = "Show diagnostic"; + } + { + key = "[d"; + mode = [ "n" ]; + silent = true; + action = "lua vim.diagnostic.goto_prev()"; + desc = "Previous diagnostic"; + } + { + key = "]d"; + mode = [ "n" ]; + silent = true; + action = "lua vim.diagnostic.goto_next()"; + desc = "Next diagnostic"; + } ]; - - - - - options = { clipboard = "unnamedplus"; @@ -99,7 +159,7 @@ wrap = true; linebreak = true; breakindent = true; - + termguicolors = true; autoread = true; }; @@ -109,12 +169,18 @@ nix = { enable = true; - + format = { + enable = true; + #type = "alejandra"; + type = "nixfmt"; + }; }; + + markdown.enable = true; rust.enable = true; lua.enable = true; - }; + }; }; }; };