diff --git a/README.md b/README.md index 7759247..f9ec34e 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ A [`home-manager`]() flake containing my [`zsh`]() config. extraSpecialArgs = {inherit inputs outputs;}; modules = [ ... - zsh-config.home-managerModule + inputs.zsh-config.homeManagerModules.default ... ]; }; diff --git a/flake.lock b/flake.lock index a538cd2..f10b38d 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "fast-syntax-highlighting": { - "flake": false, - "locked": { - "lastModified": 1702802089, - "narHash": "sha256-AEeGEx2vyyHVS92Nla7XoqSx3rTpQHYwPMrK1jFH1Mg=", - "owner": "z-shell", - "repo": "F-Sy-H", - "rev": "3dea11a9018061e6e3a77e529b79e5654679d3a0", - "type": "github" - }, - "original": { - "owner": "z-shell", - "repo": "F-Sy-H", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -52,7 +36,6 @@ }, "root": { "inputs": { - "fast-syntax-highlighting": "fast-syntax-highlighting", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index 9bfe026..31d6ca9 100644 --- a/flake.nix +++ b/flake.nix @@ -13,219 +13,221 @@ ... } @ inputs: { - home-managerModule = { config, lib, pkgs, ... }: { - home.packages = with pkgs;[ - nix-zsh-completions + homeManagerModules = { + default = { config, lib, pkgs, ... }: { + home.packages = with pkgs;[ + nix-zsh-completions - asciinema # Terminal recording - libnotify # Notifications - websocat # For asciinema v2 streams + asciinema # Terminal recording + libnotify # Notifications + websocat # For asciinema v2 streams - tldr - lsd - bat - eza - trash-cli - fzf # enhancd - fd # enhancd - # rofi # for fd - gnutar # ex - bzip3 # ex - unzip # ex - p7zip # ex - unrar # ex - gzip # ex - ]; + tldr + lsd + bat + eza + trash-cli + fzf # enhancd + fd # enhancd + # rofi # for fd + gnutar # ex + bzip3 # ex + unzip # ex + p7zip # ex + unrar # ex + gzip # ex + ]; - programs = { - # nix-index = { - # enable = true; - # enableZshIntegration = true; - # }; - # thefuck = { - # enable = true; - # enableZshIntegration = true; - # }; - direnv = { - enable = true; - enableZshIntegration = true; - nix-direnv.enable = true; - }; - - zsh = { - enable = true; - enableCompletion = true; - zplug = { + programs = { + # nix-index = { + # enable = true; + # enableZshIntegration = true; + # }; + # thefuck = { + # enable = true; + # enableZshIntegration = true; + # }; + direnv = { enable = true; - plugins = [ - { name = "romkatv/powerlevel10k"; tags = [ "as:theme" "depth:1" ]; } # Installations with additional options. For the list of options, please refer to Zplug README. - { name = "z-shell/F-Sy-H"; } # Feature-rich Syntax Highlighting for Zsh - # { name = "zsh-users/zsh-syntax-highlighting"; } - { name = "zsh-users/zsh-completions"; } # Adds some missing completions to zsh - { name = "zsh-users/zsh-autosuggestions"; } # Simple plugin installation - { name = "MichaelAquilina/zsh-you-should-use"; } # Did you forget to use an alias? - { name = "davidde/git"; } # Aliases for git - { name = "babarot/enhancd"; tags = [ "use:init.sh" ]; } # Includes simmilar functionality to zsh-z - { name = "supercrabtree/k"; } # Directory listings for Zsh with git features. - { name = "plugins/command-not-found"; tags = [ "from:oh-my-zsh" ]; } - { name = "gko/ssh-connect"; tags = [ "use:ssh-connect.sh" ]; } # List of most used ssh connections - { name = "agkozak/zsh-z"; } # Jump arount your filesystem with ease - { name = "sineto/web-search"; } - { name = "zsh-users/zaw"; } # Desctiptions for command outputs (afaik)zplug "plugins/git", from:oh-my-zsh - # { name = "plugins/dirhistory"; tags = [ "from:oh-my-zsh" ]; } - ]; + enableZshIntegration = true; + nix-direnv.enable = true; }; - initExtraFirst = '' - if [[ "''${ZSH_PROFILE}" -eq 1 ]]; then - zmodload zsh/zprof # Profiling. Enable `zprof` at the end of initExtra too. - else - # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. - # Initialization code that may require console input (password prompts, [y/n] - # confirmations, etc.) must go above this block; everything else may go below. - if [[ -r "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then - source "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" + zsh = { + enable = true; + enableCompletion = true; + zplug = { + enable = true; + plugins = [ + { name = "romkatv/powerlevel10k"; tags = [ "as:theme" "depth:1" ]; } # Installations with additional options. For the list of options, please refer to Zplug README. + { name = "z-shell/F-Sy-H"; } # Feature-rich Syntax Highlighting for Zsh + # { name = "zsh-users/zsh-syntax-highlighting"; } + { name = "zsh-users/zsh-completions"; } # Adds some missing completions to zsh + { name = "zsh-users/zsh-autosuggestions"; } # Simple plugin installation + { name = "MichaelAquilina/zsh-you-should-use"; } # Did you forget to use an alias? + { name = "davidde/git"; } # Aliases for git + { name = "babarot/enhancd"; tags = [ "use:init.sh" ]; } # Includes simmilar functionality to zsh-z + { name = "supercrabtree/k"; } # Directory listings for Zsh with git features. + { name = "plugins/command-not-found"; tags = [ "from:oh-my-zsh" ]; } + { name = "gko/ssh-connect"; tags = [ "use:ssh-connect.sh" ]; } # List of most used ssh connections + { name = "agkozak/zsh-z"; } # Jump arount your filesystem with ease + { name = "sineto/web-search"; } + { name = "zsh-users/zaw"; } # Desctiptions for command outputs (afaik)zplug "plugins/git", from:oh-my-zsh + # { name = "plugins/dirhistory"; tags = [ "from:oh-my-zsh" ]; } + ]; + }; + + initExtraFirst = '' + if [[ "''${ZSH_PROFILE}" -eq 1 ]]; then + zmodload zsh/zprof # Profiling. Enable `zprof` at the end of initExtra too. + else + # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. + # Initialization code that may require console input (password prompts, [y/n] + # confirmations, etc.) must go above this block; everything else may go below. + if [[ -r "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then + source "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" + fi fi - fi - ''; + ''; - initExtra = '' - # Remove nix from path if we are in a container (distrobox) - if [ -v DISTROBOX_ENTER_PATH ]; then - export PATH=$(echo $PATH | tr ':' '\n' | grep -vE '/nix/|/run/wrappers|\.nix-profile|/etc/profiles/per-user/jirka/bin|/run/current-system/sw/bin' | tr '\n' ':') - export PATH=$(echo $PATH | sed 's/:$//') - fi + initExtra = '' + # Remove nix from path if we are in a container (distrobox) + if [ -v DISTROBOX_ENTER_PATH ]; then + export PATH=$(echo $PATH | tr ':' '\n' | grep -vE '/nix/|/run/wrappers|\.nix-profile|/etc/profiles/per-user/jirka/bin|/run/current-system/sw/bin' | tr '\n' ':') + export PATH=$(echo $PATH | sed 's/:$//') + fi - # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. - [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. + [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh - export YSU_MESSAGE_POSITION="after" # you-should-use plugin - export ASCIINEMA_API_URL=https://asciinema.stefka.eu - if [ -v ASCIINEMA_REC ]; then - _zsh_autosuggest_disable - fi + export YSU_MESSAGE_POSITION="after" # you-should-use plugin + export ASCIINEMA_API_URL=https://asciinema.stefka.eu + if [ -v ASCIINEMA_REC ]; then + _zsh_autosuggest_disable + fi - # Basic auto/tab complete: - autoload -U compinit - zstyle ':completion:*' menu select - zmodload zsh/complist - compinit - _comp_options+=(globdots) # Include hidden files. + # Basic auto/tab complete: + autoload -U compinit + zstyle ':completion:*' menu select + zmodload zsh/complist + compinit + _comp_options+=(globdots) # Include hidden files. - # Custom ZSH Binds - bindkey '^ ' autosuggest-accept - bindkey "^[[H" beginning-of-line - bindkey "^[[F" end-of-line - bindkey "^[[1;5C" forward-word - bindkey "^[[1;5D" backward-word - bindkey "^[[3~" delete-char + # Custom ZSH Binds + bindkey '^ ' autosuggest-accept + bindkey "^[[H" beginning-of-line + bindkey "^[[F" end-of-line + bindkey "^[[1;5C" forward-word + bindkey "^[[1;5D" backward-word + bindkey "^[[3~" delete-char - # Extracting - ex () - { - if [ -f $1 ] ; then - case $1 in - *.tar.bz2) tar xjf $1 ;; - *.tar.gz) tar xzf $1 ;; - *.tar.xz) tar xJf $1 ;; - *.bz2) bunzip3 $1 ;; - *.rar) unrar x $1 ;; - *.gz) gunzip $1 ;; - *.tar) tar xf $1 ;; - *.tbz2) tar xjf $1 ;; - *.tgz) tar xzf $1 ;; - *.zip) unzip $1 ;; - *.Z) uncompress $1;; - *.7z) 7z x $1 ;; - *) echo "'$1' cannot be extracted via ex()" ;; - esac - else - echo "'$1' is not a valid file" - fi - } + # Extracting + ex () + { + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.tar.xz) tar xJf $1 ;; + *.bz2) bunzip3 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi + } - # Kitty binds - if [ "$TERM" = "xterm-kitty" ]; then - alias ssh="kitty +kitten ssh" - alias icat="kitty +kitten icat" - alias d="kitty +kitten diff" - alias get="kitty +kitten transfer" - alias put="kitty +kitten transfer --direction=upload" - alias kclip="kitty +kitten clipboard" - fi + # Kitty binds + if [ "$TERM" = "xterm-kitty" ]; then + alias ssh="kitty +kitten ssh" + alias icat="kitty +kitten icat" + alias d="kitty +kitten diff" + alias get="kitty +kitten transfer" + alias put="kitty +kitten transfer --direction=upload" + alias kclip="kitty +kitten clipboard" + fi - # Special aliases that may not work with Nix config - # Command line head / tail shortcuts - alias H="| head"; - alias T="| tail"; - alias G="| grep"; - alias L="| less"; - alias M="| most"; - alias LL="2>&1 | less"; - alias CA="2>&1 | cat -A"; - alias NE="2> /dev/null"; - alias NUL="> /dev/null 2>&1"; - alias P="2>&1| pygmentize -l pytb"; - if [[ "''${ZSH_PROFILE}" -eq 1 ]]; then - zprof - fi - ''; + # Special aliases that may not work with Nix config + # Command line head / tail shortcuts + alias H="| head"; + alias T="| tail"; + alias G="| grep"; + alias L="| less"; + alias M="| most"; + alias LL="2>&1 | less"; + alias CA="2>&1 | cat -A"; + alias NE="2> /dev/null"; + alias NUL="> /dev/null 2>&1"; + alias P="2>&1| pygmentize -l pytb"; + if [[ "''${ZSH_PROFILE}" -eq 1 ]]; then + zprof + fi + ''; - shellAliases = { - cat = "${pkgs.bat}/bin/bat -p"; - # update = "sudo nixos-rebuild switch"; + shellAliases = { + cat = "${pkgs.bat}/bin/bat -p"; + # update = "sudo nixos-rebuild switch"; - ls="lsd"; - # ls, the common ones I use a lot shortened for rapid fire usage - l="ls -lFh"; #size,show type,human readable - la="ls -lAFh"; #long list,show almost all,show type,human readable - lr="ls -tRFh"; #sorted by date,recursive,show type,human readable - lt="ls -ltFh"; #long list,sorted by date,show type,human readable - ll="ls -l"; #long list - ldot="ls -ld .*"; - lS="ls -1FSsh"; - lart="ls -1Fcart"; - lrt="ls -1Fcrt"; + ls="lsd"; + # ls, the common ones I use a lot shortened for rapid fire usage + l="ls -lFh"; #size,show type,human readable + la="ls -lAFh"; #long list,show almost all,show type,human readable + lr="ls -tRFh"; #sorted by date,recursive,show type,human readable + lt="ls -ltFh"; #long list,sorted by date,show type,human readable + ll="ls -l"; #long list + ldot="ls -ld .*"; + lS="ls -1FSsh"; + lart="ls -1Fcart"; + lrt="ls -1Fcrt"; - grep="grep --color"; - sgrep="grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} "; + grep="grep --color"; + sgrep="grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} "; - t="tail -f"; + t="tail -f"; - dud="du -d 1 -h"; - duf="du -sh *"; - # fd="find . -type d -name"; - ff="find . -type f -name"; + dud="du -d 1 -h"; + duf="du -sh *"; + # fd="find . -type d -name"; + ff="find . -type f -name"; - h="history"; - hgrep="fc -El 0 | grep"; - help="man"; - p="ps -f"; - sortnr="sort -n -r"; - unexport="unset"; + h="history"; + hgrep="fc -El 0 | grep"; + help="man"; + p="ps -f"; + sortnr="sort -n -r"; + unexport="unset"; - # Use trash instead of rm if available - rm="trash"; - cp="cp -i"; - mv="mv -i"; + # Use trash instead of rm if available + rm="trash"; + cp="cp -i"; + mv="mv -i"; - cls="clear"; + cls="clear"; - sshc="ssh-connect"; - }; + sshc="ssh-connect"; + }; - history = { - # ignoreAllDups = true; - path = "${config.xdg.cacheHome}/zhistory"; - save = 10000; - size = 10000; - # share = true; + history = { + # ignoreAllDups = true; + path = "${config.xdg.cacheHome}/zhistory"; + save = 10000; + size = 10000; + # share = true; + }; }; }; - }; - - home.file = { - # ".zprofile".source = ./zprofile; + + home.file = { + # ".zprofile".source = ./zprofile; + }; }; }; };