system

Nix (home-manager) configurations for my computers

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
{
  config,
  pkgs,
  ...
}: {
  programs = {
    zsh = {
      enable = true;

      # The default base keymap to use.
      defaultKeymap = "viins";

      # Enable zsh completion. Don’t forget to add
      enableCompletion = true;

      # Options related to commands history configuration.
      history = {
        # Do not enter command lines into the history list if they are duplicates of the previous event.
        ignoreDups = true;

        # Save timestamp into the history file.
        extended = true;

        # Number of history lines to keep.
        size = 1000;
      };

      initExtra = ''
        # Activate colors module in order to colourise prompt
        autoload -Uz colors
        colors

        # Branch character (for readability)
        CH_BRANCH=$'\ue0a0'

        function custom-prompt() {
          echo -e "

        %f%k%b''${1}%1d ''${vcs_info_msg_0_}%k%f%b
        %{$fg[black]%}%# %{$fg_no_bold[white]%}"
        }

        # VCS
        autoload -Uz vcs_info

        precmd () { vcs_info }

        zstyle ":vcs_info:git:*" check-for-changes true
        zstyle ":vcs_info:git:*" stagedstr "%{$fg[green]%}*"
        zstyle ":vcs_info:git:*" unstagedstr "%{$fg[red]%}*"
        zstyle ":vcs_info:*" formats "%{$fg[white]%}''${CH_BRANCH} %b%c%u%{$fg[white]%}"
        zstyle ":vcs_info:*" actionformats "[%b|%a]"

        function zle-line-init zle-keymap-select {
          case $KEYMAP in
            vicmd)
              PROMPT=$(custom-prompt "%{$fg[green]%}")
              ;;
            main|viins)
              PROMPT=$(custom-prompt "%{$fg[blue]%}")
              ;;
          esac
          zle reset-prompt
        }

        zle -N zle-line-init
        zle -N zle-keymap-select
      '';
    };
  };
}