{ config, lib, ... }:
let
  cfg = config.my.home.gammastep;

  mkTempOption = with lib; description: default: mkOption {
    inherit description default;
    type = types.int;
    example = 1000;
  };

  mkTimeOption = with lib; description: default: mkOption {
    inherit description default;
    type = types.str;
    example = "12:00-14:00";
  };
in
{
  options.my.home.gammastep = with lib; {
    enable = mkEnableOption "gammastep configuration";

    temperature = {
      day = mkTempOption "Colour temperature to use during the day" 6500;
      night = mkTempOption "Colour temperature to use during the night" 2000;
    };

    times = {
      dawn = mkTimeOption "Dawn time" "6:00-7:30";
      dusk = mkTimeOption "Dusk time" "18:30-20:00";
    };
  };

  config.services.gammastep = lib.mkIf cfg.enable {
    enable = true;

    tray = true;

    dawnTime = cfg.times.dawn;
    duskTime = cfg.times.dusk;

    temperature = {
      inherit (cfg.temperature) day night;
    };
  };
}