arrow_backBack to WorkVoltar para Projetos
Linux · Bash · Git

Automação Linux

A bare git repository for managing system dotfiles with full version control and automated provisioning scripts. Built for my Arch/EndeavourOS setup.Um repositório Git bare para gerenciar dotfiles do sistema com controle de versão completo e scripts automatizados de provisionamento. Feito para meu setup Arch/EndeavourOS.

LanguageLinguagemBash
TypeTipoDevOps / AutomationDevOps / Automação
PlatformPlataformaArch / EndeavourOS

01 OverviewVisão Geral

Managing dotfiles is a classic Linux power-user problem. The naive solution — symlinks and a manual setup script — breaks every time you switch machines. The bare git repository approach solves this elegantly: your home directory itself becomes tracked, with no symlinks required.Gerenciar dotfiles é um problema clássico para usuários avançados de Linux. A solução ingênua — symlinks e um script manual de setup — quebra sempre que você troca de máquina. A abordagem com repositório Git bare resolve isso de forma elegante: a própria home vira o work-tree, sem exigir symlinks.

This project implements that pattern with scripts layered on top for automated package list backups, font installations, and full environment reprovisioning from a single command.Este projeto implementa esse padrão com scripts adicionais para backup automatizado da lista de pacotes, instalação de fontes e reprovisionamento completo do ambiente com um único comando.

02 Key Design DecisionsDecisões de Design

Bare repo, not symlinksRepo bare, não symlinks

Using git --bare with a custom work-tree alias means the home directory is the repo. No symlink management, no helper tools like stow required.Usar git --bare com um alias de work-tree customizado faz da home o repositório. Sem gerenciamento de symlinks, sem precisar de ferramentas auxiliares como stow.

Automated package backupBackup automatizado de pacotes

A cron-driven script exports the explicitly installed package list with pacman -Qqe into a tracked file, so a fresh install can reproduce the exact environment.Um script agendado por cron exporta a lista de pacotes instalados explicitamente com pacman -Qqe para um arquivo versionado, permitindo reproduzir o ambiente exato em uma instalação nova.

Single-command bootstrapBootstrap em um comando

A setup.sh script handles the full provisioning: clone bare repo, install packages from list, install fonts, apply configs.Um script setup.sh cuida de todo o provisionamento: clona o repo bare, instala pacotes da lista, instala fontes e aplica configurações.

03 LearningsAprendizados

_Idempotent scripts are essential — running bootstrap twice should produce the same result as running it once.
_Error handling in shell scripts is underappreciated — set -euo pipefail saved me multiple times.
_Version-controlling your environment is as valuable as version-controlling your code.

Tech UsedTecnologias Utilizadas

Bash Git (bare) Pacman Cron systemd

Key FeaturesPrincipais Recursos

  • Bare git repo patternPadrão de repositório bare git
  • Automated package list backupBackup automatizado da lista de pacotes
  • One-command bootstrapBootstrap em um comando
  • Font & config provisioningProvisionamento de fontes e configs