This commit is contained in:
Daniel Flanagan 2021-11-03 12:01:43 -05:00
parent c6b19fcbb4
commit 6b374f6278
Signed by: lytedev
GPG key ID: 5B2020A0F9921EF4
21 changed files with 354 additions and 338 deletions

9
common/bash/rc Normal file
View file

@ -0,0 +1,9 @@
# return if not running interactively
[[ $- != *i* ]] && return
command -v fish >/dev/null 2>&1 && grep fish /etc/shells >/dev/null 2>&1 && {
echo "This user is configured to use 'fish' as its primary shell."
echo " You may want to run 'chsh' and set your shell to $(grep fish /etc/shells | head -n1)'."
echo " You may also temporarily use fish by simply running 'fish'."
echo " If you're in bash for intentionally for some reason, then ignore this message."
}

7
common/bin/arch-in-docker Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env fish
if test (count $argv) -lt 2
docker run -it --rm archlinux bash
else
docker run -it --rm $argv[1..-2] archlinux $argv[-1]
end

View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
command -v git >/dev/null 2>&1 || { echo "git not installed"; exit 1; }
command -v fish >/dev/null 2>&1 || { echo "fish not installed"; exit 2; }
mkdir -p "$HOME/.config"
git clone https://git.lyte.dev/lytedev/dotfiles.git "$HOME/.config/lytedev-dotfiles"
exec "$HOME/.config/lytedev-dotfiles/common/bin/dotfiles-setup"

View file

@ -7,8 +7,8 @@ set dfp (realpath (dirname (status -f))/../..)
set lock_file $HOME/.using-lytedev-dotfiles.lock
if not test -f $lock_file
echo This will delete existing files. Make sure you know what you\'re doing.
printf 'Are you sure you want to continue? [y/N] '
echo "This will delete existing files. Make sure you know what you're doing."
echo 'Are you sure you want to continue? [y/N]'
read response
set response (string lower $response)
if string match $response y
@ -38,6 +38,7 @@ end
pushd $dfp
l common/tmux/conf $h/.tmux.conf
l common/fish $c/fish
l common/bash/rc $h/.bashrc
l common/neovim $c/nvim
l common/wezterm $c/wezterm
l common/colors/vim $c/nvim/colors/base16-donokai.vim
@ -59,6 +60,6 @@ for s in $c/lytedev-env/*/dotfiles-setup.d.fish
end
# execute the user's shell
set ush (getent passwd $LOGNAME | cut -d: -f7)
set ush (getent passwd (whoami) | cut -d: -f7)
echo "Dotfiles Installed! Don't forget to setup environments!"
exec $ush

View file

@ -1,2 +1,3 @@
#!/usr/bin/env bash
krita "$(ltl "$NICE_HOME/img/scrots/")"
#!/usr/bin/env sh
opener="$(command -v xdg-open 2>&1 >/dev/null && echo "xdg-open" || echo "open")"
exec nohup "$opener" "$NICE_HOME/img/scrots/$(ls -t "$NICE_HOME/img/scrots/" | head -n1)" >/dev/null 2>&1 &

View file

@ -1,13 +0,0 @@
#!/usr/bin/env fish
# Echoes the newest file in the specified directory (or current directory if none is given)
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test ! -d $f
set l $f
end
end
echo $l

View file

@ -1,13 +0,0 @@
#!/usr/bin/env fish
# Echoes the newest subdirectory in the specified directory (or current directory if none is given)
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test -d $f
set l $f
end
end
echo $l

View file

@ -1,6 +0,0 @@
#!/usr/bin/env fish
# Silent count
count $argv > /dev/null

View file

@ -1,113 +0,0 @@
#!/usr/bin/env fish
alias ls 'exa --group-directories-first'
alias tree 'ls --tree --level=3'
alias lA 'ls -a'
alias ll 'ls -l'
alias la 'll -a'
alias lt 'll -s modified'
alias lT 'lt -r'
alias lc 'lt -s accessed'
alias lC 'lc -r'
set -gx CDPATH $CDPATH . $NICE_HOME
function d -w cd --description "Quickly jump to NICE_HOME (or given relative or absolute path) and list files."
if scount $argv
cd $argv
else
cd $NICE_HOME
end
la
end
function c -w cd --description "Quickly jump to a subdirectory of NICE_HOME (or just to NICE_HOME if none given)"
if scount $argv
cd $NICE_HOME && d $argv
else
d $NICE_HOME
end
end
alias cd.. "d .."
alias cdd "d $DOTFILES_PATH"
alias cde "d $XDG_CONFIG_HOME/lytedev-env"
alias cdc "d $XDG_CONFIG_HOME"
alias cdn "d $NOTES_PATH"
alias cdl "d $XDG_DOWNLOAD_DIR"
alias cdg "d $XDG_GAMES_DIR"
alias .. "d .."
alias ... "d ../.."
alias .... "d ../../.."
alias ..... "d ../../../.."
alias ...... "d ../../../../.."
alias ....... "d ../../../../../.."
alias ........ "d ../../../../../../.."
alias ......... "d ../../../../../../../.."
function r --wraps nnn --description 'Run nnn with support for jump-to-directory-on-exit via ^G'
# TODO: this would break with multiple nnn instances, right?
# probably need to mktemp instead
set NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd"
nnn -P p $argv
test -e $NNN_TMPFILE && source $NNN_TMPFILE && rm $NNN_TMPFILE
end
alias l r
alias t "tmux"
alias rcp 'rsync -r -ah --progress'
alias cat bat
function g -w git
if scount $argv; git $argv
else; git status; end
end
alias dlf "docker logs --tail=500 -f"
alias dclf "docker-compose logs --tail=500 -f"
alias ctop "docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest"
function chat
set -l pass (pass config/weechat-passphrase | head -n 1)
env WEECHAT_PASSPHRASE=$pass weechat
end
function rgl; rg --color always $argv | less -r; end
alias k "kubectl"
alias kg "k get"
alias rg "rg --text"
alias grep "rg"
alias gr "rg"
alias vim "$EDITOR"
alias vi "$EDITOR"
alias v "$EDITOR"
alias e "$EDITOR"
alias se "sudo -E $EDITOR"
alias sv "sudo -E $EDITOR"
alias svim "se"
alias vltl "$EDITOR (ltl)"
alias cdltl "cd (ltld)"
function pp; while not ping -n 1 -t 5 8.8.8.8; sleep 1; end; end
alias p "ping 8.8.8.8"
alias C "clear; set -q TMUX && tmux clear-history || true"
alias sctl "sudo systemctl"
alias sctlu "systemctl --user"
alias bt "sctl start bluetooth && sudo bluetoothctl"
alias btctl "bt"
alias resrc "source $XDG_CONFIG_HOME/fish/config.fish; fish_user_key_bindings"
alias scs "sc $NOTES_PATH/_scratch.sc"
alias disks "lsblk && df -h"
alias dd "dd status=progress"
alias wifi "sudo iwctl"
alias year 'cal (date +%Y)'
alias mount 'sudo -E mount'
alias umount 'sudo -E umount'
alias pa pulsemixer
alias mail neomutt
alias wje work-journal-entry
alias miex 'iex -S mix'

11
common/fish/colors.fish Executable file → Normal file
View file

@ -1,13 +1,3 @@
#!/usr/bin/env fish
# TODO: once, I could set backgrounds
# unused since we handle it ourselves in fish_prompt
set -U fish_color_cwd magenta
set -U fish_color_cwd_root red
set -U fish_color_host normal
set -U fish_color_user blue
set -U fish_color_normal normal # default color
set -U fish_color_command white # base command being run (>ls< -la)
set -U fish_color_param white # command's parameters
@ -25,7 +15,6 @@ set -U fish_color_selection blue # vi mode visual selection (only fg)
set -U fish_color_valid_path yellow # if an argument is a valid path (only -u?)
set -U fish_color_comment 666 brblack # comments like this one!
# pager shown when completing
set -U fish_pager_color_completion white # main color for pager
set -U fish_pager_color_description magenta # color for meta description
set -U fish_pager_color_prefix blue # the string being completed

View file

@ -1,11 +1,4 @@
#!/usr/bin/env fish
set -Ux XDG_CONFIG_HOME $HOME/.config
set -Ux DOTFILES_PATH $XDG_CONFIG_HOME/lytedev-dotfiles
set -Ux ENV_PATH $XDG_CONFIG_HOME/lytedev-env
set -Ux FISH_PATH $XDG_CONFIG_HOME/fish
source $FISH_PATH/paths.fish
source (dirname (status --current-filename))/paths.fish
for s in $ENV_PATH/*/config.d.fish
source $s (dirname $s)
@ -13,32 +6,10 @@ end
status --is-interactive || exit
for f in key-bindings colors prompt aliases
for f in vars colors prompt functions key-bindings
source $FISH_PATH/$f.fish
end
has_command nnn && source $DOTFILES_PATH/common/nnn/config.fish
set -Ux _JAVA_AWT_WM_NONREPARENTING 1
set -Ux TERMINAL kitty
set -Ux BROWSER firefox-nightly
set -Ux ERL_AFLAGS "-kernel shell_history enabled -kernel shell_history_file_bytes 1024000" # iex history
set -Ux LESS "-r"
set -Ux LS_COLORS 'ow=01;36;40' # more sane ls colors
set -Ux EXA_COLORS '*=0'
set -Ux EDITOR nvim
set -Ux VISUAL nvim
set -Ux PAGER less
set -Ux MANPAGER 'env MANWIDTH="" nvim --cmd "let g:prosession_on_startup=0" +Man!'
function fish_greeting;
set_color -b black brblack
printf "%s@%s %s\n" $USER (hostname) (date)
printf "%6d processes running\n" (ps -aux | wc -l)
has_command free && printf "%6sGB memory available\n" (free -g | grep '^Mem:' | tr -s ' ' | cut -d ' ' -f7)
test -f /proc/sys/kernel/pty/nr && printf "%6d PTYs open\n" (cat /proc/sys/kernel/pty/nr)
end
if has_command brew && test -f (brew --prefix asdf)/lib/asdf.fish
set -Ux ASDF_DIR (brew --prefix asdf)
source (brew --prefix asdf)/lib/asdf.fish
@ -48,12 +19,4 @@ else if test -f /opt/asdf-vm/asdf.fish
source /opt/asdf-vm/asdf.fish
end
# assume the user uses "$HOME" to just store their mess of dotfiles and other
# nonsense that clutters it up and that they have a preferred starting
# directory where they keep the stuff they actually care about
# we only do this if the user is opening a shell at $HOME
if test $PWD = $HOME; or test $PWD = $NICE_HOME;
cd $NICE_HOME || cd
end
# test -f '/home/daniel/.home/.config/netlify/helper/path.fish.inc' && source '/home/daniel/.home/.config/netlify/helper/path.fish.inc'
test $PWD = $HOME && begin; cd $NICE_HOME || cd; end

164
common/fish/functions.fish Normal file
View file

@ -0,0 +1,164 @@
function has_command --wraps=command --description "Exits non-zero if the given command cannot be found"
command --quiet --search $argv[1]
end
if has_command exa
alias ls 'exa --group-directories-first'
alias tree 'ls --tree --level=3'
alias lt 'll --sort=modified'
alias lc 'lt --sort=accessed'
alias lT 'lt --reverse'
alias lC 'lc --reverse'
end
alias lA 'ls --all'
alias ll 'ls -l'
alias la 'll --all'
function scount --wraps=count --description "Silent count exits with a non-zero status if no arguments given to count"
count $argv > /dev/null
end
function d --wraps=cd --description "Quickly jump to NICE_HOME (or given relative or absolute path) and list files."
if scount $argv
cd $argv
else
cd $NICE_HOME
end
la
end
function c --wraps=cd --description "Quickly jump to a subdirectory of NICE_HOME (or just to NICE_HOME if none given)"
if scount $argv
cd $NICE_HOME && d $argv
else
d $NICE_HOME
end
end
alias cd.. "d .."
alias cdd "d $DOTFILES_PATH"
alias cde "d $XDG_CONFIG_HOME/lytedev-env"
alias cdc "d $XDG_CONFIG_HOME"
alias cdn "d $NOTES_PATH"
alias cdl "d $XDG_DOWNLOAD_DIR"
alias cdg "d $XDG_GAMES_DIR"
alias .. "d .."
alias ... "d ../.."
alias .... "d ../../.."
alias ..... "d ../../../.."
alias ...... "d ../../../../.."
alias ....... "d ../../../../../.."
alias ........ "d ../../../../../../.."
alias ......... "d ../../../../../../../.."
if has_command nnn
function r --wraps nnn --description 'Run nnn with support for jump-to-directory-on-exit via ^G'
# TODO: this would break with multiple nnn instances, right?
# probably need to mktemp instead
set NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd"
nnn -P p $argv
test -e $NNN_TMPFILE && source $NNN_TMPFILE && rm $NNN_TMPFILE
end
alias l r
end
has_command tmux && alias t "tmux"
has_command rsync && alias rcp 'rsync -r -ah --progress'
has_command bat && alias cat bat
if has_command git
function g -w git
if scount $argv; git $argv
else; git status; end
end
end
if has_command docker
alias dlf "docker logs --tail=500 -f"
alias ctop "docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest"
end
if has_command docker-compose
alias dclf "docker-compose logs --tail=500 -f"
end
if has_command weechat
function chat
set -l pass (pass config/weechat-passphrase | head -n 1)
env WEECHAT_PASSPHRASE=$pass weechat
end
end
if has_command rg
function rgl; rg --color always $argv | less -r; end
alias rg "rg --text"
alias grep "rg"
alias gr "rg"
end
if has_command kubectl
alias k "kubectl"
alias kg "k get"
end
alias vim $EDITOR
alias vi $EDITOR
alias v $EDITOR
alias e $EDITOR
alias sv "sudo -E $EDITOR"
alias se sv
alias svim sv
function ltl --wraps=ls --description "Echoes the name of the file most recently modified either in the current directory or in the given path"
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test ! -d $f
set l $f
end
end
echo $l
end
function ltld --wraps=ls --description "Echoes the name of the directory most recently modified either in the current directory or in the given path"
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test -d $f
set l $f
end
end
echo $l
end
alias vltl "$EDITOR (ltl)"
alias cdltl "cd (ltld)"
alias p "ping 8.8.8.8"
function pp --description "Keeps trying to ping 8.8.8.8 forever"
while not ping -n 1 -t 5 8.8.8.8
sleep 1
end
end
alias C "clear; set -q TMUX && begin; has_command tmux && tmux clear-history; end || true"
if has_command systemctl
alias sctl "sudo systemctl"
alias sctlu "systemctl --user"
alias bt "sctl start bluetooth && sudo bluetoothctl"
alias btctl "bt"
end
alias resrc "source $XDG_CONFIG_HOME/fish/config.fish; fish_user_key_bindings"
has_command sc && alias scs "sc $NOTES_PATH/_scratch.sc"
alias dd "dd status=progress"
alias year 'cal (date +%Y)'
alias mount 'sudo -E mount'
alias umount 'sudo -E umount'
has_command xdg-open && alias open xdg-open

35
common/fish/key-bindings.fish Executable file → Normal file
View file

@ -1,11 +1,7 @@
#!/usr/bin/env fish
function fish_user_key_bindings
# has_command fd && set -Ux FZF_DEFAULT_COMMAND 'fd --type f --hidden --follow --exclude .git'
test -f $HOME/.fzf/shell/key-bindings.fish && source $HOME/.fzf/shell/key-bindings.fish
fzf_key_bindings
type -q fzf_key_bindings && fzf_key_bindings
fish_vi_key_bindings insert --no-erase
set vi_esc "if commandline -P; commandline -f cancel; else; set fish_bind_mode default; commandline -f backward-char force-repaint; end"
@ -23,36 +19,7 @@ function fish_user_key_bindings
bind -M insert \cn down-or-search
bind -M insert \ce end-of-line
bind -M insert \ca beginning-of-line
bind -M insert \cw forward-word
bind -M insert \cv edit_command_buffer
bind -M default \cv edit_command_buffer
bind -M insert \ee false
bind -M insert \ev false
bind -M default \ee false
bind -M default \ev false
bind -M insert --erase \ct
bind -M default --erase \ct
bind --erase \c\t
bind --erase \cs
bind --erase btab
bind --erase --preset -M visual -k btab
bind --erase --preset -M insert -k btab
bind --erase --preset -M default -k btab
bind --erase --preset -k btab
bind --erase -M visual -k btab
bind --erase -M insert -k btab
bind --erase -M default -k btab
bind --erase -k btab
bind --erase \cs
bind --erase -M insert \cs
bind --erase -M default \cs
bind -M insert \cs 'tmux info && tmux attach -t default || tmux new-session -s default'
bind -M default \cs 'tmux info && tmux attach -t default || tmux new-session -s default'
bind -M insert \ct 'tmux info && tmux new-window -t default || tmux new-session -s default'
bind -M default \ct 'tmux info && tmux new-window -t default || tmux new-session -s default'
end

89
common/fish/paths.fish Executable file → Normal file
View file

@ -1,61 +1,70 @@
#!/usr/bin/env fish
set --export --universal XDG_CONFIG_HOME $HOME/.config
set --export --universal DOTFILES_PATH $XDG_CONFIG_HOME/lytedev-dotfiles
set --export --universal ENV_PATH $XDG_CONFIG_HOME/lytedev-env
set --export --universal FISH_PATH $XDG_CONFIG_HOME/fish
set -Ux GOPATH $HOME/.go
if not set --query NICE_HOME
# default NICE_HOME to HOME
set --export --universal NICE_HOME $HOME
# if HOME ends with a dir called .home, assume that NICE_HOME is HOME's parent dir
test (basename $HOME) = .home && set --export --universal NICE_HOME (realpath $HOME/..)
end
# reset paths on shell start
set --erase --global fish_user_paths
# add NICE_HOME to CDPATH (see `man 1 cd`)
set --erase CDPATH
set --export --global CDPATH . $NICE_HOME
set --export --universal GOPATH $HOME/.go
set paths_candidates \
$HOME/.go \
$GOPATH/bin \
$DOTFILES_PATH/common/bin \
$HOME/.bin \
$HOME/.cargo/bin \
$HOME/.local/bin \
$HOME/.deno/bin \
$HOME/.nimble/bin \
$HOME/.yarn/bin \
$HOME/.nimble/bin \
$HOME/.cargo/bin \
$HOME/.go \
$GOPATH/bin \
$HOME/.netlify/helper/bin
set -ge fish_user_paths
# add candidate paths to PATH if they exist
for d in $paths_candidates $ENV_PATH/*/bin
test -d $d && set -gxa fish_user_paths $d
test -d $d && set --append --export --global fish_user_paths $d
end
test -d $HOME/.local/bin && set -gxa fish_user_paths $HOME/.local/bin
test -d $HOME/.bin && set -gxa fish_user_paths $HOME/.local/bin
command --search --quiet python && \
set --append --export --global fish_user_paths (python -m site --user-base)/bin
has_command python && set -gxa fish_user_paths (python -m site --user-base)/bin
has_command ruby && set -gxa fish_user_paths (ruby -e 'print Gem.user_dir')/bin
command --search --quiet ruby && \
set --append --export --global fish_user_paths (ruby -e 'print Gem.user_dir')/bin
if set -q NICE_HOME
else
set -Ux NICE_HOME $HOME
test (basename $HOME) = .home && set -Ux NICE_HOME (realpath $HOME/..)
test -f $HOME/.nice_home && set -Ux NICE_HOME (cat $HOME/.nice_home)
test -f $ENV_PATH/.nice_home && set -Ux NICE_HOME (cat $ENV_PATH/.nice_home)
end
for p in $NICE_HOME $HOME $ENV_PATH
test -f $p/.nice_home && set -Ux NICE_HOME (cat $p/.nice_home)
end
set --export --universal NOTES_PATH $NICE_HOME/doc/notes
set --export --universal SCROTS_PATH $NICE_HOME/img/scrots
set --export --universal USER_LOGS_PATH $NICE_HOME/doc/logs
set -Ux NOTES_PATH $NICE_HOME/doc/notes
set -Ux SCROTS_PATH $NICE_HOME/img/scrots
set -Ux USER_LOGS_PATH $NICE_HOME/doc/logs
set --export --universal XDG_DESKTOP_DIR $HOME/desktop
set --export --universal XDG_PUBLICSHARE_DIR $HOME/public
set --export --universal XDG_TEMPLATES_DIR $HOME/templates
set -Ux XDG_DESKTOP_DIR $HOME/desktop
set -Ux XDG_PUBLICSHARE_DIR $HOME/public
set -Ux XDG_TEMPLATES_DIR $HOME/templates
set --export --universal XDG_DOCUMENTS_DIR $NICE_HOME/doc
set --export --universal XDG_DOWNLOAD_DIR $NICE_HOME/dl
set --export --universal XDG_MUSIC_DIR $NICE_HOME/music
set --export --universal XDG_PICTURES_DIR $NICE_HOME/img
set --export --universal XDG_VIDEOS_DIR $NICE_HOME/video
set --export --universal XDG_GAMES_DIR $NICE_HOME/games
set -Ux XDG_DOCUMENTS_DIR $NICE_HOME/doc
set -Ux XDG_DOWNLOAD_DIR $NICE_HOME/dl
set -Ux XDG_MUSIC_DIR $NICE_HOME/music
set -Ux XDG_PICTURES_DIR $NICE_HOME/img
set -Ux XDG_VIDEOS_DIR $NICE_HOME/video
set -Ux XDG_GAMES_DIR $NICE_HOME/games
set -Ux TMUX_PLUGIN_MANAGER_PATH $XDG_CONFIG_HOME/tmux/plugins/
set -Ux NOTES_PATH $XDG_DOCUMENTS_DIR/notes
set -Ux USER_LOGS_PATH $XDG_DOCUMENTS_DIR/logs
set -Ux SCROTS_PATH $XDG_PICTURES_DIR/scrots
set --export --universal TMUX_PLUGIN_MANAGER_PATH $XDG_CONFIG_HOME/tmux/plugins/
set --export --universal NOTES_PATH $XDG_DOCUMENTS_DIR/notes
set --export --universal USER_LOGS_PATH $XDG_DOCUMENTS_DIR/logs
set --export --universal SCROTS_PATH $XDG_PICTURES_DIR/scrots
if test -n "$NIX_PATH"
set NIX_PATH :
end
set -Ux NIX_PATH $HOME/.nix-defexpr/channels:$NIX_PATH
test -d $HOME/.nix-defexpr/channels && \
set --export --universal NIX_PATH $HOME/.nix-defexpr/channels:$NIX_PATH

17
common/fish/prompt.fish Executable file → Normal file
View file

@ -1,17 +1,18 @@
#!/usr/bin/env fish
set MAX_PATH_PIECE_CHARS 3
# TODO: if root, background instead?
function get_hostname
has_command hostname && hostname || cat /etc/hostname
end
set MAX_PATH_PIECE_CHARS $BASH_PROMPT_MAX_PATH_PIECE_CHARS 3
function fish_greeting
set_color -b black brblack
printf "%s@%s %s\n" $USER (get_hostname) (date)
end
# prompt rendering functions
function preprocess_pwd
test (pwd) = / && echo "/" && return 1
test (pwd) = $NICE_HOME && echo "~" && return 0
# with ellipsis
# echo "$(<<< "$p" cut -c2- | awk '{split($0,p,"/");for(k in p){if(k==length(p)){printf "/%s",p[k]}else{if(length(p[k])>'"
# $((MAX_PATH_PIECE_CHARS+1))"'){printf "/%.'"$((MAX_PATH_PIECE_CHARS))"'s…",p[k]}else{printf "/%s",p[k]}}}}')"
# without ellipsis
# TODO: fix for macOS
echo (pwd) | cut -c2- | \
awk '{split($0,p,"/");for(k in p){if(k==length(p)){printf "/%s",p[k]}else{printf "/%.'$MAX_PATH_PIECE_CHARS[1]'s",p[k]}}}'
end

24
common/fish/vars.fish Normal file
View file

@ -0,0 +1,24 @@
# sane ls colors
set --export --universal LS_COLORS 'ow=01;36;40'
set --export --universal EXA_COLORS '*=0'
# iex history
set --export --universal ERL_AFLAGS "-kernel shell_history enabled -kernel shell_history_file_bytes 1024000"
set --export --universal TERMINAL kitty
set --export --universal BROWSER firefox-nightly
set --export --universal PAGER less
set --export --universal LESS "-r"
set --export --universal MANPAGER 'env MANWIDTH="" nvim --cmd "let g:prosession_on_startup=0" +Man!'
if command --search --quiet nvim
set --export --universal EDITOR nvim
set --export --universal VISUAL nvim
else
set --export --universal EDITOR vi
set --export --universal VISUAL vi
end
# has_command fd && set -Ux FZF_DEFAULT_COMMAND 'fd --type f --hidden --follow --exclude .git'

View file

@ -1,9 +1,9 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.1.0
htop_version=3.1.1
config_reader_min_version=2
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_key=47
sort_direction=-1
tree_sort_key=0
tree_sort_direction=1

View file

@ -1 +1 @@
/home/daniel/.home/.config/lytedev-dotfiles/common/colors/vim
/root/.config/lytedev-dotfiles/common/colors/vim

5
os/linux/config.d.fish Normal file
View file

@ -0,0 +1,5 @@
alias disks "lsblk && df -h"
has_command nmtui && alias wifi "sudo -E nmtui"
has_command pulsemixer && alias pa pulsemixer
has_command neomutt && alias mail neomutt
has_command iex && alias miex 'iex -S mix'

View file

@ -1,29 +1,37 @@
#!/usr/bin/env fish
set -q XDG_CONFIG_HOME || begin
set --query XDG_CONFIG_HOME || begin
echo XDG_CONFIG_HOME not set
exit 1
end
set -q DOTFILES_PATH || begin
set --query DOTFILES_PATH || begin
echo DOTFILES_PATH not set
exit 1
end
# set -Ux QT_QPA_PLATFORM xcb
# set -Ux QT_QPA_PLATFORM_PLUGIN_PATH /usr/lib/qt/plugins
set -Ux CLUTTER_BACKEND wayland
set -Ux SDL_VIDEODRIVER wayland
set -Ux MOZ_ENABLE_WAYLAND 1
set -Ux XDG_CURRENT_DESKTOP sway
# set --export --universal QT_QPA_PLATFORM xcb
# set --export --universal QT_QPA_PLATFORM_PLUGIN_PATH /usr/lib/qt/plugins
set --export --universal CLUTTER_BACKEND wayland
set --export --universal SDL_VIDEODRIVER wayland
set --export --universal MOZ_ENABLE_WAYLAND 1
set --export --universal XDG_CURRENT_DESKTOP sway
set --export --universal _JAVA_AWT_WM_NONREPARENTING 1
for s in $ENV_PATH/*/sway-init.d.fish
source $s (dirname $s)
end
set initstr "\n(date): Initializsing Sway WM"
set elogfile ~/.sway.error.log
set logfile ~/.sway.log
set --query SWAY_LOGGING || set SWAY_LOGGING 0
echo $initstr >> $logfile; echo $initstr >> $elogfile
exec sway >> $logfile 2>> $elogfile
if test $SWAY_LOGGING = 1
set initstr "\n(date): Starting Sway"
set elogfile ~/.sway.error.log
set logfile ~/.sway.log
echo $initstr >> $logfile; echo $initstr >> $elogfile
exec sway >> $logfile 2>> $elogfile
else
exec sway
end

View file

@ -1,72 +1,77 @@
# lytedev's dotfiles
My various configuration files. Don't use them directly, just take what you
like.
My various configuration files. I can't recommend using them directly, just
take what you like.
[🖥️ Upstream][upstream] • [🐙 GitHub Mirror][github]
![Battlestation][battlestation-photo]
![Desktop Screenshot][desktop-screenshot]
# Dependencies
# Basic Setup
- `fish`
- `bat`
- `fd`
- `sd`
- `fzf`
- `tmux`
- `rsync`
- `exa`
- `nnn`
- `nvim`
curl -LsSf https://lyte.dev/df.sh | sh
# Setup
## I don't like `curl ... | sh`
```
set dfp ~/.config/lytedev-dotfiles
git clone https://git.lyte.dev/lytedev/dotfiles.git $dfp && cd $dfp
./common/bin/dotfiles-setup
# symlink host/os-specific directories
ezln ./os/linux $ENV_PATH/linux
# setup again once env has all the layers you want
dotfiles-setup
```
Clone the repo:
# Basic Usage
git clone https://git.lyte.dev/lytedev/dotfiles.git "$HOME/.config/lytedev-dotfiles"
Inspect and run the common (no macOS- or Linux-specific configuration) setup
`fish` script:
$EDITOR "$HOME/.config/lytedev-dotfiles/common/bin/dotfiles-setup"
"$HOME/.config/lytedev-dotfiles/common/bin/dotfiles-setup"
## Advanced Setup
You will want to symlink relevant environment layers into the `$ENV_PATH` in
order to have your OS-specific applications be configured and common
applications configured for the host OS.
There's a handy `fzf`-based script that makes this super easy:
dotfiles-link-environments # note that you can select multiple with TAB
You can also list the possible environments:
cat $DOTFILES_PATH/common/envs
And then link them yourself (note the replacing of slashes with dashes):
ln -s (pwd)/os/linux $ENV_PATH/os-linux
ln -s (pwd)/os/linux/arch $ENV_PATH/os-linux-arch
ln -s (pwd)/host/laptop $ENV_PATH/host-laptop
ln -s (pwd)/host/laptop/third $ENV_PATH/os-laptop-third
And run setup again once you've finished linking all related environments:
dotfiles-setup
# To Do
- Wifi + Home DNS
- Rotate/switch gpg keys and password-store, setup properly on phone
- Maybe something age/sops-based?
- Home DNS/Wireguard VPN?
- Layered gitconfig?
- Get out of Google!
- `calcurse` for Calendar management?
- `aerc` or `neomutt` for email?
- My home-grown backup network for Drive?
- Photos?
- Hibernation and proper power management for laptop?
- **Learn to use `journalctl`**
- Fix sway workspaces on desktop?
- Neovim LSP
- Move to NixOS (WIP) or Guix? Declarative is the future!
- Better/more secure remote management configuration in dotfiles? [1][1]
- Setup network file share?
- Home VPN
- Move to NixOS or Guix? Declarative may be the future...?
- Better/more secure remote management configuration?
- Why can't I hold all these SSH keys/configs/target hosts?
- Setup network file share that's easily accessible from Windows and macOS hosts?
- Samba?
- Add vim in the terminal as the handler for many MIME types (xdg-open and such)
for the rare time I'm in a file manager or for opening easily from
the browser.
- This goes for navigating "into" a file in `nnn`
- Unify all the common variables... somehow? (and use templates and `envsubst`?)
- [Vimux](https://github.com/benmills/vimux)?
- Investigate systemd services that may help with various tasks (homed, etc.)
- Be more macOS friendly, since work may require that
[upstream]: https://git.faceless.lytedev.io/lytedev/dotfiles
[github]: https://github.com/lytedev/dotfiles
[desktop-screenshot]: https://files.lyte.dev/unix/desktop-screenshot.png
[battlestation-photo]: https://files.lyte.dev/unix/battlestation.jpg
[1]: https://smallstep.com/blog/ssh-tricks-and-tips/