From eb324777e9230756624b3f07a01430c07d5cc07d Mon Sep 17 00:00:00 2001 From: Jon Seager Date: Wed, 19 Mar 2025 11:03:55 +0000 Subject: [PATCH] nixos/homepage-dashboard: remove unmanaged config support This has been deprecated since before 24.05 was released and displaying a warning. This change means that only "managed", i.e. Nix-native configurations are supported. --- .../services/misc/homepage-dashboard.nix | 124 +++++++----------- 1 file changed, 47 insertions(+), 77 deletions(-) diff --git a/nixos/modules/services/misc/homepage-dashboard.nix b/nixos/modules/services/misc/homepage-dashboard.nix index 3a3bc8f6d60e..193f70784087 100644 --- a/nixos/modules/services/misc/homepage-dashboard.nix +++ b/nixos/modules/services/misc/homepage-dashboard.nix @@ -192,82 +192,52 @@ in }; }; - config = - let - # If homepage-dashboard is enabled, but none of the configuration values have been updated, - # then default to "unmanaged" configuration which is manually updated in - # var/lib/homepage-dashboard. This is to maintain backwards compatibility, and should be - # deprecated in a future release. - managedConfig = - !( - cfg.bookmarks == [ ] - && cfg.customCSS == "" - && cfg.customJS == "" - && cfg.docker == { } - && cfg.kubernetes == { } - && cfg.services == [ ] - && cfg.settings == { } - && cfg.widgets == [ ] - ); - - configDir = if managedConfig then "/etc/homepage-dashboard" else "/var/lib/homepage-dashboard"; - - msg = - "using unmanaged configuration for homepage-dashboard is deprecated and will be removed" - + " in 24.05. please see the NixOS documentation for `services.homepage-dashboard' and add" - + " your bookmarks, services, widgets, and other configuration using the options provided."; - in - lib.mkIf cfg.enable { - warnings = lib.optional (!managedConfig) msg; - - environment.etc = lib.mkIf managedConfig { - "homepage-dashboard/custom.css".text = cfg.customCSS; - "homepage-dashboard/custom.js".text = cfg.customJS; - - "homepage-dashboard/bookmarks.yaml".source = settingsFormat.generate "bookmarks.yaml" cfg.bookmarks; - "homepage-dashboard/docker.yaml".source = settingsFormat.generate "docker.yaml" cfg.docker; - "homepage-dashboard/kubernetes.yaml".source = - settingsFormat.generate "kubernetes.yaml" cfg.kubernetes; - "homepage-dashboard/services.yaml".source = settingsFormat.generate "services.yaml" cfg.services; - "homepage-dashboard/settings.yaml".source = settingsFormat.generate "settings.yaml" cfg.settings; - "homepage-dashboard/widgets.yaml".source = settingsFormat.generate "widgets.yaml" cfg.widgets; - }; - - systemd.services.homepage-dashboard = { - description = "Homepage Dashboard"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - - environment = { - HOMEPAGE_CONFIG_DIR = configDir; - NIXPKGS_HOMEPAGE_CACHE_DIR = "/var/cache/homepage-dashboard"; - PORT = toString cfg.listenPort; - LOG_TARGETS = lib.mkIf managedConfig "stdout"; - }; - - serviceConfig = { - Type = "simple"; - DynamicUser = true; - EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile; - StateDirectory = lib.mkIf (!managedConfig) "homepage-dashboard"; - CacheDirectory = "homepage-dashboard"; - ExecStart = lib.getExe cfg.package; - Restart = "on-failure"; - }; - - enableStrictShellChecks = true; - - preStart = '' - # Related: - # * https://github.com/NixOS/nixpkgs/issues/346016 ("homepage-dashboard: cache dir is not cleared upon version upgrade") - # * https://github.com/gethomepage/homepage/discussions/4560 ("homepage NixOS package does not clear cache on upgrade leaving broken state") - # * https://github.com/vercel/next.js/discussions/58864 ("Feature Request: Allow configuration of cache dir") - rm -rf "''${NIXPKGS_HOMEPAGE_CACHE_DIR:?}"/* - ''; - }; - - networking.firewall = lib.mkIf cfg.openFirewall { - allowedTCPPorts = [ cfg.listenPort ]; - }; + config = lib.mkIf cfg.enable { + environment.etc = { + "homepage-dashboard/custom.css".text = cfg.customCSS; + "homepage-dashboard/custom.js".text = cfg.customJS; + "homepage-dashboard/bookmarks.yaml".source = settingsFormat.generate "bookmarks.yaml" cfg.bookmarks; + "homepage-dashboard/docker.yaml".source = settingsFormat.generate "docker.yaml" cfg.docker; + "homepage-dashboard/kubernetes.yaml".source = + settingsFormat.generate "kubernetes.yaml" cfg.kubernetes; + "homepage-dashboard/services.yaml".source = settingsFormat.generate "services.yaml" cfg.services; + "homepage-dashboard/settings.yaml".source = settingsFormat.generate "settings.yaml" cfg.settings; + "homepage-dashboard/widgets.yaml".source = settingsFormat.generate "widgets.yaml" cfg.widgets; }; + + systemd.services.homepage-dashboard = { + description = "Homepage Dashboard"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + environment = { + HOMEPAGE_CONFIG_DIR = "/etc/homepage-dashboard"; + NIXPKGS_HOMEPAGE_CACHE_DIR = "/var/cache/homepage-dashboard"; + PORT = toString cfg.listenPort; + LOG_TARGETS = "stdout"; + }; + + serviceConfig = { + Type = "simple"; + DynamicUser = true; + EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile; + StateDirectory = "homepage-dashboard"; + CacheDirectory = "homepage-dashboard"; + ExecStart = lib.getExe cfg.package; + Restart = "on-failure"; + }; + + preStart = '' + # Related: + # * https://github.com/NixOS/nixpkgs/issues/346016 ("homepage-dashboard: cache dir is not cleared upon version upgrade") + # * https://github.com/gethomepage/homepage/discussions/4560 ("homepage NixOS package does not clear cache on upgrade leaving broken state") + # * https://github.com/vercel/next.js/discussions/58864 ("Feature Request: Allow configuration of cache dir") + rm -rf "$NIXPKGS_HOMEPAGE_CACHE_DIR"/* + ''; + }; + + networking.firewall = lib.mkIf cfg.openFirewall { + allowedTCPPorts = [ cfg.listenPort ]; + }; + }; }