diff --git a/nix.md b/nix.md
index ad740b6..8872830 100644
--- a/nix.md
+++ b/nix.md
@@ -27,6 +27,11 @@ newlines"
```
= true
+```nix
+''alternative syntax''
+```
+= "alternative syntax"
+
Nix has booleans.
```nix
@@ -123,14 +128,14 @@ using the repl, press tab to get a list of them.
```
= { system = "x86_64-linux"; }
-Finally, nix has a path type. When
+Finally, nix has a path type.
```nix
{
sourceCode = ./path/to/sources;
}
```
-= { system = "x86_64-linux"; }
+= { sourceCode = /absolute/path/to/sources; }
:::
::: section
@@ -156,10 +161,13 @@ derivation {
system = builtins.currentSystem;
}
```
-= derivation «/nix/store/ha5hof1nput-foobar.drv»
+= derivation «/nix/store/119h84n7a58069l5zi0rgs7q06rhrlh3-foobar.drv»
-To build this, use `:b (copy-pasted code)` in the repl. It should print
-a path to the build outputs.
+This code outputs a hash-based path to a derivation, nix's version of a
+build script. Derivations *derive* build outputs from build inputs. To
+build the derivation, use `:b (copy-pasted code)` in the repl. It should
+print a path to the build outputs. If you `cat` the output, you should
+get back "Hello, derivation!".
[NixOS/nixpkgs](https://github.com/NixOS/nixpkgs) is a combination package
repository and standard library, containing thousands of derivations and
@@ -178,24 +186,24 @@ will *always* produce the same outputs. If it works on one nix user's
machine, it will work every nix user's machine. If a build fails, it
fails for everyone.
-Flakes work by taking in an explicit set of inputs along with the build
-steps. Anything that isn't explicitly defined as an input, whether
-it's binaries, paths, or environment variables, is not given to the
-derivation's builder.
-
-Here's an example flake:
+Nix flakes are a new tool that makes the inputs explicit as well, instead
+of only the build steps. Anything that isn't explicitly defined as an
+input, whether it's binaries, paths, or environment variables, is not
+given to the derivation's builder. Here's an example flake:
```nix
{
description = "any useful description here";
inputs = {
- # this is a flake identifier
+ # Inputs take in flake references
+ # https://nix.dev/manual/nix/2.18/command-ref/new-cli/nix3-flake#flake-references
nixpkgs.url = "github:NixOS/nixpkgs";
};
outputs = { self, nixpkgs }: {
- packages.x86_64-linux.default = inputs.nixpkgs.legacyPackages.x86_64-linux.hello;
+ # reuse an existing derivation for simplicity
+ packages.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.hello;
};
}
```
@@ -222,8 +230,14 @@ another flake:
packages.x86_64-linux.default = pkgs.stdenv.mkDerivation {
name = "hello";
src = self;
- buildPhase = "echo '#!/bin/sh\necho hello world' > bin; chmod +x bin";
- installPhase = "mkdir -p $out/bin; mv bin $out/bin/hello";
+ buildPhase = ''
+ echo -e '#!/bin/sh\necho hello world' > bin
+ chmod +x bin
+ '';
+ installPhase = ''
+ mkdir -p $out/bin
+ mv bin $out/bin/hello
+ '';
};
};
}