/* Opinionated shell environment. */ { flake.modules.nixos.shell = {pkgs, ...}: { environment.systemPackages = with pkgs; [ btop carapace elvish fd ripgrep silicon sl ]; programs.direnv = { enable = true; nix-direnv.enable = true; silent = true; }; }; flake.modules.homeManager.shell = {...}: { home.file = { ".config/elvish/lib/direnv.elv" = { executable = true; text = '' ## Hook for direnv as of direnv 2.34.0 set @edit:before-readline = $@edit:before-readline { try { var m = [("direnv" export elvish | from-json)] if (> (count $m) 0) { set m = (all $m) keys $m | each { |k| if $m[$k] { set-env $k $m[$k] } else { unset-env $k } } } } catch e { echo $e } } ''; }; ".config/elvish/rc.elv" = { executable = true; text = '' #!/usr/bin/env elvish use direnv eval (starship init elvish) eval (carapace _carapace|slurp) ''; }; }; programs.bash = { enable = true; bashrcExtra = '' eval "$(direnv hook bash)" eval "$(starship init bash)" ''; }; programs.starship = { enable = true; settings = { add_newline = false; scan_timeout = 10; shell = { disabled = false; bash_indicator = "bsh"; elvish_indicator = "elv"; }; }; }; }; }