diff options
| author | root@localhost <root@localhost> | 2023-07-21 15:11:07 +0000 |
|---|---|---|
| committer | root@localhost <root@localhost> | 2023-07-21 15:11:07 +0000 |
| commit | 31193bf3d838a9ba13aaa131cf0172a6cee97173 (patch) | |
| tree | 510359b1c21a3f22097950f2e4be33477ae52ae3 /public/post/nixos-p1/index.html | |
| parent | ed6368d67748df59702de1f75706d48f81c99eaa (diff) | |
removed public dir
Diffstat (limited to 'public/post/nixos-p1/index.html')
| -rw-r--r-- | public/post/nixos-p1/index.html | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/public/post/nixos-p1/index.html b/public/post/nixos-p1/index.html deleted file mode 100644 index 54c7ccb..0000000 --- a/public/post/nixos-p1/index.html +++ /dev/null @@ -1,434 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - - <head><title>Adventures in NixOS - Part 1 – Kumar Damani - Home</title> -<meta name="description" content="Git, email, and resume"> - -<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/tokyo-night-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"><nav class="page__nav main-nav"> - <ul> - <h1 class="page__logo"><a href="https://kumardamani.net/" class="page__logo-inner">Kumar Damani - Home</a></h1> - - - <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, and resume</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> |
