21 KiB
AGENTS.md
Guia operacional para agentes trabalhando neste repositorio.
Este arquivo deve refletir o estado atual do repo. Se a estrutura mudar, atualize este documento junto.
Objetivo do repo
- Este repo contem a configuracao pessoal de NixOS e Home Manager da maquina
Nixos. - O setup e especifico para o usuario
ltadeu6e para os hosts versionados neste repo; nao trate este repo como template generico sem adaptar usuario, host, mounts, rede e segredos. - O flake principal gera
nixosConfigurations.NixosenixosConfigurations.NixOracle. - O Home Manager esta embutido no modulo NixOS; nao existe fluxo separado de
home-manager switch.
Regras gerais para agentes
- Priorize mudancas pequenas, simples e revisaveis.
- Nao edite
hosts/Nixos/hardware-configuration.nixsem pedido explicito. - Nao imprima segredos, tokens, chaves, conteudo de arquivos
.ageou valores vindos de/run/agenix/*. - Prefira editar a fonte de verdade declarativa, nao o arquivo gerado em
~/.config,/etcou/run. - Se um comportamento e gerado por Home Manager ou NixOS, altere o modulo que gera o arquivo, nao o arquivo final.
- Ao adicionar servicos, habilite apenas o necessario e documente dependencias novas neste arquivo.
- Antes de remover um arquivo de
configs/, confirme se ele ainda e referenciado porhome/ltadeu6.nixouhosts/Nixos/configuration.nix.
Mapa rapido do repo
flake.nix: entrada principal do flake, inputs e wiring dos modulos.flake.lock: lockfile dos inputs do flake.hosts/Nixos/configuration.nix: modulo principal do sistema.hosts/Nixos/hardware-configuration.nix: hardware, filesystem e driver de video; gerado pelo NixOS.hosts/NixOracle/configuration.nix: modulo minimo do VPSNixOracle.hosts/NixOracle/hardware-configuration.nix: placeholder para o hardware do VPS; substitua pelo gerado no host.home/ltadeu6.nix: modulo principal do Home Manager do usuario.home/openclaw.nix: modulo opcional do OpenClaw; so entra seenableOpenClaw = trueemflake.nix.configs/hypr/: fontes de verdade do Hyprland e asset do wallpaper.configs/waybar/: configs e scripts do Waybar.configs/doom/: configuracao do Doom Emacs versionada no repo.configs/home-assistant/: scripts auxiliares consumidos por servicos do host para alimentar o Home Assistant.configs/home-assistant/codex_status.py: exportador do status local do Codex.configs/home-assistant/ui-lovelace.yaml: dashboard principal do Home Assistant em YAML.
configs/wofi/: configuracao e tema do launcher Wofi.secrets/secrets.nix: regras do agenix.secrets/*.age: segredos criptografados.openclaw/documents/: documentos consumidos pelo modulo opcional do OpenClaw..codex/: metadata local de ferramentas/agentes; nao faz parte da configuracao do sistema.README.md: resumo humano do repo; oAGENTS.mddeve ser mais preciso para trabalho automatizado.
Inputs do flake e dependencias externas
Inputs declarados em flake.nix
nixpkgs: canal principalnixos-25.11.nixpkgs-unstable: canalnixos-unstable, exposto via overlay comopkgs.unstable.home-manager:release-25.11, seguindo onixpkgsprincipal.agenix: gerenciamento de segredos.nix-openclaw: overlay e modulo opcional do OpenClaw.
Como o flake e montado hoje
- O sistema alvo e
x86_64-linux. - A flag local
enableOpenClawestafalseemflake.nix. - Mesmo com
home/openclaw.nixeopenclaw/documents/no repo, eles nao entram na avaliacao enquantoenableOpenClawcontinuarfalse. - O overlay injeta:
nix-openclaw.overlays.default- override em
openclaw - override em
openclaw-gateway pkgs.unstable
Fonte de verdade por area
Sistema
- Fonte principal:
hosts/Nixos/configuration.nix - Nao edite arquivos em
/etc,/run/current-system,/run/agenixou servicos gerados; todos sao outputs.
Hardware
- Fonte principal:
hosts/Nixos/hardware-configuration.nix - Este arquivo contem mounts e driver de video. Caminhos absolutos ali sao esperados e nao devem ser "corrigidos" sem pedido explicito.
Home Manager
- Fonte principal:
home/ltadeu6.nix - O Home Manager publica arquivos em
~/.configa partir deconfigs/ou gera alguns deles inline.
Hyprland / wallpaper
configs/hypr/hyprland.confe a fonte de verdade do Hyprland.configs/hypr/nixos.pnge o asset versionado do wallpaper.~/.config/hypr/hyprpaper.confNAO existe no repo; ele e gerado inline porhome/ltadeu6.nix.~/.config/hypr/nixos.pngtambem e publicado pelo Home Manager a partir deconfigs/hypr/nixos.png.~/.config/hypr/scripts/screenshot-active-window.she gerado inline porhome/ltadeu6.nix.- O comentario de cabecalho "AUTOGENERATED HYPR CONFIG" em
configs/hypr/hyprland.confe legado; apesar disso, o arquivo versionado no repo e a fonte real.
Waybar
- Fontes de verdade:
configs/waybar/configconfigs/waybar/style.cssconfigs/waybar/dracula.cssconfigs/waybar/air_control.pyconfigs/waybar/launch.shconfigs/waybar/switch_sink.shconfigs/waybar/spotify_status.sh
- Esses arquivos sao publicados em
~/.config/waybar/pelo Home Manager.
Doom Emacs
- Fontes de verdade:
configs/doom/config.elconfigs/doom/init.elconfigs/doom/packages.el
- Nao existe
configs/doom/config.orgno estado atual do repo. configs/doom/custom.elnao e versionado; trate customizacoes locais geradas pelo Emacs como fora do escopo do repo.
Wofi
- Fontes de verdade:
configs/wofi/configconfigs/wofi/style.cssconfigs/wofi/menuconfigs/wofi/menu.css
OpenClaw
home/openclaw.nixe a fonte do modulo Home Manager do OpenClaw.openclaw/documents/so importa quandoenableOpenClaw = true.- Nao altere
openclaw/documents/achando que isso afetara o sistema atual sem antes verificar se o modulo esta habilitado.
Estrutura funcional atual
hosts/Nixos/configuration.nix
Este modulo concentra:
- Variaveis locais do host:
username = "ltadeu6"homeDir = "/home/${username}"
agenix:- identidade em
${homeDir}/.ssh/id_ed25519 - segredos opcionais via
builtins.pathExists
- identidade em
nix.settings:nix-commandflakesauto-optimise-store- cache CUDA extra
- boot:
systemd-boot- Plymouth
- kernel params silenciosos
vhba
- rede:
- host
Nixos networkmanager- firewall desabilitado
- IP estatico em
enp4s0 - gateway e DNS fixos
extraHostscom aliasvps- bloco WireGuard comentado
- host
- locale:
- timezone
America/Sao_Paulo - locale
pt_BR.UTF-8 - keymap
br-abnt2
- timezone
- programas habilitados:
cdemugamescopevirt-managergnupg.agentnautilus-open-any-terminalfishhyprlandneovimnix-lddconfkdeconnectsteamstarshipjavahtopgitgamemodefirefoxadb
- servicos habilitados:
fstrimhome-assistantdbusdisplayManager.gdmgvfsgnome.gnome-keyringudisks2flatpakopensshemacsprintingpipewire
- servicos atualmente declarados mas desabilitados:
mysqlterrariaminecraft-serverjupyterhub
- audio e input:
services.pulseaudio.enable = falsepipewirecom ALSA, Pulse e JACKsecurity.rtkit.enable = truehardware.uinput.enable = truehardware.bluetooth.enable = true
- automacoes do sistema:
- perfil
/etc/profile.d/openai.sh - perfil
/etc/profile.d/openclaw.sh nix-flake-updatetimer/serviceflatpak-updatetimer/servicenix.gcsemanal
- perfil
- usuario:
users.users.ltadeu6- grupos:
terraria,mysql,networkmanager,wheel,storage - shell
fish
- virtualizacao:
libvirtd.enable = truedocker = falsewaydroid = false
- desktop infra:
- fontes Nerd Fonts
xdg.portalcom portal GTKallowUnfree = true
Notas importantes sobre configuration.nix
services.transmissioneservices.syncthingforam removidos; nao reintroduza sem pedido explicito.- Os segredos do Syncthing tambem foram removidos do repo.
- O servico
nix-flake-updatenao depende mais de path absoluto fixo do checkout; ele busca um repo sob$HOMEcontendohosts/Nixos/configuration.nix. nix-flake-updatefaz:nix flake update --commit-lock-filenixos-rebuild switch --flake "$repo_dir#Nixos"- somente se o repo estiver limpo exceto por
flake.lock
Estrutura do Home Manager (home/ltadeu6.nix)
Este modulo concentra:
- identidade do usuario:
home.username = "ltadeu6"home.homeDirectory = "/home/ltadeu6"home.stateVersion = "25.11"
- programas/configs gerenciados:
kittydunstgtk- cursor
Breeze xdg.mimeAppsxdg.userDirsspotifydprograms.home-manager.enable = true
- session variables:
MANPAGERHYPRCURSOR_THEMEHYPRCURSOR_SIZEQT_QPA_PLATFORMTHEME
- ativacao custom:
home.activation.openclawGatewayEnv- gera
~/.config/openclaw/gateway.enva partir de/run/agenix/openclaw_gateway_token
Arquivos publicados/gerados pelo Home Manager
- Hypr:
- publica
configs/hypr/hyprland.conf - gera
~/.config/hypr/hyprpaper.conf - publica
configs/hypr/nixos.png - gera
~/.config/hypr/scripts/screenshot-active-window.sh
- publica
- Hyfetch:
- gera
~/.config/hyfetch.json
- gera
- Waybar:
- publica
config,style.css,dracula.css - publica
air_control.py - publica
spotify_status.sh - publica
launch.sh - publica
switch_sink.sh
- publica
- Doom:
- publica
config.el,init.el,packages.el
- publica
- Wofi:
- publica
config,style.css,menu,menu.css
- publica
Dependencias de home.packages
Nao replique toda a lista daqui em outras docs; a fonte de verdade e home/ltadeu6.nix.
Pacotes de sessao e desktop usados diretamente pelos configs:
waybarhyprpaperwofipavucontrolplayerctljqgrimslurpwl-clipboardnetworkmanagerhyprpickerpapirus-icon-themempvevinceripgrep
Pacotes relevantes para trabalho/dev presentes no estado atual:
unstable.codexvscodeclang-toolsnodejsstylelinthtml-tidyshfmtshellcheckblackisortpipenvnixfmt-classicfdtmuxtexlab
Pacotes de uso geral e apps pesados presentes:
tor-browserlibreofficegimpinkscapeblenderdiscord-ptbandroid-studiognome-boxesprismlaunchersageWithDoc
Para lista completa, consulte diretamente home.packages.
Arquivos e comportamento por aplicacao
Hyprland
Arquivo principal:
configs/hypr/hyprland.conf
Comportamentos importantes:
- Define dois monitores por descricao:
- LG ultrawide em alta taxa de refresh
- monitor lateral
STD Computer Inc LED
- Autostart:
waybarhyprpaperdbus-launch kdeconnect-indicatorantimicroxcom perfil em/etc/antimicrox/controller-mouse.amgp- shell snippet que usa
hyprctl,jqexrandrpara forcar monitor primario
- Launcher:
- usa
wofi --show drun
- usa
- Screenshots:
- area via
grim+slurp - tela inteira via
grim - janela ativa via script gerado pelo Home Manager
- area via
- Workspaces:
- workspaces
1..9no monitor ultrawide - workspace
10no monitor lateral
- workspaces
- Regras especiais:
- Steam e jogos Proton na workspace 4
- Emacs na workspace 2
- Multimedia keys:
- dependem de
playerctl
- dependem de
Cuidados:
- O autostart assume disponibilidade de
dbus-launch,kdeconnect-indicator,hyprctl,jqexrandr. - Se alterar nomes/descricoes de monitor, ajuste tanto os
monitor = ...quanto o snippet que detecta a saida primaria.
Hyprpaper
- O wallpaper e controlado por
home/ltadeu6.nix, nao por um arquivoconfigs/hypr/hyprpaper.conf. - O runtime usa
~/.config/hypr/nixos.png, publicado a partir deconfigs/hypr/nixos.png. - Se trocar a imagem do wallpaper, prefira substituir
configs/hypr/nixos.pngou ajustar o source emhome/ltadeu6.nix.
Waybar
Arquivos principais:
configs/waybar/configconfigs/waybar/style.cssconfigs/waybar/dracula.cssconfigs/waybar/air_control.pyconfigs/waybar/launch.shconfigs/waybar/switch_sink.shconfigs/waybar/spotify_status.sh
Modulos relevantes:
hyprland/workspacescavacustom/acclockcustom/spotifynetworkbluetoothpulseaudiobacklightbatterycustom/poweroff
Dependencias e assumptions do Waybar:
custom/spotifydepende despotifydeplayerctl.pulseaudiousapavucontrolepactl.bluetoothchamabluetoothctl.custom/acexecuta~/.config/waybar/air_control.py.- Os botoes de lock chamam
hyprlock.
Cuidados:
configs/waybar/configreferenciahyprlock,bluetoothctle o modulocava.- Nem toda dependencia usada no runtime aparece perto do arquivo que a consome; verifique
home.packages,environment.systemPackagese os servicos do sistema antes de alterar comandos.
Waybar AC / Home Assistant
Arquivo principal:
configs/waybar/air_control.py
Regras atuais:
- Usa apenas stdlib Python:
urllibjsonfcntl- etc.
- Nao depende de
requests, apesar depython3Packages.requestsexistir emhome.packages. - Fala com Home Assistant em
http://localhost:8123. - Controla a entidade
climate.ar. - Le token em
~/.config/secrets/ha_token. - Usa debounce e estado local em
~/.cache. - Arquivos de cache:
~/.cache/waybar_air_state.json~/.cache/waybar_air_state.lock
- Regras de UX:
- alteracoes de setpoint/modo/fan aparecem primeiro na UI
- envio real e atrasado por debounce
fan_onlyedrymostram temperatura atual do ambiente- fan speed aparece como indicador pequeno/subscrito
Spotify no Waybar
Arquivo principal:
configs/waybar/spotify_status.sh
Regras atuais:
- Descobre o player com
playerctl -l | rg '^spotifyd\.instance'. - Mostra artista + titulo.
- Usa um icone para
Playinge outro paraPaused. - So faz sentido se
services.spotifyd.enable = true, o que esta habilitado hoje emhome/ltadeu6.nix.
Doom Emacs
Arquivos principais:
configs/doom/init.elconfigs/doom/config.elconfigs/doom/packages.el
Estado atual:
init.elhabilita uma lista longa de modulos Doom, incluindo:verticocorfutreemacsvtermlsp- linguagens como
cc,ess,gdscript,json,java,javascript,kotlin,latex,nix,org,python,qt,rust,sh,web,yaml
packages.eladiciona:org-refvue-modekivy-modetreemacs-all-the-icons
config.elcontem:- identidade do usuario
- tema Dracula
- fontes FiraCode Nerd Font Mono
- ajustes de LSP/clangd
- integracao com
org-ref - configuracao de PDF tools
- classe
abntex2para LaTeX - dashboard customizado
Cuidados:
- Se alterar modulos ou
packages.el, normalmente e preciso rodardoom syncfora do fluxo Nix. - Nao documente
config.orgoucustom.elcomo fonte de verdade; esses arquivos nao sao parte ativa do repo atual.
Wofi
Arquivos principais:
configs/wofi/configconfigs/wofi/style.cssconfigs/wofi/menuconfigs/wofi/menu.css
Estado atual:
configdefine um launcherdruncentralizado com promptBuscar....menuparece ser config auxiliar parawofi-wifi-menu.- Tema usa Fira Code Nerd Font e paleta no estilo Dracula.
OpenClaw
Arquivo principal:
home/openclaw.nix
Estado atual:
- O modulo esta presente, mas desligado pelo gate
enableOpenClaw = falseemflake.nix. - Quando habilitado, ele:
- liga
programs.openclaw - usa
../openclaw/documents - configura gateway local
- busca token em
OPENCLAW_GATEWAY_TOKEN - aponta o provider Ollama para
http://127.0.0.1:11434 - usa modelo
ollama/gemma4:e4b
- liga
Secrets e variaveis de ambiente
Segredos versionados hoje
secrets/openai_api_key.agesecrets/openclaw_gateway_token.agesecrets/minecraft_rcon_password.agesecrets/wireguard_private_key.age
Regras do agenix
- Fonte de verdade:
secrets/secrets.nix - Nunca grave segredo em texto puro no repo.
- Se adicionar novo
.age, atualizesecrets/secrets.nixe o consumo correspondente no modulo Nix.
Exposicao em runtime
fish.shellInitexporta:OPENAI_API_KEYOPENCLAW_GATEWAY_TOKEN
/etc/profile.d/openai.she/etc/profile.d/openclaw.shfazem o mesmo para shells de login.- O token do Home Assistant do Waybar AC NAO esta sob agenix neste repo; ele e lido diretamente de
~/.config/secrets/ha_token.
Dependencias implicitas e pontos de atencao
Itens que um agente deve verificar antes de mexer:
hyprlocke chamado pelo Waybar, mas nao aparece explicitamente perto do modulo que o consome.xrandre chamado porconfigs/hypr/hyprland.conf; confirme disponibilidade antes de trocar esse fluxo.dbus-launchekdeconnect-indicatorsao usados no autostart do Hyprland.bluetoothctle usado por Waybar.playerctle usado tanto no Hyprland quanto no Waybar.pactle necessario paraconfigs/waybar/switch_sink.sh.Home Assistantlocal e~/.config/secrets/ha_tokensao dependencias externas do controle de ar.open-webuidepende doollamaconfigurado no host.
Home Assistant / Codex status
Arquivo principal:
configs/home-assistant/codex_status.py
Estado atual:
- O host exporta o status local do Codex a partir de
~/.codex/sessions/.../*.jsonl. - O export e feito pelo timer
codex-status-export, que gera/var/lib/hass/codex_status.json. - O Home Assistant le esse JSON via sensores
command_line. - Sensores expostos hoje:
sensor.codex_5h_leftsensor.codex_5h_resetsensor.codex_5h_reset_formattedsensor.codex_weekly_leftsensor.codex_weekly_resetsensor.codex_weekly_reset_formatted
Cuidados:
- Nao tente obter esses dados via API de billing da OpenAI sem necessidade; o estado atual usa apenas arquivos locais do Codex.
- Se mover a origem dos logs do Codex, ajuste
CODEX_SESSION_ROOTno servicocodex-status-export. - O dashboard do Home Assistant continua em storage mode; a fonte declarativa aqui cobre os sensores, nao os cards da UI.
Home Assistant / dashboard do Codex
Arquivo principal:
configs/home-assistant/ui-lovelace.yamlconfigs/home-assistant/ui-overview.yaml
Estado atual:
- A dashboard principal
Homee declarativa e vem deui-lovelace.yaml. - Os recursos custom do Lovelace sao declarados em
services.home-assistant.config.lovelace.resources. - O painel do Codex existe na dashboard principal
Homee tambem na dashboard extraVisão Geral. - O painel escolhido para o Codex e o minimalista.
Dependencias visuais atuais:
lovelace-mushroombutton-card
Cuidados:
- Se algum desses recursos nao estiver instalado no HACS, a dashboard pode abrir com erro de
custom element doesn't exist. - Mudancas pela UI na dashboard principal nao sao a fonte de verdade; o repo sobrescreve
ui-lovelace.yaml. - Recursos Lovelace relevantes devem ser mantidos na configuracao declarativa, nao apenas pela UI.
Arquivos gerados que NAO devem ser editados diretamente
~/.config/hypr/hyprpaper.conf~/.config/hypr/nixos.png~/.config/hypr/scripts/screenshot-active-window.sh~/.config/hyfetch.json~/.config/openclaw/gateway.env/etc/antimicrox/controller-mouse.amgp/etc/antimicrox/player-toggle.sh/etc/antimicrox/disable-controller.sh/etc/profile.d/openai.sh/etc/profile.d/openclaw.sh
Comandos uteis
Rebuild / apply
sudo nixos-rebuild switch --flake .#Nixos
Validacao mais fiel do sistema
nix --extra-experimental-features 'nix-command flakes' build --print-out-paths '.#nixosConfigurations."Nixos".config.system.build.toplevel' --no-link
Parse basico de sintaxe Nix
nix-instantiate --parse hosts/Nixos/configuration.nixnix-instantiate --parse home/ltadeu6.nix
Procura estrutural
rg -n 'algum-termo' .rg --files
Doom Emacs
- Se mudar
configs/doom/init.elouconfigs/doom/packages.el, pode ser necessario rodardoom sync.
Politica para mudancas
- Mantenha a logica declarativa no arquivo de origem:
- sistema em
hosts/Nixos/configuration.nix - usuario em
home/ltadeu6.nix - apps em
configs/...
- sistema em
- Se um arquivo em
configs/estiver versionado e for publicado porhome.file, prefira editar esse arquivo. - Se um arquivo em
~/.confige gerado via.textou script inline, editehome/ltadeu6.nix. - Nao reintroduza paths absolutos para o checkout do repo; o sistema atual foi limpo para evitar dependencia no local exato do projeto.
- Ao mexer com wallpapers, mantenha o asset dentro do repo ou em caminho controlado pelo Nix/Home Manager.
- Ao mexer com timers/servicos que fazem
gitounix, considere que o sandbox do agente pode falhar por escrita em cache; isso nao significa que a configuracao Nix esteja errada.
Estado atual que agentes nao devem contradizer
configs/hypr/hyprpaper.confnao existe mais no repo como fonte de verdade.Transmissionnao esta configurado no sistema.Syncthingnao esta configurado no sistema.- Os secrets do Syncthing foram removidos.
- O OpenClaw continua opcional e desligado por default.
- O wallpaper do Hypr e entregue pelo Home Manager a partir de
configs/hypr/nixos.png. - O script
configs/waybar/spotify_status.she a fonte real do status do Spotify no Waybar.
Commits
- Use mensagens curtas e descritivas em ingles.
- Se o GPG falhar, prefira desabilitar assinatura naquele commit em vez de bloquear a mudanca.