This commit is contained in:
SqrtMinusOne 2024-01-17 23:47:24 +00:00
parent ad21518762
commit ec172f16b5
8 changed files with 108 additions and 37 deletions

View file

@ -125,6 +125,12 @@
</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">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></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:#008000;font-weight:bold">then</span>
@ -164,6 +170,8 @@
<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:#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:#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:#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>
@ -1041,7 +1049,7 @@
</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 ~/Documents/org-mode&#34;</span>)
<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>
@ -1117,6 +1125,7 @@
<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="#guix-settings">Guix settings</a></li>
<li><a href="#other-package-managers">Other package managers</a>
<ul>

View file

@ -221,7 +221,7 @@
<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">hostname</span> (<span style="color:#00f">system-name</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cond</span> ((<span style="color:#00f">string-equal</span> <span style="color:#19177c">hostname</span> <span style="color:#ba2121">&#34;azure&#34;</span>) <span style="color:#666">120</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">string-equal</span> <span style="color:#19177c">hostname</span> <span style="color:#ba2121">&#34;eminence&#34;</span>) <span style="color:#666">120</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">string-equal</span> <span style="color:#19177c">hostname</span> <span style="color:#ba2121">&#34;indigo&#34;</span>) <span style="color:#666">120</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">string-equal</span> <span style="color:#19177c">hostname</span> <span style="color:#ba2121">&#34;violet&#34;</span>) <span style="color:#666">120</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">string-equal</span> <span style="color:#19177c">hostname</span> <span style="color:#ba2121">&#34;iris&#34;</span>) <span style="color:#666">120</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#800">t</span> <span style="color:#666">96</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-vim" data-lang="vim"><span style="display:flex;"><span>Xft.dpi: &lt;&lt;get-dpi()&gt;&gt;
@ -321,6 +321,8 @@
</span></span><span style="display:flex;"><span> xrandr --output DisplayPort-0 --off --output HDMI-A-0 --mode 1920x1080 --pos 0x0 --rotate normal --output DVI-D-0 --mode 1920x1080 --pos 1920x0 --rotate normal
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">elif</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$hostname</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;eminence&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> xgamma -gamma 1.25
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">elif</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$hostname</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;violet&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> xrandr --output HDMI-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-0 --off --output DP-1 --mode 1920x1080 --pos 1920x0 --rotate normal --output DP-2 --off --output DP-3 --off --output DP-4 --off --output DP-5 --off --output None-1-1 --off
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h2 id="exwm">EXWM</h2>
<p>Settings for <a href="https://github.com/ch11ng/exwm">Emacs X Window Manager</a>, a tiling WM implemented in Emacs Lisp. This part has a few bits copied from my blog post.</p>
@ -400,22 +402,24 @@
<p>The GUI pinentry doesn&rsquo;t work too well with EXWM because of issues with popup windows, so we will use the Emacs one.</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">use-package</span> <span style="color:#19177c">pinentry</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">exwm</span>)
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; :after (exwm)</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">setenv</span> <span style="color:#ba2121">&#34;GPG_AGENT_INFO&#34;</span> <span style="color:#800">nil</span>) <span style="color:#408080;font-style:italic">;; use emacs pinentry</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">auth-source-debug</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-gpg-program</span> <span style="color:#ba2121">&#34;gpg2&#34;</span>) <span style="color:#408080;font-style:italic">;; not necessary</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-gpg-program</span> <span style="color:#ba2121">&#34;gpg&#34;</span>) <span style="color:#408080;font-style:italic">;; not necessary</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">&#39;epa-file</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">epa-file-enable</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epa-pinentry-mode</span> <span style="color:#19177c">&#39;loopback</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-pinentry-mode</span> <span style="color:#19177c">&#39;loopback</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">pinentry-start</span>))
</span></span></code></pre></div><p><a id="code-snippet--find-pinentry"></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">executable-find</span> <span style="color:#ba2121">&#34;pinentry&#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-vim" data-lang="vim"><span style="display:flex;"><span>default-cache-ttl <span style="color:#666">3600</span>
</span></span><span style="display:flex;"><span>max-cache-ttl <span style="color:#666">3600</span>
</span></span><span style="display:flex;"><span>allow-emacs-pinentry
</span></span><span style="display:flex;"><span>allow-loopback-pinentry
</span></span><span style="display:flex;"><span>pinentry-program <span style="color:#b68">/home/</span>pavel<span style="color:#b68">/.guix-extra-profiles/</span>console<span style="color:#b68">/console/</span>bin/pinentry
</span></span><span style="display:flex;"><span>pinentry-program &lt;&lt;find-pinentry()&gt;&gt;
</span></span></code></pre></div><h4 id="modeline">Modeline</h4>
<p>Show the current workspace in the modeline.</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">use-package</span> <span style="color:#19177c">exwm-modeline</span>
@ -623,17 +627,18 @@
</span></span><span style="display:flex;"><span> <span style="color:#19177c">my/exwm-last-workspaces</span>)))
</span></span></code></pre></div><h4 id="the-monitor-list">The monitor list</h4>
<p>The second piece of the puzzle is getting the monitor list in the right order.</p>
<p>While it is possible to retrieve the monitor list from <code>exwm-randr-workspace-output-plist</code>, this won&rsquo;t scale well beyond two monitors, mainly because changing this variable may screw up the order.</p>
<p>While it is possible to retrieve the monitor list from <code>exwm-randr-workspace-monitor-plist</code>, this won&rsquo;t scale well beyond two monitors, mainly because changing this variable may screw up the order.</p>
<p>So the easiest way is to just define the variable like that:</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">setq</span> <span style="color:#19177c">my/exwm-monitor-list</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">pcase</span> (<span style="color:#00f">system-name</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;indigo&#34;</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span> <span style="color:#ba2121">&#34;DVI-D-0&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;violet&#34;</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span> <span style="color:#ba2121">&#34;DP-1&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">_</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span>))))
</span></span></code></pre></div><p>If you are changing the RandR configuration on the fly, this variable will also need to be changed, but for now, I don&rsquo;t have such a necessity.</p>
<p>A function to get the current monitor:</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">defun</span> <span style="color:#19177c">my/exwm-get-current-monitor</span> ()
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;Return the current monitor name or nil.&#34;</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-output-plist</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cl-position</span> (<span style="color:#00f">selected-frame</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">exwm-workspace--list</span>)))
</span></span></code></pre></div><p>And a function to cycle the monitor list in either direction:</p>
@ -667,9 +672,9 @@
</span></span><span style="display:flex;"><span> <span style="color:#19177c">for</span> <span style="color:#19177c">_</span> <span style="color:#19177c">in</span> <span style="color:#19177c">exwm-workspace--list</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">collect</span> <span style="color:#19177c">i</span>))
</span></span><span style="display:flex;"><span> <span style="color:#008000">if</span> (<span style="color:#008000">if</span> <span style="color:#19177c">other-monitor</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">string-equal</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-output-plist</span> <span style="color:#19177c">i</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">string-equal</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#19177c">i</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">other-monitor</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-output-plist</span> <span style="color:#19177c">i</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#19177c">i</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#008000">return</span> <span style="color:#19177c">i</span>))))
</span></span></code></pre></div><p>I bind this function to <code>s-q</code>, as I&rsquo;m used from i3.</p>
<h4 id="move-the-workspace-to-another-monitor">Move the workspace to another monitor</h4>
@ -1219,8 +1224,8 @@
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">&#39;exwm-randr</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-randr-enable</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">start-process-shell-command</span> <span style="color:#ba2121">&#34;xrandr&#34;</span> <span style="color:#800">nil</span> <span style="color:#ba2121">&#34;~/bin/scripts/screen-layout&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;indigo&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#ba2121">&#34;DVI-D-0&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;violet&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#ba2121">&#34;DP-1&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#666">`</span>(<span style="color:#666">2</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#666">3</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span>)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">exwm-workspace-warp-cursor</span> <span style="color:#800">t</span>)
@ -1944,6 +1949,14 @@
<td>HDMI-A-0</td>
<td>battery</td>
</tr>
<tr>
<td>HDMI-0</td>
<td>battery</td>
</tr>
<tr>
<td>DP-1</td>
<td>battery</td>
</tr>
</tbody>
</table>
<p>Another thing we need to do is to set the color of modules in accordance with the <code>polybar_modules</code> table. The background can be determined from the <code>Color</code> column with the following code block:</p>
@ -2182,7 +2195,7 @@
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">elif</span> <span style="color:#666">[</span> <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$hostname</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;iris&#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">TRAY_MONITOR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;HDMI-1&#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:#19177c">TRAY_MONITOR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;HDMI-A-0&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">TRAY_MONITOR</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;DP-1&#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:#408080;font-style:italic"># Setting varying on the monitor</span>
@ -2192,6 +2205,8 @@
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DVI-D-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;13&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-A-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;13&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;13&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;13&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DP-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;13&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">)</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">declare</span> -A <span style="color:#19177c">EMOJI_SCALE</span><span style="color:#666">=(</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;eDP&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;9&#34;</span>
@ -2199,6 +2214,8 @@
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DVI-D-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;10&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-A-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;10&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;10&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;10&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DP-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;10&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">)</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">declare</span> -A <span style="color:#19177c">BAR_HEIGHT</span><span style="color:#666">=(</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;eDP&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
@ -2206,6 +2223,8 @@
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DVI-D-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-A-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DP-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;29&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">)</span>
</span></span><span style="display:flex;"><span><span style="color:#008000">declare</span> -A <span style="color:#19177c">BLOCKS</span><span style="color:#666">=(</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;eDP&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>eDP<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
@ -2213,6 +2232,8 @@
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DVI-D-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>DVI-D-0<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-A-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>HDMI-A-0<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>HDMI-1<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;HDMI-0&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>HDMI-0<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span><span style="color:#ba2121">&#34;DP-1&#34;</span><span style="color:#666">]=</span><span style="color:#ba2121">&#34;&lt;&lt;polybar-generate-modules(monitor=&#34;</span>DP-1<span style="color:#ba2121">&#34;)&gt;&gt;&#34;</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:#408080;font-style:italic"># Geolocation for some modules</span>
@ -4031,6 +4052,18 @@
</code></pre><h2 id="services-1">Services</h2>
<p><a href="https://www.gnu.org/software/shepherd/manual/html_node/index.html">GNU Shepherd</a> is a service management system for GNU Guix.</p>
<p>I previously used supervisor, but shepherd also seems pretty capable.</p>
<table>
<thead>
<tr>
<th>Guix dependency</th>
</tr>
</thead>
<tbody>
<tr>
<td>shepherd</td>
</tr>
</tbody>
</table>
<h3 id="music">Music</h3>
<table>
<thead>
@ -4392,6 +4425,11 @@
<td>android-file-transfer</td>
<td></td>
</tr>
<tr>
<td>desktop-misc</td>
<td>mcron</td>
<td></td>
</tr>
</tbody>
</table>
<p><a id="code-snippet--packages"></a></p>

View file

@ -266,7 +266,6 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
<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</span> <span style="color:#19177c">my/remote-server</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#19177c">string=</span> (<span style="color:#19177c">getenv</span> <span style="color:#ba2121">&#34;IS_REMOTE&#34;</span>) <span style="color:#ba2121">&#34;true&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;dev-digital&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;violet&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;viridian&#34;</span>)))
</span></span></code></pre></div><p>And the following is true if Emacs is run from termux on Android.</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">setq</span> <span style="color:#19177c">my/is-termux</span> (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> (<span style="color:#00f">*</span> <span style="color:#19177c">nonl</span>) <span style="color:#ba2121">&#34;com.termux&#34;</span> (<span style="color:#00f">*</span> <span style="color:#19177c">nonl</span>)) (<span style="color:#19177c">getenv</span> <span style="color:#ba2121">&#34;HOME&#34;</span>)))
@ -2074,21 +2073,24 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#008000">featurep</span> <span style="color:#19177c">&#39;treesit</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">treesit-language-source-alist</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>((<span style="color:#19177c">bash</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-bash&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cmake</span> <span style="color:#ba2121">&#34;https://github.com/uyha/tree-sitter-cmake&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">css</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-css&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">elisp</span> <span style="color:#ba2121">&#34;https://github.com/Wilfred/tree-sitter-elisp&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">go</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-go&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">html</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-html&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">javascript</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-javascript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-json&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">make</span> <span style="color:#ba2121">&#34;https://github.com/alemuller/tree-sitter-make&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">markdown</span> <span style="color:#ba2121">&#34;https://github.com/ikatyang/tree-sitter-markdown&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">python</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-python&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">toml</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-toml&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">tsx</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-typescript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;tsx/src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">typescript</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-typescript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;typescript/src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">yaml</span> <span style="color:#ba2121">&#34;https://github.com/ikatyang/tree-sitter-yaml&#34;</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapcar</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">item</span>)
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>(<span style="color:#666">,@</span><span style="color:#19177c">item</span> <span style="color:#800">nil</span> <span style="color:#800">nil</span> <span style="color:#666">,</span>(<span style="color:#19177c">executable-find</span> <span style="color:#ba2121">&#34;gcc&#34;</span>) <span style="color:#666">,</span>(<span style="color:#19177c">executable-find</span> <span style="color:#ba2121">&#34;c++&#34;</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>((<span style="color:#19177c">bash</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-bash&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cmake</span> <span style="color:#ba2121">&#34;https://github.com/uyha/tree-sitter-cmake&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">css</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-css&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">elisp</span> <span style="color:#ba2121">&#34;https://github.com/Wilfred/tree-sitter-elisp&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">go</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-go&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">html</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-html&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">javascript</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-javascript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-json&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">make</span> <span style="color:#ba2121">&#34;https://github.com/alemuller/tree-sitter-make&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">markdown</span> <span style="color:#ba2121">&#34;https://github.com/ikatyang/tree-sitter-markdown&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">python</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-python&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">toml</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-toml&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">tsx</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-typescript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;tsx/src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">typescript</span> <span style="color:#ba2121">&#34;https://github.com/tree-sitter/tree-sitter-typescript&#34;</span> <span style="color:#ba2121">&#34;master&#34;</span> <span style="color:#ba2121">&#34;typescript/src&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">yaml</span> <span style="color:#ba2121">&#34;https://github.com/ikatyang/tree-sitter-yaml&#34;</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">treesit-font-lock-level</span> <span style="color:#666">4</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">major-mode-remap-alist</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>((<span style="color:#19177c">typescript-mode</span> <span style="color:#666">.</span> <span style="color:#19177c">typescript-ts-mode</span>)
@ -3533,6 +3535,17 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-crypt-use-before-save-magic</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-tags-exclude-from-inheritance</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;crypt&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-crypt-key</span> <span style="color:#ba2121">&#34;C1EC867E478472439CC82410DE004F32AFA00205&#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-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">&#39;epg</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-gpg-program</span> <span style="color:#ba2121">&#34;gpg&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-config--program-alist</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#19177c">OpenPGP</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">epg-gpg-program</span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (&#34;gpg2&#34; . ,epg-gpg2-minimum-version)</span>
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;gpg&#34;</span> <span style="color:#666">.</span> ((<span style="color:#666">,</span><span style="color:#19177c">epg-gpg-minimum-version</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;2.0&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#666">,</span><span style="color:#19177c">epg-gpg2-minimum-version</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">CMS</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">epg-gpgsm-program</span>
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;gpgsm&#34;</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;2.0.4&#34;</span>)))))
</span></span></code></pre></div><p>This enables encryption for Org segments tagged <code>:crypt:</code>.</p>
<p>Another way to encrypt Org files is to save them with the extension <code>.org.gpg</code>. However, by default <a href="https://www.gnu.org/software/emacs/manual/html_mono/epa.html">EPA</a> always prompts for the key, which is not what I want when there is only one key to select. Hence the following advice:</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">defun</span> <span style="color:#19177c">my/epa--select-keys-around</span> (<span style="color:#19177c">fun</span> <span style="color:#19177c">prompt</span> <span style="color:#19177c">keys</span>)
@ -5094,14 +5107,17 @@ Didn&rsquo;t work out as I expected, so I&rsquo;ve made <code>org-journal-tags</
<thead>
<tr>
<th>Guix dependency</th>
<th>Disabled</th>
</tr>
</thead>
<tbody>
<tr>
<td>emacs-emacsql-sqlite3</td>
<td>t</td>
</tr>
<tr>
<td>graphviz</td>
<td></td>
</tr>
</tbody>
</table>
@ -6497,7 +6513,7 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">my/eshell-last-command-start-time</span> <span style="color:#800">nil</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">round</span> (<span style="color:#00f">*</span> <span style="color:#19177c">delta</span> <span style="color:#666">1000</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#666">0</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">default-directory</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shell-quote-argument</span> <span style="color:#19177c">default-directory</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-temp-buffer</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">call-process</span> <span style="color:#ba2121">&#34;bash&#34;</span> <span style="color:#800">nil</span> <span style="color:#800">t</span> <span style="color:#800">nil</span> <span style="color:#ba2121">&#34;-c&#34;</span> <span style="color:#19177c">cmd</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">thread-first</span> <span style="color:#ba2121">&#34;\n&#34;</span>
@ -8685,7 +8701,7 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">telega-server-libs-prefix</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-trim</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shell-command-to-string</span> <span style="color:#ba2121">&#34;guix build tdlib-1.8.16&#34;</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shell-command-to-string</span> <span style="color:#ba2121">&#34;guix build tdlib&#34;</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">telega-server-build</span> <span style="color:#ba2121">&#34;CC=gcc&#34;</span>))
</span></span></code></pre></div><p>Setting up the modeline. The default mode string doesn&rsquo;t look great with my other modeline modules, so I override that.</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">add-hook</span> <span style="color:#19177c">&#39;telega-load-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">telega-mode-line-mode</span>)
@ -8994,8 +9010,9 @@ Some other optimization settings:</p>
<p>The root is my <code>$HOME</code> directory.</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">defvar</span> <span style="color:#19177c">my/index-root</span> (<span style="color:#00f">concat</span> (<span style="color:#19177c">getenv</span> <span style="color:#ba2121">&#34;HOME&#34;</span>) <span style="color:#ba2121">&#34;/&#34;</span>))
</span></span></code></pre></div><p>The org tree is located in my <code>org-mode</code> folder in a file called <code>index.org</code>:</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">defvar</span> <span style="color:#19177c">my/index-file</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">&#34;/misc/index.org&#34;</span>))
<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">with-eval-after-load</span> <span style="color:#19177c">&#39;org</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">defvar</span> <span style="color:#19177c">my/index-file</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">&#34;/misc/index.org&#34;</span>)))
</span></span></code></pre></div><p>Each &ldquo;area&rdquo; is an Org header with the <code>folder</code> tag; the Org hierarchy forms the file tree. A header can have the following properties:</p>
<ul>
<li><code>machine</code> - a list of hostnames for which the node is active (or <code>nil</code>)</li>
@ -9798,7 +9815,7 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">setenv</span> <span style="color:#ba2121">&#34;GPG_AGENT_INFO&#34;</span> <span style="color:#800">nil</span>) <span style="color:#408080;font-style:italic">;; use emacs pinentry</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">auth-source-debug</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-gpg-program</span> <span style="color:#ba2121">&#34;gpg2&#34;</span>) <span style="color:#408080;font-style:italic">;; not necessary</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epg-gpg-program</span> <span style="color:#ba2121">&#34;gpg&#34;</span>) <span style="color:#408080;font-style:italic">;; not necessary</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">&#39;epa-file</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">epa-file-enable</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">epa-pinentry-mode</span> <span style="color:#19177c">&#39;loopback</span>)
@ -9935,7 +9952,7 @@ Some other optimization settings:</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">use-package</span> <span style="color:#19177c">elcord</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#008000">and</span> (<span style="color:#008000">or</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;indigo&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;violet&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;eminence&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;iris&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/slow-ssh</span>)
@ -10259,7 +10276,7 @@ I&rsquo;ve seen a couple of cases where people would swap their username and ema
<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">when</span> (<span style="color:#00f">fboundp</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/format-guix-dependencies</span>)
</span></span><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 style="color:#ba2121">&#34;emacs-next-tree-sitter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;emacs&#34;</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>
</div>

View file

@ -574,6 +574,11 @@
<td>vnstat</td>
<td></td>
</tr>
<tr>
<td>system</td>
<td>nss-certs</td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="openvpn">OpenVPN</h3>

View file

@ -449,8 +449,10 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
<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</span> <span style="color:#19177c">user-mail-address</span> <span style="color:#ba2121">&#34;thexcloud@gmail.com&#34;</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#00f">user-full-name</span> <span style="color:#ba2121">&#34;Pavel Korytov&#34;</span>)
</span></span></code></pre></div><p>Then, the problem with my Guix setup is that Emacs by default doesn&rsquo;t see the elisp files of notmuch, so here is a small workaround:</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">default-directory</span> <span style="color:#ba2121">&#34;/home/pavel/.guix-extra-profiles/mail/mail/share/emacs/site-lisp&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">normal-top-level-add-subdirs-to-load-path</span>))
<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">dir</span> <span style="color:#ba2121">&#34;/home/pavel/.guix-extra-profiles/mail/mail/share/emacs/site-lisp&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">file-directory-p</span> <span style="color:#19177c">dir</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">default-directory</span> <span style="color:#19177c">dir</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">normal-top-level-add-subdirs-to-load-path</span>))))
</span></span></code></pre></div><p>Some functions to toggle tags:</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">defun</span> <span style="color:#19177c">my/notmuch-toggle-trash</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 68 KiB