Como você instala um pacote único no NixOS?

8

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.

    
por Ben Collins 01.07.2016 / 01:18

1 resposta

7

você pode usar a ferramenta nix-env

% nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -iA tig

ou use a ferramenta nix-build

% nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -A tig

como isso ajuda!

    
por 01.07.2016 / 04:20