sqrtminusone.github.io/configs/console/index.html
2025-08-09 12:50:23 +00:00

1324 lines
163 KiB
HTML

<!DOCTYPE html>
<html lang=""><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Console</title>
<meta name="description" content="Freedom is a state of mind">
<meta name="author" content='SqrtMinusOne'>
<link href="https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous">
<link rel="stylesheet" href="/sass/researcher.min.css">
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
</head>
<body><div class="container mt-5">
<nav class="navbar navbar-expand-sm flex-column flex-sm-row text-nowrap p-0">
<a class="navbar-brand mx-0 mr-sm-auto" href="https://sqrtminusone.xyz/" title="SqrtMinusOne">
SqrtMinusOne
</a>
<div class="navbar-nav flex-row flex-wrap justify-content-center">
<a class="nav-item nav-link" href="/" title="Index">
Index
</a>
<span class="nav-item navbar-text mx-1">/</span>
<a class="nav-item nav-link" href="/posts/" title="Posts">
Posts
</a>
<span class="nav-item navbar-text mx-1">/</span>
<a class="nav-item nav-link" href="/configs/readme" title="Configs">
Configs
</a>
<span class="nav-item navbar-text mx-1">/</span>
<a class="nav-item nav-link" href="/emacs-packages/" title="Emacs packages">
Emacs packages
</a>
</div>
</nav>
</div>
<hr>
<div id="content">
<script defer language="javascript" type="text/javascript" src="/js/dynamic-toc.js"></script>
<div class="root">
<h1 id="title-small-screen">
Console
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=dotfiles&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
</h1>
<div class="container" id="actual-content">
<h1 id="title-large-screen" class="dotfiles-title">
Console
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=dotfiles&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
</h1>
<blockquote>
<p>No matter from which side you approach penguins, more always come from behind</p></blockquote>
<ul>
<li>A friend of mine</li>
</ul>
<h2 id="colors">Colors</h2>
<p>Noweb function to get colors.</p>
<p><a id="code-snippet--get-color"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">let</span> ((<span style="color:#19177c">color</span> (<span style="color:#008000">or</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">name</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">&gt;</span> <span style="color:#008000">quote</span> <span style="color:#666">0</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span> <span style="color:#19177c">color</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">color</span>))
</span></span></code></pre></div><p><a id="code-snippet--get-fg-for-color"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">let</span> ((<span style="color:#19177c">val</span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">name</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;black</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;white</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">eq</span> <span style="color:#008000">quote</span> <span style="color:#666">1</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span> <span style="color:#19177c">val</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">val</span>))
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">setq-local</span> <span style="color:#19177c">org-confirm-babel-evaluate</span> <span style="color:#800">nil</span>)
</span></span></code></pre></div><h2 id="dot-profile"><code>.profile</code></h2>
<h3 id="environment">Environment</h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">QT_QPA_PLATFORMTHEME</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;qt5ct&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">QT_AUTO_SCREEN_SCALE_FACTOR</span><span style="color:#666">=</span><span style="color:#666">0</span>
</span></span></code></pre></div><p>Set ripgrep config path</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">RIPGREP_CONFIG_PATH</span><span style="color:#666">=</span><span style="color:#19177c">$HOME</span>/.config/ripgrep/ripgreprc
</span></span></code></pre></div><p>hledger path</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">LEDGER_FILE</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/30-39 Life/32 org-mode/ledger/ledger.journal&#34;</span>
</span></span></code></pre></div><p>Checking if running inside termux</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">command</span> -v termux-setup-storage &gt; /dev/null; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">IS_ANDROID</span><span style="color:#666">=</span><span style="color:#008000">true</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[[</span> -f ~/.android_profile <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> . ~/.android_profile
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Timezone</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># TZ=&#39;Asia/Karachi&#39;; export TZ</span>
</span></span></code></pre></div><p>Turn off Guix</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f <span style="color:#ba2121">&#34;/home/pavel/.no-guix&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">NO_GUIX</span><span style="color:#666">=</span><span style="color:#008000">true</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span><span style="color:#008000">echo</span> <span style="color:#19177c">$PATH</span> | tr <span style="color:#ba2121">&#34;:&#34;</span> <span style="color:#ba2121">&#34;\n&#34;</span> | grep -vE <span style="color:#ba2121">&#34;guix|nix|gnu&#34;</span> | tr <span style="color:#ba2121">&#34;\n&#34;</span> <span style="color:#ba2121">&#34;:&#34;</span><span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="my-paths">My paths</h3>
<p>My script folders</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin/scripts:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.local/bin&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.local/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="ssl-certs">SSL Certs</h3>
<p>This seems necessary when running Guix on a foreign distro.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.guix-extra-profiles&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">SSL_CERT_DIR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.guix-extra-profiles/system/system/etc/ssl/certs/&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">SSL_CERT_FILE</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.guix-extra-profiles/system/system/etc/ssl/certs/ca-certificates.crt&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">GIT_SSL_CAINFO</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSL_CERT_FILE</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">CURL_CA_BUNDLE</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSL_CERT_FILE</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="ssh-agent">ssh-agent</h3>
<p>I&rsquo;m paranoid so I encrypt my SSH keys.</p>
<p>Got the idea for below from <a href="https://wiki.archlinux.org/title/SSH_keys#SSH_agents">ArchWiki</a>:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#19177c">SSH_AGENT_DIR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/tmp&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">==</span> <span style="color:#ba2121">&#34;true&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">SSH_AGENT_DIR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/data/data/com.termux/files/tmp&#34;</span>
</span></span><span style="display:flex;"><span> mkdir -p <span style="color:#19177c">$SSH_AGENT_DIR</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> ! pgrep -u <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$USER</span><span style="color:#ba2121">&#34;</span> ssh-agent &gt; /dev/null; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> ssh-agent -t 1h &gt; <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSH_AGENT_DIR</span><span style="color:#ba2121">/ssh-agent.env&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> ! -f <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSH_AUTH_SOCK</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSH_AGENT_DIR</span><span style="color:#ba2121">/ssh-agent.env&#34;</span> &gt;/dev/null
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="guix-settings">Guix settings</h3>
<p>Enable extra profiles</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">GUIX_EXTRA_PROFILES</span><span style="color:#666">=</span><span style="color:#19177c">$HOME</span>/.guix-extra-profiles
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">for</span> i in <span style="color:#19177c">$GUIX_EXTRA_PROFILES</span>/*; <span style="color:#008000;font-weight:bold">do</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">profile</span><span style="color:#666">=</span><span style="color:#19177c">$i</span>/<span style="color:#008000;font-weight:bold">$(</span>basename <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$i</span><span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">&#34;</span>/etc/profile <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">GUIX_PROFILE</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> . <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$GUIX_PROFILE</span><span style="color:#ba2121">&#34;</span>/etc/profile
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">&#34;</span>/share/man <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">command</span> -v manpath &gt;/dev/null 2&gt;/dev/null; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">MANPATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">MANPATH</span><span style="color:#008000;font-weight:bold">:-$(</span>manpath<span style="color:#008000;font-weight:bold">)</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#ba2121">:</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">/share/man&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">MANPATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">MANPATH</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#ba2121">:</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">/share/man&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">XDG_DATA_DIRS</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$XDG_DATA_DIRS</span><span style="color:#ba2121">:</span><span style="color:#19177c">$profile</span><span style="color:#ba2121">/share&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">unset</span> profile
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">done</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Set Jupyter config PATH. It defaults to readonly directory somewhere in Guix profile.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">JUPYTER_CONFIG_DIR</span><span style="color:#666">=</span><span style="color:#19177c">$HOME</span>/.config/jupyter
</span></span></code></pre></div><p>Set a folder for my packages.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">GUIX_PACKAGE_PATH</span><span style="color:#666">=</span>~/guix-packages
</span></span></code></pre></div><p>Locale settings</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">GUIX_LOCPATH</span><span style="color:#666">=</span><span style="color:#19177c">$HOME</span>/.guix-extra-profiles/console/console/lib/locale
</span></span></code></pre></div><p>Somehow LibreOffice doesn&rsquo;t work without the following:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">GIO_EXTRA_MODULES</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;&#34;</span>
</span></span></code></pre></div><h3 id="other-package-managers">Other package managers</h3>
<p>Using other package managers with Guix requires some extra work.</p>
<p>Cask</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.cask&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/.cask/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Make flatpak apps visible to launchers:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.local/share/flatpak&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">XDG_DATA_DIRS</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$XDG_DATA_DIRS</span><span style="color:#ba2121">:</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.local/share/flatpak/exports/share&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Enable Nix</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f /run/current-system/profile/etc/profile.d/nix.sh <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> . /run/current-system/profile/etc/profile.d/nix.sh
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -e /home/pavel/.nix-profile/etc/profile.d/nix.sh <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span> . /home/pavel/.nix-profile/etc/profile.d/nix.sh; <span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Use Guix fontconfig. Necessary for nix apps</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.guix-extra-profiles/desktop-misc&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">FONTCONFIG_PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.guix-extra-profiles/desktop-misc/desktop-misc/etc/fonts&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Make nix apps visible to launchers:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.nix-profile&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">XDG_DATA_DIRS</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$XDG_DATA_DIRS</span><span style="color:#ba2121">:</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.nix-profile/share/applications&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Gradle:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin/gradle/gradle-9.0.0&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin/gradle/gradle-9.0.0/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="npm">npm</h4>
<p>npm is especially cumbersome, for instance because by default it tries to install packages to <code>/gnu/store/</code>.</p>
<p>In principle, one can set a prefix like this:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cfg" data-lang="cfg"><span style="display:flex;"><span><span style="color:#7d9029">prefix</span><span style="color:#666">=</span><span style="color:#ba2121">/home/pavel/.npm-packages</span>
</span></span></code></pre></div><p>But I also want to use node from conda occasionally, where prefix is already set correctly. So instead of tangling the above to the <code>~/.npmrc</code> directly, I set an environment variable in the profile:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">NPM_CONFIG_USERCONFIG</span><span style="color:#666">=</span><span style="color:#19177c">$HOME</span>/._npmrc
</span></span></code></pre></div><p>The variable is unset in a script in <a href="/configs/guix/#micromamba">Guix.org</a>.</p>
<p>Set PATH &amp; MANPATH</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#19177c">NPM_PACKAGES</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">HOME</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#ba2121">/.npm-packages&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">:</span><span style="color:#19177c">$NPM_PACKAGES</span><span style="color:#ba2121">/bin&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">MANPATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">MANPATH</span><span style="color:#008000;font-weight:bold">:-$(</span>manpath<span style="color:#008000;font-weight:bold">)</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#ba2121">:</span><span style="color:#19177c">$NPM_PACKAGES</span><span style="color:#ba2121">/share/man&#34;</span>
</span></span></code></pre></div><h3 id="xresources">XResources</h3>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>xrdb</td>
</tr>
</tbody>
</table>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> xrdb ~/.Xresources
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="off--package-manager-paths"><span class="org-todo done OFF">OFF</span> (OFF) Package manager paths</h3>
<p>Turned off for now, because probably it won&rsquo;t be necessary in Guix.</p>
<p>LaTeX</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;/usr/local/texlive/2020&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">MANPATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/usr/local/texlive/2020/texmf-dist/doc/man:</span><span style="color:#19177c">$MANPATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">INFOPATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/usr/local/texlive/2020/texmf-dist/doc/info:</span><span style="color:#19177c">$INFOPATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/usr/local/texlive/2020/bin/x86_64-linux:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Cargo (Rust)</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.cargo&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.cargo/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>RVM (Ruby)</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.rvm&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">:</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.rvm/bin&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># if [ -d &#34;$HOME/.gem&#34; ]; then</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># export PATH=&#34;$HOME/.gem/ruby/2.7.0/bin:$PATH&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># fi</span>
</span></span></code></pre></div><p>Go</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/go&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/go/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>ghcup (Haskell)</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#666">[</span> -f <span style="color:#ba2121">&#34;/home/pavel/.ghcup/env&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#008000">source</span> <span style="color:#ba2121">&#34;/home/pavel/.ghcup/env&#34;</span> <span style="color:#408080;font-style:italic"># ghcup-env</span>
</span></span></code></pre></div><p>Perl</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/perl5&#34;</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/perl5/bin</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PATH</span>:+:<span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PATH</span><span style="color:#b68;font-weight:bold">}}</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PERL5LIB</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/perl5/lib/perl5</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PERL5LIB</span>:+:<span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PERL5LIB</span><span style="color:#b68;font-weight:bold">}}</span><span style="color:#ba2121">&#34;</span>; <span style="color:#008000">export</span> PERL5LIB;
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PERL_LOCAL_LIB_ROOT</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/perl5</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PERL_LOCAL_LIB_ROOT</span>:+:<span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">PERL_LOCAL_LIB_ROOT</span><span style="color:#b68;font-weight:bold">}}</span><span style="color:#ba2121">&#34;</span>; <span style="color:#008000">export</span> PERL_LOCAL_LIB_ROOT;
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PERL_MB_OPT</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;--install_base \&#34;/home/pavel/perl5\&#34;&#34;</span>; <span style="color:#008000">export</span> PERL_MB_OPT;
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PERL_MM_OPT</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;INSTALL_BASE=/home/pavel/perl5&#34;</span>; <span style="color:#008000">export</span> PERL_MM_OPT;
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h2 id="bash">Bash</h2>
<h3 id="dot-bash-profile"><code>.bash_profile</code></h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#666">[[</span> -f ~/.profile <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> . ~/.profile
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#666">[[</span> -f ~/.bashrc <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> . ~/.bashrc
</span></span></code></pre></div><h3 id="dot-bashrc"><code>.bashrc</code></h3>
<p>My <code>.bashrc</code>, which has pieces from the default one in Guix &amp; Manjaro, as well some mine settings.</p>
<h4 id="startup-and-environment">Startup &amp; environment</h4>
<p>Export &lsquo;SHELL&rsquo; to child processes. Programs such as &lsquo;screen&rsquo; honor it and otherwise use /bin/sh.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000">export</span> SHELL
</span></span></code></pre></div><p>We are being invoked from a non-interactive shell. If this is an SSH session (as in &ldquo;ssh host command&rdquo;), source /etc/profile, so we get PATH and other essential variables.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#19177c">$-</span> !<span style="color:#666">=</span> *i* <span style="color:#666">]]</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[[</span> -n <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SSH_CLIENT</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">&amp;&amp;</span> -f <span style="color:#ba2121">&#34;/etc/bashrc&#34;</span> <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#008000">source</span> /etc/profile
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">return</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>If <code>termux-setup-storage</code> is available, then we&rsquo;re running inside termux. It is necessary to source <code>~/.profile</code> manually.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">command</span> -v termux-setup-storage &gt; /dev/null; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> ~/.profile
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Source the system-wide file</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> -f <span style="color:#ba2121">&#34;/etc/bashrc&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> /etc/bashrc
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>xhost</td>
</tr>
</tbody>
</table>
<p>Allow other users to access X server. Necessary for stuff like aw-watcher-window.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>xhost +local:root &gt; /dev/null 2&gt;&amp;<span style="color:#666">1</span>
</span></span></code></pre></div><p>Set manpager to bat</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># export MANPAGER=&#34;sh -c &#39;sed -e s/.\\\\x08//g | bat -l man -p&#39;&#34;</span>
</span></span></code></pre></div><p><a href="https://codeberg.org/akib/emacs-eat">eat</a> integration</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#666">[</span> -n <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$EAT_SHELL_INTEGRATION_DIR</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#008000">source</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$EAT_SHELL_INTEGRATION_DIR</span><span style="color:#ba2121">/bash&#34;</span>
</span></span></code></pre></div><h4 id="launch-fish">Launch fish</h4>
<p>Launch fish shell unless bash itself is launched from fish.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#19177c">use_fish</span><span style="color:#666">=</span><span style="color:#008000">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#008000;font-weight:bold">$(</span>ps --no-header --pid<span style="color:#666">=</span><span style="color:#19177c">$PPID</span> --format<span style="color:#666">=</span>cmd<span style="color:#008000;font-weight:bold">)</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#34;fish&#34;</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">use_fish</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#008000;font-weight:bold">$(</span><span style="color:#008000">command</span> -v fish<span style="color:#008000;font-weight:bold">)</span> <span style="color:#666">]]</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">exec</span> fish
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>The rest of <code>.bashrc</code> is not executed if fish was launched.</p>
<h4 id="colors-1">Colors</h4>
<p>Setting for colors, packed in the default <code>.bashrc</code> in Manjaro</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#19177c">use_color</span><span style="color:#666">=</span><span style="color:#008000">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># Set colorful PS1 only on colorful terminals.</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># dircolors --print-database uses its own built-in database</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># instead of using /etc/DIR_COLORS. Try to use the external file</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># first to take advantage of user additions. Use internal bash</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># globbing instead of external grep binary.</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">safe_term</span><span style="color:#666">=</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">TERM</span>//[^[:<span style="color:#19177c">alnum</span>:]]/?<span style="color:#b68;font-weight:bold">}</span> <span style="color:#408080;font-style:italic"># sanitize TERM</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">match_lhs</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">[[</span> -f ~/.dir_colors <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">match_lhs</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">match_lhs</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#008000;font-weight:bold">$(</span>&lt;~/.dir_colors<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">[[</span> -f /etc/DIR_COLORS <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">match_lhs</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">match_lhs</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#008000;font-weight:bold">$(</span>&lt;/etc/DIR_COLORS<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">[[</span> -z <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">match_lhs</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#666">]]</span> <span style="color:#b62;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#b62;font-weight:bold"></span> <span style="color:#666">&amp;&amp;</span> <span style="color:#008000">type</span> -P dircolors &gt;/dev/null <span style="color:#b62;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#b62;font-weight:bold"></span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">match_lhs</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>dircolors --print-database<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#666">[[</span> <span style="color:#ba2121">$&#39;\n&#39;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">match_lhs</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#666">==</span> *<span style="color:#ba2121">$&#39;\n&#39;</span><span style="color:#ba2121">&#34;TERM &#34;</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">safe_term</span><span style="color:#b68;font-weight:bold">}</span>* <span style="color:#666">]]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">use_color</span><span style="color:#666">=</span><span style="color:#008000">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">use_color</span><span style="color:#b68;font-weight:bold">}</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic"># Enable colors for ls, etc. Prefer ~/.dir_colors #64489</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">type</span> -P dircolors &gt;/dev/null ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> -f ~/.dir_colors <span style="color:#666">]]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">eval</span> <span style="color:#008000;font-weight:bold">$(</span>dircolors -b ~/.dir_colors<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">elif</span> <span style="color:#666">[[</span> -f /etc/DIR_COLORS <span style="color:#666">]]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">eval</span> <span style="color:#008000;font-weight:bold">$(</span>dircolors -b /etc/DIR_COLORS<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">EUID</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#666">==</span> <span style="color:#666">0</span> <span style="color:#666">]]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PS1</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] &#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PS1</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] &#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">ls</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;ls --color=auto&#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">grep</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;grep --colour=auto&#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">egrep</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;egrep --colour=auto&#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">fgrep</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;fgrep --colour=auto&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">EUID</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#666">==</span> <span style="color:#666">0</span> <span style="color:#666">]]</span> ; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic"># show root@ when we don&#39;t have colors</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PS1</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;\u@\h \W \$ &#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">PS1</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;\u@\h \w \$ &#39;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">unset</span> use_color safe_term match_lhs sh
</span></span></code></pre></div><h4 id="settings">Settings</h4>
<p>Some general bash settings.</p>
<p>References:</p>
<ul>
<li><a href="https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html">shopt list</a></li>
</ul>
<!--listend-->
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000">complete</span> -cf sudo <span style="color:#408080;font-style:italic"># Sudo autocompletion</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">shopt</span> -s checkwinsize <span style="color:#408080;font-style:italic"># Check windows size after each command</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">shopt</span> -s expand_aliases <span style="color:#408080;font-style:italic"># Aliases</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">shopt</span> -s autocd <span style="color:#408080;font-style:italic"># Cd to directory just by typing its name (without cd)</span>
</span></span></code></pre></div><p>History control</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000">shopt</span> -s histappend
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">HISTCONTROL</span><span style="color:#666">=</span>ignoredups:erasedups
</span></span><span style="display:flex;"><span><span style="color:#19177c">HISTSIZE</span><span style="color:#666">=</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">HISTFILESIZE</span><span style="color:#666">=</span>
</span></span></code></pre></div><p>Autocompletions</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#666">[</span> -r /usr/share/bash-completion/bash_completion <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> . /usr/share/bash-completion/bash_completion
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;/usr/share/fzf&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> /usr/share/fzf/completion.bash
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> /usr/share/fzf/key-bindings.bash
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="aliases">Aliases</h4>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">v</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;vim&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">command</span> -v exa &gt; /dev/null; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">ls</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exa --icons&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exa -lah --icons&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">&#39;ls -lah&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">q</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exit&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">c</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;clear&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">ci</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;init_mamba&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">ca</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;micromamba activate&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias</span> <span style="color:#19177c">cii</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;export INIT_MAMBA=true &amp;&amp; init_mamba&#34;</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> ! -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SIMPLE</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">unalias</span> ls
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias</span> <span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;ls -lah&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="micromamba">Micromamba</h4>
<p>I&rsquo;ve moved from conda to <a href="https://github.com/mamba-org/mamba">micromamba</a> because it&rsquo;s faster.</p>
<blockquote>
<p>managed by &lsquo;mamba init&rsquo; !!!</p></blockquote>
<p>Yeah, tell this to yourself</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>init_mamba <span style="color:#666">()</span> <span style="color:#666">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">MAMBA_EXE</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/.guix-extra-profiles/dev/dev/bin/micromamba&#34;</span>;
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">MAMBA_ROOT_PREFIX</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/micromamba&#34;</span>;
</span></span><span style="display:flex;"><span> <span style="color:#19177c">__mamba_setup</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">$(</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$MAMBA_EXE</span><span style="color:#ba2121">&#34;</span> shell hook --shell bash --prefix <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$MAMBA_ROOT_PREFIX</span><span style="color:#ba2121">&#34;</span> 2&gt; /dev/null<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> <span style="color:#19177c">$?</span> -eq <span style="color:#666">0</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">eval</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$__mamba_setup</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f <span style="color:#ba2121">&#34;/home/pavel/micromamba/etc/profile.d/micromamba.sh&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> . <span style="color:#ba2121">&#34;/home/pavel/micromamba/etc/profile.d/micromamba.sh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;/home/pavel/micromamba/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span> <span style="color:#408080;font-style:italic"># extra space after export prevents interference from conda init</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">unset</span> __mamba_setup
</span></span><span style="display:flex;"><span><span style="color:#666">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> ! -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$INIT_MAMBA</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> init_mamba
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="starship">Starship</h4>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$SIMPLE</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$TERM</span><span style="color:#ba2121">&#34;</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#34;dumb&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">eval</span> <span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">$(</span>starship init bash<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="yandex-cloud">Yandex Cloud</h4>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>init_yc <span style="color:#666">()</span> <span style="color:#666">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic"># The next line updates PATH for Yandex Cloud CLI.</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f <span style="color:#ba2121">&#39;/home/pavel/yandex-cloud/path.bash.inc&#39;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span> <span style="color:#008000">source</span> <span style="color:#ba2121">&#39;/home/pavel/yandex-cloud/path.bash.inc&#39;</span>; <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic"># The next line enables shell command completion for yc.</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -f <span style="color:#ba2121">&#39;/home/pavel/yandex-cloud/completion.bash.inc&#39;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span> <span style="color:#008000">source</span> <span style="color:#ba2121">&#39;/home/pavel/yandex-cloud/completion.bash.inc&#39;</span>; <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#666">}</span>
</span></span></code></pre></div><h2 id="fish">Fish</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>fish</td>
<td>An alternative non POSIX-compliant shell</td>
</tr>
</tbody>
</table>
<p><a href="https://fishshell.com/">Fish shell</a> is a non-POSIX-compliant shell, which offers some fancy UI &amp; UX features.</p>
<p>Launch starship</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$TERM</span><span style="color:#ba2121">&#34;</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#34;dumb&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">and</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> starship;
</span></span><span style="display:flex;"><span> <span style="color:#00f">starship</span> init <span style="color:#008000">fish</span> <span style="color:#666">|</span> <span style="color:#008000">source
</span></span></span><span style="display:flex;"><span><span style="color:#008000"></span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">function</span> <span style="color:#008000">fish_prompt</span> <span style="color:#7d9029">-d</span> <span style="color:#ba2121">&#34;Write out the prompt&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">printf</span> <span style="color:#ba2121">&#39;%s@%s %s%s%s &gt; &#39;</span> <span style="color:#19177c">$USER</span> <span style="color:#19177c">$hostname</span> <span style="color:#b62;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#b62;font-weight:bold"></span> <span style="color:#666">(</span><span style="color:#008000">set_color</span> <span style="color:#19177c">$fish_color_cwd</span><span style="color:#666">)</span> <span style="color:#666">(</span><span style="color:#00f">basename</span> <span style="color:#666">(</span><span style="color:#00f">pwd</span><span style="color:#666">))</span> <span style="color:#666">(</span><span style="color:#008000">set_color </span>normal<span style="color:#666">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">end</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><p>Enable vi keybindings &amp; aliases. The alias syntax is the same as in bash, so it&rsquo;s just a noweb reference to <code>.bashrc</code>.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_VTERM</span><span style="color:#ba2121">&#34;</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#34;1&#34;</span> <span style="color:#666">]</span>;
</span></span><span style="display:flex;"><span> <span style="color:#00f">fish_vi_key_bindings</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#00f">fish_default_key_bindings</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias </span><span style="color:#19177c">q</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exit&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias </span><span style="color:#19177c">c</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;clear&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> exa
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias </span><span style="color:#19177c">ls</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exa --icons&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias </span><span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;exa -lah --icons&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias </span><span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;ls -h&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>dt-colorscripts</td>
</tr>
</tbody>
</table>
<p>Launch a random <a href="https://gitlab.com/dwt1/shell-color-scripts">DT&rsquo;s colorscript</a> unless ran inside tmux or Emacs.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> ! test <span style="color:#7d9029">-n</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$TMUX</span><span style="color:#ba2121">&#34;</span>; <span style="color:#008000;font-weight:bold">and</span> ! test <span style="color:#7d9029">-n</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$IS_EMACS</span><span style="color:#ba2121">&#34;</span>; <span style="color:#008000;font-weight:bold">and</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> colorscript
</span></span><span style="display:flex;"><span> <span style="color:#00f">colorscript</span> <span style="color:#008000">random
</span></span></span><span style="display:flex;"><span><span style="color:#008000"></span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><p>Suppress fish greeting</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#008000">fish_greeting</span>
</span></span></code></pre></div><h3 id="micromamba-1">Micromamba</h3>
<p>First, a function to initialize micromamba.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">function</span> <span style="color:#00f">init_mamba</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">set</span> <span style="color:#7d9029">-gx</span> <span style="color:#19177c">MAMBA_EXE</span> <span style="color:#ba2121">&#34;/home/pavel/.guix-extra-profiles/dev/dev/bin/micromamba&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">set</span> <span style="color:#7d9029">-gx</span> <span style="color:#19177c">MAMBA_ROOT_PREFIX</span> <span style="color:#ba2121">&#34;/home/pavel/micromamba&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">$MAMBA_EXE</span> shell hook <span style="color:#7d9029">--shell</span> <span style="color:#008000">fish</span> <span style="color:#7d9029">--prefix</span> <span style="color:#19177c">$MAMBA_ROOT_PREFIX</span> <span style="color:#666">|</span> <span style="color:#008000">source
</span></span></span><span style="display:flex;"><span><span style="color:#008000"></span><span style="color:#008000;font-weight:bold">end</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000;font-weight:bold">test</span> <span style="color:#7d9029">-n</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$INIT_MAMBA</span><span style="color:#ba2121">&#34;</span>;
</span></span><span style="display:flex;"><span> <span style="color:#00f">init_mamba</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias </span><span style="color:#19177c">ca</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;micromamba activate&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias </span><span style="color:#19177c">ci</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;init_mamba&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">alias </span><span style="color:#19177c">cii</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;export INIT_MAMBA=true &amp;&amp; init_mamba&#34;</span>
</span></span></code></pre></div><p>Then, check if launched from Emacs with environment activated.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># if test -n &#34;$EMACS_CONDA_ENV&#34;;
</span></span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"></span> <span style="color:#408080;font-style:italic"># conda activate $EMACS_CONDA_ENV
</span></span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># end
</span></span></span></code></pre></div><h3 id="colors-2">Colors</h3>
<p>Fish seems to have hardcoded colorcodes in some color settings. I set these to base16 colors, so they would match Xresources.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_command</span> cyan
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_comment</span> green
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_end</span> black
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_error</span> red
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_escape</span> yellow
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_operator</span> yellow
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_param</span> magenta
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_quote</span> green
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> <span style="color:#19177c">fish_color_redirection</span> yellow
</span></span></code></pre></div><h3 id="keybindings">Keybindings</h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000">bind</span> <span style="color:#7d9029">-M</span> insert <span style="color:#b62;font-weight:bold">\e</span>l forward-char
</span></span><span style="display:flex;"><span><span style="color:#008000">bind</span> <span style="color:#7d9029">-M</span> insert <span style="color:#b62;font-weight:bold">\e</span>h backward-char
</span></span><span style="display:flex;"><span><span style="color:#008000">bind</span> <span style="color:#7d9029">-M</span> insert <span style="color:#b62;font-weight:bold">\e</span>w forward-word
</span></span><span style="display:flex;"><span><span style="color:#008000">bind</span> <span style="color:#7d9029">-M</span> insert <span style="color:#b62;font-weight:bold">\e</span>b backward-word
</span></span></code></pre></div><h3 id="functions">Functions</h3>
<p>A small function to open the file with <code>$EDITOR</code>.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">function</span> <span style="color:#00f">e</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">eval</span> <span style="color:#19177c">$EDITOR</span> <span style="color:#19177c">$argv</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><h3 id="direnv">direnv</h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> direnv
</span></span><span style="display:flex;"><span> <span style="color:#00f">direnv</span> hook <span style="color:#008000">fish</span> <span style="color:#666">|</span> <span style="color:#008000">source
</span></span></span><span style="display:flex;"><span><span style="color:#008000"></span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><h3 id="atuin">atuin</h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> atuin
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">set</span> <span style="color:#7d9029">-gx</span> <span style="color:#19177c">ATUIN_NOBIND</span> <span style="color:#ba2121">&#34;true&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#00f">atuin</span> init <span style="color:#008000">fish</span> <span style="color:#666">|</span> <span style="color:#008000">source
</span></span></span><span style="display:flex;"><span><span style="color:#008000"> bind</span> <span style="color:#b62;font-weight:bold">\c</span>r _atuin_search
</span></span><span style="display:flex;"><span> <span style="color:#008000">bind</span> <span style="color:#7d9029">-M</span> insert <span style="color:#b62;font-weight:bold">\c</span>r _atuin_search
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
</span></span></code></pre></div><h2 id="nushell">Nushell</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>nushell-bin</td>
</tr>
</tbody>
</table>
<p>A structured shell. I don&rsquo;t use it as of now, but perhaps one day.</p>
<h2 id="starship-prompt">Starship prompt</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>starship-bin</td>
<td>my prompt of choice</td>
</tr>
</tbody>
</table>
<p><a href="https://starship.rs/">Starship</a> is a nice cross-shell prompt, written in Rust.</p>
<p>References:</p>
<ul>
<li><a href="https://starship.rs/config/">Startship config guide</a></li>
</ul>
<!--listend-->
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[character]
</span></span><span style="display:flex;"><span>success_symbol = <span style="color:#ba2121">&#34;[&gt; ](bold green)&#34;</span>
</span></span><span style="display:flex;"><span>error_symbol = <span style="color:#ba2121">&#34;[✕ ](bold red)&#34;</span>
</span></span><span style="display:flex;"><span>vicmd_symbol = <span style="color:#ba2121">&#34;[ᐊ ](bold green)&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[aws]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># [battery]</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># full_symbol = &#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># charging_symbol = &#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># discharging_symbol = &#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[conda]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[cmd_duration]
</span></span><span style="display:flex;"><span>min_time = <span style="color:#666">500</span>
</span></span><span style="display:flex;"><span>format = <span style="color:#ba2121">&#34; [$duration]($style) &#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[docker_context]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[elixir]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[elm]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[git_branch]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>truncation_length = <span style="color:#666">20</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[golang]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># [haskell]</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># symbol = &#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[hg_branch]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[java]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[julia]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[memory_usage]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[nim]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[nix_shell]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[nodejs]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[package]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>disabled = <span style="color:#008000;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[php]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[python]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[ruby]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[rust]
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">&#34;&#34;</span>
</span></span></code></pre></div><h2 id="tmux">Tmux</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>tmux</td>
</tr>
<tr>
<td>python-tmuxp</td>
</tr>
</tbody>
</table>
<p><a href="https://github.com/tmux/tmux">tmux</a> is my terminal multiplexer of choice.</p>
<p>It provides pretty sane defaults, so the config is not too large. I rebind the prefix to <code>C-a</code> though.</p>
<h3 id="term-settings">Term settings</h3>
<p>I have no idea how and why these statements work.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g default-terminal <span style="color:#ba2121">&#34;screen-256color&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -ga terminal-overrides <span style="color:#ba2121">&#34;,*256col*:Tc&#34;</span>
</span></span></code></pre></div><p>History limit.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g history-limit <span style="color:#666">20000</span>
</span></span></code></pre></div><h3 id="keybindings-1">Keybindings</h3>
<p>Enable vi keys and mouse.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span>-window-option -g mode-keys vi
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span>-option -g xterm-keys on
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span>-option -g mouse on
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -sg escape-time <span style="color:#666">10</span>
</span></span></code></pre></div><p>Change prefix from <code>C-b</code> to <code>C-a</code>.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>unbind C-b
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g prefix C-a
</span></span><span style="display:flex;"><span>bind C-a send-prefix
</span></span></code></pre></div><p>Vi-like keybindings to manage panes &amp; windows.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>bind h select-pane -L
</span></span><span style="display:flex;"><span>bind j select-pane -D
</span></span><span style="display:flex;"><span>bind k select-pane -U
</span></span><span style="display:flex;"><span>bind l select-pane -R
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>bind s split-window
</span></span><span style="display:flex;"><span>bind v split-window -h
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>bind-key n new-window
</span></span><span style="display:flex;"><span>bind-key t next-window
</span></span><span style="display:flex;"><span>bind-key T previous-window
</span></span></code></pre></div><p>Reload the config.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>bind r source-file ~/.tmux.conf
</span></span></code></pre></div><h3 id="copy-to-clipboard">Copy to clipboard</h3>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>xclip</td>
</tr>
</tbody>
</table>
<p>Make tmux copy to clipboard as well</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel <span style="color:#ba2121">&#34;xclip -selection clipboard -i&#34;</span>
</span></span><span style="display:flex;"><span>bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel <span style="color:#ba2121">&#34;xclip -selection clipboard -i&#34;</span>
</span></span></code></pre></div><h3 id="ui">UI</h3>
<p>On <span class="timestamp-wrapper"><span class="timestamp">[2020-01-22 Wed]</span></span>, I had generated the first version of this following with <a href="https://github.com/edkolev/tmuxline.vim">tmuxline.vim</a> plugin and palenight theme for <a href="https://github.com/vim-airline/vim-airline">vim-airline</a>.</p>
<p>Then I adapted it to use the current Emacs theme.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-justify <span style="color:#ba2121">&#34;centre&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status <span style="color:#ba2121">&#34;on&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-left-style <span style="color:#ba2121">&#34;none&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g message-command-style <span style="color:#ba2121">&#34;fg=&lt;&lt;get-color(name=&#34;</span>fg<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-right-style <span style="color:#ba2121">&#34;none&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g pane-active-border-style <span style="color:#ba2121">&#34;fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-style <span style="color:#ba2121">&#34;none,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g message-style <span style="color:#ba2121">&#34;fg=&lt;&lt;get-color(name=&#34;</span>fg<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g pane-border-style <span style="color:#ba2121">&#34;fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-right-length <span style="color:#ba2121">&#34;100&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-left-length <span style="color:#ba2121">&#34;100&#34;</span>
</span></span><span style="display:flex;"><span>setw -g window-status-activity-style <span style="color:#ba2121">&#34;none,fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span>setw -g window-status-separator <span style="color:#ba2121">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>setw -g window-status-style <span style="color:#ba2121">&#34;none,fg=&lt;&lt;get-color(name=&#34;</span>fg<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-left <span style="color:#ba2121">&#34;#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;] #S #[fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;] #W #[fg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">set</span> -g status-right <span style="color:#ba2121">&#34;%-H:%M #[bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,fg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;] %a, %b %d #[bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;] #H &#34;</span>
</span></span><span style="display:flex;"><span>setw -g window-status-format <span style="color:#ba2121">&#34;#[fg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;] #I #W #[align=left] #[fg=&lt;&lt;get-color(name=&#34;</span><span style="color:#008000">light</span>-blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]&#34;</span>
</span></span><span style="display:flex;"><span>setw -g window-status-current-format <span style="color:#ba2121">&#34;#[fg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]#[fg=&lt;&lt;get-fg-for-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;] #I #W #[fg=&lt;&lt;get-color(name=&#34;</span>blue<span style="color:#ba2121">&#34;)&gt;&gt;,bg=&lt;&lt;get-color(name=&#34;</span>bg-other<span style="color:#ba2121">&#34;)&gt;&gt;,nobold,nounderscore,noitalics]&#34;</span>
</span></span></code></pre></div><p>Source the line config:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>source ~/.tmux.line.conf
</span></span></code></pre></div><h2 id="alacritty">Alacritty</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>alacritty</td>
</tr>
</tbody>
</table>
<p><a href="https://github.com/alacritty/alacritty">Alacritty</a> is a GPU-accelerated terminal emulator. I haven&rsquo;t found it to be an inch faster than st, but <code>yml</code> configuration is way more convenient than patches.</p>
<p>References:</p>
<ul>
<li><a href="https://github.com/alacritty/alacritty/blob/master/alacritty.yml">default config</a></li>
</ul>
<!--listend-->
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">decorations</span>:<span style="color:#bbb"> </span>none<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#008000;font-weight:bold">font</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">normal</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">family</span>:<span style="color:#bbb"> </span>JetBrainsMono Nerd Font<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">style</span>:<span style="color:#bbb"> </span>Regular<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">size</span>:<span style="color:#bbb"> </span><span style="color:#666">10</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#008000;font-weight:bold">env</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">TERM</span>:<span style="color:#bbb"> </span>xterm-256color<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#008000;font-weight:bold">colors</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">primary</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">background</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;bg&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">foreground</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;fg&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">normal</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">black</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;black&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">red</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;red&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">green</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;green&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">yellow</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;yellow&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">blue</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;blue&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">magenta</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;magenta&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">cyan</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;cyan&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">white</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;white&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">bright</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Black</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-black&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Red</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-red&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Green</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-green&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Yellow</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-yellow&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Blue</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-blue&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Magenta</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-magenta&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">Cyan</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-cyan&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">White</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#39;&lt;&lt;get-color(name=&#34;light-white&#34;)&gt;&gt;&#39;</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#008000;font-weight:bold">window</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">padding</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">x</span>:<span style="color:#bbb"> </span><span style="color:#666">0</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">y</span>:<span style="color:#bbb"> </span><span style="color:#666">0</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">dynamic_padding</span>:<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">true</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">opacity</span>:<span style="color:#bbb"> </span><span style="color:#666">1</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#008000;font-weight:bold">key_bindings</span>:<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Paste, action</span>:<span style="color:#bbb"> </span>Paste }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Copy, action</span>:<span style="color:#bbb"> </span>Copy }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: L, mods: Control, action</span>:<span style="color:#bbb"> </span>ClearLogNotice }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: L, mods: Control, mode: ~Vi|~Search, chars</span>:<span style="color:#bbb"> </span><span style="color:#ba2121">&#34;\x0c&#34;</span><span style="color:#bbb"> </span>}<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: PageUp, mods: Shift, mode: ~Alt, action</span>:<span style="color:#bbb"> </span>ScrollPageUp, }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: PageDown, mods: Shift, mode: ~Alt, action</span>:<span style="color:#bbb"> </span>ScrollPageDown }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Home, mods: Shift, mode: ~Alt, action</span>:<span style="color:#bbb"> </span>ScrollToTop, }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: End, mods: Shift, mode: ~Alt, action</span>:<span style="color:#bbb"> </span>ScrollToBottom }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#408080;font-style:italic"># Turn off vi mode</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Space, mods: Shift|Control, mode: ~Search, action</span>:<span style="color:#bbb"> </span>ReceiveChar }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span><span style="color:#408080;font-style:italic"># (Windows, Linux, and BSD only)</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: V, mods: Control|Shift, mode: ~Vi, action</span>:<span style="color:#bbb"> </span>Paste }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: C, mods: Control|Shift, action</span>:<span style="color:#bbb"> </span>Copy }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: F, mods: Control|Shift, mode: ~Search, action</span>:<span style="color:#bbb"> </span>ReceiveChar }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: B, mods: Control|Shift, mode: ~Search, action</span>:<span style="color:#bbb"> </span>ReceiveChar }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Insert, mods: Shift, action</span>:<span style="color:#bbb"> </span>PasteSelection }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Key0, mods: Control, action</span>:<span style="color:#bbb"> </span>ResetFontSize }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Equals, mods: Control, action</span>:<span style="color:#bbb"> </span>IncreaseFontSize }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Plus, mods: Control, action</span>:<span style="color:#bbb"> </span>IncreaseFontSize }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: NumpadAdd, mods: Control, action</span>:<span style="color:#bbb"> </span>IncreaseFontSize }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: Minus, mods: Control, action</span>:<span style="color:#bbb"> </span>DecreaseFontSize }<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: NumpadSubtract, mods: Control, action</span>:<span style="color:#bbb"> </span>DecreaseFontSize }<span style="color:#bbb">
</span></span></span></code></pre></div><h2 id="bottom">Bottom</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>bottom-bin</td>
<td>resource monitor</td>
</tr>
</tbody>
</table>
<p><a href="https://github.com/ClementTsang/bottom">bottom</a> is a TUI system monitor.</p>
<p>See the <a href="https://github.com/ClementTsang/bottom/blob/master/sample_configs/default_config.toml">default config</a> for the avaliable options.</p>
<p><a id="code-snippet--bottom-theme"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span>(<span style="color:#008000">if</span> (<span style="color:#19177c">my/light-p</span>) <span style="color:#ba2121">&#34;default-light&#34;</span> <span style="color:#ba2121">&#34;default&#34;</span>)
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[flags]
</span></span><span style="display:flex;"><span>hide_table_gap = <span style="color:#008000;font-weight:bold">true</span> <span style="color:#408080;font-style:italic"># Remove space in tables</span>
</span></span><span style="display:flex;"><span>color = <span style="color:#ba2121">&#34;&lt;&lt;bottom-theme()&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span>process_command = <span style="color:#008000;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[processes]
</span></span><span style="display:flex;"><span>columns = [<span style="color:#ba2121">&#34;PID&#34;</span>, <span style="color:#ba2121">&#34;State&#34;</span>, <span style="color:#ba2121">&#34;Name&#34;</span>, <span style="color:#ba2121">&#34;CPU%&#34;</span>, <span style="color:#ba2121">&#34;Mem%&#34;</span>, <span style="color:#ba2121">&#34;R/s&#34;</span>, <span style="color:#ba2121">&#34;W/s&#34;</span>, <span style="color:#ba2121">&#34;User&#34;</span>]
</span></span></code></pre></div><h2 id="atuin-1">Atuin</h2>
<p><a href="https://github.com/atuinsh/atuin">atuin</a> is a tool that replaces shell history with a SQLite database, providing some additional functionality.</p>
<p>See <a href="https://docs.atuin.sh/configuration/config/">config reference</a>.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>update_check = <span style="color:#008000;font-weight:bold">false</span>
</span></span><span style="display:flex;"><span>enter_accept = <span style="color:#008000;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span>keymap_mode = <span style="color:#ba2121">&#34;vim-insert&#34;</span>
</span></span></code></pre></div><h2 id="various-console-applications">Various console applications</h2>
<table>
<thead>
<tr>
<th>Guix dependency</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>ncurses</td>
<td>Provides stuff like <code>clear</code></td>
</tr>
<tr>
<td>exa</td>
<td><code>ls</code> replacement, written in Rust</td>
</tr>
<tr>
<td>bat</td>
<td><code>cat</code> clone with syntax highlighting</td>
</tr>
<tr>
<td>htop</td>
<td>Interactive process viewer</td>
</tr>
<tr>
<td>nethogs</td>
<td>A tool to group processed by used bandwidth</td>
</tr>
<tr>
<td>osync</td>
<td>rsync wrapper</td>
</tr>
<tr>
<td>neofetch</td>
<td>Fetch system info</td>
</tr>
<tr>
<td>fzf</td>
<td>fuzzy finder</td>
</tr>
<tr>
<td>p7zip</td>
<td>archiver</td>
</tr>
<tr>
<td>password-store</td>
<td>CLI password manager</td>
</tr>
<tr>
<td>zip</td>
<td></td>
</tr>
<tr>
<td>unzip</td>
<td></td>
</tr>
<tr>
<td>jmtpfs</td>
<td>A tool to mount MTP devices (e.g. Android)</td>
</tr>
<tr>
<td>tokei</td>
<td>Count lines of code</td>
</tr>
<tr>
<td>sshfs</td>
<td>Mount stuff over SSH</td>
</tr>
<tr>
<td>lftp</td>
<td>File transfer</td>
</tr>
<tr>
<td>git-lfs</td>
<td></td>
</tr>
<tr>
<td>glibc-locales</td>
<td></td>
</tr>
<tr>
<td>direnv</td>
<td></td>
</tr>
<tr>
<td>jless-bin</td>
<td>JSON viewer</td>
</tr>
<tr>
<td>megacmd</td>
<td>mega.nz client</td>
</tr>
<tr>
<td>ncdu</td>
<td>disk usage analyzer</td>
</tr>
<tr>
<td>openssl</td>
<td></td>
</tr>
<tr>
<td>aria2</td>
<td>Download tool</td>
</tr>
<tr>
<td>man-db</td>
<td></td>
</tr>
<tr>
<td>pv</td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="ripgrep-config">ripgrep config</h3>
<p>Occasionally I can&rsquo;t exclude certain files from ripgrep via the VCS settings, so here is a simple config to ignore certain files globally.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>--ignore-file=/home/pavel/.config/ripgrep/ripgrepignore
</span></span></code></pre></div><p>The ignore file:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>*.ts.snap
</span></span></code></pre></div><p>By default, ripgrep doesn&rsquo;t read any configs, so it is necessary to set the <code>RIPGREP_CONFIG_PATH</code> variable in the <a href="#environment-1">.profile.</a></p>
<h2 id="misc-scripts">Misc scripts</h2>
<h3 id="nt-exec-command-with-a-finished-notification"><code>nt</code> - exec command with a finished notification</h3>
<p>Usage:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>nt &lt;command&gt;
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#19177c">command</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$@</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> ! -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$command</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">start_time</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">$(</span>date -u +%s<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">$command</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">end_time</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">$(</span>date -u +%s<span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">elapsed</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#008000;font-weight:bold">$((</span><span style="color:#19177c">$end_time</span><span style="color:#666">-</span><span style="color:#19177c">$start_time</span><span style="color:#008000;font-weight:bold">))</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> notify-send <span style="color:#ba2121">&#34;Terminal&#34;</span> <span style="color:#ba2121">&#34;Command\n</span><span style="color:#19177c">$command</span><span style="color:#ba2121">\nexecuted in </span><span style="color:#19177c">$elapsed</span><span style="color:#ba2121"> seconds&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> notify-send <span style="color:#ba2121">&#34;Terminal&#34;</span> <span style="color:#ba2121">&#34;Command execution complete&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h3 id="autocommit"><code>autocommit</code></h3>
<p>A script to perform automatic commits in a repository. I use it to sync my org directory and password store. I guess it&rsquo;s not how git is intended to be used, but it works for me.</p>
<p>Usage:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>autocommit &lt;repository&gt; [-F]
</span></span></code></pre></div><p>Environment:</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
<th>Default value</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>TIMEOUT_MIN</code></td>
<td>Default timeout</td>
<td>60</td>
</tr>
</tbody>
</table>
<p>Here&rsquo;s roughly what the script is doing:</p>
<ul>
<li>If there is a merge conflict, notify</li>
<li>If there were changed files in the last <code>TIMEOUT_MIN</code> minutes, commit</li>
<li>Fetch</li>
<li>If there were changes in the last <code>TTMEOUT_MIN</code>, merge (usually the merge is just fast-forward)</li>
<li>If the fetch was successful &amp; the merge was either successful or delayed because of changes in the last <code>TIMEOUT_MIN</code>, push</li>
<li>Send a notification about the events above</li>
<li>Send a separate notification if there is a merge conflict</li>
</ul>
<!--listend-->
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#19177c">TIMEOUT_MIN</span><span style="color:#666">=</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">TIMEOUT_MIN</span><span style="color:#008000;font-weight:bold">:-</span><span style="color:#19177c">60</span><span style="color:#b68;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">DISPLAY</span><span style="color:#666">=</span>:0
</span></span><span style="display:flex;"><span><span style="color:#008000">cd</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$1</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">TIMESTAMP</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>date +%s<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">LAST_COMMIT_TIMESTAMP</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>git log -1 --format<span style="color:#666">=</span><span style="color:#ba2121">&#34;%at&#34;</span> | xargs -I<span style="color:#666">{}</span> date -d @<span style="color:#666">{}</span> +%s<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">RECENTLY_CHANGED_NUM</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>find . -not -path <span style="color:#ba2121">&#39;*/\.*&#39;</span> -mmin -<span style="color:#19177c">$TIMEOUT_MIN</span> | wc -l<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">CHANGED_NUM</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>git status --porcelain | wc -l<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">COMMITED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">PUSHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">FETCHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">MERGED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>notify <span style="color:#666">()</span> <span style="color:#666">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">if</span> <span style="color:#008000">command</span> -v notify-send; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> notify-send -u <span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">LEVEL</span><span style="color:#008000;font-weight:bold">:-</span><span style="color:#19177c">normal</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$1</span><span style="color:#ba2121">&#34;</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$2</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">else</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">echo</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$1</span><span style="color:#ba2121">&#34;</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$2</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span><span style="color:#666">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#008000;font-weight:bold">$(</span>git ls-files -u | wc -l<span style="color:#008000;font-weight:bold">)</span> -gt <span style="color:#666">0</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">LEVEL</span><span style="color:#666">=</span>critical notify <span style="color:#ba2121">&#34;Autocommit </span><span style="color:#008000;font-weight:bold">$(</span><span style="color:#008000">pwd</span><span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span> <span style="color:#ba2121">&#34;Merge conflict!&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#666">(</span><span style="color:#19177c">$RECENTLY_CHANGED_NUM</span> -eq <span style="color:#666">0</span> <span style="color:#666">||</span> <span style="color:#19177c">$2</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;-F&#34;</span><span style="color:#666">)</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">$CHANGED_NUM</span> -gt <span style="color:#666">0</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">read</span> -r -d <span style="color:#ba2121">&#39;&#39;</span> MESSAGE <span style="color:#ba2121">&lt;&lt; EOM
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Autocommit $(date -Iminutes)
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Hostname: $(hostname)
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">EOM</span>
</span></span><span style="display:flex;"><span> git add -A
</span></span><span style="display:flex;"><span> git commit -m <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$MESSAGE</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">COMMITED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;Yes&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">NEED_TO_PUSH</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>git log origin/master..HEAD | wc -l<span style="color:#008000;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>git fetch <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">FETCHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#19177c">FETCHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#19177c">$RECENTLY_CHANGED_NUM</span> -gt <span style="color:#666">0</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">$2</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#39;-F&#39;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">MERGED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;Waiting&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#666">(</span><span style="color:#19177c">$RECENTLY_CHANGED_NUM</span> -eq <span style="color:#666">0</span> <span style="color:#666">||</span> <span style="color:#19177c">$2</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;-F&#34;</span><span style="color:#666">)</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">$FETCHED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">MERGE_OUT</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">$(</span>git merge origin/master<span style="color:#008000;font-weight:bold">)</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">MERGED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#19177c">MERGED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#19177c">$NEED_TO_PUSH</span> -gt <span style="color:#666">0</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">(</span><span style="color:#19177c">$MERGED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#19177c">$MERGED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Waiting&#34;</span><span style="color:#666">)</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> git push origin <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">PUSHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#19177c">PUSHED</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;No&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#19177c">$PUSHED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#19177c">$COMMITED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">||</span> <span style="color:#666">(</span><span style="color:#19177c">$MERGED</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;Yes&#34;</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#19177c">$MERGE_OUT</span> !<span style="color:#666">=</span> <span style="color:#ba2121">&#34;Already up to date.&#34;</span><span style="color:#666">)]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">read</span> -r -d <span style="color:#ba2121">&#39;&#39;</span> NOTIFICATION <span style="color:#ba2121">&lt;&lt; EOM
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Commited: $COMMITED
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Fetched: $FETCHED
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Merged: $MERGED
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Pushed: $PUSHED
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">EOM</span>
</span></span><span style="display:flex;"><span> notify <span style="color:#ba2121">&#34;Autocommit </span><span style="color:#008000;font-weight:bold">$(</span><span style="color:#008000">pwd</span><span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NOTIFICATION</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> <span style="color:#008000;font-weight:bold">$(</span>git ls-files -u | wc -l<span style="color:#008000;font-weight:bold">)</span> -gt <span style="color:#666">0</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">LEVEL</span><span style="color:#666">=</span>critical notify <span style="color:#ba2121">&#34;Autocommit </span><span style="color:#008000;font-weight:bold">$(</span><span style="color:#008000">pwd</span><span style="color:#008000;font-weight:bold">)</span><span style="color:#ba2121">&#34;</span> <span style="color:#ba2121">&#34;Merge conflict!&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p><code>mcron</code> job:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#00f">job</span> <span style="color:#ba2121">&#34;0 * * * *&#34;</span> <span style="color:#ba2121">&#34;autocommit /home/pavel/30-39\\ Life/32\\ org-mode/&#34;</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#00f">job</span> <span style="color:#ba2121">&#34;0,15,30,45 * * * *&#34;</span> <span style="color:#ba2121">&#34;autocommit ~/.password-store&#34;</span>)
</span></span></code></pre></div><h2 id="guix-settings-1">Guix settings</h2>
<p><a id="code-snippet--packages"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my/format-guix-dependencies</span>)
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#00f">specifications-&gt;manifest</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>(
</span></span><span style="display:flex;"><span> <span style="color:#19177c">&lt;&lt;packages</span>()<span style="color:#19177c">&gt;&gt;</span>))
</span></span></code></pre></div><h2 id="android-notes">Android notes</h2>
<p>SSH instructions: <a href="https://wiki.termux.com/wiki/Remote_Access">https://wiki.termux.com/wiki/Remote_Access</a></p>
<h3 id="installation">Installation</h3>
<p>First, run</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pkg update
</span></span></code></pre></div><p>Then install the following packages:</p>
<table>
<thead>
<tr>
<th>Package</th>
</tr>
</thead>
<tbody>
<tr>
<td>yadm</td>
</tr>
<tr>
<td>gnupg</td>
</tr>
<tr>
<td>git</td>
</tr>
<tr>
<td>which</td>
</tr>
<tr>
<td>starship</td>
</tr>
<tr>
<td>atuin</td>
</tr>
<tr>
<td>vim</td>
</tr>
<tr>
<td>tmux</td>
</tr>
<tr>
<td>emacs</td>
</tr>
<tr>
<td>make</td>
</tr>
<tr>
<td>clang</td>
</tr>
<tr>
<td>ripgrep</td>
</tr>
<tr>
<td>cmake</td>
</tr>
<tr>
<td>gperf</td>
</tr>
<tr>
<td>iproute2</td>
</tr>
<tr>
<td>wakatime-cli</td>
</tr>
</tbody>
</table>
<p>Run</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>termux-setup-storage
</span></span></code></pre></div><p>Then import ssh and gpg keys. Set the main key to ultimate trust (<code>gpg --edit-key ...</code>, then <code>trust</code>).</p>
<p>Then:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yadm clone git@github.com/SqrtMinusOne/dotfiles.git
</span></span></code></pre></div><p>Install nerd fonts: <a href="https://github.com/notflawffles/termux-nerd-installer">https://github.com/notflawffles/termux-nerd-installer</a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/notflawffles/termux-nerd-installer.git
</span></span><span style="display:flex;"><span><span style="color:#008000">cd</span> termux-nerd-installer
</span></span><span style="display:flex;"><span>make install
</span></span></code></pre></div><p>Clone <code>passwords.git</code> to <code>~/.password-store/</code>, <code>org-mode.git</code> to <code>~/30-39 Life/32 org-mode</code>.</p>
<p>Create the file <code>~/.android-profile</code> with contents:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">ANDROID_NAME</span><span style="color:#666">=</span>&lt;name&gt;
</span></span></code></pre></div><p>Then <code>emacs</code> should launch fine.</p>
<p>Also:</p>
<ul>
<li>cleanup <code>$PREFIX/etc/motd</code> to remove hello message.</li>
</ul>
<h3 id="installation-of-dt-s-colorscripts">Installation of <a href="https://gitlab.com/dwt1/shell-color-scripts">DT&rsquo;s colorscripts</a>:</h3>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://gitlab.com/dwt1/shell-color-scripts.git
</span></span><span style="display:flex;"><span><span style="color:#008000">cd</span> shell-color-scripts
</span></span></code></pre></div><p>Apply a patch:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-diff" data-lang="diff"><span style="display:flex;"><span><span style="color:#a00000">--- a/colorscript.sh
</span></span></span><span style="display:flex;"><span><span style="color:#a00000"></span><span style="color:#00a000">+++ b/colorscript.sh
</span></span></span><span style="display:flex;"><span><span style="color:#00a000"></span><span style="color:#800080;font-weight:bold">@@ -2,7 +2,7 @@
</span></span></span><span style="display:flex;"><span><span style="color:#800080;font-weight:bold"></span>
</span></span><span style="display:flex;"><span> # Simple CLI for shell-color-scripts
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a00000">-DIR_COLORSCRIPTS=&#34;/opt/shell-color-scripts/colorscripts&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#a00000"></span><span style="color:#00a000">+DIR_COLORSCRIPTS=&#34;$PREFIX/opt/shell-color-scripts/colorscripts&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#00a000"></span> LS_CMD=&#34;$(command -v ls)&#34;
</span></span><span style="display:flex;"><span> fmt_help=&#34; %-20s\t%-54s\n&#34;
</span></span><span style="display:flex;"><span> list_colorscripts=&#34;$($LS_CMD &#34;${DIR_COLORSCRIPTS}&#34; | cut -d &#39; &#39; -f 1 | nl)&#34;
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo mkdir -p <span style="color:#19177c">$PREFIX</span>/opt/shell-color-scripts/colorscripts <span style="color:#666">||</span> <span style="color:#008000;font-weight:bold">return</span> <span style="color:#666">1</span>
</span></span><span style="display:flex;"><span>sudo cp -rf colorscripts/* <span style="color:#19177c">$PREFIX</span>/opt/shell-color-scripts/colorscripts
</span></span><span style="display:flex;"><span>sudo cp colorscript.sh <span style="color:#19177c">$PREFIX</span>/bin/colorscript
</span></span></code></pre></div>
</div>
<div class="table-of-contents">
<div class="table-of-contents-text">
<b><a href="#">Table of Contents</a></b>
<nav id="TableOfContents">
<ul>
<li><a href="#colors">Colors</a></li>
<li><a href="#dot-profile"><code>.profile</code></a>
<ul>
<li><a href="#environment">Environment</a></li>
<li><a href="#my-paths">My paths</a></li>
<li><a href="#ssl-certs">SSL Certs</a></li>
<li><a href="#ssh-agent">ssh-agent</a></li>
<li><a href="#guix-settings">Guix settings</a></li>
<li><a href="#other-package-managers">Other package managers</a>
<ul>
<li><a href="#npm">npm</a></li>
</ul>
</li>
<li><a href="#xresources">XResources</a></li>
<li><a href="#off--package-manager-paths"><span class="org-todo done OFF">OFF</span> (OFF) Package manager paths</a></li>
</ul>
</li>
<li><a href="#bash">Bash</a>
<ul>
<li><a href="#dot-bash-profile"><code>.bash_profile</code></a></li>
<li><a href="#dot-bashrc"><code>.bashrc</code></a>
<ul>
<li><a href="#startup-and-environment">Startup &amp; environment</a></li>
<li><a href="#launch-fish">Launch fish</a></li>
<li><a href="#colors-1">Colors</a></li>
<li><a href="#settings">Settings</a></li>
<li><a href="#aliases">Aliases</a></li>
<li><a href="#micromamba">Micromamba</a></li>
<li><a href="#starship">Starship</a></li>
<li><a href="#yandex-cloud">Yandex Cloud</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#fish">Fish</a>
<ul>
<li><a href="#micromamba-1">Micromamba</a></li>
<li><a href="#colors-2">Colors</a></li>
<li><a href="#keybindings">Keybindings</a></li>
<li><a href="#functions">Functions</a></li>
<li><a href="#direnv">direnv</a></li>
<li><a href="#atuin">atuin</a></li>
</ul>
</li>
<li><a href="#nushell">Nushell</a></li>
<li><a href="#starship-prompt">Starship prompt</a></li>
<li><a href="#tmux">Tmux</a>
<ul>
<li><a href="#term-settings">Term settings</a></li>
<li><a href="#keybindings-1">Keybindings</a></li>
<li><a href="#copy-to-clipboard">Copy to clipboard</a></li>
<li><a href="#ui">UI</a></li>
</ul>
</li>
<li><a href="#alacritty">Alacritty</a></li>
<li><a href="#bottom">Bottom</a></li>
<li><a href="#atuin-1">Atuin</a></li>
<li><a href="#various-console-applications">Various console applications</a>
<ul>
<li><a href="#ripgrep-config">ripgrep config</a></li>
</ul>
</li>
<li><a href="#misc-scripts">Misc scripts</a>
<ul>
<li><a href="#nt-exec-command-with-a-finished-notification"><code>nt</code> - exec command with a finished notification</a></li>
<li><a href="#autocommit"><code>autocommit</code></a></li>
</ul>
</li>
<li><a href="#guix-settings-1">Guix settings</a></li>
<li><a href="#android-notes">Android notes</a>
<ul>
<li><a href="#installation">Installation</a></li>
<li><a href="#installation-of-dt-s-colorscripts">Installation of <a href="https://gitlab.com/dwt1/shell-color-scripts">DT&rsquo;s colorscripts</a>:</a></li>
</ul>
</li>
</ul>
</nav>
</div>
<a id="unhide-all-button" class="hidden">&lt;Expand&gt;</a>
<a id="hide-all-button" class="hidden">&lt;Collapse&gt;</a>
</div>
</div>
</div><div id="footer" class="mb-5">
<hr>
<div class="container text-center">
</div>
<div class="container text-center">
<a href="https://creativecommons.org/licenses/by/4.0/legalcode" title="Licensed under CC-BY 4.0"><small>Licensed under CC-BY 4.0</small></a>
|
<a href="https://plausible.io/" title="Uses Plausible Analytics"><small>Uses Plausible Analytics</small></a>
<br>
<a href="https://sqrtminusone.xyz/" title="Pavel Korytov, 2024"><small>Pavel Korytov, 2024</small></a>
</div>
</div>
</body>
</html>