{ config, lib, pkgs, age, ... }: { programs.bat.enable = true; programs.direnv = { enable = true; config = { warn_timeout = "60s"; # default was 5s }; nix-direnv.enable = true; }; # programs.exa = { # enable = false; # enableAliases = true; # }; # programs.fzf.enable = false; programs.vim.enable = true; programs.ssh = { enable = true; controlMaster = "auto"; controlPersist = "10m"; }; # programs.starship = { # enable = false; # settings = { # character = { # success_symbol = "[👌](bold green)"; # error_symbol = "[🤌](bold red)"; # }; # nix_shell = { # symbol = "❄ "; # }; # }; # }; # Playing with it sometimes # programs.nushell = { # enable = false; # configFile.text = '' # let carapace_completer = {|spans| # carapace $spans.0 nushell $spans | from json # } # let-env config = { # show_banner: false # ls: { # use_ls_colors: true # use the LS_COLORS environment variable to colorize output # clickable_links: true # enable or disable clickable links. Your terminal has to support links. # } # rm: { # always_trash: true # always act as if -t was given. Can be overridden with -p # } # cd: { # abbreviations: true # allows `cd s/o/f` to expand to `cd some/other/folder` # } # table: { # mode: compact # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other # index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column # trim: { # methodology: wrapping # wrapping or truncating # wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology # truncating_suffix: "..." # A suffix used by the 'truncating' methodology # } # } # history: { # max_size: 10000 # Session has to be reloaded for this to take effect # sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file # file_format: "plaintext" # "sqlite" or "plaintext" # } # completions: { # case_sensitive: false # set to true to enable case-sensitive completions # quick: true # set this to false to prevent auto-selecting completions when only one remains # partial: true # set this to false to prevent partial filling of the prompt # algorithm: "fuzzy" # prefix or fuzzy # external: { # enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow # max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options # completer: $carapace_completer # check 'carapace_completer' above as an example # } # } # filesize: { # metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) # format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto # } # buffer_editor: "${config.programs.helix.package}/bin/helix" # } # ''; # }; xdg.configFile."dracula-theme" = { target = "fish/themes/dracula.theme"; source = let theme = pkgs.fetchFromGitHub { owner = "dracula"; repo = "fish"; rev = "269cd7d76d5104fdc2721db7b8848f6224bdf554"; hash = "sha256-Hyq4EfSmWmxwCYhp3O8agr7VWFAflcUe8BUKh50fNfY="; }; in "${theme}/themes/Dracula\ Official.theme"; }; programs.fish = { enable = true; shellInit = '' fish_config theme choose "dracula" export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path}) ''; shellAliases = { "cat" = "bat"; }; }; # programs.zsh = { # enable = false; # Playing xswith fish at the moment # enableAutosuggestions = true; # enableCompletion = true; # enableSyntaxHighlighting = true; # enableVteIntegration = true; # autocd = true; # oh-my-zsh = { # enable = true; # plugins = [ # "ag" # "cabal" # "colored-man-pages" # "colorize" # "command-not-found" # "fzf" # "git" # "nomad" # "pass" # "python" # "sudo" # "terraform" # "thefuck" # ]; # }; # plugins = [ # { # name = "fzf-tab"; # src = pkgs.fetchFromGitHub { # owner = "Aloxaf"; # repo = "fzf-tab"; # rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; # sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; # }; # } # { # name = "fzf-tab"; # src = pkgs.fetchFromGitHub { # owner = "Aloxaf"; # repo = "fzf-tab"; # rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; # sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; # }; # } # { # name = "fast-syntax-highlighting"; # src = pkgs.fetchFromGitHub { # owner = "zdharma-continuum"; # repo = "fast-syntax-highlighting"; # rev = "13d7b4e63468307b6dcb2dadf6150818f242cbff"; # sha256 = "sha256-AmsexwVombgVmRvl4O9Kd/WbnVJHPTXETxBv18PDHz4="; # }; # } # ]; # shellAliases = { # "cat" = "bat"; # "em" = "TERM=wezterm emacsclient -nw"; # }; # loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec dbus-run-session Hyprland"; # envExtra = '' # # [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' # for Emacs TRAMP mode # ''; # initExtra = '' # export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path}) # # Don't enable VIM emulation when in Emacs # [[ -z $INSIDE_EMACS ]] && source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh # # When enabling starship, home-manager add an `initExtra` rule to disable it when in Emacs but not with VTerm, # # since I use also `eat` besides `vterm` the following line is needed # [[ "$INSIDE_EMACS" =~ "eat" ]] && eval "$(${config.home.profileDirectory}/bin/starship init zsh)" # ''; # }; home.packages = with pkgs; [ thefuck htop-vim dig.dnsutils lsof zsh-completions nix-zsh-completions carapace # used by nushell nil # TODO probably not best place nixd # TODO probably not best place terraform-lsp # TODO probably not best place python3Packages.jedi-language-server # TODO probably not best place nodePackages.typescript-language-server # TODO probably not best place cntr # TODO probably not best place # nom # FIXME disable on aarch64-linux, breaks everything :( ]; }