# 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/).