old
1{
2 den.aspects.core.shell = {
3 nixos = {pkgs, ...}: let
4 flyline-src = pkgs.fetchFromGitHub {
5 owner = "HalFrgrd";
6 repo = "flyline";
7 tag = "v1.7.1";
8 hash = "sha256-MscTAE921ymn0qyL3YQ06P3+AGg23c//6rh7+c+Iv4Y=";
9 };
10 flyline = (pkgs.callPackage "${flyline-src}/nix/package.nix" {}).overrideAttrs {
11 cargoDeps = pkgs.rustPlatform.importCargoLock {
12 lockFile = "${flyline-src}/Cargo.lock";
13 outputHashes = {
14 "ansi-to-tui-8.0.1" = "sha256-kjTxPzF0eIgJqtfsmquAqo1UFt1hXWv4oACFRgnHg9k=";
15 "flash-0.0.6" = "sha256-lIfTgRdBQWqOeYo3XkI/X6Q/0Vrcpm5vJMCxtX4u9Go=";
16 "flycomp-1.1.2" = "sha256-ipOFG1ZSro5OyWzCu28AYd2+eAuSW7vRDHOT5PuxDPA=";
17 "ratatui-0.30.2" = "sha256-68o9FXF2ioEuXyCq+3254ud95mVF3FRKVPOuBFKWeSI=";
18 "skim-4.6.0" = "sha256-cUSiXwEWUDZccbl3sts2DG4ZNzYExD9ra/VESv2u+Zs=";
19 "termina-0.3.3" = "sha256-WpBKKnOhA+Q1+iopQ3IcGxsjGGW1SNweo8R7gFN5QRA=";
20 };
21 };
22 };
23 in {
24 environment.systemPackages = [flyline];
25
26 programs.bash = {
27 enable = true;
28 completion.enable = true;
29 interactiveShellInit = ''
30 enable -f ${flyline}/lib/libflyline.so flyline
31 '';
32 promptInit = ''
33 # Provide a nice prompt if the terminal supports it.
34 if [ "$TERM" != "dumb" ] || [ -n "$INSIDE_EMACS" ]; then
35 PROMPT_COLOR="1;31m"
36 ((UID)) && PROMPT_COLOR="1;32m"
37 # Show the hostname only when connected via SSH.
38 SSH_HOST=""
39 [ -n "$SSH_CONNECTION" ] && SSH_HOST="@$HOSTNAME"
40 if [ -n "$INSIDE_EMACS" ]; then
41 # Emacs term mode doesn't support xterm title escape sequence (\e]0;)
42 PS1="\[\033[$PROMPT_COLOR\]\u$SSH_HOST\[\033[0m\]: \[\033[1;34m\]\w\[\033[0m\]\n\[\033[$PROMPT_COLOR\]\\$\[\033[0m\] "
43 else
44 PS1="\[\033[$PROMPT_COLOR\]\u$SSH_HOST\[\033[0m\]: \[\033[1;34m\]\w\[\033[0m\]\n\[\033[$PROMPT_COLOR\]\\$\[\033[0m\] "
45 PS1="\[\e]0;\u@\h: \w\a\]$PS1"
46 fi
47 if test "$TERM" = "xterm"; then
48 PS1="\[\033]2;\h:\u:\w\007\]$PS1"
49 fi
50 # Final (transient) prompt: replace the two-line prompt in scrollback.
51 PS1_FINAL="\[\033[$PROMPT_COLOR\]\u@\h\\$\[\033[0m\] "
52 fi
53 '';
54 };
55 };
56
57 homeManager = {
58 programs.bash = {
59 enable = true;
60 enableCompletion = true;
61 };
62 };
63 };
64}