Instalando um novo sistema de desenvolvimento

2020, Jul 20

Desde o começo tenho usado no meu PC dois sistemas operacionais: NixOS e Fedora. Os dois praticamente tem sido meus "sistemas de produção".

Na verdade, instalei o NixOS por sua promessa de imutabilidade. Em resumo, é um sistema "quase impossível de quebrar", já que a instalação/desinstalação de pacotes/atualizações é feita como se fosse um novo pacote/sistema anexado às versões antigas, não alterando o que ficou pra trás. Assim, se caso a atualização apresentar muitos problemas, você pode dar um rollback, voltando pra versão antiga. Isso serve tanto pra pacotes como pra o sistema inteiro. Isso com certeza aumenta o tamanho em disco ocupado por toda essa informação redundante. Mas o bom é que tem como você fazer uma "faxina" pra excluir as versões antigas se essas já não têm mais uso. O tanto de pacotes e a data que vão entrar nessa limpeza é configurável pra você não excluir algo que vá fazer falta no futuro. Bom, essas são apenas algumas das qualidades do NixOS (você pode ler mais sobre ele na seção sobre features na página oficial do projeto). Algo que não posso deixar de mencionar é que você também pode instalar pacotes num ambiente isolado, seja para teste, seja para montar tipo um container com um certo ambiente de desenvolvimento, por exemplo.

A instalação do Fedora veio um pouco antes, como um teste, mas que acabou sendo meu sistema definitivo por sua solidez e abundante oferta de pacotes. Vim do Arch, que também é uma distro muito estável. Mas como em qualquer sistema muito utilizado, ele começa a ficar com muitos arquivos sem propósito, por mais que o seu dono com TOC tente deixar tudo em ordem hahaha. Por isso, li algo sobre o Silverblue e vi que ele tem a proposta parecida com a do NixOS: imutabilidade. E ainda permite que você crie ambientes isolados, como o NixOS, mas se utilizando do Toolbox que é um wrapper do Podman, por assim dizer. O problema é você conseguir instalar o Silverblue. O Anaconda (instalador) é bem fresco e perdi um dia inteiro em várias tentativas de instalação, alterando as configurações pra ver se satisfazia as exigências dele. Pesquisando vi em alguns lugares pessoas que tiveram sucesso em instalar ele num PC apenas para ele. Ou seja, o "bonitão" tem bronca de dividir espaço com outro sistema, imitando o Windows, se você instalar ele depois de uma distro Linux. Como eu não posso fazer isso (só ter um sistema) parti pro plano B.

Eu já estava decidido que tinha que reinstalar o Fedora. E foi o que eu fiz, depois do fracasso com o Silverblue. Escolhi a versão stable, que no momento é a versão 32. Baixei a versão "Everything" na página de transferências alternativas, que é uma ISO mínima para instalação em conjunto com a internet. Depois de fazer o pendrive bootável com o Fedora Media Writer no próprio Fedora que estava prestes a virar defunto, iniciei a instalação selecionando "Minimal Desktop", junto com o Firefox, bundle pra containers (não sei exatamente quais pacotes tem nesse bundle, mas como você vai ver a seguir achei interessante escolhê-lo), ferramentas administrativas e o pacote de WMs, pois não tem outra opção isolada apenas pro AwesomeWM (a AwesomeWM que tenho me dado melhor; Tchau, DEs! kkkkk). Instalação concluída com sucesso! Provavelmente eu faça um post no futuro, mais detalhado, especialmente pra uma instalação similar à essa.

Antes do Fedora rodar, eu já tinha em mente que já iria instalar o Toolbox nele, pois ele pode ser instalado separado do Silverblue. E foi o que eu fiz. Mas como eu já sabia que o Fedora ainda não tem alguns pacotes específicos no repo deles e eu não queria apelar pro Homebrew (que já bagunçou meus sistemas no passado) pra instalar eles. A outra ótima notícia é que você também pode instalar o Nix, o gerenciador de pacotes que deu origem ao NixOS, em outras distros. Fora a absurda quantidade de pacotes disponíveis pro Nix, você pode usar um ambiente como mencionei no ínicio, nem sequer precisando instalar eles nesse ambiente pra poder rodá-los (ele cria tipo um cache e roda de lá e este pode ser "limpado" quando acionado o coletor de lixo/garbage collector quando seu uso for concluído). O único entrave que encontrei nessa parte do processo foi não conseguir instalar o Nix em modo multiusuário, por ter SELinux em algum lugar dessa minha atual instalação do Fedora (por motivos que ainda não entendo, mas está descrito numa issue no repositório deles) e isso conflitar com a instalação multiusuário do Nix. Mas ele instala de boa seguindo os passos pra único usuário na seção Quick Start do manual do Nix.

Mas e o NixOS? Bom, ele é muito robusto por causa da sua filosofia de imutabilidade. Mas essa mesma benção pode ser a causa de desejos impulsivos de arrancar os cabelos, já que algumas instalações de pacotes e configurações usuais vão te retornar vários erros alertando que você não pode mexer nessa ou naquela pasta (ou arquivo). Existem "workarounds" (vulgo gambiarra) pra minizar isso, mas isso distrai e quebra muito o fluxo de trabalho. Por enquanto vou deixar pausada minha configuração nele, já que você pode replicar "o ambiente perfeito" apenas escrevendo alguns arquivos na linguagem de expressões Nix, que é uma linguagem funcional, e isso ser muito útil principalmente quando você quer usar essas configurações pra uma outra máquina ou quer compartilhá-las com outros pelo GitHub, etc.

Se leram até aqui, espero que essa informação seja útil em algum momento da sua vida rsrs Até um próximo post :)