235 lines
7.7 KiB
Nix
Executable file
235 lines
7.7 KiB
Nix
Executable file
{
|
|
config,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}: {
|
|
xdg.configFile = {
|
|
"ghostty/config".source = "${../files/ghostty-config}";
|
|
};
|
|
programs = {
|
|
bat = {
|
|
enable = true;
|
|
config = {
|
|
pager = "less -FR";
|
|
theme = "Tomorrow Night";
|
|
style = "numbers,changes";
|
|
tabs = "2";
|
|
wrap = "never";
|
|
};
|
|
themes = {
|
|
tomorrow-night = {
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "chriskempson";
|
|
repo = "Tomorrow-Theme";
|
|
rev = "ccf6666d888198d341b26b3a99d0bc96500ad503";
|
|
sha256 = "sha256-G9NOFKP9GX8lKIoHVska6xAY9AKKMenZuVkx0YgfQyA=";
|
|
};
|
|
file = "TextMate/Tomorrow-Night.tmTheme";
|
|
};
|
|
};
|
|
};
|
|
eza.enable = true;
|
|
man.enable = true;
|
|
};
|
|
home.packages = builtins.attrValues {
|
|
inherit
|
|
(pkgs)
|
|
#tailspin
|
|
#curlie
|
|
#ouch
|
|
#viddy
|
|
#netscanner
|
|
#kalker
|
|
fd
|
|
ripgrep
|
|
# await
|
|
ghostty
|
|
bottom
|
|
direnv
|
|
;
|
|
};
|
|
|
|
programs.fzf = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
};
|
|
services.gpg-agent.enableZshIntegration = true;
|
|
|
|
programs.zsh = let
|
|
emacs_client = ''emacsclient --create-frame --alternate-editor=""'';
|
|
in {
|
|
enable = true;
|
|
dotDir = ".config/zsh";
|
|
enableCompletion = false;
|
|
autosuggestion.enable = false;
|
|
history = {
|
|
path = "${config.home.homeDirectory}/.cache/.zsh-histfile";
|
|
save = 1000000000;
|
|
size = 100000000;
|
|
};
|
|
initExtraBeforeCompInit = ''
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' menu no
|
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
|
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
|
zstyle ':completion:*:descriptions' format '[%d]'
|
|
zstyle ':completion::complete:*' gain-privileges 1
|
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath'
|
|
zstyle ':fzf-tab:complete:+__zoxide_z:*' fzf-preview 'eza -1 --color=always $realpath'
|
|
zstyle ':fzf-tab:*' switch-group '<' '>'
|
|
zstyle ':completion:*:git-checkout:*' sort false
|
|
# _comp_options+=(globdots)
|
|
#setopt APPEND_HISTORY # Append to histfile instead of overwriting.
|
|
setopt SHARE_HISTORY # Share history between all sessions.
|
|
setopt HIST_IGNORE_SPACE # Do not record an event starting with a space.
|
|
#setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate.
|
|
setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file.
|
|
setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again.
|
|
setopt HIST_FIND_NO_DUPS # Do not display a previously found event.
|
|
#setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.
|
|
#setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.
|
|
function error() { print -P "%F{red}[ERROR]%f: %F{yellow}$1%f" && return 1 }
|
|
function info() { print -P "%F{blue}[INFO]%f: %F{cyan}$1%f"; }
|
|
typeset -gAH ZINIT;
|
|
ZINIT[HOME_DIR]=''${XDG_DATA_HOME:-''${HOME}/.local/share}/zinit ZPFX=$ZINIT[HOME_DIR]/polaris
|
|
ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git ZINIT[OPTIMIZE_OUT_DISK_ACCESSES]=1
|
|
ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets
|
|
ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins
|
|
ZI_REPO='zdharma-continuum'
|
|
if [[ ! -e $ZINIT[BIN_DIR] ]]; then
|
|
info 'downloading zinit' \
|
|
&& command git clone \
|
|
https://github.com/$ZI_REPO/zinit.git \
|
|
$ZINIT[BIN_DIR] \
|
|
|| error 'failed to clone zinit repository' \
|
|
&& info 'setting up zinit' \
|
|
&& command chmod g-rwX $ZINIT[HOME_DIR] \
|
|
&& zcompile $ZINIT[BIN_DIR]/zinit.zsh \
|
|
&& info 'sucessfully installed zinit'
|
|
fi
|
|
if [[ -e $ZINIT[BIN_DIR]/zinit.zsh ]]; then
|
|
source $ZINIT[BIN_DIR]/zinit.zsh \
|
|
&& autoload -Uz _zinit \
|
|
&& (( ''${+_comps} )) \
|
|
&& _comps[zinit]=_zinit
|
|
else error "unable to find 'zinit.zsh'" && return 1
|
|
fi
|
|
'';
|
|
initExtra = ''
|
|
zi wait lucid light-mode for \
|
|
Aloxaf/fzf-tab \
|
|
atinit"zicompinit; zicdreplay" \
|
|
zdharma-continuum/fast-syntax-highlighting \
|
|
atload"_zsh_autosuggest_start" \
|
|
zsh-users/zsh-autosuggestions \
|
|
blockf atpull'zinit creisntall -q .' \
|
|
zsh-users/zsh-completions
|
|
zinit cdreplay -q
|
|
bindkey -v
|
|
bindkey "^a" vi-beginning-of-line
|
|
bindkey "^e" vi-end-of-line
|
|
bindkey '^p' history-search-backward
|
|
bindkey '^n' history-search-forward
|
|
#bindkey '^f' autosuggest-accept
|
|
|
|
while read -r option; do
|
|
setopt $option
|
|
done <<-EOF
|
|
ALWAYS_TO_END
|
|
AUTO_LIST
|
|
AUTO_MENU
|
|
AUTO_PARAM_SLASH
|
|
AUTO_PUSHD
|
|
ALWAYS_TO_END
|
|
COMPLETE_IN_WORD
|
|
EXTENDED_GLOB
|
|
INC_APPEND_HISTORY
|
|
INTERACTIVE_COMMENTS
|
|
MENU_COMPLETE
|
|
NO_BEEP
|
|
NOTIFY
|
|
PATH_DIRS
|
|
PUSHD_IGNORE_DUPS
|
|
PUSHD_SILENT
|
|
EOF
|
|
while read -r option; do
|
|
unsetopt $option
|
|
done <<-EOF
|
|
CASE_GLOB
|
|
CORRECT
|
|
EQUALS
|
|
FLOWCONTROL
|
|
NOMATCH
|
|
EOF
|
|
|
|
# prompt init
|
|
zi light mroth/evalcache
|
|
eval "$(${pkgs.oh-my-posh}/bin/oh-my-posh init zsh --config ${../files/prompt.json})"
|
|
_evalcache fzf --zsh
|
|
_evalcache zoxide init --cmd cd zsh
|
|
_evalcache direnv hook zsh
|
|
zi for atload'
|
|
zicompinit; zicdreplay
|
|
_zsh_highlight_bind_widgets
|
|
_zsh_autosuggest_bind_widgets' \
|
|
as'null' id-as'zinit/cleanup' lucid nocd wait \
|
|
$ZI_REPO/null
|
|
'';
|
|
dirHashes = {
|
|
dl = "${config.xdg.userDirs.download}";
|
|
docs = "${config.xdg.userDirs.documents}";
|
|
ops = "${config.xdg.userDirs.documents}/ops";
|
|
code = "${config.xdg.userDirs.documents}/ops/code";
|
|
nixos = "/etc/nixos";
|
|
pics = "${config.xdg.userDirs.pictures}";
|
|
vids = "${config.xdg.userDirs.videos}";
|
|
};
|
|
sessionVariables = {
|
|
DIRENV_LOG_FORMAT = "";
|
|
LC_ALL = "en_US.UTF-8";
|
|
# SSH_AUTH_SOCK = "$(gpgconf --list-dirs agent-ssh-socket)";
|
|
KEYTIMEOUT = 1;
|
|
GPG_TTY = "$(tty)";
|
|
PATH = "$PATH:$HOME/bin";
|
|
EDITOR = "em";
|
|
ALTERNATE_EDITOR = "emacs --init-directory='~/.demacs.d'";
|
|
};
|
|
shellAliases = {
|
|
fhs = "steam-run";
|
|
nsh = "nix-shell --command 'zsh'";
|
|
nd = "nix develop";
|
|
# tempemacs = "emacs -q --init-directory=`mktemp -d`";
|
|
# also dont forget --debug-init
|
|
em = emacs_client;
|
|
ff = "emacsclient";
|
|
ed = "emacsclient -nw -a=''";
|
|
g = "git";
|
|
gs = "git st";
|
|
gc = "git clone";
|
|
gi = "git init";
|
|
gr = "git sync";
|
|
gd = "git diff --output-indicator-new=' ' --output-indicator-old=' '";
|
|
gdf = "git df --output-indicator-new=' ' --output-indicator-old=' '";
|
|
gp = "git push";
|
|
gl = "git pull";
|
|
ga = "git add";
|
|
gap = "git add --patch";
|
|
gb = "git branch";
|
|
cp = "cp -ri";
|
|
mkdir = "mkdir -p";
|
|
free = "free -m";
|
|
j = "just";
|
|
meteo = "curl http://wttr.in";
|
|
bd = "popd || cd ..";
|
|
cdr = "cd \$(git rev-parse --show-toplevel)";
|
|
ls = "eza -al --icons --no-time --group-directories-first";
|
|
la = "eza -a --icons --no-time --group-directories-first";
|
|
cat = "bat";
|
|
top = "btm";
|
|
glg = "git lg";
|
|
serve = "${pkgs.python3}/bin/python3 -m http.server";
|
|
ytmp3 = "${pkgs.yt-dlp}/bin/yt-dlp --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata --output '%(title)s.%(ext)s'";
|
|
};
|
|
};
|
|
}
|