70 lines
2.0 KiB
Nix
70 lines
2.0 KiB
Nix
{ config, nixosConfig, lib, mylib, pkgs, ... }:
|
|
|
|
with lib;
|
|
with mylib.modules;
|
|
|
|
let
|
|
cfg = config.modules.ranger;
|
|
in {
|
|
|
|
options.modules.ranger = {
|
|
enable = mkEnableOpt "Ranger";
|
|
preview = mkBoolOpt false "Enable Ranger image preview";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
home.packages = with pkgs; lib.concatLists [
|
|
[
|
|
ranger
|
|
atool
|
|
p7zip
|
|
zip
|
|
unzip
|
|
unrar
|
|
libarchive
|
|
exiftool
|
|
mediainfo
|
|
]
|
|
|
|
(optionals cfg.preview [
|
|
# ueberzug # Only X11
|
|
python310Packages.pillow
|
|
ffmpegthumbnailer
|
|
imagemagick
|
|
poppler_utils
|
|
])
|
|
];
|
|
|
|
home.file = mkMerge [
|
|
{
|
|
".config/ranger/rc.conf".text = let
|
|
# TODO: Why does mkMerge don't work here?
|
|
settings = {
|
|
column_ratios = "1,1";
|
|
vcs_aware = "true";
|
|
preview_images_method = "kitty"; # TODO: Only if kitty enabled
|
|
unicode_ellipsis = "true";
|
|
draw_borders = (if cfg.preview then "none" else "both"); # doesn't work well with preview
|
|
line_numbers = "relative";
|
|
preview_images = (if cfg.preview then "true" else "false");
|
|
use_preview_script = (if cfg.preview then "true" else "false");
|
|
} // (optionalAttrs cfg.preview {
|
|
preview_script = "${config.home.homeDirectory}/.config/ranger/scope.sh";
|
|
});
|
|
|
|
# The settings { column_ratios = "1,1"; } get turned into { column_ratios = "set column_ratios = 1,1"; }
|
|
settings_in_values = mapAttrs (name: value: concatStringsSep " " ["set" name value]) settings;
|
|
settings_list = attrValues settings_in_values; # Results in [ "set column_rations = 1,1" ]
|
|
settings_str = concatStringsSep "\n" settings_list;
|
|
|
|
in settings_str;
|
|
}
|
|
|
|
# TODO: Is cfg.preview double checked?
|
|
(optionalAttrs cfg.preview {
|
|
".config/ranger/scope.sh".source = mkIf cfg.preview ../../config/ranger/scope.sh;
|
|
})
|
|
];
|
|
};
|
|
}
|