# Iniciando minha aventura no _guix_ Pouco tempo depois de iniciar meu uso no NixOS eu me deparei com outro projeto baseado nesse sistema, o Guix. Tais projetos consistem principalmente no gerenciador de pacotes que permite tratar os mesmos de forma funcional. No caso do Nix o gerenciador de mesmo nome precisamos aprender a linguagem nix para poder escrever as receitas de empacotamento para o NixOS ou o uso do pacote no gerenciador nix. Já o Guix usa uma variação da linguagem scheme, o guile para escrever as receitas de pacotes que poderão ser usados nesse gerenciador. Uma grande vantagem desses gerenciadores é que eles podem ser instalados em qualquer distribuição Linux, no caso do Nix é possível usar ele inclusive no MacOS, uma vez instalados tais gerenciadores num sistema qualquer, podemos instalar os pacotes por esses gerenciadores e esquecer o gerenciador nativo do sistema. Mas também é possível instalar o sistema por completo, NixOS ou GuixSD, daí podemos tratar o sistema operacional como um programa para ser montado por esse gerenciador. Atualmente tenho usado o NixOS como meu sistema principal, mas iniciei recentemente uma aventura pelo _guix_. ## Gerenciando os pacotes _texlive_ com _guix_ A princípio instalei o guix no meu NixOS para começar a me acostumar com ele, e das características que mais me chamou atenção foi o fato de se não precisarmos gerenciar serviços no root, nunca mais precisaremos usar sudo nem nada parecido para nossos pacotes e configurações pessoais. Dentro do NixOS conseguimos fazer bem tudo sem o root usando o _home-manager_, no Guix, usamos o `guix home`. Então iniciei o uso do guix, inicialmente para gerenciar algum projeto de texto em _LaTeX_ para gerar um _shell_ contendo todos os pacotes da _texlive_ que preciso usar no meu texto. Veja um exemplo de `manifest.scm` que deixo no diretório do meu projeto de texto. ```guile (specifications->manifest '(;; Compilação "entr" "texlive-latexmk" "texlive-biber" ;; Escrita em context "texlive-scheme-context" ;; Escrita no latex "texlive-scheme-basic" "texlive-wrapfig" "texlive-xpatch" "texlive-babel-portuges" "texlive-csvsimple" "texlive-pgf" "texlive-filecontents" ;; Estilos e bibliografgia "texlive-biblatex" "texlive-biblatex-abnt" "texlive-abntex2" ;; Fontes extras(()a "texlive-fontawesome5")) ``` Aqui dá pra perceber como o guile simplifica tudo, basta deixar entre parêntesis o que se deseja fazer, neste caso preciso apenas listar os pacotes que necessito para meu projeto de texto em _LaTeX_. Então apenas faço o comando `guix shell` e tenho um _shell_ com tudo prontinho. O `manifest.scm` poderia ser usado para montar um ambiente de desenvolvimento python, lua, c, etc. basta listar as bibliotecas, interpretadores ou compiladores necessários. ## Configurando a home Um arquivo `.scm` também pode ser usado para configurar os _dotfiles_ da _home_, bem como listar os pactes que quero usar no meu perfil. Essa tem sido a etapa que estou desenvolvendo agora, para depois que tiver um shell e um gerenciador de janelas configurado no meu perfil, mudar em definitivo para um sistema Guix. Até lá deem uma olhada no maravilhoso manual desse projeto no [link](https://guix.gnu.org/manual/pt-br/html_node/).