Advanced Search
Search Results
94 total results found
Introduction to Morph
Morph is a simple, stateless deployment tool for NixOS. Essentially, it's a way to manage one or more servers remotely from a central NixOS configuration, deploying system updates and configuration changes over SSH. You write configuration for Morph with the ...
What is a derivation?
You can think of a derivation as a set of build instructions, somewhat similar to how IKEA furniture comes with an assembly manual. The furniture (or package, or configuration file, or...) still needs to be built, but the build instructions (the derivation) ha...
Storing secrets and the Nix store
Nix stores every derivation that it builds in the Nix store. However, to make sure that everything in the Nix store is perfectly deterministic and usable by anyone, it needs to set the attributes of all files to a fixed value - this means that every file creat...
What is the Nix store?
The Nix store is a folder, located at /nix/store by default, that contains every build result from a derivation that Nix has ever generated. These build results stay in the Nix store until they are explicitly garbage-collected. Each entry in the Nix store is p...
Introduction
NixOS is very strict in its approach to system purity; there is essentially no global environment, and this also means that a lot of assumptions about what a 'standard Linux system' looks like, do not hold up when you are using NixOS. This is a common cause of...
Running an AppImage
If you try to run an AppImage with the usual ./application-name invocation, you'll find that they won't run. This is because the AppImage runtime expects some files to exist in a global location that NixOS doesn't put there. In practice, this is usually not a...
Installing software globally
Probably the most common case, is wanting to install software system-wide. This is not technically system-wide in NixOS, due to its internal isolation properties, but the difference doesn't really matter for your day-to-day use. Installing software globally i...
The high-level workflow of Nix
You can use Nix to build many different things for many different purposes. However, the basic workflow is always the same: You specify some kind of Nix expression. This can be a simple expression, a whole system configuration, a Morph deployment... anythin...
Transitive dependencies and the commons
In this article, I want to explain why I personally only work with programming languages anymore that allow conflicting transitive dependencies, and why this matters for the purpose of building a commons for software. Types of dependency structures There are...
How to de-escalate situations
I originally drafted this guide for the (public, semi-open) NixOS governance talks in 2024. It was written for participants in those governance discussions, as a de-escalation guide to steer conversation back to a constructive path. The recommendations in it, ...
What to expect from the Promistreams beta phase
Promistreams are currently in their beta testing phase. What this means in practice: You can start using Promistreams in your projects today. But be prepared to sometimes debug issues. Linear pipelines will generally work perfectly. More complex pipelines ...
Example project: Scraping XML sitemaps
The code in this guide scrapes an artificial sitemap for a non-existent site, that was created specifically for this article. When scraping anything on a site that you do not run yourself, you should always check the robots.txt to determine whether the owner i...
Treating hair lice in difficult hair
Theory Hair lice are a relatively innocent parasite that lives in human head hair. Although they are typically not disease carriers, the itching can be extremely frustrating. Hair lice attach themselves by holding onto the hair, typically close to the skin o...
State resolution attacks
These are some notes on various different kinds of attacks that might be attempted on state resolution algorithms, such as the one in Matrix. Different kinds of state resolution algorithms are vulnerable to different kinds of attacks; a reliable state algorith...