summaryrefslogtreecommitdiff
path: root/3 Resources/Nix/Flake.md
diff options
context:
space:
mode:
authorJasper Ras <jras@hostnet.nl>2025-01-19 21:14:51 +0100
committerJasper Ras <jras@hostnet.nl>2025-01-19 21:14:51 +0100
commit9642cd7ae24f0ba79ce5647c709b35ae8f06a285 (patch)
treeae25c3b0db7ae4c23186b294c6d000073f085c2d /3 Resources/Nix/Flake.md
parent969b96c2531fb986f6c7f21fd544391b439defd7 (diff)
vault backup: 2025-01-19 21:14:51
Diffstat (limited to '3 Resources/Nix/Flake.md')
-rw-r--r--3 Resources/Nix/Flake.md22
1 files changed, 22 insertions, 0 deletions
diff --git a/3 Resources/Nix/Flake.md b/3 Resources/Nix/Flake.md
new file mode 100644
index 0000000..754556f
--- /dev/null
+++ b/3 Resources/Nix/Flake.md
@@ -0,0 +1,22 @@
+#nix #flake
+
+---
+Nix flakes are source trees containing a file `flake.nix` at their root. The file `flake.nix` provides a standardized way to provide [[Zettelkast/Index/Nix]] artifacts. It's like a package manager for [[Zettelkast/Index/Nix]]. A flake can be dependent on other Flakes and it's possible to pin dependencies to exact revisions by using a `flake.lock` file.
+
+Nix flake evaluation is hermetic, meaning that it produces the same result wherever it's built.k
+
+The feature can be enabled in `~/.config/nix/nix.conf`:
+
+```
+experimental-features = nix-command flakes
+```
+
+To initialize in a repo: `nix flake init`.
+
+In flakes dependencies have to be specified explicitly and MUST be locked to specific versions therefore it's no longer allowed to use the nixpkgs found in `NIX_PATH` by referencing it like `<nixpkgs>`.
+
+Output of a Flake is an arbitrary [[Zettelkast/Index/Nix]] value such as a package, [[NixOS]] module or library function.
+Commands `nix build` and `nix shell` will build the output `packages.<system>.default` unless we specify another output, for example: `nix shell .#checks.aarch64-linux.build`.
+
+---
+[Flakes Wiki](https://nixos.wiki/wiki/Flakes) \ No newline at end of file