Adriano Lisboa Blog
Pensamentos, histórias e ideias.

Configurando dotfiles com o GNU Stow

O que são Dotfiles?

Dotfiles são arquivos de texto com informações que são usadas para a configuração de aplicações que rodam na linha de comando. Alguns exemplos desses dotfiles podem conter configurações para vim, tmux, git, etc...

Uma vantagem de sua utilização é a facilidade de se passar configurações de máquina para máquina, dessa forma você evita o desperdício de tempo de refazer toda a configuração ao trocar de máquina. Os dotfiles também podem ser usados para compartilhar configurações entre desenvolvedoras (exemplo de uma desenvolvedora que acabou de entrar no time).


O que é o GNU Stow?

Tente por um instante ler a definição do site do GNU Stow:

GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place. For example, /usr/local/bin could contain symlinks to files within /usr/local/stow/emacs/bin, /usr/local/stow/perl/bin etc., and likewise recursively for any other subdirectories such as .../share, .../man, and so on.

A primeiro momento a descrição pode parecer confusa, então vou resumir para você:

Apesar de seu proposito original ser o de manipular múltiplas versões de um software, o GNU Stow é basicamente um gerenciador de links simbólicos

Organização e boas práticas

É uma prática comum entre desenvolvedoras guardar seus dotfiles dentro de um repositório git, com isso você não precisará passar um bom tempo copiando arquivos de configuração de máquina para máquina.

Caso você ainda não possua um repositório git contendo seus dotfiles, sugiro que você crie uma pasta chamada dotfiles no Github, Gitlab ou qualquer outro repositório git.

O Github possui uma página específica sobre o assunto, nela você encontra argumentos para armazenar seus dotfiles na plataforma, além de descobrir configurações de outras desenvolvedoras e aprimorar as suas.

Os meus dotfiles por exemplo estão em um repositório no Github.


Se você chegou até aqui, provavelmente já tem algum diretório com o nome dotfiles versionado pelo git e que esteja disponibilizado em alguma ferramenta como Github ou Gitlab.

Em muitos sistemas operacionais o Stow (como é comumente chamado) não vem instalado por padrão, para instalar no OSX basta utilizar o Homebrew para instalar:

brew install stow

Para outros sistemas operacionais o Stow está disponível para download no HTTP do GNU.

Suponhamos que você queira configurações especificas para o seu git. Entãao crie uma pasta git dentro da pasta dotfiles e adicione o arquivo .gitconfig que contém todas as suas configurações do git.

A árvore de pastas deverá ficar assim:

dotfiles/
|__ git
|____.gitconfig

Agora basta rodar o comando stow git de dentro da pasta dotfiles, o Stow irá  ver os arquivos que estão presentes na pasta git e criar um link simbólico para eles um nível acima da pasta em que ele foi executado, por exemplo:

Figura 1: Link simbólico para dotfiles do git que foram criados através do GNU Stow

Conclusão

Depois da introdução sobre boas práticas acredito que não preciso te convencer a versionar seus arquivos de configuração, ao utilizar o GNU Stow para geração de links simbólicos você vai ganhar um bom tempo e não precisará ficar criando scripts shell, por exemplo, para automatizar essa tarefa.

Ficou com dúvidas? Deixe um comentário :)


Referências

https://www.gnu.org/software/stow/

https://dotfiles.github.io/

Author image
Brasil
I'm a Full-Stack Developer with good experience on design and architecture of software projects, agile methodologies, continuous integration, continuous deployment and continuous delivery.