From 2d143e6256e96ebe0aca405732e6bf1f164b684b Mon Sep 17 00:00:00 2001 From: Jonni Liljamo Date: Mon, 8 Dec 2025 20:04:54 +0200 Subject: [PATCH] feat: shell --- modules/shell.nix | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 modules/shell.nix diff --git a/modules/shell.nix b/modules/shell.nix new file mode 100644 index 0000000..d053bac --- /dev/null +++ b/modules/shell.nix @@ -0,0 +1,78 @@ +/* +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"; + }; + }; + }; + }; +} -- 2.44.1