{ lib, config, ... }:
with lib;
let
  cfg = config.module.docker;
in
{
  options = {
    module.docker = {
      enable = mkEnableOption "Enable Cocker";
      rootless = mkOption {
        default = false;
        type = types.bool;
      };
      autostart = mkOption {
        default = false;
        type = types.bool;
      };
    };
  };

  config = mkIf cfg.enable (mkMerge [
    {
      virtualisation.docker.enable = true;

      systemd =
        if cfg.autostart then
          { }
        else
          {
            services = {
              docker-prune.wantedBy = mkForce [ ];
              docker.wantedBy = mkForce [ ];
            };
            sockets.docker.wantedBy = mkForce [ ];
          };
    }

    (mkIf cfg.rootless {
      virtualisation.docker.rootless = {
        enable = true;
        setSocketVariable = true;
      };
    })
  ]);
}