Files
nix-config/modules/nix-config.org
phundrak a2b21feacc refactor: change to litterate config
Configuration is now held by the `.org` files. All `.nix` files are
tangled from the org-mode files.
2026-10-04 22:34:28 +02:00

82 lines
2.9 KiB
Org Mode
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#+title: Nix Configuration
#+setupfile: headers
#+property: header-args:emacs-lisp :lexical t :exports none :tangle no
* Nix Configuration
Something that I want to enable everywhere is, first and foremost, the
support for Nix commands and Nix flakes. I also want to make sure I
can use some caches, also known as substituters, including one of mine
from Cachix, to avoid compiling stuff as much as possible.
So first, here are my caches with their public key.
#+name: substituters
| Substituter's URL | Public Key |
|----------------------------------------------+-------------------------------------------------------------------------|
| https://phundrak.cachix.org?priority=10 | =phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk== |
| https://nix-community.cachix.org?priority=20 | =nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs== |
| https://cache.nixos.org?priority=40 | =cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY== |
#+name: substituters-urls
#+begin_src emacs-lisp :var subs=substituters :cache yes
(mapconcat (lambda (sub) (format "\"%s\"" (car sub))) subs "\n")
#+end_src
#+RESULTS[99d05698d7e8ca90b34823f4dd4858224be8d007]: substituters-urls
: "https://phundrak.cachix.org?priority=10"
: "https://nix-community.cachix.org?priority=20"
: "https://cache.nixos.org?priority=40"
#+name: substituters-keys
#+begin_src emacs-lisp :var subs=substituters :cache yes
(require 's)
(mapconcat (lambda (sub) (format "\"%s\""
(s-chop-prefix "=" (s-chop-suffix "=" (cadr sub)))))
subs
"\n")
#+end_src
#+RESULTS[6f5e709a7b1c1dd55e4187dfaf8be945138c68ec]: substituters-keys
: "phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk="
: "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
: "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
This results in the following substituters and trusted public keys.
#+name: config-vars
#+begin_src nix :noweb yes
substituters = [
<<substituters-urls()>>
];
trustedPublicKeys = [
<<substituters-keys()>>
];
#+end_src
Now, we can declare the rest of the file. You’ll see, it repeats
itself a bit.
#+begin_src nix :tangle yes
let
cacheSettings = rec {
<<config-vars>>
commonConf = {
extra-trusted-public-keys = trustedPublicKeys;
extra-substituters = substituters;
extra-experimental-features = ["nix-command" "flakes"];
http-connections = 128;
};
};
in {
flake-file.nixConfig = cacheSettings;
flake.nixConfig = cacheSettings;
flake.modules.nixos.nix-cache-settings = {
nix.settings = {
inherit (cacheSettings) substituters;
trusted-public-keys = cacheSettings.trustedPublicKeys;
experimental-features = ["nix-command" "flakes"];
http-connections = 128;
};
};
}
#+end_src