{ config, lib, pkgs, ... }: let cfg = config.programs.lsd; yamlFormat = pkgs.formats.yaml { }; in { imports = let msg = '' 'programs.lsd.enableAliases' has been deprecated and replaced with integration options per shell, for example, 'programs.lsd.enableBashIntegration'. Note, the default for these options is 'true' so if you want to enable the aliases you can simply remove 'programs.lsd.enableAliases' from your configuration.''; in [ (lib.mkRemovedOptionModule [ "programs" "lsd" "enableAliases" ] msg) ]; meta.maintainers = [ ]; options.programs.lsd = { enable = lib.mkEnableOption "lsd"; package = lib.mkPackageOption pkgs "lsd" { nullable = true; }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; }; enableFishIntegration = lib.hm.shell.mkFishIntegrationOption { inherit config; }; enableZshIntegration = lib.hm.shell.mkZshIntegrationOption { inherit config; }; settings = lib.mkOption { type = yamlFormat.type; default = { }; example = { date = "relative"; ignore-globs = [ ".git" ".hg" ]; }; description = '' Configuration written to {file}`$XDG_CONFIG_HOME/lsd/config.yaml`. See for supported values. ''; }; colors = lib.mkOption { type = lib.types.either yamlFormat.type lib.types.path; default = { }; example = { size = { none = "grey"; small = "yellow"; large = "dark_yellow"; }; }; description = '' Configuration written to {file}`$XDG_CONFIG_HOME/lsd/colors.yaml`. See for supported colors. If this option is non-empty then the `color.theme` option is automatically set to `"custom"`. ''; }; icons = lib.mkOption { type = lib.types.either yamlFormat.type lib.types.path; default = { }; example = { name = { ".trash" = ""; ".cargo" = ""; }; extension = { "go" = ""; "hs" = ""; }; filetype = { "dir" = "📂"; "file" = "📄"; }; }; description = '' Configuration written to {file}`$XDG_CONFIG_HOME/lsd/icons.yaml`. See for details. ''; }; }; config = lib.mkIf cfg.enable { home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; programs = let aliases = { ls = "${pkgs.lsd}/bin/lsd"; ll = "${pkgs.lsd}/bin/lsd -l"; la = "${pkgs.lsd}/bin/lsd -A"; lt = "${pkgs.lsd}/bin/lsd --tree"; lla = "${pkgs.lsd}/bin/lsd -lA"; llt = "${pkgs.lsd}/bin/lsd -l --tree"; }; in { bash.shellAliases = lib.mkIf cfg.enableBashIntegration aliases; fish = lib.mkMerge [ (lib.mkIf (!config.programs.fish.preferAbbrs) { shellAliases = lib.mkIf cfg.enableFishIntegration aliases; }) (lib.mkIf config.programs.fish.preferAbbrs { shellAbbrs = lib.mkIf cfg.enableFishIntegration aliases; }) ]; lsd = lib.mkIf (cfg.colors != { }) { settings.color.theme = "custom"; }; zsh.shellAliases = lib.mkIf cfg.enableZshIntegration aliases; }; xdg.configFile = { "lsd/colors.yaml" = lib.mkIf (cfg.colors != { }) { source = if lib.types.path.check cfg.colors then cfg.colors else yamlFormat.generate "lsd-colors" cfg.colors; }; "lsd/config.yaml" = lib.mkIf (cfg.settings != { }) { source = yamlFormat.generate "lsd-config" cfg.settings; }; "lsd/icons.yaml" = lib.mkIf (cfg.icons != { }) { source = if lib.types.path.check cfg.icons then cfg.icons else yamlFormat.generate "lsd-icons" cfg.icons; }; }; }; }