Ir para o conteúdo

Nix

O gerenciador de pacotes Nix é uma ferramenta avançada para usuários avançados que pode ser usada para obter praticamente qualquer pacote de software livre que você possa imaginar de seu grande repositório mantido pela comunidade.

Ele pode ser instalado no KDE Linux para um sistema de usuário único. O Nix armazena softwares e dependências em /nix/store e mantém seu caminho de pesquisa atualizado automaticamente conforme ferramentas são adicionadas ou removidas.

Instalação

O gerenciador de pacotes Nix pode ser instalado para o usuário atual da seguinte forma:

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon

Saia da sua conta e entre novamente, depois teste:

nix-shell -p mc emacs-nox  # você agora está dentro de um shell com mc e emacs

Observe que, ao sair deste shell, o mc e o emacs não estarão mais no caminho de pesquisa do seu shell. Consulte a próxima seção para tornar essas ferramentas disponíveis permanentemente.

Consulte https://nixos.org/download/#nix-install-linux para obter mais detalhes.

Instalações de pacotes persistentes

Use nix-env -iA ou nix-env --install --attr para instalar pacotes em /nix/store e torná-los disponíveis no caminho de pesquisa do seu usuário:

$ nix-env -f '' -iA mc
⋮
building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...

Isso cria um novo “ambiente” que contém todas as alterações de estado necessárias para disponibilizar o pacote mc, e estas podem ser aplicadas de forma contínua ou revertida. Este é o verdadeiro atrativo do sistema de gerenciamento de pacotes Nix, mas está além do escopo deste guia.

Verifique se o comando mc agora está disponível para o seu usuário:

$ which mc
/home/username/.nix-profile/bin/mc

Remova os pacotes com nix-env --uninstall ou nix-env -e:

$ nix-env -e mc
uninstalling 'mc-4.8.33'
building '/nix/store/rqbghiyds6f7a49qiwi9gmq7bnkgn9qi-user-environment.drv'...

Consulte a seção sobre [[#garbage-collection|coleta de lixo]] abaixo para saber como recuperar o espaço usado por pacotes que você não está mais usando.

Consulte https://nix.dev/manual/nix/latest/command-ref/nix-env.html para obter mais detalhes.

Usar nix profile

A interface nix <command> ainda é tecnicamente considerada experimental (mais contexto sobre o status "experimental" de nix profile pode ser encontrado neste RFC), mas na prática é amplamente utilizada e mais ergonômica. O recurso de autocompletar com a tecla Tab e as opções --help para os vários subcomandos nix também funcionarão imediatamente em uma instalação nova. Assim como nix-env, nix profile instalará pacotes em /nix/store e os disponibilizará no seu caminho de busca, persistindo entre as sessões de login.

Aqui está um exemplo trivial usando nix profile para instalar a ferramenta de busca de código ag:

$ mkdir -p ~/.config/nix
$ cat >> ~/.config/nix/nix.conf <<EOF
experimental-features = nix-command flakes
EOF

$ nix search nixpkgs silver searcher
⋮
* legacyPackages.x86_64-linux.silver-searcher (2.2.0)
  Code-searching tool similar to ack, but faster

$ nix profile add nixpkgs#silver-searcher
$ which ag
/home/username/.nix-profile/bin/ag

Para listar os pacotes instalados ou removê-los:

$ nix profile list
⋮
Name:               silver-searcher
Flake attribute:    legacyPackages.x86_64-linux.silver-searcher
Original flake URL: flake:nixpkgs
Locked flake URL:   github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D
Store paths:        /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0

$ nix profile remove silver-searcher

Consulte a seção sobre coleta de lixo abaixo para saber como recuperar o espaço usado por pacotes que você não está mais usando.

Consulte https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html para obter mais detalhes.

Reinstalar o Nix

Se você habilitou o recurso “experimental” do nix profile, você precisará desabilitá-lo e excluir os arquivos de estado associados ao perfil do seu usuário antes de reinstalar. Caso contrário, você receberá uma mensagem de erro como esta:

error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Aviso: isso irá esquecer quaisquer pacotes instalados anteriormente!

Comente a linha experimental-features no seu arquivo de configuração do Nix e, em seguida, exclua o diretório de estado do perfil:

$ sed -i'' 's/^experimental-features = nix-command flakes$/#&/' ~/.config/nix/nix.conf
$ rm -rf ~/.local/state/nix/profiles/profile

Agora você pode repetir os passos de instalação.

Coleta de lixo para recuperar espaço em disco

Note que nix-env -e e nix profile remove removem comandos fornecidos por um pacote do ambiente atual do usuário, mas o software permanece instalado em /nix/store até ser coletado pelo coletor de lixo.

Você pode forçar a coleta de lixo, para recuperar espaço em disco, com um dos seguintes comandos:

nix-store --gc           # rotina de coleta de lixo
nix-collect-garbage -d   # remove pacotes "inalcançáveis" da loja

Remover o Nix

Para remover o gerenciador de pacotes Nix, execute os seguintes comandos:

sudo systemctl disable --now nix-daemon.service nix-daemon.socket

sudo rm -rf /nix /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix /root/.nix-channels /root/.nix-defexpr /root/.nix-profile /root/.cache/nix ~/.nix-channels ~/.nix-defexpr ~/.nix-profile ~/.cache/nix

for i in $(seq 1 32); do sudo userdel nixbld$i; done

sudo groupdel nixbld

Veja também


Artigo contribuído por Ernstki sob a licença CC-BY-4.0.