{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
let
  cfg = config.eboskma.programs.cargo;

  tomlFormat = pkgs.formats.toml { };

  cargoConfig = types.submodule { freeformType = tomlFormat.type; };
in
{
  options.eboskma.programs.cargo = {
    enable = mkEnableOption "cargo";
    settings = mkOption {
      description = "Cargo configuration according to https://doc.rust-lang.org/cargo/reference/config.html";
      default = { };
      type = cargoConfig;
    };
  };

  config = mkIf cfg.enable {
    home.file.".cargo/config.toml" = {
      source = tomlFormat.generate "cargo-config.toml" cfg.settings;
    };
  };
}