diff --git a/.dotter/local.laptop.toml b/.dotter/local.laptop.toml index 4cc077c..e6091c3 100644 --- a/.dotter/local.laptop.toml +++ b/.dotter/local.laptop.toml @@ -1,2 +1,2 @@ includes = [".dotter/laptop.toml"] -packages = ["emacs", "i3", "starship", "zsh"] +packages = ["emacs", "i3"] diff --git a/home-manager/home.nix b/home-manager/home.nix index ee16df2..9fdbb49 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -24,6 +24,9 @@ # Further tools lazygit + # TODO: migrate to module config + starship + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) # (pkgs.writeShellScriptBin "my-hello" '' @@ -31,7 +34,75 @@ # '') ]; + home.shellAliases = { + g = "git status"; + fd = "fd -HI"; + }; + programs = { + direnv = { + enable = true; + enableZshIntegration = true; + }; + + starship = { + enable = true; + enableZshIntegration = true; + }; + + zsh = { + enable = true; + + initExtra = '' + function go_dir_up() { + cd .. || return 1 + } + + function zle_go_dir_up() { + zle .kill-buffer + go_dir_up + zle .accept-line + } + + fzf-z() { + dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//') + cd $dir + } + + mkcd () + { + mkdir -p -- "$1" && cd -P -- "$1" + } + + zle -N zle_go_dir_up + bindkey "^[[1;3A" zle_go_dir_up + bindkey "^[[A" history-substring-search-up + bindkey "^[[B" history-substring-search-down + + bindkey "^[[1;5C" forward-word + bindkey "^[[1;5D" backward-word + ''; + + zplug = { + enable = true; + plugins = [ + # list of plugins: https://github.com/unixorn/awesome-zsh-plugins + { name = "agkozak/zsh-z"; } + { name = "mdumitru/last-working-dir"; } + { + name = "zsh-users/zsh-completions"; + } + + # make it behave like fish + { name = "zsh-users/zsh-autosuggestions"; } + { name = "zsh-users/zsh-history-substring-search"; } + { + name = "zsh-users/zsh-syntax-highlighting"; + } # must be last sourced plugin + ]; + }; + }; + neovim = let toLua = str: '' lua << EOF @@ -98,21 +169,21 @@ source = ../alacritty; recursive = true; }; + ".config/starship.toml".source = ../starship/starship.toml; }; # Home Manager can also manage your environment variables through # 'home.sessionVariables'. If you don't want to manage your shell through Home # Manager then you have to manually source 'hm-session-vars.sh' located at # either - # # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # # or - # # /etc/profiles/per-user/julian/etc/profile.d/hm-session-vars.sh # home.sessionVariables = { - # EDITOR = "emacs"; + TERMINAL = "alacritty"; + EDITOR = "nvim"; + VISUAL = "nvim"; }; # Let Home Manager install and manage itself.