Você pode acompanhar seu configuration.nix
em sua geração correspondente. Você só precisa criar uma referência a ela (dentro de si) para que ela se torne parte do fechamento. Aqui está um exemplo:
configuration.nix
{ config, lib, pkgs, ... }:
{
# yada, yada
environment.etc."configuration.nix".source = /etc/nixos/configuration.nix;
};
A opção environment.etc
permite que você crie arquivos declarativamente em /etc
. O Nix detectará /etc/nixos/configuration.nix
como path
type (os caminhos são tipos de primeira classe no Nix) e, assim, copie seu conteúdo para o armazenamento Nix. O resultado é um link simbólico /etc/configuration.nix
apontando (indiretamente) para /nix/store/blah-blah-configuration.nix
, o que significa que cada geração terá um link simbólico /etc/configuration.nix
apontando para sua configuração correspondente. Você pode então fazer algo semelhante com arquivos adicionais, como hardware-configuration.nix
.
A captura
Embora os itens acima armazenem sua configuração, ela não será utilizável por nix-env
, nix-shell
, nixos-rebuild
, etc, porque esses comandos usam $NIX_PATH
para localizar configurações. Embora você possa conseguir resolver isso (consulte aqui ) Eu não recomendo porque quando você executa nixos-rebuild
ele irá usar o arquivo de configuração errado ( /etc/nixos/configuration.nix
ao invés da cópia no repositório Nix, que é somente leitura de qualquer maneira). As coisas ficariam muito rápidas.
E, claro, a loja Nix é legível por todos .