../Retornar

MEU FLUXO DE TRABALHO ULTIMATE

Data: 27 de agosto de 2025 às 21:28

Por: Jefferson Carneiro


A tempos eu busco ter um fluxo de trabalho que seja automatizado para novas instalações caso precise e que seja portável. Meu setup de programas não é complexo, eu uso muito poucos softwares no dia a dia que são mais para edição de video, gravação, virtualização e alguma coisa para programação. A maioria das coisas eu portei para web, então meu fluxo ficou bem tranquilo.

Resolvi fazer um experimento a um tempo atrás com o Debian, a distribuição que venho utilizando no meu desktop nos últimos tempos e consegui criar um fluxo legal. Nada complexo, mas que me serve muito bem. Uma das coisas que mais estou odiando nos últimos tempos é ficar sujando o sistema e deixando ele pesado, estou preferindo deixar em container a maioria das coisas.

Nesta pegada eu acabei testando por quase 2 meses o Fedora Kinoite, uma distribuição que conseguiu dar um passo na frente (o futuro meu amigo(a)) e é bem decente de se usar. Com sua base imutável e atômica o sistema consegue ser muito sólido! Quero criar um video sobre ele e uma postagem futuramente.

A pegada desses tipos de sistemas que estão ganhando força é que a base não pode ser tocada. Em vez disso, você realiza atualizações, instalações ou remoções em camadas, o que gera uma nova entrada no bootmanager. Com esse formato, é possível fazer rollback de maneira muito fácil. A atualização atômica atualiza por completo, tudo ou nada.

A parte de softwares fica como se é imutável? Bom, você pode faz tudo na parte do userspace (na sua maioria) e deve utilizar flatpaks, distrobox, toolbox entre outras ferramentas e nos últimos casos o rpm-ostree. Desta forma você fica muito bem servido na parte de software.

Eu adorei o sistema, deu para aprender muito sobre a pegada dessas distros, porém eu sou um fuçador nato, gosto de ter a liberdade completa e o que mais amei acabei que me sentindo limitado. Então eu pensei, por que não seguir essa lógica no Debian? Deixar o sistema/base somente com softwares realmente necessários como Desktop (kde plasma), softwares de dev como (git, docker, distrobox), (firewall) e o resto meter com flatpak com força!

Eu segui esse caminho, então eu tenho um sistema estável e sólido como o debian e 95% dos meus softwares com flatpak, totalmente isolados em container. Isso tambem garante que daqui 1 ano, quando o Debian estiver com softwares mais velhos, eu ainda tenho as novidades e versões recentes.

(OBS: Flatpak por usar isolamento não significa que é impenetravel! Apenas te dar margem a menos ataque.)

O script

Como eu sou um shellzeiro nato, criei um script muito simples que faz toda a pós instalação do Debian com tudo que eu preciso! Resolvi tambem por a base de instalação/remoção em um arquivo yaml que ficou assim:

slackjeff@atomic:~$ cat packages.yaml 
packages:
  apt:
    install:
      - flatpak
      - wget
      - curl
      - git
      - fastfetch
      - distrobox
      - docker.io
      - kate
    remove:
      - firefox-esr
    hold:
      - startdict-*

flatpak:
    install:
      - org.mozilla.firefox
      - org.ferdium.Ferdium
      - com.obsproject.Studio
      - org.keepassxc.KeePassXC
      - org.kde.kdenlive
      - org.virtmanager.virt-manager
      - org.virtmanager.virt_manager.Extension.Qemu

Por que yaml? Bom, um que é totalmente legível e posso criar "profile" muito facilmente, se eu estiver em um base RH posso só alterar a linha (apt) para (dnf) por exemplo e talvez ter que modificar nome de pacote ou algo do tipo. Antes eu usava Array associativas mas eu migrei para isso.

E o script? Bom vou postar só umas linhas para não pesar esse post, está assim as principais funções:

DEBIAN_POST_INSTALL()
{
    echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Debian PostInstall. ${fgEnd}"

# Atualize a lista e softwares ;) sudo apt update && sudo apt upgrade -y # Começamos removendo os softwares que não utilizo # por padrão. sudo apt purge $(yq eval '.packages.apt.remove | join(" ")' ${config} -y # Adicione no blacklist o maldito # stardict e suas vertentes. sudo apt-mark hold $(yq eval '.packages.apt.hold | join(" ")' ${config} # Faça instalação de alguns pacotes de desenvolvimento # que utilizo com frequência. sudo apt install $(yq eval '.packages.apt.install | join(" ")' ${config} } #Instalação de Flatpaks FLATPAK_INSTALL() { echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Flatpak Add remote repo... ${fgEnd}" flatpak \ remote-add \ --if-not-exists flathub \ https://dl.flathub.org/repo/flathub.flatpakrepo #==================# # Flatpak Packages #==================# for flatpak in $(yq eval '.packages.flatpak.install | .[]' ${config}); do echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Install: ${flatpak} ${fgEnd}" flatpak --assumeyes install "${flatpak}" done }

Note a facilidade de lidar com yaml com o yq!

Bom esse é meu fluxo que vou utilizar por um bom tempo: Debian + flatpak + distrobox (para quebrar coisas). Abraços e até.