save last state

This commit is contained in:
2024-12-30 13:14:54 +01:00
parent 54f891fc65
commit 4ad01591aa
24 changed files with 1120 additions and 155 deletions

View File

@@ -0,0 +1,113 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) mkIf mkEnableOption;
inherit (lib.meta) getExe;
inherit (pkgs) eza bat;
cfg = config.home.programs.fish;
in {
# imports = [./tide.nix];
options = {
home.programs.fish.enable = mkEnableOption "Enables fish home configuration";
};
config = mkIf cfg.enable {
programs.fish = {
enable = true;
plugins = [
{
name = "hydro";
src = pkgs.fishPlugins.hydro;
}
];
shellAbbrs = {
extract = "extract.sh";
homemodules = "$EDITOR /home/$USER/.nix-config/users/$USER/modules.nix";
hmod = "$EDITOR /home/$USER/.nix-config/users/$USER/modules.nix";
nixosmodules = "$EDITOR /home/$USER/.nix-config/hosts/$hostname/modules.nix";
nmod = "$EDITOR /home/$USER/.nix-config/hosts/$hostname/modules.nix";
nixcleanboot = "sudo nix run /home/$USER/.nix-config#cleanup-boot";
nixclean = "nh clean all --keep 3";
nixdev = "nix develop ~/.nix-config -c $SHELL";
nixconfig = "cd /home/$USER/.nix-config/";
nixup = "nh os switch -H $hostname";
nixupv = "nh os switch -v -H $hostname";
flakeup = "nix flake update";
};
shellAliases = {
".." = "cd ..";
"..." = "cd ../../";
"...." = "cd ../../../";
"....." = "cd ../../../../";
"......" = "cd ../../../../../";
tree = "${getExe eza} --tree --icons=always";
cat = "${getExe bat} --style=plain";
ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
ll = "${getExe eza} -l --git --icons --color=auto --group-directories-first -s extension";
la = "${getExe eza} -lah --tree";
# Clear screen and scrollback
clear = "printf '\\033[2J\\033[3J\\033[1;1H'";
};
functions = {
# Disable greeting
fish_greeting = "";
# Merge history when pressing up
up-or-search = lib.readFile ./up-or-search.fish;
# Check stuff in PATH
nix-inspect =
/*
fish
*/
''
set -s PATH | grep "PATH\[.*/nix/store" | cut -d '|' -f2 | grep -v -e "-man" -e "-terminfo" | perl -pe 's:^/nix/store/\w{32}-([^/]*)/bin$:\1:' | sort | uniq
'';
};
interactiveShellInit =
/*
fish
*/
''
# Open command buffer in vim when alt+e is pressed
bind \ee edit_command_buffer
# Use vim bindings and cursors
fish_vi_key_bindings
set fish_cursor_default block blink
set fish_cursor_insert line blink
set fish_cursor_replace_one underscore blink
set fish_cursor_visual block
# Use terminal colors
set -x fish_color_autosuggestion brblack
set -x fish_color_cancel -r
set -x fish_color_command brgreen
set -x fish_color_comment brmagenta
set -x fish_color_cwd green
set -x fish_color_cwd_root red
set -x fish_color_end brmagenta
set -x fish_color_error brred
set -x fish_color_escape brcyan
set -x fish_color_history_current --bold
set -x fish_color_host normal
set -x fish_color_host_remote yellow
set -x fish_color_match --background=brblue
set -x fish_color_normal normal
set -x fish_color_operator cyan
set -x fish_color_param brblue
set -x fish_color_quote yellow
set -x fish_color_redirection bryellow
set -x fish_color_search_match 'bryellow' '--background=brblack'
set -x fish_color_selection 'white' '--bold' '--background=brblack'
set -x fish_color_status red
set -x fish_color_user brgreen
set -x fish_color_valid_path --underline
set -x fish_pager_color_completion normal
set -x fish_pager_color_description yellow
set -x fish_pager_color_prefix 'white' '--bold' '--underline'
set -x fish_pager_color_progress 'brwhite' '--background=cyan'
'';
};
};
}

View File

@@ -0,0 +1,221 @@
{pkgs, ...}: {
programs.fish = {
plugins = [
{
name = "hydro";
src = pkgs.fetchFromGitHub {
owner = "jorgebucaran";
repo = "hydro";
rev = "75ab7168a35358b3d08eeefad4ff0dd306bd80d4";
hash = "sha256-85iU1QzcZmZYGhK30/ZaKwJNLTsx+j3w6St8bFiQWxc=";
};
}
];
interactiveShellInit =
/*
fish
*/
''
set -x tide_character_color "brgreen"
set -x tide_character_color_failure "brred"
set -x tide_character_icon ">"
set -x tide_character_vi_icon_default "<"
set -x tide_character_vi_icon_replace "|"
set -x tide_character_vi_icon_visual "V"
set -x tide_status_bg_color "normal"
set -x tide_status_bg_color_failure "normal"
set -x tide_status_color "green"
set -x tide_status_color_failure "red"
set -x tide_status_icon ""
set -x tide_status_icon_failure " "
set -x tide_vi_mode_bg_color_default "normal"
set -x tide_vi_mode_bg_color_insert "normal"
set -x tide_vi_mode_bg_color_replace "normal"
set -x tide_vi_mode_bg_color_visual "normal"
set -x tide_vi_mode_color_default "white"
set -x tide_vi_mode_color_insert "cyan"
set -x tide_vi_mode_color_replace "green"
set -x tide_vi_mode_color_visual "yellow"
set -x tide_vi_mode_icon_default "D"
set -x tide_vi_mode_icon_insert "I"
set -x tide_vi_mode_icon_replace "R"
set -x tide_vi_mode_icon_visual "V"
set -x tide_prompt_add_newline_before "true"
set -x tide_prompt_color_frame_and_connection "brblack"
set -x tide_prompt_color_separator_same_color "brblack"
set -x tide_prompt_icon_connection " "
set -x tide_prompt_min_cols "34"
set -x tide_prompt_pad_items "false"
set -x tide_prompt_transient_enabled "false"
set -x tide_left_prompt_frame_enabled "false"
set -x tide_left_prompt_items pwd git newline character
set -x tide_left_prompt_prefix ""
set -x tide_left_prompt_separator_diff_color " "
set -x tide_left_prompt_separator_same_color " "
set -x tide_left_prompt_suffix " "
set -x tide_right_prompt_frame_enabled "false"
set -x tide_right_prompt_items status cmd_duration context jobs direnv time newline bun node python rustc java php pulumi ruby go gcloud kubectl distrobox toolbox terraform crystal elixir zig
set -x tide_right_prompt_prefix " "
set -x tide_right_prompt_separator_diff_color " "
set -x tide_right_prompt_separator_same_color " "
set -x tide_right_prompt_suffix ""
set -x tide_pwd_bg_color "normal"
set -x tide_pwd_color_anchors "brcyan"
set -x tide_pwd_color_dirs "cyan"
set -x tide_pwd_color_truncated_dirs "magenta"
set -x tide_pwd_icon ""
set -x tide_pwd_icon_home ""
set -x tide_pwd_icon_unwritable ""
set -x tide_pwd_markers .bzr .citc .git .hg .node-version .python-version .ruby-version .shorten_folder_marker .svn .terraform bun.lockb Cargo.toml composer.json CVS go.mod package.json build.zig
set -x tide_cmd_duration_bg_color "normal"
set -x tide_cmd_duration_color "brblack"
set -x tide_cmd_duration_decimals "0"
set -x tide_cmd_duration_icon ""
set -x tide_cmd_duration_threshold "3000"
set -x tide_context_always_display "false"
set -x tide_context_bg_color "normal"
set -x tide_context_color_default "yellow"
set -x tide_context_color_root "bryellow"
set -x tide_context_color_ssh "yellow"
set -x tide_context_hostname_parts "1"
set -x tide_shlvl_bg_color "normal"
set -x tide_shlvl_color "yellow"
set -x tide_shlvl_icon ""
set -x tide_shlvl_threshold "1"
set -x tide_git_bg_color "normal"
set -x tide_git_bg_color_unstable "normal"
set -x tide_git_bg_color_urgent "normal"
set -x tide_git_color_branch "brgreen"
set -x tide_git_color_conflicted "brred"
set -x tide_git_color_dirty "bryellow"
set -x tide_git_color_operation "brred"
set -x tide_git_color_staged "bryellow"
set -x tide_git_color_stash "brgreen"
set -x tide_git_color_untracked "brblue"
set -x tide_git_color_upstream "brgreen"
set -x tide_git_icon ""
set -x tide_git_truncation_length "24"
set -x tide_git_truncation_strategy ""
set -x tide_direnv_bg_color "normal"
set -x tide_direnv_bg_color_denied "normal"
set -x tide_direnv_color "bryellow"
set -x tide_direnv_color_denied "brred"
set -x tide_direnv_icon ""
set -x tide_private_mode_bg_color "normal"
set -x tide_private_mode_color "brwhite"
set -x tide_private_mode_icon "󰗹"
# Langs, tools
set -x tide_aws_bg_color "normal"
set -x tide_aws_color "yellow"
set -x tide_aws_icon ""
set -x tide_bun_bg_color "normal"
set -x tide_bun_color "white"
set -x tide_bun_icon "󰳓"
set -x tide_crystal_bg_color "normal"
set -x tide_crystal_color "brwhite"
set -x tide_crystal_icon ""
set -x tide_distrobox_bg_color "normal"
set -x tide_distrobox_color "brmagenta"
set -x tide_distrobox_icon "󰆧"
set -x tide_docker_bg_color "normal"
set -x tide_docker_color "blue"
set -x tide_docker_default_contexts default colima
set -x tide_docker_icon ""
set -x tide_elixir_bg_color "normal"
set -x tide_elixir_color "magenta"
set -x tide_elixir_icon ""
set -x tide_gcloud_bg_color "normal"
set -x tide_gcloud_color "blue"
set -x tide_gcloud_icon "󰊭"
set -x tide_go_bg_color "normal"
set -x tide_go_color "brcyan"
set -x tide_go_icon ""
set -x tide_java_bg_color "normal"
set -x tide_java_color "yellow"
set -x tide_java_icon ""
set -x tide_jobs_bg_color "normal"
set -x tide_jobs_color "green"
set -x tide_jobs_icon ""
set -x tide_jobs_number_threshold "1000"
set -x tide_kubectl_bg_color "normal"
set -x tide_kubectl_color "blue"
set -x tide_kubectl_icon "󱃾"
set -x tide_nix3_shell_bg_color "normal"
set -x tide_nix3_shell_color "brblue"
set -x tide_nix3_shell_icon ""
set -x tide_juju_bg_color "normal"
set -x tide_juju_color "yellow"
set -x tide_juju_icon ""
set -x tide_node_bg_color "normal"
set -x tide_node_color "green"
set -x tide_node_icon ""
set -x tide_os_bg_color "normal"
set -x tide_os_color "brwhite"
set -x tide_os_icon ""
set -x tide_php_bg_color "normal"
set -x tide_php_color "blue"
set -x tide_php_icon ""
set -x tide_pulumi_bg_color "normal"
set -x tide_pulumi_color "yellow"
set -x tide_pulumi_icon ""
set -x tide_python_bg_color "normal"
set -x tide_python_color "cyan"
set -x tide_python_icon "󰌠"
set -x tide_ruby_bg_color "normal"
set -x tide_ruby_color "red"
set -x tide_ruby_icon ""
set -x tide_rustc_bg_color "normal"
set -x tide_rustc_color "red"
set -x tide_rustc_icon ""
set -x tide_terraform_bg_color "normal"
set -x tide_terraform_color "magenta"
set -x tide_terraform_icon "󱁢"
set -x tide_time_bg_color "normal"
set -x tide_time_color "brblack"
set -x tide_time_format "%T"
set -x tide_toolbox_bg_color "normal"
set -x tide_toolbox_color "magenta"
set -x tide_toolbox_icon ""
set -x tide_zig_bg_color "normal"
set -x tide_zig_color "yellow"
set -x tide_zig_icon ""
'';
};
}

View File

@@ -0,0 +1,22 @@
# Taken from Misterio77 https://github.com/Misterio77/nix-config/blob/main/home/gabriel/features/cli/fish/up-or-search.fish
# Merge history upon doing up-or-search
# This lets multiple fish instances share history
if commandline --search-mode
commandline -f history-search-backward
return
end
if commandline --paging-mode
commandline -f up-line
return
end
set -l lineno (commandline -L)
switch $lineno
case 1
commandline -f history-search-backward
# Here we go
history merge
case '*'
commandline -f up-line
end

View File

@@ -24,11 +24,11 @@ in {
# Common Keybind Variables
"$fileManager" = "thunar";
"$yazi" = "foot -e yazi";
"$tuirun" = "tuirun-toggle.sh";
"$launcher" = "tuirun";
bind = [
"$mod, SPACE, exec, tuirun"
"$mod, R, exec, $tuirun"
"$mod, SPACE, exec, uwsm app -T $launcher"
"$mod, R, exec, uwsm app -T $launcher"
"$mod, L, exec, ${toggle "nwg-bar"}"
"$mod SHIFT, B, exec, pkill -SIGUSR2 waybar"
"$mod, A, exec, pkill -SIGUSR1 waybar"
@@ -95,7 +95,7 @@ in {
(mkIf (host == "cnix") {
wayland.windowManager.hyprland.settings = {
"$terminal" = "ghostty";
"$terminal" = "wezterm";
"$browser" = "zen";
"$browserinc" = "zen --private-window";
"$mod" = "SUPER";

View File

@@ -19,11 +19,11 @@ in {
"float, initialTitle:^(floatcal)$"
# === TUIRUN SETTINGS ===
"size 600 300, initialTitle:^(tuirun)$"
"center, initialTitle:^(tuirun)$"
"size 600 300, title:^(tuirun)$"
"center, title:^(tuirun)$"
# "workspace special:tuirun, initialTitle:^(tuirun)$"
"noborder, initialTitle:^(tuirun)$"
"float, initialTitle:^(tuirun)$"
"noborder, title:^(tuirun)$"
"float, title:^(tuirun)$"
# === KEEPASSXC SETTINGS ===
"size 843 530, class:^(org.keepassxc.KeePassXC)$"
@@ -57,12 +57,8 @@ in {
"float, class:^(feh)$"
"float, class:^(polkit-gnome-authentication-agent-1)$"
"float, class:^(org.gnome.Calculator)$"
"float, class:^(Lxappearance)$"
"float, class:^(com.github.hluk.copyq)$"
"float, class:^(blueman-manager)$"
"float, class:^(floatranger)$"
"float, class:^(floatnnn)$"
"float, class:^(uwsm app -- tuirun)$"
];
windowrule = [];
layerrule = [

View File

@@ -17,21 +17,21 @@ in {
name = config.programs.git.userName;
email = config.programs.git.userEmail;
};
# ui = {
# diff-editor = lib.mkIf config.programs.neovim.enable [
# "nvim"
# "-c"
# "DiffEditor $left $right $output"
# ];
# pager = "less -FRX";
# };
# signing = let
# gitCfg = config.programs.git.extraConfig;
# in {
# backend = "gpg";
# sign-all = gitCfg.commit.gpgSign;
# key = gitCfg.user.signing.key;
# };
ui = {
diff-editor = lib.mkIf config.programs.helix.enable [
"hx"
"-c"
"DiffEditor $left $right $output"
];
pager = "less -FRX";
};
signing = let
gitCfg = config.programs.git.extraConfig;
in {
backend = "ssh";
sign-all = true;
key = gitCfg.signing.key;
};
templates = {
draft_commit_description = ''
concat(

View File

@@ -13,9 +13,15 @@ in {
config = mkIf cfg.enable {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland-unwrapped;
configPath = "home/cnst/.config/rofi/config.rasi";
font = "Rec Mono Linear 11";
package = pkgs.rofi-wayland;
extraConfig = {
font = "Input Mono Narrow Light 12";
show-icons = true;
drun-display-format = "{name}";
disable-history = false;
sidebar-mode = false;
};
theme = ./style.rasi;
};
};
}

View File

@@ -0,0 +1,186 @@
/* ==========================================================================
Rofi color theme
Based on the Gruvbox color scheme for Vim by morhetz
https://github.com/morhetz/gruvbox
File: gruvbox-dark-soft.rasi
Desc: Gruvbox dark (soft contrast) color theme for Rofi
Author: bardisty <b@bah.im>
Source: https://github.com/bardisty/gruvbox-rofi
Modified: Mon Feb 12 2018 06:04:37 PST -0800
========================================================================== */
* {
/* Theme settings */
highlight: bold italic;
scrollbar: true;
/* Gruvbox dark colors */
gruvbox-dark-bg0-soft: #32302f;
gruvbox-dark-bg1: #3c3836;
gruvbox-dark-bg3: #665c54;
gruvbox-dark-fg0: #fbf1c7;
gruvbox-dark-fg1: #ebdbb2;
gruvbox-dark-red-dark: #cc241d;
gruvbox-dark-red-light: #fb4934;
gruvbox-dark-yellow-dark: #d79921;
gruvbox-dark-yellow-light: #fabd2f;
gruvbox-dark-gray: #a89984;
/* Theme colors */
background: @gruvbox-dark-bg0-soft;
background-color: @background;
foreground: @gruvbox-dark-fg1;
border-color: @gruvbox-dark-gray;
separatorcolor: @border-color;
scrollbar-handle: @border-color;
normal-background: @background;
normal-foreground: @foreground;
alternate-normal-background: @gruvbox-dark-bg1;
alternate-normal-foreground: @foreground;
selected-normal-background: @gruvbox-dark-bg3;
selected-normal-foreground: @gruvbox-dark-fg0;
active-background: @gruvbox-dark-yellow-dark;
active-foreground: @background;
alternate-active-background: @active-background;
alternate-active-foreground: @active-foreground;
selected-active-background: @gruvbox-dark-yellow-light;
selected-active-foreground: @active-foreground;
urgent-background: @gruvbox-dark-red-dark;
urgent-foreground: @background;
alternate-urgent-background: @urgent-background;
alternate-urgent-foreground: @urgent-foreground;
selected-urgent-background: @gruvbox-dark-red-light;
selected-urgent-foreground: @urgent-foreground;
}
/* ==========================================================================
File: gruvbox-common.rasi
Desc: Shared rules between all gruvbox themes
Author: bardisty <b@bah.im>
Source: https://github.com/bardisty/gruvbox-rofi
Modified: Mon Feb 12 2018 06:06:47 PST -0800
========================================================================== */
window {
background-color: @background;
border: 2;
padding: 2;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 2px 0 0;
border-color: @separatorcolor;
padding: 1px;
}
textbox {
highlight: @highlight;
text-color: @foreground;
}
listview {
border: 2px solid 0 0;
padding: 2px 0 0;
border-color: @separatorcolor;
spacing: 2px;
scrollbar: @scrollbar;
}
element {
border: 0;
padding: 2px;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px;
border: 0;
handle-color: @scrollbar-handle;
handle-width: 8px;
padding: 0;
}
sidebar {
border: 2px 0 0;
border-color: @separatorcolor;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 2px;
children: [ prompt, textbox-prompt-sep, entry, case-indicator ];
}
case-indicator,
entry,
prompt,
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
textbox-prompt-sep {
expand: false;
str: ":";
text-color: @normal-foreground;
margin: 0 0.3em 0 0;
}

View File

@@ -41,7 +41,7 @@ in {
"backlight"
"battery"
"clock"
"custom/mako"
"custom/dunst"
];
"hyprland/workspaces" = {
@@ -120,6 +120,34 @@ in {
interval = 10;
};
"custom/dunst" = {
exec = "dunst.sh";
on-click = "dunstctl set-paused toggle";
restart-interval = 1;
tooltip = false;
};
"custom/swaync" = {
tooltip = false;
format = "{} {icon} ";
format-icons = {
"notification" = "󰂚<span foreground='red'><sup></sup></span>";
"none" = "󰂚";
"dnd-notification" = "󱏧<span foreground='red'><sup></sup></span>";
"dnd-none" = "󱏧";
"inhibited-notification" = "󰂚<span foreground='red'><sup></sup></span>";
"inhibited-none" = "󰂚";
"dnd-inhibited-notification" = "󱏧<span foreground='red'><sup></sup></span>";
"dnd-inhibited-none" = "󱏧";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
# "custom/mail" = {
# format-icons = {
# icon = "<span foreground='#928374'> </span>";

View File

@@ -6,8 +6,8 @@
...
}: let
enable_wayland = "true";
weztermPkg = pkgs.wezterm;
# weztermFlake = inputs.wezterm.packages.${pkgs.system}.default;
# weztermPkg = pkgs.wezterm;
weztermFlake = inputs.wezterm.packages.${pkgs.system}.default;
inherit (lib) mkIf mkEnableOption;
cfg = config.home.programs.wezterm;
in {
@@ -17,41 +17,35 @@ in {
config = mkIf cfg.enable {
programs.wezterm = {
enable = true;
package = weztermPkg;
package = weztermFlake;
extraConfig =
/*
lua
*/
''
local wezterm = require 'wezterm';
local wezterm = require 'wezterm'
local config = {
-- font = wezterm.font("Input Mono Compressed"),
font_size = 12,
check_for_updates = false,
color_scheme = 'Gruvbox Material (Gogh)',
default_cursor_style = 'SteadyBar',
enable_scroll_bar = false,
enable_tab_bar = false,
use_fancy_tab_bar = false,
scrollback_lines = 10000,
window_background_opacity = 0.9,
}
if wezterm.target_triple == "x86_64-pc-windows-msvc" then
config.default_prog = { "powershell.exe" }
else
config.enable_wayland = ${enable_wayland}
-- config.window_decorations = "TITLE"
config.window_close_confirmation = "NeverPrompt"
-- config.freetype_load_target = "Light"
-- config.freetype_render_target = "HorizontalLcd"
local f = wezterm.font_with_fallback({
{family="Input Mono Compressed", weight="Light"},
{family="Input Sans Narrow", weight="Light"},
})
config.font = f;
end
return config
local config = {
font_size = 12,
check_for_updates = false,
color_scheme = 'Gruvbox Material (Gogh)',
default_cursor_style = 'SteadyBar',
enable_scroll_bar = false,
enable_tab_bar = false,
use_fancy_tab_bar = false,
scrollback_lines = 10000,
window_background_opacity = 0.9,
}
config.enable_wayland = ${enable_wayland}
config.window_close_confirmation = "NeverPrompt"
local f = wezterm.font_with_fallback({
{ family = "Input Mono Compressed", weight = "Light" },
{ family = "Input Sans Narrow", weight = "Light" },
})
config.font = f
return config
'';
};
};

View File

@@ -5,9 +5,9 @@
...
}: let
inherit (lib) mkIf mkEnableOption;
cfg = config.home.programs.zsh;
inherit (lib.meta) getExe;
inherit (pkgs) eza bat;
cfg = config.home.programs.zsh;
in {
options = {
home.programs.zsh.enable = mkEnableOption "Enables zsh home configuration";
@@ -88,6 +88,11 @@ in {
ZSH_THEME_VIRTUALENV_SUFFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=241'
setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""
microfetch
'';
};