diff options
Diffstat (limited to 'public')
| -rw-r--r-- | public/index.html | 2 | ||||
| -rw-r--r-- | public/index.xml | 11 | ||||
| -rw-r--r-- | public/post/index.html | 14 | ||||
| -rw-r--r-- | public/post/index.xml | 11 | ||||
| -rw-r--r-- | public/post/nixos-p1/boot.png | bin | 0 -> 12893 bytes | |||
| -rw-r--r-- | public/post/nixos-p1/dwl.png | bin | 0 -> 3082421 bytes | |||
| -rw-r--r-- | public/post/nixos-p1/fox.jpg | bin | 0 -> 30886 bytes | |||
| -rw-r--r-- | public/post/nixos-p1/index.html | 431 | ||||
| -rw-r--r-- | public/post/nixos-p1/rice.png | bin | 0 -> 1670023 bytes | |||
| -rw-r--r-- | public/sitemap.xml | 18 | ||||
| -rw-r--r-- | public/tags/index.html | 3 | ||||
| -rw-r--r-- | public/tags/index.xml | 11 | ||||
| -rw-r--r-- | public/tags/index/index.xml | 2 | ||||
| -rw-r--r-- | public/tags/technology/index.html | 104 | ||||
| -rw-r--r-- | public/tags/technology/index.xml | 20 |
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><p>Almost a guide to getting started with NixOS the modern (2023) way.</p></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><p>Almost a guide to getting started with NixOS the modern (2023) way.</p></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 Binary files differnew file mode 100644 index 0000000..4e3d972 --- /dev/null +++ b/public/post/nixos-p1/boot.png diff --git a/public/post/nixos-p1/dwl.png b/public/post/nixos-p1/dwl.png Binary files differnew file mode 100644 index 0000000..8ecbe4d --- /dev/null +++ b/public/post/nixos-p1/dwl.png diff --git a/public/post/nixos-p1/fox.jpg b/public/post/nixos-p1/fox.jpg Binary files differnew file mode 100644 index 0000000..3ace57f --- /dev/null +++ b/public/post/nixos-p1/fox.jpg 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 – 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 “modern” way - Flakes + Home Manager. It doesn’t help that Nix’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… FOMO regarding all the <a href="https://www.google.com/search?q=nixos+memes&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’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 “builds” 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 “Nix” 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: <your username> +Password: <your password> +</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’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">"NixOS configuration"</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">"github:nixos/nixpkgs/nixos-unstable"</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">"github:nix-community/home-manager"</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">"nixpkgs"</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">"github:NixOS/nixos-hardware/master"</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">"art-sr"</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">"x86_64-linux"</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>“art-sr” 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 = "github:NixOS/nixos-hardware/master"; + ... + 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">"kdam0"</span>; +</span></span><span style="display:flex;"><span> home<span style="color:#f92672">.</span>homeDirectory <span style="color:#f92672">=</span> <span style="color:#e6db74">"/home/kdam0"</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">"22.11"</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…something about permissions… +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’s the whole point of a WM. +Additionally, <code>dwl</code> requires a re-build on every config change…</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 "impure" usage. + # so disabling it for now. + # conf = (builtins.readFile "${config.home.homeDirectory}/.config/dwl/config.h"); + 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’t have <code>make</code> or any requirements to actually build it…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……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.".config/foot/foot.ini".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."bg.sh".source = common/bg.sh; + # script that starts my gui env. + home.file."start.sh".source = common/start.sh; + # foot config + home.file.".config/foot/foot.ini".source = common/foot/foot.ini; + # wofi config (app launcher) + home.file.".config/wofi/style.css".source = common/wofi/style.css; + # mako config (notifications) + home.file.".config/mako/config".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 = "Auto sync Nextcloud"; + After = "network-online.target"; + }; + Service = { + Type = "simple"; + EnvironmentFile = "${config.home.homeDirectory}/.nextcloud.env"; + ExecStart = '' + ${pkgs.nextcloud-client}/bin/nextcloudcmd \ + -h --non-interactive \ + --user "''${NEXTCLOUD_USER}" \ + --password "''${NEXTCLOUD_PASSWORD}" \ + ''${NEXTCLOUD_DIR} \ + ''${NEXTCLOUD_URL} + ''; + TimeoutStopSec = "180"; + KillMode = "process"; + KillSignal = "SIGINT"; + }; + Install.WantedBy = ["multi-user.target"]; + }; + }; + systemd.user.timers = { + nextcloud-sync = { + Unit.Description = "Automatic sync files with Nextcloud when booted up after 5 minutes then rerun every 10 minutes"; + Timer.OnUnitActiveSec = "10min"; + Install.WantedBy = ["multi-user.target" "timers.target"]; + }; + }; + 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> + </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> + </li> + + <li> + <a href="/KumarDamaniCV.pdf" rel="me" aria-label="Resume" title="Resume"><i class="fa-solid fa-file" aria-hidden="true"></i></a> + </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 Binary files differnew file mode 100644 index 0000000..4fd97cf --- /dev/null +++ b/public/post/nixos-p1/rice.png 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 – 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> + </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> + </li> + + <li> + <a href="/KumarDamaniCV.pdf" rel="me" aria-label="Resume" title="Resume"><i class="fa-solid fa-file" aria-hidden="true"></i></a> + </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><p>Almost a guide to getting started with NixOS the modern (2023) way.</p></description> + </item> + + </channel> +</rss> |
