blob: 15d34aef7eed7b7790d59abd811b3e9be3aa458d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# lf - terminal file manager
{
pkgs,
lib,
config,
...
}:
{
options.file-management.lf = {
enable = lib.mkEnableOption "Enables lf.";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.lf.overrideAttrs (old: {
dontWrapQtApps = true;
dontPatchShebangs = true;
});
description = "The lf package to use.";
};
};
config = lib.mkIf config.file-management.lf.enable {
assertions = [
{
assertion = config.scripts.file-preview.enable;
message = "file-management.lf.enable requires scripts.file-preview.enable for file previews.";
}
{
assertion = config.scripts.file-preview-clean.enable;
message = "file-management.lf.enable requires scripts.file-preview-clean.enable to clear kitty previews.";
}
];
xdg.mimeApps.defaultApplications = {
"inode/directory" = "lf.desktop";
};
programs.lf = {
enable = true;
package = config.file-management.lf.package;
settings = {
number = true;
icons = true;
drawbox = true;
hidden = true;
preview = true;
shell = config.home.sessionVariables.SHELL;
ifs = "\n";
scrolloff = "4";
period = "1";
incsearch = true;
smartcase = true;
info = "size";
sortby = "natural";
dirfirst = true;
cleaner = lib.getExe config.scripts.file-preview-clean.package;
};
previewer = {
source = lib.getExe config.scripts.file-preview.package;
};
extraConfig = builtins.readFile ./lfrc;
};
home.file.".config/lf/icons".source = ./icons;
};
}
|