diff options
Diffstat (limited to 'home-manager/config/lf/default.nix')
-rw-r--r-- | home-manager/config/lf/default.nix | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/home-manager/config/lf/default.nix b/home-manager/config/lf/default.nix new file mode 100644 index 00000000..e27b040c --- /dev/null +++ b/home-manager/config/lf/default.nix @@ -0,0 +1,202 @@ +{ + config, + pkgs, + ... +}: let + shell = file: + "\${{" + builtins.readFile "${file}" + "}}"; # closes the lf tui + pipe = file: + "%{{" + builtins.readFile "${file}" + "}}"; # runs the command in the ui,term bar + async = file: + "&{{" + builtins.readFile "${file}" + "}}"; # runs the command in the background + wait = file: + "!{{" + builtins.readFile "${file}" + "}}"; # adds a prompt after the command has run +in { + xdg.configFile."lf/icons".source = ./icons; + xdg.configFile."lf/colors".source = ./colors; + + programs.lf = { + enable = true; + + commands = { + help = shell ./cmds/help.sh; + open = shell ./cmds/open.sh; + mk_dir = pipe ./cmds/mk_dir.sh; + mk_scr = shell ./cmds/mk_scr.sh; + mk_file = shell ./cmds/mk_file.sh; + chmod = pipe ./cmds/chmod.sh; + mk_ln = shell ./cmds/mk_ln.sh; # TODO could be pipe, right? + sudo_mk_file = shell ./cmds/sudo_mk_file.sh; + set_wall_paper = pipe ./cmds/set_wall_paper.sh; + fzf_jump = shell ./cmds/fzf_jump.sh; + broot_jump = shell ./cmds/broot_jump.sh; + open_config = shell ./cmds/open_config.sh; + + dragon = pipe ./cmds/dragon.sh; + dragon_stay = pipe ./cmds/dragon_stay.sh; + dragon_individual = pipe ./cmds/dragon_individual.sh; + dl_file = pipe ./cmds/dl_file.sh; + + unarchive = pipe ./cmds/unarchive.sh; + archive = pipe ./cmds/archive.sh; + + trash = pipe ./cmds/trash.sh; + clear_trash = pipe ./cmds/clear_trash.sh; + restore_trash = shell ./cmds/restore_trash.sh; + + stripspace = pipe ./cmds/stripspace.sh; + }; + keybindings = { + # Remove some defaults + m = null; + "'" = null; + #" = null; # TODO + d = null; + c = null; + e = null; + j = null; + k = null; + l = null; + ";" = null; + + # File Openers + ee = "\$\$EDITOR \"$f\""; + u = "%\$IVIEWER \"$f\""; + cc = "\$sudo -e \"$f\""; + + # Archive Mappings + au = "unarchive"; + a = "archive"; + + # Trash Mappings + dd = "trash"; + jc = "clear_trash"; + jr = "restore_trash"; + + # Broot Mapping + f = "broot_jump"; + + # Dragon Mapping + dr = "dragon"; + ds = "dragon-stay"; + di = "dragon-individual"; + #dm = "mvdragon"; + #dc = "cpdragon"; + dl = "dlfile"; + + ss = "stripspace"; + + # Vim keys + h = "updir"; + t = "down"; + n = "up"; + s = "open"; + + # Basic Functions + bn = "help"; + kk = "mklkn"; + "." = "set hidden!"; + DD = "delete"; + p = "paste"; + x = "cut"; + y = "copy"; + "<enter>" = "open"; + mf = "mkfile"; + mr = "sudomkfile"; + md = "mkdir"; + ms = "mkscr"; + ch = "chmod"; + bg = "setwallpaper"; + o = "open_config"; + br = "\$vimv \$fx"; # TODO what is this command? + r = "rename"; + H = "top"; + L = "bottom"; + R = "reload"; + C = "clear"; + U = "unselect"; + + # Movement + gjr = "cd ~/.local/share/Trash/files"; + gus = "cd /run/dt"; + + "gr." = "cd /home/dt/repos"; + grr = "cd /home/dt/repos/rust"; + grp = "cd /home/dt/repos/python"; + grc = "cd /home/dt/repos/c"; + gra = "cd /home/dt/repos/auto_hot_key"; + grt = "cd /home/dt/repos/tex"; + grs = "cd /home/dt/repos/shell"; + + grch = "cd /home/dt/repos/chroot"; + grpe = "cd /home/dt/repos/perl"; + grja = "cd /home/dt/repos/java"; + grjs = "cd /home/dt/repos/java_script"; + # ------------- + "gm." = "cd /home/dt/media"; + gmpi = "cd /home/dt/media/pictures"; + gmdo = "cd /home/dt/media/downloads"; + gmpl = "cd /home/dt/media/playlist"; + gmis = "cd /home/dt/media/isos"; + # ------------- + "gs." = "cd /home/dt/school"; + gsgs = "cd /home/dt/school/geschichte"; + gsch = "cd /home/dt/school/chemie"; + gsen = "cd /home/dt/school/english"; + gsgo = "cd /home/dt/school/geographie"; + gsin = "cd /home/dt/school/infomatik"; + gsso = "cd /home/dt/school/sozialkunde"; + gskr = "cd /home/dt/school/katholische_religion"; + gsmu = "cd /home/dt/school/musik"; + gsla = "cd /home/dt/school/latein"; + gsde = "cd /home/dt/school/deutsch"; + gsma = "cd /home/dt/school/mathematik"; + gspr = "cd /home/dt/school/praktikum"; + gsbi = "cd /home/dt/school/biologie"; + gssp = "cd /home/dt/school/sport"; + gsphy = "cd /home/dt/school/physik"; + gsphi = "cd /home/dt/school/philosophie"; + + gc = "cd ~/.config"; + gl = "cd ~/.local"; + gE = "cd /etc"; + + "gU." = "cd /usr"; + gUs = " cd /usr/share"; + + gt = "cd /tmp"; + }; +# TODO add ctpv, if it gets merged +# previewer = { +# keybinding = "i"; +# source = pkgs.ctpv; +# }; + settings = { + # TODO this needs to be added to nixos: + #autoquit = true; # quit the server, if no clients are left + #dirpreviews = true; # preview for directories + + dircounts = true; # count things in directories TODO this has performance impact + drawbox = true; + errorfmt = "\\033[1;91m==> ERROR:\\033[0m\\033[1;93m%s\\033[0m"; + hidden = true; # show hidden files + icons = true; + ifs = "\n"; # internal field separator for shell commands + info = "size"; # show the size of a directory + shell = "sh"; + shellopts = "-e -u"; # e: exit on error; u: error for unset variables + }; + # TODO remove auto quit, if it has been added + # TODO add ctpv, if it gets merged + extraConfig = '' + &ctpv -s $id + &ctpvquit $id + set cleaner = {pkgs.ctpv} + + set autoquit = true + set dirpreviews = true + ''; + }; +} +# vim: ts=2 + |