172 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en-us">
 | |
|   <head>
 | |
| 
 | |
|     <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
 | |
|     <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
 | |
|     <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
 | |
|     <link rel="manifest" href="/images/site.webmanifest">
 | |
| 
 | |
|     <meta charset="utf-8">
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1">
 | |
|     <meta name="description" content="Credit to the designer of the theme [goodroot](https://github.com/goodroot/hugo-classic)">
 | |
|     <title>"NixOS, or why I would love a new introduction" | acorneroftheweb</title>
 | |
|     <link rel="stylesheet" href="/css/style.css" />
 | |
|     <link rel="stylesheet" href="/css/fonts.css" />
 | |
|     <link rel="stylesheet" href="https://acorneroftheweb.com/css/theme-override.css">
 | |
|     <header>
 | |
| 
 | |
|   <nav>
 | |
|     <ul>
 | |
|       
 | |
|       
 | |
|       <li class="pull-left ">
 | |
|         <a href="https://acorneroftheweb.com/">~/acorneroftheweb</a>
 | |
|       </li>
 | |
|       
 | |
|       
 | |
|       <li class="pull-left ">
 | |
|         <a href="/categories/">~/categories</a>
 | |
|       </li>
 | |
|       
 | |
|       
 | |
|       <li class="pull-left ">
 | |
|         <a href="/tags/">~/tags</a>
 | |
|       </li>
 | |
|       
 | |
| 
 | |
|       
 | |
|       
 | |
|       <li class="pull-right">
 | |
|         <a href="/index.xml">~/subscribe</a>
 | |
|       </li>
 | |
|       
 | |
| 
 | |
|     </ul>
 | |
|   </nav>
 | |
| </header>
 | |
| 
 | |
|   </head>
 | |
| 
 | |
|   <body>
 | |
|     <br/>
 | |
| 
 | |
| <div class="article-meta">
 | |
| <h1><span class="title">“NixOS, or why I would love a new introduction”</span></h1>
 | |
| 
 | |
| <h2 class="date">2025/07/12</h2>
 | |
| <p class="terms">
 | |
|   
 | |
|   
 | |
|   Categories: <a href="/categories/computer">Computer</a> 
 | |
|   
 | |
|   
 | |
|   
 | |
|   Tags: <a href="/tags/computer">Computer</a> <a href="/tags/operating_system">Operating_System</a> <a href="/tags/nixos">NixOS</a> 
 | |
|   
 | |
|   
 | |
| </p>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div class="content-wrapper">
 | |
|   <main>
 | |
|     
 | |
| <p>
 | |
| I have been using NixOS for the last 2 years now.
 | |
| I got introduced to it by friends, who had changed their entire workflow to accommodate it.
 | |
| I was a bit skeptical at the beginning, tried installing the package manager to my arch install at the time, but didn't fully understand how I was supposed to use it in conjunction with how I was my computer at the time.
 | |
| However, in the summer of 2023, I decided to take the plunge, and go the full way, with a new install.
 | |
| Having run this type of setup for two years now, I have to admit it.
 | |
| NixOS makes certain aspects of using my computer easier.</p>
 | |
| <p>
 | |
| As of recent, I have had to change the laptop that I was using.
 | |
| With Nix as the base, I was able to make it usable, in way faster time than I think I would have been able with an Arch installation.
 | |
| There are some aspects that make it harder though, since that laptop needed to make sure it worked as intended, such as disabling TLP and patching the kernel.
 | |
| It also allowed me to resume my work on my current master thesis, since I could just pull the git repo and use nix develop to get all the dependencies for that work in specifics.</p>
 | |
| <div id="outline-container-headline-1" class="outline-2">
 | |
| <h2 id="headline-1">
 | |
| Configuration
 | |
| </h2>
 | |
| <div id="outline-text-headline-1" class="outline-text-2">
 | |
| <p>A friend of mine recently decided to try and do the switch themselves.
 | |
| He has been an avid Arch fan boy for the last 2 years, since he got mad at Fedora for bricking his install (I genuinely do not understand how that happened).
 | |
| He has been a bit particular however, refusing to configure software to ensure that he is able to use them anywhere, and to not have to learn esoteric languages for just one program.
 | |
| I find this very sensible, while I approach it completely differently.
 | |
| I want software customized to me, for me to act as best as I can within it.</p>
 | |
| <p>
 | |
| Anyway, this has lead to some confusion about Nix, and why things are as they are.
 | |
| For example, how is Git, as defined in Home-Manager, able to configure it as it does?
 | |
| And that is an implementation detail, but it is quite important for a user of Nix.
 | |
| Why does Nix gatekeep the most foundational aspect of using Nix according to most users behind an Experimental-feature wall?
 | |
| Now, I don't have the answers for these, since I am not yet a contributor to Nix, or well versed in the ecosystem, if I am being honest.</p>
 | |
| </div>
 | |
| </div>
 | |
| <div id="outline-container-headline-2" class="outline-2">
 | |
| <h2 id="headline-2">
 | |
| A better introduction
 | |
| </h2>
 | |
| <div id="outline-text-headline-2" class="outline-text-2">
 | |
| <p>A comment was made about the <a href="https://nixos.org/manual/nixos/stable/">installation guide</a>, about how it is not adequate, and I wouldn't know, I didn't read it when I got NixOS.
 | |
| Like most of Nix documentation, it is a bit overwhelming and hard to navigate.
 | |
| I like <a href="https://wiki.archlinux.org/title/Installation_guide">Arch's install guide</a>, since it is easier to search, and it segments the parts into different pages.
 | |
| So, if I were to change anything, I would split this up, making sure that they are condensed into small, concrete parts.
 | |
| An approach of this that I like is <a href="https://github.com/rust-lang/mdBook">mdbook</a>. One could therefore keep the more general structure of the guide, but each subsection is it's own page.</p>
 | |
| <p>
 | |
| Another aspect that would change is that an introduction should try to convey one way.
 | |
| NixOS tries to introduce flakes in the <a href="https://nixos.org/manual/nixos/stable/#sec-installation-manual-installing">Installing section</a>, but never explaining what it is, or linking further.
 | |
| Either you introduce a concept, link to more info, or you do not mention it.</p>
 | |
| <p>
 | |
| There are also several ways of managing the system that are not a good way of handling NixOS specifically.
 | |
| Why is the <a href="https://nixos.org/manual/nixos/stable/#sec-ad-hoc-packages">Ad-hoc</a> way of using Nix even introduced, when it goes against the ideals of having a reproducible system?
 | |
| Why introduce manual user management?
 | |
| Further, it talks about a lot of different programs that a user may want to install.
 | |
| This does however not teach the user to actually figure out where to find options.
 | |
| Why isn't <a href="https://search.nixos.org">search.nixos.org</a> introduced?</p>
 | |
| <p>
 | |
| An optimal guide would introduce how to create a system, using the most commonly accepted methods, such as flakes.
 | |
| You can introduce flakes as adding the ability to create a lock file like <code class="verbatim">package-lock.json</code> from npm.
 | |
| This would then go into creating a functional system, and then a show case of how you can modify it and common fixes for NVIDIA, or similar.
 | |
| I am a bit tempted to try and make this, but I also wanna do some own development on packages.</p>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
|     <a href="/"> >> Home</a>
 | |
|   </main>
 | |
| </div>
 | |
|     <footer>
 | |
|       
 | |
| <script>
 | |
| (function() {
 | |
|   function center_el(tagName) {
 | |
|     var tags = document.getElementsByTagName(tagName), i, tag;
 | |
|     for (i = 0; i < tags.length; i++) {
 | |
|       tag = tags[i];
 | |
|       var parent = tag.parentElement;
 | |
|       
 | |
|       if (parent.childNodes.length === 1) {
 | |
|         
 | |
|         if (parent.nodeName === 'A') {
 | |
|           parent = parent.parentElement;
 | |
|           if (parent.childNodes.length != 1) continue;
 | |
|         }
 | |
|         if (parent.nodeName === 'P') parent.style.textAlign = 'center';
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   var tagNames = ['img', 'embed', 'object'];
 | |
|   for (var i = 0; i < tagNames.length; i++) {
 | |
|     center_el(tagNames[i]);
 | |
|   }
 | |
| })();
 | |
| </script>
 | |
| 
 | |
|       
 | |
|       <hr/>
 | |
|       Open-Source | <a href="https://git.acorneroftheweb.com/pingu/blog">Git</a>
 | |
|       
 | |
|     </footer>
 | |
|   </body>
 | |
| </html>
 | |
| 
 |