{ config, lib, pkgs, ... }:
let
  cfg = config.my.home.packages;
in
{
  options.my.home.packages = with lib; {
    enable = my.mkDisableOption "user packages";

    allowAliases = mkEnableOption "allow package aliases";

    allowUnfree = my.mkDisableOption "allow unfree packages";

    additionalPackages = mkOption {
      type = with types; listOf package;
      default = [ ];
      example = literalExample ''
        with pkgs; [
          quasselClient
        ]
      '';
    };
  };

  config = lib.mkIf cfg.enable {
    home.packages = with pkgs; ([
      fd
      file
      ripgrep
    ] ++ cfg.additionalPackages);

    nixpkgs.config = {
      inherit (cfg) allowAliases allowUnfree;
    };
  };
}