diff options
| -rw-r--r-- | machines/work.nix | 8 | ||||
| -rwxr-xr-x | mut/bin/lfub | 2 | ||||
| -rwxr-xr-x | mut/bin/vremote | 14 | ||||
| -rw-r--r-- | mut/lf/lfrc | 171 | ||||
| -rw-r--r-- | mut/lf/scope | 57 | ||||
| -rw-r--r-- | mut/neovim/fnl/conf/events.fnl | 53 | ||||
| -rw-r--r-- | mut/neovim/fnl/conf/init.fnl | 10 | ||||
| -rw-r--r-- | profiles/core/configuration.nix | 1 | ||||
| -rw-r--r-- | profiles/core/home.nix | 213 | ||||
| -rw-r--r-- | profiles/core/lf.nix | 92 |
10 files changed, 530 insertions, 91 deletions
diff --git a/machines/work.nix b/machines/work.nix index 231028a..bf9c4e0 100644 --- a/machines/work.nix +++ b/machines/work.nix @@ -38,6 +38,8 @@ pkgs.python311 pkgs.mpv pkgs.kubelogin + pkgs.zsh + pkgs.bashInteractive ]; hm.home.sessionPath = [ "/opt/homebrew/bin" @@ -129,8 +131,10 @@ # The platform the configuration will be used on. nixpkgs.hostPlatform = "aarch64-darwin"; users.users.${ivi.username} = { - shell = pkgs.bashInteractive; + shell = pkgs.zsh; }; - environment.shells = [pkgs.bashInteractive]; + environment.shells = [pkgs.bashInteractive pkgs.zsh]; + environment.pathsToLink = [ "/share/zsh" ]; + programs.zsh.enable = true; }; } diff --git a/mut/bin/lfub b/mut/bin/lfub index 9012f50..d04a129 100755 --- a/mut/bin/lfub +++ b/mut/bin/lfub @@ -19,6 +19,6 @@ else mkfifo "$FIFO_UEBERZUG" ueberzug layer -s <"$FIFO_UEBERZUG" -p json & exec 3>"$FIFO_UEBERZUG" - trap cleanup HUP INT QUIT TERM PWR EXIT + trap cleanup HUP INT QUIT TERM EXIT lf "$@" 3>&- fi diff --git a/mut/bin/vremote b/mut/bin/vremote new file mode 100755 index 0000000..6db06eb --- /dev/null +++ b/mut/bin/vremote @@ -0,0 +1,14 @@ +#!/bin/bash +server_pipe="$XDG_CACHE_HOME/nvim/server.pipe" +if ! [ -e "$server_pipe" ]; then + nohup nvim --listen "$server_pipe" --headless >/dev/null 2>&1 & +fi + +if nvim --headless --server ~/.cache/nvim/server.pipe --remote-expr 'luaeval("vim.json.encode(vim.iter(vim.api.nvim_list_uis()):map(function(v) return v.chan end):totable())")' | jq -r '.[]' | while read -r chan; do + echo "already existing ui($chan)..." + exit 1 +done +then + nvim --server "$server_pipe" --remote "${@}" + exec nvim --server "$server_pipe" --remote-ui +fi diff --git a/mut/lf/lfrc b/mut/lf/lfrc new file mode 100644 index 0000000..cca28fd --- /dev/null +++ b/mut/lf/lfrc @@ -0,0 +1,171 @@ +# Luke's lf settings + + +# Note on Image Previews +# For those wanting image previews, like this system, there are four steps to +# set it up. These are done automatically for LARBS users, but I will state +# them here for others doing it manually. +# +# 1. ueberzug must be installed. +# 2. The scope file (~/.config/lf/scope for me), must have a command similar to +# mine to generate ueberzug images. +# 3. A `set cleaner` line as below is a cleaner script. +# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me) +# that creates the environment for ueberzug. This command can be be aliased +# in your shellrc (`alias lf="lfub") or if set to a binding, should be +# called directly instead of normal lf. + +# Basic vars +set shellopts '-eu' +set ifs "\n" +set scrolloff 10 +set icons +set period 1 +set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" +set cleaner '~/.config/lf/cleaner' +set previewer '~/.config/lf/scope' +set autoquit true + +cmd z %{{ + result="$(zoxide query --exclude "${PWD}" -- "$0")" + lf -remote "send ${id} cd '${result}'" +}} +map z push :z<space> + +# cmds/functions +cmd open ${{ + case $(file --mime-type "$(readlink -f $f)" -b) in + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;; + image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;; + text/*|application/json|inode/x-empty|application/x-subrip) $EDITOR $fx;; + image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;; + image/svg+xml) display -- $f ;; + image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|avif\|tif\|ico\)\(_large\)*$" | + setsid -f nsxiv -aio 2>/dev/null | while read -r file; do + [ -z "$file" ] && continue + lf -remote "send select \"$file\"" + lf -remote "send toggle" + done & + ;; + audio/*|video/x-ms-asf) mpv --audio-display=no $f ;; + video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;; + application/pdf|application/vnd.djvu|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;; + application/pgp-encrypted) $EDITOR $fx ;; + application/vnd.openxmlformats-officedocument.wordprocessingml.document|application/vnd.oasis.opendocument.text|application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|application/octet-stream|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template|application/vnd.openxmlformats-officedocument.presentationml.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.presentation|application/vnd.ms-powerpoint|application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template|application/vnd.oasis.opendocument.formula|application/vnd.oasis.opendocument.database) setsid -f libreoffice $fx >/dev/null 2>&1 ;; + *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;; + esac +}} + +cmd mkdir $mkdir -p "$@" + +cmd extract ${{ + clear; tput cup $(($(tput lines)/3)); tput bold + set -f + printf "%s\n\t" "$fx" + printf "extract?[y/N]" + read ans + [ $ans = "y" ] && { + case $fx in + *.tar.bz2) tar xjf $fx ;; + *.tar.gz) tar xzf $fx ;; + *.bz2) bunzip2 $fx ;; + *.rar) unrar e $fx ;; + *.gz) gunzip $fx ;; + *.tar) tar xf $fx ;; + *.tbz2) tar xjf $fx ;; + *.tgz) tar xzf $fx ;; + *.zip) unzip $fx ;; + *.Z) uncompress $fx ;; + *.7z) 7z x $fx ;; + *.tar.xz) tar xf $fx ;; + esac + } +}} + +cmd delete ${{ + clear; tput cup $(($(tput lines)/3)); tput bold + set -f + printf "%s\n\t" "$fx" + printf "delete?[y/N]" + read ans + [ $ans = "y" ] && rm -rf -- $fx +}} + +cmd moveto ${{ + clear; tput cup $(($(tput lines)/3)); tput bold + set -f + clear; echo "Move to where?" + dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" && + for x in $fx; do + eval mv -iv \"$x\" \"$dest\" + done && + notify-send "🚚 File(s) moved." "File(s) moved to $dest." +}} + +cmd copyto ${{ + clear; tput cup $(($(tput lines)/3)); tput bold + set -f + clear; echo "Copy to where?" + dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" && + for x in $fx; do + eval cp -ivr \"$x\" \"$dest\" + done && + notify-send "📋 File(s) copied." "File(s) copies to $dest." +}} + +cmd setbg "$1" + +cmd bulkrename ${{ + tmpfile_old="$(mktemp)" + tmpfile_new="$(mktemp)" + + [ -n "$fs" ] && fs=$(basename -a $fs) || fs=$(ls) + + echo "$fs" > "$tmpfile_old" + echo "$fs" > "$tmpfile_new" + $EDITOR "$tmpfile_new" + + [ "$(wc -l < "$tmpfile_old")" -eq "$(wc -l < "$tmpfile_new")" ] || { rm -f "$tmpfile_old" "$tmpfile_new"; exit 1; } + + paste "$tmpfile_old" "$tmpfile_new" | while IFS="$(printf '\t')" read -r src dst + do + [ "$src" = "$dst" ] || [ -e "$dst" ] || mv -- "$src" "$dst" + done + + rm -f "$tmpfile_old" "$tmpfile_new" + lf -remote "send $id unselect" +}} + +# Bindings +map <c-f> $lf -remote "send $id select \"$(fzf)\"" +map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)" +map gh +map g top +map D delete +map E extract +map C copyto +map M moveto +map <c-n> push :mkdir<space>""<left> +map <c-r> reload +map <c-s> set hidden! +map <enter> shell +map x $$f +map X !$f +map o &mimeopen "$f" +map O $mimeopen --ask "$f" + +map A :rename; cmd-end # at the very end +map c push A<c-u> # new rename +map I :rename; cmd-home # at the very beginning +map i :rename # before extension +map a :rename; cmd-right # after extension +map B bulkrename +map b $setbg $f + +map <c-e> down +map <c-y> up +map V push :!nvim<space> + +map W $setsid -f $TERMINAL >/dev/null 2>&1 + +map Y $printf "%s" "$fx" | xclip -selection clipboard diff --git a/mut/lf/scope b/mut/lf/scope new file mode 100644 index 0000000..8265a87 --- /dev/null +++ b/mut/lf/scope @@ -0,0 +1,57 @@ +#!/bin/sh + +# File preview handler for lf. + +set -C -f +IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" + +image() { + if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then + printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" + else + mediainfo "$6" + fi +} + +# Note that the cache file name is a function of file information, meaning if +# an image appears in multiple places across the machine, it will not have to +# be regenerated once seen. + +case "$(file --dereference --brief --mime-type -- "$1")" in + image/avif) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE" ] && convert "$1" "$CACHE.jpg" + image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;; + image/vnd.djvu) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE" ] && djvused "$1" -e 'select 1; save-page-with /dev/stdout' | convert -density 200 - "$CACHE.jpg" > /dev/null 2>&1 + image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;; +image/svg+xml) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE" ] && inkscape --convert-dpi-method=none -o "$CACHE.png" --export-overwrite -D --export-png-color-mode=RGBA_16 "$1" + image "$CACHE.png" "$2" "$3" "$4" "$5" "$1" + ;; + image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;; + text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;; + text/troff) man ./ "$1" | col -b ;; + text/* | */xml | application/json | application/x-ndjson) bat -p --theme ansi --terminal-width "$(($4-2))" -f "$1" ;; + audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;; + video/* ) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 + image "$CACHE" "$2" "$3" "$4" "$5" "$1" + ;; + */pdf) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" + image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" + ;; + */epub+zip|*/mobi*) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + [ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg" + image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" + ;; + application/*zip) atool --list -- "$1" ;; + *opendocument*) odt2txt "$1" ;; + application/pgp-encrypted) gpg -d -- "$1" ;; +esac +exit 1 diff --git a/mut/neovim/fnl/conf/events.fnl b/mut/neovim/fnl/conf/events.fnl index f6a4227..4e03df8 100644 --- a/mut/neovim/fnl/conf/events.fnl +++ b/mut/neovim/fnl/conf/events.fnl @@ -3,10 +3,36 @@ (local {: attach} (require :conf.lsp)) (local event vim.api.nvim_create_autocmd) +(local command vim.api.nvim_create_user_command) (vim.api.nvim_create_augroup "my" {:clear true}) (vim.api.nvim_create_augroup "conf#events" {:clear true}) +(command :Event + (fn [cmd] + (let [del cmd.bang + [event_name & command] cmd.fargs] + (P cmd) + (local c (vim.iter command)) + (if del + (do + (local events + (vim.iter + (vim.api.nvim_get_autocmds + {:group :my + :event event_name + :buffer 0}))) + (events:map (fn [e] (vim.api.nvim_del_autocmd e.id)))) + (event + event_name + {:group :my + :buffer 0 + :callback #(vim.cmd (.. "silent " (c:join " ")))})))) + {:bang true :nargs :* :complete :file :force true}) +(let [map vim.keymap.set] + (map :n :<c-e> ":Event BufWritePost <up>") + (map :n :<M-e> ":Event! BufWritePost ")) + (event :LspAttach {:group "conf#events" @@ -44,16 +70,17 @@ {:group "conf#events" :pattern ["*"] :callback #(vim.cmd (.. "mksession! " session-file))}) -(event - :VimEnter - {:group "conf#events" - :pattern ["*"] - :callback #(if (= 1 (vim.fn.filereadable session-file)) - (do - (local start-with-arg (>= 1 (vim.fn.argc))) - (local file (vim.fn.argv 0)) - (local cwd (vim.fn.getcwd)) - (vim.schedule #(vim.cmd (.. "source " session-file))) - (if start-with-arg (vim.schedule #(do - (vim.cmd (.. "cd " cwd)) - (vim.cmd (.. "e " file)))))))}) +;; (event +;; :VimEnter +;; {:group "conf#events" +;; :pattern ["*"] +;; :callback #(if (= 1 (vim.fn.filereadable session-file)) +;; (do +;; (local start-with-arg (>= 1 (vim.fn.argc))) +;; (local file (vim.fn.argv 0)) +;; (local cwd (vim.fn.getcwd)) +;; (if start-with-arg (do +;; (vim.schedule #(vim.cmd (.. "source " session-file))) +;; (vim.schedule #(do +;; (vim.cmd (.. "cd " cwd)) +;; (vim.cmd (.. "e " file))))))))}) diff --git a/mut/neovim/fnl/conf/init.fnl b/mut/neovim/fnl/conf/init.fnl index 5a0826a..3475c52 100644 --- a/mut/neovim/fnl/conf/init.fnl +++ b/mut/neovim/fnl/conf/init.fnl @@ -27,12 +27,14 @@ toggle (do (vim.cmd "set virtualedit=all") + (vim.keymap.set :v "<leader>;" "<esc>:VBox<CR>") (vim.keymap.set "n" "J" "<C-v>j:VBox<CR>") (vim.keymap.set "n" "K" "<C-v>k:VBox<CR>") (vim.keymap.set "n" "L" "<C-v>l:VBox<CR>") (vim.keymap.set "n" "H" "<C-v>h:VBox<CR>")) (do (vim.cmd "set virtualedit=") + (vim.keymap.del :v "<leader>;") (vim.keymap.del "n" "J") (vim.keymap.del "n" "K") (vim.keymap.del "n" "L") @@ -86,7 +88,11 @@ (map :n :<leader>xb #(fzf.buffers {:keymap {:fzf {"alt-a" "toggle-all"}} :actions {:default {:fn action.buf_edit_or_qf}}})) - (map :n :<leader>x<cr> #(vim.cmd "b #"))) + (map :n :<leader>x<cr> #(vim.cmd "b #")) + (map :n :<leader><bs> + #(do + (local uis (vim.iter (vim.api.nvim_list_uis))) + (uis:map (fn [ui] (vim.fn.chanclose ui.chan)))))) (vim.api.nvim_create_user_command @@ -166,7 +172,7 @@ (local thunk #(qfjob cmd.fargs nil)) (set last_job_thunk thunk) (thunk)) - {:nargs :* :bang true :complete :shellcmd}) + {:nargs :* :bang true :complete "file"}) (vim.api.nvim_create_user_command :Sh (fn [cmd] diff --git a/profiles/core/configuration.nix b/profiles/core/configuration.nix index a17fde4..59c5840 100644 --- a/profiles/core/configuration.nix +++ b/profiles/core/configuration.nix @@ -53,6 +53,7 @@ curl fd lf + fzf ripgrep parallel pinentry-curses diff --git a/profiles/core/home.nix b/profiles/core/home.nix index e9e700e..c27ee4a 100644 --- a/profiles/core/home.nix +++ b/profiles/core/home.nix @@ -5,6 +5,34 @@ pkgs, ... }: with lib; { + programs.tmux = let + config = '' + set-option -g default-shell ${pkgs.bashInteractive}/bin/bash + set -g status off + set -s set-clipboard on + setw -g mouse on + set -g default-terminal "st-256color" + set -ga terminal-overrides ",xterm-256color:Tc" + set-option -g focus-events on + set-option -sg escape-time 10 + unbind M-x + set -g prefix M-x + bind M-x send-prefix + + set-window-option -g mode-keys vi + bind-key -T copy-mode-vi v send -X begin-selection + bind-key -T copy-mode-vi V send -X select-line + bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + bind-key -T copy-mode-vi : command-prompt + ''; + in { + enable = true; + } // (if machine.isDarwin then { + tmuxConfig = config; + } else { + extraConfig = config; + }); + hm = { fonts.fontconfig.enable = true; # https://github.com/nix-community/home-manager/issues/4692 @@ -55,17 +83,6 @@ }; }; - home.sessionVariables = { - EDITOR = "nvim"; - TERMINAL = "st"; - }; - - home.sessionPath = [ - "${config.ivi.home}/.krew/bin" - "${config.ivi.home}/.cargo/bin" - "${pkgs.ncurses}/bin" - ]; - programs.starship.enable = true; programs.direnv = { @@ -89,69 +106,119 @@ ''; }; - programs.tmux = { - enable = true; - extraConfig = '' - set-option -g default-shell ${pkgs.bashInteractive}/bin/bash - set -g status off - set -s set-clipboard on - setw -g mouse on - set -g default-terminal "st-256color" - set -ga terminal-overrides ",xterm-256color:Tc" - set-option -g focus-events on - set-option -sg escape-time 10 - unbind M-x - set -g prefix M-x - bind M-x send-prefix - - set-window-option -g mode-keys vi - bind-key -T copy-mode-vi v send -X begin-selection - bind-key -T copy-mode-vi V send -X select-line - bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'xclip -in -selection clipboard' - bind-key -T copy-mode-vi : command-prompt - ''; - }; + programs = { + zsh = { + enable = true; + completionInit = '' + autoload -U compinit + zstyle ':completion:*' menu select + zmodload zsh/complist + compinit + _comp_options+=(globdots) # Include hidden files. + ''; + initExtra = '' + # Use vim keys in tab complete menu: + bindkey -M menuselect 'h' vi-backward-char + bindkey -M menuselect 'k' vi-up-line-or-history + bindkey -M menuselect 'l' vi-forward-char + bindkey -M menuselect 'j' vi-down-line-or-history + # Use lf to switch directories and bind it to ctrl-o + lfcd () { + tmp="$(mktemp -uq)" + trap 'rm -f $tmp >/dev/null 2>&1 && trap - HUP INT QUIT TERM EXIT' HUP INT QUIT TERM EXIT + lf -last-dir-path="$tmp" "$@" + if [ -f "$tmp" ]; then + dir="$(cat "$tmp")" + [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" + fi + } + bindkey -s '^o' '^ulfcd\n' - programs.bash = { - enable = true; - bashrcExtra = '' - ( command -v brew ) &>/dev/null && eval "$(/opt/homebrew/bin/brew shellenv)" - ( command -v docker ) &>/dev/null && eval "$(docker completion bash)" - ( command -v kubectl ) &>/dev/null && eval "$(kubectl completion bash)" - ( command -v zoxide ) &>/dev/null && eval "$(zoxide init bash)" - export PATH=$PATH:$HOME/.local/bin - [[ -f ~/.cache/wal/sequences ]] && (cat ~/.cache/wal/sequences &) - unset LD_PRELOAD - # include nix.sh if it exists - - export COLORTERM=truecolor - export GPG_TTY="$(tty)" - gpgconf --launch gpg-agent - - if [ ! -S ~/.ssh/ssh_auth_sock ]; then - eval `ssh-agent` - ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock - fi - export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock - ssh-add -l > /dev/null || ssh-add ~/.ssh/id_ed25519_sk - ''; - shellAliases = { - k9s = "k9s "; - k = "kubectl "; - d = "docker "; - ls = "ls --color=auto"; - s = "${if machine.isDarwin then "darwin-rebuild" else "sudo nixos-rebuild"} switch --flake ${config.ivi.home}/flake#${config.networking.hostName}"; - b = "/run/current-system/bin/switch-to-configuration boot"; - v = "nvim"; - M = "xrandr --output HDMI1 --auto --output eDP1 --off"; - m = "xrandr --output eDP1 --auto --output HDMI1 --off"; - mM = "xrandr --output eDP1 --auto --output HDMI1 --off"; - newflake = "nix flake new -t ~/flake "; - ansible-flake = "nix flake new -t ~/flake#ansible "; - go-flake = "nix flake new -t ~/flake#go "; - lock-pass = "gpgconf --kill gpg-agent"; - use-gpg-ssh = "export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)"; - use-fido-ssh = "export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock"; + export EDITOR="vremote" + export TERMINAL="st" + ( command -v brew ) &>/dev/null && eval "$(/opt/homebrew/bin/brew shellenv)" + ( command -v docker ) &>/dev/null && eval "$(docker completion zsh)" + ( command -v kubectl ) &>/dev/null && eval "$(kubectl completion zsh)" + ( command -v zoxide ) &>/dev/null && eval "$(zoxide init zsh)" + export PATH="$PATH:$HOME/.local/bin:/opt/homebrew/bin:${config.ivi.home}/.krew/bin:${config.ivi.home}/.cargo/bin:${pkgs.ncurses}/bin" + [[ -f ~/.cache/wal/sequences ]] && (cat ~/.cache/wal/sequences &) + unset LD_PRELOAD + + export COLORTERM=truecolor + export GPG_TTY="$(tty)" + gpgconf --launch gpg-agent + + if [ ! -S ~/.ssh/ssh_auth_sock ]; then + eval `ssh-agent` + ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock + fi + export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock + ssh-add -l > /dev/null || ssh-add ~/.ssh/id_ed25519_sk + ''; + shellAliases = { + k9s = "k9s "; + k = "kubectl "; + d = "docker "; + ls = "ls --color=auto"; + s = "${if machine.isDarwin then "darwin-rebuild" else "sudo nixos-rebuild"} switch --flake ${config.ivi.home}/flake#${config.networking.hostName}"; + b = "/run/current-system/bin/switch-to-configuration boot"; + v = "vremote"; + lf = "lfub"; + M = "xrandr --output HDMI1 --auto --output eDP1 --off"; + m = "xrandr --output eDP1 --auto --output HDMI1 --off"; + mM = "xrandr --output eDP1 --auto --output HDMI1 --off"; + newflake = "nix flake new -t ~/flake "; + ansible-flake = "nix flake new -t ~/flake#ansible "; + go-flake = "nix flake new -t ~/flake#go "; + lock-pass = "gpgconf --kill gpg-agent"; + use-gpg-ssh = "export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)"; + use-fido-ssh = "export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock"; + }; + }; + + bash = { + enable = false; + bashrcExtra = '' + export EDITOR="nvim" + export TERMINAL="st" + ( command -v brew ) &>/dev/null && eval "$(/opt/homebrew/bin/brew shellenv)" + ( command -v docker ) &>/dev/null && eval "$(docker completion bash)" + ( command -v kubectl ) &>/dev/null && eval "$(kubectl completion bash)" + ( command -v zoxide ) &>/dev/null && eval "$(zoxide init bash)" + export PATH="$PATH:$HOME/.local/bin:/opt/homebrew/bin:${config.ivi.home}/.krew/bin:${config.ivi.home}/.cargo/bin:${pkgs.ncurses}/bin" + [[ -f ~/.cache/wal/sequences ]] && (cat ~/.cache/wal/sequences &) + unset LD_PRELOAD + # include nix.sh if it exists + + export COLORTERM=truecolor + export GPG_TTY="$(tty)" + gpgconf --launch gpg-agent + + if [ ! -S ~/.ssh/ssh_auth_sock ]; then + eval `ssh-agent` + ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock + fi + export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock + ssh-add -l > /dev/null || ssh-add ~/.ssh/id_ed25519_sk + ''; + shellAliases = { + k9s = "k9s "; + k = "kubectl "; + d = "docker "; + ls = "ls --color=auto"; + s = "${if machine.isDarwin then "darwin-rebuild" else "sudo nixos-rebuild"} switch --flake ${config.ivi.home}/flake#${config.networking.hostName}"; + b = "/run/current-system/bin/switch-to-configuration boot"; + v = "nvim"; + M = "xrandr --output HDMI1 --auto --output eDP1 --off"; + m = "xrandr --output eDP1 --auto --output HDMI1 --off"; + mM = "xrandr --output eDP1 --auto --output HDMI1 --off"; + newflake = "nix flake new -t ~/flake "; + ansible-flake = "nix flake new -t ~/flake#ansible "; + go-flake = "nix flake new -t ~/flake#go "; + lock-pass = "gpgconf --kill gpg-agent"; + use-gpg-ssh = "export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)"; + use-fido-ssh = "export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock"; + }; }; }; diff --git a/profiles/core/lf.nix b/profiles/core/lf.nix new file mode 100644 index 0000000..9092f43 --- /dev/null +++ b/profiles/core/lf.nix @@ -0,0 +1,92 @@ +{pkgs,config,...}: { + hm.home.packages = [pkgs.ueberzug pkgs.lf]; + hm.xdg.configFile = { + "lf/icons".text = '' + di 📁 + fi 📃 + tw 🤝 + ow 📂 + ln ⛓ + or ❌ + ex 🎯 + *.txt ✍ + *.mom ✍ + *.me ✍ + *.ms ✍ + *.avif 🖼 + *.png 🖼 + *.webp 🖼 + *.ico 🖼 + *.jpg 📸 + *.jpe 📸 + *.jpeg 📸 + *.gif 🖼 + *.svg 🗺 + *.tif 🖼 + *.tiff 🖼 + *.xcf 🖌 + *.html 🌎 + *.xml 📰 + *.gpg 🔒 + *.css 🎨 + *.pdf 📚 + *.djvu 📚 + *.epub 📚 + *.csv 📓 + *.xlsx 📓 + *.tex 📜 + *.md 📘 + *.r 📊 + *.R 📊 + *.rmd 📊 + *.Rmd 📊 + *.m 📊 + *.mp3 🎵 + *.opus 🎵 + *.ogg 🎵 + *.m4a 🎵 + *.flac 🎼 + *.wav 🎼 + *.mkv 🎥 + *.mp4 🎥 + *.webm 🎥 + *.mpeg 🎥 + *.avi 🎥 + *.mov 🎥 + *.mpg 🎥 + *.wmv 🎥 + *.m4b 🎥 + *.flv 🎥 + *.zip 📦 + *.rar 📦 + *.7z 📦 + *.tar 📦 + *.z64 🎮 + *.v64 🎮 + *.n64 🎮 + *.gba 🎮 + *.nes 🎮 + *.gdi 🎮 + *.1 ℹ + *.nfo ℹ + *.info ℹ + *.log 📙 + *.iso 📀 + *.img 📀 + *.bib 🎓 + *.ged 👪 + *.part 💔 + *.torrent 🔽 + *.jar ♨ + *.java ♨ + ''; + "lf/cleaner".text = '' + #!/bin/sh + if [ -n "$FIFO_UEBERZUG" ]; then + printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" + fi + ''; + "lf/scope".source = config.lib.meta.mkMutableSymlink /mut/lf/scope; + "lf/lfrc".source = config.lib.meta.mkMutableSymlink /mut/lf/lfrc; + }; +} |
