sqrtminusone.github.io/configs/console/index.html
2025-11-06 05:02:31 +00:00

1326 lines
163 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 DTs colorscripts:</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>