{ lib, ... }:
let
  inherit (lib) mkEnableOption mkOption types;

  commonOptions = {
    enable = mkEnableOption "docker";
  };
in
{
  options = {
    valhalla = {
      programs.docker = commonOptions;

      users = mkOption {
        type = types.attrsOf (types.submodule (
          { ... }: {
            options = {
              programs.docker = commonOptions;
            };
          }
        ));
      };

      linux = {
        programs = {
          docker = {
            services = {
              anki-sync.enable = mkEnableOption "Anki Sync server";
              drone.enable = mkEnableOption "drone server";
              forgejo.enable = mkEnableOption "Forgejo server";
              jellyfin.enable = mkEnableOption "Jellyfin media server";
              minecraft.enable = mkEnableOption "Minecraft server";
              nextcloud.enable = mkEnableOption "Nextcloud server";
              ryot.enable = mkEnableOption "ryot server";
              teamspeak.enable = mkEnableOption "TeamSpeak server";
              terraria.enable = mkEnableOption "Terraria server";
              trackmania.enable = mkEnableOption "TrackMania server";
              vaultwarden.enable = mkEnableOption "Vaultwarden server";
              wekan.enable = mkEnableOption "Wekan server";
              woodpecker.enable = mkEnableOption "Woodpecker CI server";
            };
          };
        };
      };
    };
  };
}