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