{ config, lib, inputs, ... }:
let
  cfg = config.niriwm;
in
{
  options.dockerConfig = {
    rootless = lib.mkOption {
      type = lib.types.bool;
      default = false;
      description = "Enable rootless Docker mode";
    };
    enableOnBoot = lib.mkOption {
      type = lib.types.bool;
      default = false;
      description = "Start Docker on boot";
    };
    useUnstable = lib.mkOption {
      type = lib.types.bool;
      default = false;
      description = "Use docker package from nixpkgs-unstable";
    };
  };

  config = lib.mkIf cfg.enable {
    virtualisation.docker = {
      enable = true;
      enableOnBoot = config.dockerConfig.enableOnBoot;
      rootless = lib.mkIf config.dockerConfig.rootless {
        enable = true;
        setSocketVariable = true;
      };
      daemon.settings = lib.mkIf config.dockerConfig.rootless {
        userland-proxy = false;
      };
    } // lib.optionalAttrs config.dockerConfig.useUnstable {
      package = (import inputs.nixpkgs-unstable {
        system = "x86_64-linux";
        config.allowUnfree = true;
      }).docker_25;
    };
  };
}
