aboutsummaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
Diffstat (limited to 'public')
-rw-r--r--public/index.html2
-rw-r--r--public/index.xml11
-rw-r--r--public/post/index.html14
-rw-r--r--public/post/index.xml11
-rw-r--r--public/post/nixos-p1/boot.pngbin0 -> 12893 bytes
-rw-r--r--public/post/nixos-p1/dwl.pngbin0 -> 3082421 bytes
-rw-r--r--public/post/nixos-p1/fox.jpgbin0 -> 30886 bytes
-rw-r--r--public/post/nixos-p1/index.html431
-rw-r--r--public/post/nixos-p1/rice.pngbin0 -> 1670023 bytes
-rw-r--r--public/sitemap.xml18
-rw-r--r--public/tags/index.html3
-rw-r--r--public/tags/index.xml11
-rw-r--r--public/tags/index/index.xml2
-rw-r--r--public/tags/technology/index.html104
-rw-r--r--public/tags/technology/index.xml20
15 files changed, 616 insertions, 11 deletions
diff --git a/public/index.html b/public/index.html
index 5d8d0dd..0e45c95 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
- <meta name="generator" content="Hugo 0.108.0"><title>Kumar Damani - Home</title>
+ <meta name="generator" content="Hugo 0.107.0"><title>Kumar Damani - Home</title>
<meta name="description" content="Git, email, resume etc.">
<meta name="viewport" content="width=device-width, initial-scale=1">
diff --git a/public/index.xml b/public/index.xml
index da35b8c..9539b2c 100644
--- a/public/index.xml
+++ b/public/index.xml
@@ -6,7 +6,16 @@
<description>Recent content on Kumar Damani - Home</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Tue, 29 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/index.xml" rel="self" type="application/rss+xml" />
+ <lastBuildDate>Fri, 24 Mar 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Adventures in NixOS - Part 1</title>
+ <link>https://kumardamani.net/post/nixos-p1/</link>
+ <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
+
+ <guid>https://kumardamani.net/post/nixos-p1/</guid>
+ <description>&lt;p&gt;Almost a guide to getting started with NixOS the modern (2023) way.&lt;/p&gt;</description>
+ </item>
+
<item>
<title>Romanticism in Programming</title>
<link>https://kumardamani.net/post/programming-as-art/</link>
diff --git a/public/post/index.html b/public/post/index.html
index f703434..2f62aa1 100644
--- a/public/post/index.html
+++ b/public/post/index.html
@@ -45,6 +45,20 @@
<article class="post">
<header class="post__header">
+ <h1><a href="https://kumardamani.net/post/nixos-p1/">Adventures in NixOS - Part 1</a></h1>
+ <p class="post__meta">
+ Kumar Damani,
+ <span class="date">24 March 2023</span>
+ </p>
+ </header>
+
+ <section class="post__summary">
+ <p>Almost a guide to getting started with NixOS the modern (2023) way.</p>
+ </section>
+ </article>
+
+ <article class="post">
+ <header class="post__header">
<h1><a href="https://kumardamani.net/post/programming-as-art/">Romanticism in Programming</a></h1>
<p class="post__meta">
Kumar Damani,
diff --git a/public/post/index.xml b/public/post/index.xml
index e40facd..be7d5ab 100644
--- a/public/post/index.xml
+++ b/public/post/index.xml
@@ -6,7 +6,16 @@
<description>Recent content in Posts on Kumar Damani - Home</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Tue, 29 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/post/index.xml" rel="self" type="application/rss+xml" />
+ <lastBuildDate>Fri, 24 Mar 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/post/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Adventures in NixOS - Part 1</title>
+ <link>https://kumardamani.net/post/nixos-p1/</link>
+ <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
+
+ <guid>https://kumardamani.net/post/nixos-p1/</guid>
+ <description>&lt;p&gt;Almost a guide to getting started with NixOS the modern (2023) way.&lt;/p&gt;</description>
+ </item>
+
<item>
<title>Romanticism in Programming</title>
<link>https://kumardamani.net/post/programming-as-art/</link>
diff --git a/public/post/nixos-p1/boot.png b/public/post/nixos-p1/boot.png
new file mode 100644
index 0000000..4e3d972
--- /dev/null
+++ b/public/post/nixos-p1/boot.png
Binary files differ
diff --git a/public/post/nixos-p1/dwl.png b/public/post/nixos-p1/dwl.png
new file mode 100644
index 0000000..8ecbe4d
--- /dev/null
+++ b/public/post/nixos-p1/dwl.png
Binary files differ
diff --git a/public/post/nixos-p1/fox.jpg b/public/post/nixos-p1/fox.jpg
new file mode 100644
index 0000000..3ace57f
--- /dev/null
+++ b/public/post/nixos-p1/fox.jpg
Binary files differ
diff --git a/public/post/nixos-p1/index.html b/public/post/nixos-p1/index.html
new file mode 100644
index 0000000..1b69d88
--- /dev/null
+++ b/public/post/nixos-p1/index.html
@@ -0,0 +1,431 @@
+<!DOCTYPE html>
+<html lang="en">
+
+ <head><title>Adventures in NixOS - Part 1 &ndash; Kumar Damani - Home</title>
+<meta name="description" content="Git, email, resume etc.">
+
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta charset="UTF-8"/>
+
+
+
+
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css" integrity="sha512-1sCRPdkRXhBV2PBLUdRb4tMg1w2YPf37qatUFeS7zlBy7jJI8Lf4VHwWfZZfpXtYSLy85pkm9GaYVYMfw5BC1A==" crossorigin="anonymous" />
+
+
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.9.1/css/academicons.min.css" integrity="sha512-b1ASx0WHgVFL5ZQhTgiPWX+68KjS38Jk87jg7pe+qC7q9YkEtFq0z7xCglv7qGIs/68d3mAp+StfC8WKC5SSAg==" crossorigin="anonymous" />
+
+
+<link rel="stylesheet" href="https://kumardamani.net/css/palettes/gruvbox-dark.css">
+<link rel="stylesheet" href="https://kumardamani.net/css/risotto.css">
+<link rel="stylesheet" href="https://kumardamani.net/css/custom.css">
+</head>
+
+ <body>
+ <div class="page">
+
+ <header class="page__header"><h1 class="page__logo"><a href="https://kumardamani.net/" class="page__logo-inner">Kumar Damani - Home</a></h1>
+<nav class="page__nav main-nav">
+ <ul>
+
+
+ <li class="main-nav__item"><a class="nav-main-item active" href="https://kumardamani.net/post/" title="Posts">Posts</a></li>
+
+ </ul>
+</nav>
+
+</header>
+
+ <section class="page__body">
+ <header class="content__header">
+ <h1>Adventures in NixOS - Part 1</h1>
+ </header>
+ <div class="content__body">
+ <p>Almost a guide to getting started with NixOS the modern (2023) way.</p>
+<p>There seems to be a shortage of written guides on the Internet for setting up NixOS
+the &ldquo;modern&rdquo; way - Flakes + Home Manager. It doesn&rsquo;t help that Nix&rsquo;s official
+docs are very disjointed so hopefully this will fill in some gaps that I observed
+when setting it all up.</p>
+<p><img src="fox.jpg" alt="meme"></p>
+<blockquote>
+<p>Warning: NixOS is not exactly beginner friendly -
+you should have familiarity installing Linux distros before trying this.</p>
+</blockquote>
+<h2 id="but-why-nixos">But Why NixOS?</h2>
+<p>Eh&hellip; FOMO regarding all the <a href="https://www.google.com/search?q=nixos+memes&amp;tbm=isch">memes</a>.</p>
+<p>There is one particular feature that is intriguing -
+the ability to roll-back your entire system (not incl. BIOS) in case of a
+misconfiguration or a broken update. <strong>You can&rsquo;t do this with Ansible.</strong>
+This allows you (in theory) to get the benefits of a rolling release as well as the
+stability benefits of a traditional distro.</p>
+<blockquote>
+<p>It takes the idea of reproducible builds, and extends it to the OS.</p>
+</blockquote>
+<p>For example, NixOS will present you with all previous &ldquo;builds&rdquo; at boot time
+for you to revert to in case something gets messed up.
+<img src="boot.png" alt="boot prompt"></p>
+<h2 id="things-i-want-to-explore-as-part-of-this-exercise">Things I want to explore as part of this exercise:</h2>
+<ol>
+<li>How hard is it to go from a minimal install to productive?
+At minimum I need a graphical environment with working vol, mic, camera, wifi,
+and hibernation.
+Is it harder than doing the same in something like Manjaro?</li>
+<li>Is Wayland truly ready?</li>
+<li>Try out <a href="https://github.com/djpohly/dwl"><code>dwl</code></a> (the Wayland port of <code>dwm</code> by the <a href="https://suckless.org">suckless</a> folks)</li>
+</ol>
+<h2 id="constraints">Constraints</h2>
+<ol>
+<li>I want to stick to the &ldquo;Nix&rdquo; way of doing things as much as possible
+<em>where it makes sense to me</em>.</li>
+<li>Stick to Wayland only applications as much as possible.</li>
+</ol>
+<h2 id="spoilers-end-result">Spoilers! (End result)</h2>
+<p><img src="rice.png" alt="my rice">
+(Probably too ugly for r/unixporn, but works for me :)</p>
+<h2 id="installation">Installation</h2>
+<h3 id="getting-a-live-usb-going">Getting a Live USB going</h3>
+<ul>
+<li>I used the <a href="https://nixos.org/download.html#nixos-iso">minimal iso</a>.</li>
+<li>Create a bootable USB with the usual - <code>sudo dd if=/path/to/iso of=/dev/sdX bs=4M</code>.</li>
+<li>Boot up.</li>
+<li>Then start following the steps for <a href="https://nixos.org/manual/nixos/stable/index.html#sec-installation-manual">manual installation</a>
+from the official guide to complete the install.</li>
+</ul>
+<blockquote>
+<p>Make sure to give SWAP as much space as your memory capacity for hibernation to work properly.</p>
+</blockquote>
+<blockquote>
+<p>Wifi did not work for me out of the box. So I used my phone to tether via USB.</p>
+</blockquote>
+<h2 id="first-boot">First boot</h2>
+<p>If everything went well, you should be presented with a TTY prompting you to login:</p>
+<pre tabindex="0"><code>NixOS ...
+Login: &lt;your username&gt;
+Password: &lt;your password&gt;
+</code></pre><p>Once you login, you will still just have a TTY, but we can now go ahead and start
+installing our graphical environment.</p>
+<h2 id="housekeeping">Housekeeping</h2>
+<ul>
+<li>You should have two NixOS config files in <code>/etc/nixos/</code>:</li>
+</ul>
+<pre tabindex="0"><code>configuration.nix
+hardware-configuration.nix
+</code></pre><ul>
+<li>
+<p>Edit the <code>configuration.nix</code> file by setting the correct values for hostname, networking, timezone and users. I also add a few basic system-wide packages here such as <code>git, rsync, neovim, htop</code> etc.</p>
+</li>
+<li>
+<p>To <em>apply and use</em> your changes to any of these files you need to run:</p>
+</li>
+</ul>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nixos-rebuild switch
+</span></span></code></pre></div><ul>
+<li>Since we want all our configuration to be version controlled,
+I copied these files to live under my user&rsquo;s config:
+<code>~/.config/{nix, nixpkgs}/</code>:</li>
+</ul>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cp /etc/nix/nix.conf ~/.config/nix/nix.conf
+</span></span><span style="display:flex;"><span>cp /etc/nixos/configuration.nix ~/.config/nixpkgs/configuration.nix
+</span></span></code></pre></div><p>Nix will now use these user-specific files to read its config :)</p>
+<h3 id="flakes-support">Flakes Support</h3>
+<p>Nix (the pkg mgr) does not come with Flakes support out-of-the-box.
+So we need to enable it:</p>
+<ol>
+<li>In <code>~/.config/nix/nix.conf</code> add:</li>
+</ol>
+<pre tabindex="0"><code>experimental-features = nix-command flakes
+</code></pre><ol start="2">
+<li>Apply it:</li>
+</ol>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nixos-rebuild switch
+</span></span></code></pre></div><p>Read about <a href="https://nixos.wiki/wiki/Flakes">Flakes</a>.</p>
+<h3 id="home-manager-support">Home Manager Support</h3>
+<p>Now we can install the Home-Manager flake.</p>
+<ol>
+<li>Init our base flake:</li>
+</ol>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd ~/.config/nixpkgs
+</span></span><span style="display:flex;"><span>nix flake init
+</span></span></code></pre></div><p>This should generate two files:</p>
+<pre tabindex="0"><code>flake.nix
+flake.lock
+</code></pre><ol start="2">
+<li>Next we tell <code>flake.nix</code> to manage all our configuration (system + home) for our system:</li>
+</ol>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>{
+</span></span><span style="display:flex;"><span> description <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;NixOS configuration&#34;</span>;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span> inputs <span style="color:#f92672">=</span> {
+</span></span><span style="display:flex;"><span> nixpkgs<span style="color:#f92672">.</span>url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;github:nixos/nixpkgs/nixos-unstable&#34;</span>;
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;github:nix-community/home-manager&#34;</span>;
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>inputs<span style="color:#f92672">.</span>nixpkgs<span style="color:#f92672">.</span>follows <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;nixpkgs&#34;</span>;
+</span></span><span style="display:flex;"><span> nixos-hardware<span style="color:#f92672">.</span>url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;github:NixOS/nixos-hardware/master&#34;</span>;
+</span></span><span style="display:flex;"><span> };
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span> outputs <span style="color:#f92672">=</span> inputs<span style="color:#f92672">@</span>{ nixpkgs<span style="color:#f92672">,</span> home-manager<span style="color:#f92672">,</span> nixos-hardware<span style="color:#f92672">,</span> <span style="color:#f92672">...</span> }: {
+</span></span><span style="display:flex;"><span> nixosConfigurations <span style="color:#f92672">=</span> {
+</span></span><span style="display:flex;"><span> <span style="color:#75715e"># Change below to use your hostname from configuration.nix</span>
+</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;art-sr&#34;</span> <span style="color:#f92672">=</span> nixpkgs<span style="color:#f92672">.</span>lib<span style="color:#f92672">.</span>nixosSystem {
+</span></span><span style="display:flex;"><span> system <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;x86_64-linux&#34;</span>;
+</span></span><span style="display:flex;"><span> modules <span style="color:#f92672">=</span> [
+</span></span><span style="display:flex;"><span> <span style="color:#e6db74">./configuration.nix</span>
+</span></span><span style="display:flex;"><span> nixos-hardware<span style="color:#f92672">.</span>nixosModules<span style="color:#f92672">.</span>framework
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>nixosModules<span style="color:#f92672">.</span>home-manager
+</span></span><span style="display:flex;"><span> {
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>useGlobalPkgs <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>useUserPackages <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
+</span></span><span style="display:flex;"><span> <span style="color:#75715e"># Change below to use your username from configuration.nix</span>
+</span></span><span style="display:flex;"><span> home-manager<span style="color:#f92672">.</span>users<span style="color:#f92672">.</span>kdam0 <span style="color:#f92672">=</span> <span style="color:#f92672">import</span> <span style="color:#e6db74">./home.nix</span>;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span> <span style="color:#75715e"># Optionally, use home-manager.extraSpecialArgs to pass</span>
+</span></span><span style="display:flex;"><span> <span style="color:#75715e"># arguments to home.nix</span>
+</span></span><span style="display:flex;"><span> }
+</span></span><span style="display:flex;"><span> ];
+</span></span><span style="display:flex;"><span> };
+</span></span><span style="display:flex;"><span> };
+</span></span><span style="display:flex;"><span> };
+</span></span><span style="display:flex;"><span>}
+</span></span></code></pre></div><blockquote>
+<p>&ldquo;art-sr&rdquo; is my hostname for this machine.</p>
+</blockquote>
+<p>In my case, I also have the following two lines specifically to load settings for my hardware:</p>
+<pre tabindex="0"><code> nixos-hardware.url = &#34;github:NixOS/nixos-hardware/master&#34;;
+ ...
+ nixos-hardware.nixosModules.framework
+</code></pre><p>you will need to modify these values based on your <a href="https://github.com/NixOS/nixos-hardware">hardware support</a>.</p>
+<ol start="3">
+<li>Create a <code>~/.config/nixpkgs/home.nix</code> file with your values:</li>
+</ol>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>{ config<span style="color:#f92672">,</span> pkgs<span style="color:#f92672">,</span> <span style="color:#f92672">...</span>}:
+</span></span><span style="display:flex;"><span>{
+</span></span><span style="display:flex;"><span> home<span style="color:#f92672">.</span>username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;kdam0&#34;</span>;
+</span></span><span style="display:flex;"><span> home<span style="color:#f92672">.</span>homeDirectory <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/home/kdam0&#34;</span>;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span> programs<span style="color:#f92672">.</span>home-manager<span style="color:#f92672">.</span>enable <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
+</span></span><span style="display:flex;"><span> home<span style="color:#f92672">.</span>stateVersion <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;22.11&#34;</span>;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span> services<span style="color:#f92672">.</span>gpg-agent <span style="color:#f92672">=</span> {
+</span></span><span style="display:flex;"><span> enable <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
+</span></span><span style="display:flex;"><span> defaultCacheTtl <span style="color:#f92672">=</span> <span style="color:#ae81ff">1800</span>;
+</span></span><span style="display:flex;"><span> enableSshSupport <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
+</span></span><span style="display:flex;"><span> };
+</span></span><span style="display:flex;"><span>}
+</span></span></code></pre></div><ol start="4">
+<li>Apply:</li>
+</ol>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nixos-rebuild switch
+</span></span></code></pre></div><blockquote>
+<p>It took a few attempts to get NixOS to re-build successfully.
+I ran into a few different issues involving users, and hostnames
+while following the official docs until I arrived at the configs above which worked.</p>
+</blockquote>
+<p>Read about <a href="https://nix-community.github.io/home-manager/index.html#ch-nix-flakes">Home Manager flake</a>.</p>
+<p><strong>This would be a good time init a git repo in <code>~/.config/nixpkgs/</code> and publish your progress.</strong></p>
+<h2 id="setting-up-the-gui">Setting up the GUI</h2>
+<h3 id="window-manager--bar--system-info">Window Manager + bar + system info.</h3>
+<p>Getting <code>dwl</code> is easy enough. In my <code>home.nix</code>:</p>
+<pre tabindex="0"><code> home.packages = [
+ pkgs.dwl
+ ...
+ ];
+</code></pre><p>This will install <code>dwl</code> on a rebuild.
+Then I can run it with <code>dwl</code>.</p>
+<p>Oh it fails&hellip;something about permissions&hellip;
+In <code>~/.config/nixpkgs/configuration.nix</code> make sure you have:</p>
+<pre tabindex="0"><code> security.polkit.enable = true;
+</code></pre><p>Oh it fails again with GLE errors :( Add:</p>
+<pre tabindex="0"><code> hardware.opengl = {
+ enable = true;
+ driSupport = true;
+ };
+</code></pre><p><strong>Sweet now it launches!</strong></p>
+<p>But of course I need to configure the keys - that&rsquo;s the whole point of a WM.
+Additionally, <code>dwl</code> requires a re-build on every config change&hellip;</p>
+<p><strong>How do I tell Nix to use my config file while installing/building <code>dwl</code>?</strong></p>
+<p>Lucking all packages (<code>pkgs.*</code>) build files are defined on their GitHub.
+We can see that we are allowed to pass in a <code>conf</code> argument to
+<a href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/window-managers/dwl/default.nix">this</a>
+file.</p>
+<p>After a bit of digging around, I arrived at how to do it:</p>
+<ol>
+<li>First copy your <code>config.h</code> to <code>~/.config/nixpkgs/dwl/config.h</code>.</li>
+<li>Then point to it in your <code>home.nix</code>:</li>
+</ol>
+<pre tabindex="0"><code> home.packages = [
+ (pkgs.dwl.override {
+ # trying to supply config.home.homeDirectory here leads to &#34;impure&#34; usage.
+ # so disabling it for now.
+ # conf = (builtins.readFile &#34;${config.home.homeDirectory}/.config/dwl/config.h&#34;);
+ conf = ./dwl/config.h;
+ })
+ ...
+ ];
+</code></pre><blockquote>
+<p>I know I can just clone the source myself and build it, but I like to use the default
+package manager whenever possible to manage packages.</p>
+</blockquote>
+<p>Of course since <code>dwl</code> is as minimal as it gets, it does not ship with a bar.
+We have many options for which bar to use,
+I have very little use for a bar, so I kept it very simple and went with <code>somebar</code>:</p>
+<pre tabindex="0"><code> home.packages = [
+ ...
+ pkgs.somebar
+ ...
+ ];
+</code></pre><p>If you want status info on your bar you can use something like <code>someblocks</code> - which will
+let you script simple scripts with text output you want displayed in each block.
+This will need to be cloned and built manually as it is not available in the Nix repos.</p>
+<p>Oh but you probably don&rsquo;t have <code>make</code> or any requirements to actually build it&hellip;fear not:</p>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nix-shell -p gnumake
+</span></span></code></pre></div><p>which put you in a temporary environment with all the common build tools available.
+Now you can:</p>
+<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo make install
+</span></span></code></pre></div><p><code>wbg</code> is a simple background setter for Wayland&hellip;&hellip;aaaand BAM!</p>
+<p><img src="dwl.png" alt="dwl pic"></p>
+<h3 id="terminal">Terminal</h3>
+<p>I use <a href="https://codeberg.org/dnkl/foot"><code>foot</code></a>.</p>
+<p>Create the config file in <code>~/.config/nixpkgs/foot/foot.ini</code>:</p>
+<pre tabindex="0"><code># for transparency #
+[colors]
+alpha=0.7
+</code></pre><p>Use it in <code>home.nix</code>:</p>
+<pre tabindex="0"><code> home.file.&#34;.config/foot/foot.ini&#34;.source = ../../common/foot/foot.ini;
+</code></pre><blockquote>
+<p>I use this pattern for pretty much all my <em>dotfiles</em>:</p>
+</blockquote>
+<pre tabindex="0"><code> # script that sets a bg.
+ home.file.&#34;bg.sh&#34;.source = common/bg.sh;
+ # script that starts my gui env.
+ home.file.&#34;start.sh&#34;.source = common/start.sh;
+ # foot config
+ home.file.&#34;.config/foot/foot.ini&#34;.source = common/foot/foot.ini;
+ # wofi config (app launcher)
+ home.file.&#34;.config/wofi/style.css&#34;.source = common/wofi/style.css;
+ # mako config (notifications)
+ home.file.&#34;.config/mako/config&#34;.source = common/mako/config;
+</code></pre><h3 id="sound">Sound</h3>
+<p>In my <code>configuration.nix</code>:</p>
+<pre tabindex="0"><code> security.rtkit.enable = true;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ wireplumber.enable = true;
+ media-session.enable = false;
+ jack.enable = true;
+ systemWide = false;
+ };
+</code></pre><h3 id="nextcloud">Nextcloud</h3>
+<p>I want a purely CLI way to handle this, and a periodic sync is sufficient for me.
+We do this with <code>systemd-timers</code> (Nix advises against <code>cron</code>).
+In my <code>home.nix</code>:</p>
+<pre tabindex="0"><code> systemd.user.services = {
+ nextcloud-sync = {
+ Unit = {
+ Description = &#34;Auto sync Nextcloud&#34;;
+ After = &#34;network-online.target&#34;;
+ };
+ Service = {
+ Type = &#34;simple&#34;;
+ EnvironmentFile = &#34;${config.home.homeDirectory}/.nextcloud.env&#34;;
+ ExecStart = &#39;&#39;
+ ${pkgs.nextcloud-client}/bin/nextcloudcmd \
+ -h --non-interactive \
+ --user &#34;&#39;&#39;${NEXTCLOUD_USER}&#34; \
+ --password &#34;&#39;&#39;${NEXTCLOUD_PASSWORD}&#34; \
+ &#39;&#39;${NEXTCLOUD_DIR} \
+ &#39;&#39;${NEXTCLOUD_URL}
+ &#39;&#39;;
+ TimeoutStopSec = &#34;180&#34;;
+ KillMode = &#34;process&#34;;
+ KillSignal = &#34;SIGINT&#34;;
+ };
+ Install.WantedBy = [&#34;multi-user.target&#34;];
+ };
+ };
+ systemd.user.timers = {
+ nextcloud-sync = {
+ Unit.Description = &#34;Automatic sync files with Nextcloud when booted up after 5 minutes then rerun every 10 minutes&#34;;
+ Timer.OnUnitActiveSec = &#34;10min&#34;;
+ Install.WantedBy = [&#34;multi-user.target&#34; &#34;timers.target&#34;];
+ };
+ };
+ systemd.user.startServices = true;
+</code></pre><h2 id="conclusions">Conclusions</h2>
+<ol>
+<li>Yes setting things up from a minimal iso is harder than in Manjaro.
+Although I got everything I wanted working, there were many times I felt
+like giving up. (Aside: I am <em>so grateful</em> for Manjaro, and Arch wikis).
+That said, I expect this friction is a one-time cost for building familiarity with Nix,
+and well worth the benefits that come with it.</li>
+<li>You bet Wayland is ready. Multi-monitor works out-of-the-box,
+all my apps support it, and things just <em>feel</em> more polished than I have ever felt with Xorg.</li>
+<li><code>dwl</code> is as awesome as I had hoped! This is my daily driver now.</li>
+</ol>
+<h2 id="my-configs">My configs</h2>
+<p>All the configs discussed (and more) are in my <a href="https://gitlab.com/kdam0/dotfiles-nix">nixdotfiles repo</a>.</p>
+ </div>
+ <footer class="content__footer"></footer>
+
+ </section>
+
+ <section class="page__aside">
+ <div class="aside__about">
+<div class="aside__about">
+ <img class="about__logo" src="https://kumardamani.net/images/rice.svg" alt="Logo">
+<h1 class="about__title">Links</h1>
+<p class="about__description">Git, email, resume etc.</p>
+</div>
+
+
+<ul class="aside__social-links">
+
+ <li>
+ <a href="https://gitlab.com/kdam0/" rel="me" aria-label="GitLab" title="GitLab"><i class="fa-brands fa-gitlab" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+ <li>
+ <a href="mailto:me@kumardamani.net" rel="me" aria-label="Email" title="Email"><i class="fa-solid fa-envelope" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+ <li>
+ <a href="/KumarDamaniCV.pdf" rel="me" aria-label="Resume" title="Resume"><i class="fa-solid fa-file" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+</ul>
+</div>
+ <hr>
+ <div class="aside__content">
+ <p>Guide to getting started with NixOS the modern way.</p>
+
+ <p>
+ By Kumar Damani,
+ 2023-03-24
+ </p>
+
+
+ </div>
+ </section>
+
+ <footer class="page__footer"><p>
+
+
+
+
+
+
+
+
+
+
+</p>
+<br /><br />
+<p class="copyright"></p>
+<p class="advertisement">Powered by <a href="https://gohugo.io/">hugo</a> and <a href="https://github.com/joeroe/risotto">risotto</a>.</p>
+</footer>
+
+ </div>
+ </body>
+
+</html>
diff --git a/public/post/nixos-p1/rice.png b/public/post/nixos-p1/rice.png
new file mode 100644
index 0000000..4fd97cf
--- /dev/null
+++ b/public/post/nixos-p1/rice.png
Binary files differ
diff --git a/public/sitemap.xml b/public/sitemap.xml
index e685ce3..f644f02 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -3,19 +3,25 @@
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://kumardamani.net/</loc>
- <lastmod>2022-11-29T00:00:00+00:00</lastmod>
+ <lastmod>2023-03-24T00:00:00+00:00</lastmod>
<priority>0</priority>
</url><url>
- <loc>https://kumardamani.net/tags/personal/</loc>
- <lastmod>2022-11-29T00:00:00+00:00</lastmod>
+ <loc>https://kumardamani.net/post/nixos-p1/</loc>
+ <lastmod>2023-03-24T00:00:00+00:00</lastmod>
</url><url>
<loc>https://kumardamani.net/post/</loc>
- <lastmod>2022-11-29T00:00:00+00:00</lastmod>
+ <lastmod>2023-03-24T00:00:00+00:00</lastmod>
</url><url>
- <loc>https://kumardamani.net/post/programming-as-art/</loc>
+ <loc>https://kumardamani.net/tags/</loc>
+ <lastmod>2023-03-24T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>https://kumardamani.net/tags/technology/</loc>
+ <lastmod>2023-03-24T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>https://kumardamani.net/tags/personal/</loc>
<lastmod>2022-11-29T00:00:00+00:00</lastmod>
</url><url>
- <loc>https://kumardamani.net/tags/</loc>
+ <loc>https://kumardamani.net/post/programming-as-art/</loc>
<lastmod>2022-11-29T00:00:00+00:00</lastmod>
</url><url>
<loc>https://kumardamani.net/tags/tech/</loc>
diff --git a/public/tags/index.html b/public/tags/index.html
index 8e20815..d0d7111 100644
--- a/public/tags/index.html
+++ b/public/tags/index.html
@@ -43,6 +43,9 @@
<ul>
+ <li><a href="https://kumardamani.net/tags/technology/">technology</a></li>
+
+
<li><a href="https://kumardamani.net/tags/personal/">personal</a></li>
diff --git a/public/tags/index.xml b/public/tags/index.xml
index 04ea7c6..e0708be 100644
--- a/public/tags/index.xml
+++ b/public/tags/index.xml
@@ -6,7 +6,16 @@
<description>Recent content in Tags on Kumar Damani - Home</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Tue, 29 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/tags/index.xml" rel="self" type="application/rss+xml" />
+ <lastBuildDate>Fri, 24 Mar 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/tags/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>technology</title>
+ <link>https://kumardamani.net/tags/technology/</link>
+ <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
+
+ <guid>https://kumardamani.net/tags/technology/</guid>
+ <description></description>
+ </item>
+
<item>
<title>personal</title>
<link>https://kumardamani.net/tags/personal/</link>
diff --git a/public/tags/index/index.xml b/public/tags/index/index.xml
index 78403f7..fa04209 100644
--- a/public/tags/index/index.xml
+++ b/public/tags/index/index.xml
@@ -9,7 +9,7 @@
<item>
<title>Posts</title>
<link>https://kumardamani.net/post/</link>
- <pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate>
+ <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
<guid>https://kumardamani.net/post/</guid>
<description></description>
diff --git a/public/tags/technology/index.html b/public/tags/technology/index.html
new file mode 100644
index 0000000..43679d2
--- /dev/null
+++ b/public/tags/technology/index.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html lang="en">
+
+ <head><title>technology &ndash; Kumar Damani - Home</title>
+<meta name="description" content="Git, email, resume etc.">
+
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta charset="UTF-8"/>
+
+
+
+
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css" integrity="sha512-1sCRPdkRXhBV2PBLUdRb4tMg1w2YPf37qatUFeS7zlBy7jJI8Lf4VHwWfZZfpXtYSLy85pkm9GaYVYMfw5BC1A==" crossorigin="anonymous" />
+
+
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.9.1/css/academicons.min.css" integrity="sha512-b1ASx0WHgVFL5ZQhTgiPWX+68KjS38Jk87jg7pe+qC7q9YkEtFq0z7xCglv7qGIs/68d3mAp+StfC8WKC5SSAg==" crossorigin="anonymous" />
+
+
+<link rel="stylesheet" href="https://kumardamani.net/css/palettes/gruvbox-dark.css">
+<link rel="stylesheet" href="https://kumardamani.net/css/risotto.css">
+<link rel="stylesheet" href="https://kumardamani.net/css/custom.css">
+</head>
+
+ <body>
+ <div class="page">
+
+ <header class="page__header"><h1 class="page__logo"><a href="https://kumardamani.net/" class="page__logo-inner">Kumar Damani - Home</a></h1>
+<nav class="page__nav main-nav">
+ <ul>
+
+
+ <li class="main-nav__item"><a class="nav-main-item" href="https://kumardamani.net/post/" title="Posts">Posts</a></li>
+
+ </ul>
+</nav>
+
+</header>
+
+ <section class="page__body">
+ <h1 id="technology">technology</h1>
+
+
+
+ <ul>
+
+ <li><a href="https://kumardamani.net/post/nixos-p1/">Adventures in NixOS - Part 1</a></li>
+
+
+ </ul>
+
+
+ </section>
+
+ <section class="page__aside">
+ <div class="aside__about">
+<div class="aside__about">
+ <img class="about__logo" src="https://kumardamani.net/images/rice.svg" alt="Logo">
+<h1 class="about__title">Links</h1>
+<p class="about__description">Git, email, resume etc.</p>
+</div>
+
+
+<ul class="aside__social-links">
+
+ <li>
+ <a href="https://gitlab.com/kdam0/" rel="me" aria-label="GitLab" title="GitLab"><i class="fa-brands fa-gitlab" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+ <li>
+ <a href="mailto:me@kumardamani.net" rel="me" aria-label="Email" title="Email"><i class="fa-solid fa-envelope" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+ <li>
+ <a href="/KumarDamaniCV.pdf" rel="me" aria-label="Resume" title="Resume"><i class="fa-solid fa-file" aria-hidden="true"></i></a>&nbsp;
+ </li>
+
+</ul>
+</div>
+ <hr>
+ <div class="aside__content">
+ </div>
+ </section>
+
+ <footer class="page__footer"><p>
+
+
+
+
+
+
+
+
+
+
+</p>
+<br /><br />
+<p class="copyright"></p>
+<p class="advertisement">Powered by <a href="https://gohugo.io/">hugo</a> and <a href="https://github.com/joeroe/risotto">risotto</a>.</p>
+</footer>
+
+ </div>
+ </body>
+
+</html>
diff --git a/public/tags/technology/index.xml b/public/tags/technology/index.xml
new file mode 100644
index 0000000..93f60cf
--- /dev/null
+++ b/public/tags/technology/index.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>technology on Kumar Damani - Home</title>
+ <link>https://kumardamani.net/tags/technology/</link>
+ <description>Recent content in technology on Kumar Damani - Home</description>
+ <generator>Hugo -- gohugo.io</generator>
+ <language>en-us</language>
+ <lastBuildDate>Fri, 24 Mar 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kumardamani.net/tags/technology/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Adventures in NixOS - Part 1</title>
+ <link>https://kumardamani.net/post/nixos-p1/</link>
+ <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
+
+ <guid>https://kumardamani.net/post/nixos-p1/</guid>
+ <description>&lt;p&gt;Almost a guide to getting started with NixOS the modern (2023) way.&lt;/p&gt;</description>
+ </item>
+
+ </channel>
+</rss>