{ config, pkgs, lib, ... }: with lib; let # Container config name = "dashy"; # Version tagging dashyVersion = "v3.2.3"; # Helper helper = import ../service-helper.nix { inherit config pkgs lib; }; cfg = config.numbus-server.services.dashy; in helper.mkPodmanService { inherit name; description = "Dashy, the ultimate dashboard for your homelab"; defaultPort = "8999"; configDirEnabled = false; dataDirEnabled = false; middlewares = [ "secureHeaders" ]; composeText = '' services: dashy: image: lissy93/dashy:${dashyVersion} container_name: dashy hostname: dashy user: '1000:1000' networks: dashy: ipv4_address: 10.89.235.253 ports: - ${cfg.port}:8080 volumes: - ${config.sops."dashy/config".path}:/app/user-data/conf.yml environment: - UID=1000 - GID=1000 - NODE_ENV=production healthcheck: test: ['CMD', 'node', '/app/services/healthcheck'] interval: 1m30s timeout: 10s retries: 3 start_period: 40s security_opt: - no-new-privileges:true cap_drop: - NET_RAW restart: unless-stopped networks: dashy: driver: bridge name: dashy ipam: config: - subnet: "10.89.235.0/24" gateway: "10.89.235.254" ''; extraConfig = { sops.templates."dashy/config" = { gid = "100"; uid = "100999"; mode = "0440" ; content = '' pageInfo: title: My Homelab sections: - name: Example Section icon: far fa-rocket items: - title: GitHub description: Dashy source code and docs icon: fab fa-github url: https://github.com/Lissy93/dashy - title: Issues description: View open issues, or raise a new one icon: fas fa-bug url: https://github.com/Lissy93/dashy/issues - name: Local Services items: - title: Firewall icon: favicon url: http://192.168.1.1/ - title: Game Server icon: https://i.ibb.co/710B3Yc/space-invader-x256.png url: http://192.168.130.1/ ''; path = "/etc/dashy/dashy.yaml"; }; }; }