<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"><generator uri="https://gohugo.io/" version="0.101.0">Hugo</generator><title type="html">installing on A Scripter's Notes</title><subtitle type="html">Emacs, scripting and anything text oriented.</subtitle><link href="https://scripter.co/tags/installing/" rel="alternate" type="text/html" title="HTML"/><link href="https://scripter.co/tags/installing/index.xml" rel="alternate" type="application/rss+xml" title="RSS"/><link href="https://scripter.co/tags/installing/atom.xml" rel="self" type="application/atom+xml" title="Atom"/><link href="https://scripter.co/tags/installing/jf2feed.json" rel="alternate" type="application/jf2feed+json" title="jf2feed"/><updated>2026-04-22T08:24:58-04:00</updated><author><name>Kaushal Modi</name><email>kaushal.modi@gmail.com</email></author><id>https://scripter.co/tags/installing/</id><entry><title type="html">Downloading Nim</title><link href="https://scripter.co/downloading-nim/?utm_source=atom_feed" rel="alternate" type="text/html"/><link href="https://scripter.co/binding-nim-to-c-plus-plus-std-list/?utm_source=atom_feed" rel="related" type="text/html" title="Binding Nim to C++ std::list"/><link href="https://scripter.co/creating-a-patch-file-using-magit/?utm_source=atom_feed" rel="related" type="text/html" title="Creating a patch file using Magit"/><link href="https://scripter.co/presenting-tomelr/?utm_source=atom_feed" rel="related" type="text/html" title="Presenting tomelr!"/><link href="https://scripter.co/defining-tomelr/?utm_source=atom_feed" rel="related" type="text/html" title="Defining tomelr – A library for converting Lisp expressions to TOML"/><link href="https://scripter.co/parsing-backlinks-in-hugo/?utm_source=atom_feed" rel="related" type="text/html" title="Parsing Backlinks in Hugo"/><id>https://scripter.co/downloading-nim/</id><author><name>Kaushal Modi</name></author><published>2022-05-10T10:45:00-04:00</published><updated>2022-05-10T10:45:00-04:00</updated><content type="html"><![CDATA[<blockquote>Download and &ldquo;installing&rdquo; Nim using just <code>curl</code> and <code>tar</code>.</blockquote><p>Today I saw <a href="https://mastodon.art/@hyperlinkyourheart/108277257649997561">this toot by user <em>@hyperlinkyourheart</em></a> regarding
installing Nim:</p>
<blockquote>
<p>Not a great experience so far though - choosenim is broken on Ubuntu
22.04 based systems ..</p>
</blockquote>
<p>..  and that inspired this quick post. I would encourage the user
posting that to bring up that issue on the <a href="https://forum.nim-lang.org/">Nim Forum</a>, but here&rsquo;s a
quick stop-gap solution to install Nim using just <code>curl</code> and <code>tar</code>.</p>
<ol>
<li>Copy and save the below script somewhere, let&rsquo;s say as
<code>~/scripts/download_nim.sh</code>.
<mark>Update the <code>nim_install_dir</code> variable
in there to your choice.</mark> That is set to <code class="code-inline language-bash"><span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/nim</code> by default.
<a id="code-snippet--nim-download"></a>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="c1"># Running this script will download and extract nim installation to ~/nim/${nim_version}.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># To uninstall nim, just remove the ~/nim directory.</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">set</span> -euo pipefail <span class="c1"># http://redsymbol.net/articles/unofficial-bash-strict-mode</span>
</span></span><span class="line"><span class="cl"><span class="nv">IFS</span><span class="o">=</span><span class="s1">$&#39;\n\t&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">nim_version</span><span class="o">=</span><span class="s2">&#34;1.6.6&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">nim_archive_url</span><span class="o">=</span><span class="s2">&#34;https://nim-lang.org/download/nim-</span><span class="si">${</span><span class="nv">nim_version</span><span class="si">}</span><span class="s2">-linux_x64.tar.xz&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">nim_install_dir</span><span class="o">=</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">HOME</span><span class="si">}</span><span class="s2">/nim&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">tmp_dir</span><span class="o">=</span><span class="s2">&#34;/tmp/</span><span class="si">${</span><span class="nv">USER</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">nim_download_dir</span><span class="o">=</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">tmp_dir</span><span class="si">}</span><span class="s2">/nim-</span><span class="si">${</span><span class="nv">nim_version</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">nim_version_dir</span><span class="o">=</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_install_dir</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">nim_version</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">mkdir -p <span class="s2">&#34;</span><span class="si">${</span><span class="nv">tmp_dir</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="s2">&#34;</span><span class="si">${</span><span class="nv">tmp_dir</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">||</span> <span class="nb">exit</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Downloading nim archive from </span><span class="si">${</span><span class="nv">nim_archive_url</span><span class="si">}</span><span class="s2"> ..&#34;</span>
</span></span><span class="line"><span class="cl">curl -RLs <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_archive_url</span><span class="si">}</span><span class="s2">&#34;</span> -o <span class="s2">&#34;nim.tar.xz&#34;</span>
</span></span><span class="line"><span class="cl">tar xf nim.tar.xz <span class="c1"># Extracts to ${nim_download_dir}.</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[[</span> -d <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">]]</span>
</span></span><span class="line"><span class="cl"><span class="k">then</span>
</span></span><span class="line"><span class="cl">    rm -rf <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl">mkdir -p <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">/doc&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">||</span> <span class="nb">exit</span>
</span></span><span class="line"><span class="cl">cp -fP <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_download_dir</span><span class="si">}</span><span class="s2">&#34;</span>/doc/*.css ./doc/. <span class="c1"># Required for &#39;nim doc ..&#39; to work</span>
</span></span><span class="line"><span class="cl">cp -rfP <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_download_dir</span><span class="si">}</span><span class="s2">&#34;</span>/bin .
</span></span><span class="line"><span class="cl">cp -rfP <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_download_dir</span><span class="si">}</span><span class="s2">&#34;</span>/lib .
</span></span><span class="line"><span class="cl">cp -rfP <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_download_dir</span><span class="si">}</span><span class="s2">&#34;</span>/compiler . <span class="c1"># Required for &#39;nimterop&#39; package</span>
</span></span><span class="line"><span class="cl">cp -rfP <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_download_dir</span><span class="si">}</span><span class="s2">&#34;</span>/config .
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_install_dir</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">||</span> <span class="nb">exit</span>
</span></span><span class="line"><span class="cl">find . -name <span class="s2">&#34;bin&#34;</span> -type l -delete
</span></span><span class="line"><span class="cl">ln -fs <span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">&#34;</span>/bin ./bin
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Finished downloading </span><span class="k">$(</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">nim_version_dir</span><span class="si">}</span><span class="s2">&#34;</span>/bin/nim -v <span class="p">|</span> head -n 1<span class="k">)</span><span class="s2">&#34;</span>
</span></span></code></pre></div><div class="src-block-caption">
  <span class="src-block-number"><a href="#code-snippet--nim-download">Code Snippet 1</a>:</span>
  Nim download script
</div>
</li>
<li>Make the script an executable: <code class="code-inline language-shell">chmod +x ~/scripts/download_nim.sh</code></li>
<li>Run <code>~/scripts/download_nim.sh</code>.. This will download the <code>nim</code>
compiler and its standard libraries (totaling to only 40MB!) to the
path set in <code class="code-inline language-bash"><span class="si">${</span><span class="nv">nim_install_dir</span><span class="si">}</span></code>.</li>
<li>Make sure that the path in <code class="code-inline language-bash"><span class="si">${</span><span class="nv">nim_install_dir</span><span class="si">}</span></code> is added to your <strong>PATH</strong>.</li>
<li>Run <code>nim --version</code> to check the installation.
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Nim Compiler Version 1.6.6 [Linux: amd64]
</span></span><span class="line"><span class="cl">Compiled at 2022-05-05
</span></span><span class="line"><span class="cl">Copyright (c) 2006-2021 by Andreas Rumpf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">git hash: 0565a70eab02122ce278b98181c7d1170870865c
</span></span><span class="line"><span class="cl">active boot switches: -d:release
</span></span></code></pre></div></li>
</ol>
<p>Now head over to <a href="https://nim-lang.org/learn.html">https://nim-lang.org/learn.html</a> to learn this
awesome ❤️ language!</p>
]]></content><category scheme="https://scripter.co/categories/programming" term="programming" label="programming"/><category scheme="https://scripter.co/tags/nim" term="nim" label="nim"/><category scheme="https://scripter.co/tags/installing" term="installing" label="installing"/><category scheme="https://scripter.co/tags/100daystooffload" term="100daystooffload" label="100DaysToOffload"/></entry></feed>