{ config, lib, pkgs, ... }:

with lib;

let

  cfg = config.programs.pls;

  aliases = {
    ls = "${cfg.package}/bin/pls";
    ll =
      "${cfg.package}/bin/pls -d perms -d user -d group -d size -d mtime -d git";
  };

in {
  meta.maintainers = [ maintainers.arjan-s ];

  options.programs.pls = {
    enable =
      mkEnableOption "pls, a modern replacement for <command>ls</command>";

    package = mkPackageOption pkgs "pls" { };

    enableAliases = mkEnableOption "recommended pls aliases";
  };

  config = mkIf cfg.enable {
    home.packages = [ cfg.package ];

    programs.bash.shellAliases = mkIf cfg.enableAliases aliases;

    programs.fish.shellAliases = mkIf cfg.enableAliases aliases;

    programs.zsh.shellAliases = mkIf cfg.enableAliases aliases;
  };
}