Eu tenho uma caixa NixOS que eu mantenho no canal nixos-16.03
. Eu quero que a máquina permaneça em um estado mais estável, e por isso estou querendo evitar a mudança para o canal nixos-unstable
.
No entanto, preciso instalar uma versão mais recente de um pacote do que está disponível nesse canal ( nodejs-6_x
neste exemplo). No manual, há uma seção que descreve Instalação em um clique , que inicialmente parecia exatamente o que eu precisava. No entanto, o servidor Hydra no link parece não estar exibindo nenhum arquivo .nixpkg
que é usado pela ferramenta nix-install-package
descrita nessa seção.
O wiki também documenta um processo pelo qual é possível personalizar um pacote (a página é chamada Modifying Packages ), que eu suponho poderia ser usado para os meus propósitos, embora pareça que eu estaria lutando contra a ferramenta em vez de usar .
Também perguntei sobre isso no IRC (graças a M-Ralith
por responder pacientemente minhas perguntas ignorantes!), mas não entendi como aplicá-lo. O conselho era "substituir src e version na configuração do nixpkgs", o que soa como se eu pudesse escrever uma expressão nix em .nixpkgs/configuration.nix
e substituir essas propriedades pelo pacote no meu canal inscrito ( nixos-16.03
). Quando perguntei sobre pacotes que não existem no canal, o conselho era "especificar o pacote inteiro em vez de apenas substituir o src e a versão", o que considero necessário duplicar toda a expressão nix do pacote Estou interessado. Parece-me que isso teria o efeito de impedir que nix-env
atualizasse esse pacote caso o canal estável recuperasse ou ultrapassasse a versão que eu usei para anular.
Para pacotes que existem em outro canal que eu quero instalar, mas fique no meu canal atual, existe uma maneira melhor? Quase parece que eu deveria ser capaz de fazer algo como nix-build <url> | nix-env -i
. O ideal seria instalá-lo, mas não ter configurações que possam impedir que ele seja atualizado mais tarde, se meu canal atual estiver em dia.