32 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 web do Codex/ChatGPT para o Home Assistant, com fallback para logs locais.configs/home-assistant/ui-lovelace.yaml: dashboard principal do Home Assistant em YAML.
configs/wofi/: configuracao e tema do launcher Wofi.hosts/Nixos/libvirt/: XMLs versionados de VMs locais usadas no hostNixos.secrets/secrets.nix: regras do agenix.secrets/*.age: segredos criptografados.deploy-oracle.sh: script de deploy do NixOracle com snapshot automatica pre-deploy.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.
Topologia de rede
| Host | IP local | IP publico | Tailscale |
|---|---|---|---|
Nixos (maquina local) |
192.168.1.150 |
— | 100.64.0.0 |
NixOracle (VPS) |
— | 204.216.130.111 |
100.64.0.1 |
Pixel 7a |
— | — | 100.64.0.2 |
win11 (VM GNOME Boxes) |
DHCP em 192.168.122.0/24 |
— | 100.90.206.104 |
SSH para o VPS: root@tadix.dev ou root@100.64.0.1 (Tailscale).
SSH para a VM Windows: ssh win11 via alias gerado pelo Home Manager, equivalente a ssh user@win11.
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.
Libvirt / GNOME Boxes
hosts/Nixos/libvirt/win11-3.xmlregistra a VM Windows 11 usada pelo GNOME Boxes.- A VM deve permanecer em
qemu:///session; migrar paraqemu:///systemfaz ela sair do fluxo normal do GNOME Boxes. - A interface de rede da VM usa
type='bridge'comsource bridge='virbr0'para dar IP em192.168.122.0/24e permitir SSH direto do host. - A VM tambem esta no Tailscale como
win11(100.90.206.104no estado atual), entao prefirassh win11quando o alias do Home Manager estiver aplicado. - O alias SSH fica em
programs.ssh.matchBlocks.win11emhome/ltadeu6.nix; nao edite~/.ssh/configdiretamente. - O disco principal ainda usa SATA e a rede libvirt ainda usa
rtl8139; migrar para VirtIO pode melhorar desempenho, mas so faca isso apos confirmar/instalar os drivers VirtIO dentro do Windows. - Nao reintroduza
passtouportForwardnesse XML sem um motivo explicito; a configuracao atual depende deqemu-bridge-helpere de/etc/qemu/bridge.confpermitindovirbr0. - Para aplicar alteracoes nesse XML:
virsh --connect qemu:///session define hosts/Nixos/libvirt/win11-3.xml.
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.
Servicos locais (maquina Nixos)
| Servico | URL / Porta | Notas |
|---|---|---|
| Home Assistant | http://localhost:8123 |
Token em ~/.config/secrets/ha_token (nao e agenix) |
| Ollama | http://127.0.0.1:11434 |
CUDA, OLLAMA_CONTEXT_LENGTH=64000 |
| Open WebUI | http://localhost:8080 |
Interface web para Ollama |
| JupyterHub | porta 8000 |
Desabilitado por padrao |
Ollama / modelos locais
- Fonte principal:
services.ollamaemhosts/Nixos/configuration.nix. - Endpoint:
http://127.0.0.1:11434 OLLAMA_CONTEXT_LENGTH=64000— nao reduza para 8k; quebra prompts grandes com schemas de ferramentas.- Modelos sincronizados hoje:
gemma4:e4b— preferido para agentesgpt-oss:20b— candidato para agentes executores locaisqwen2.5-coder:7b— chat/codigo, baixa confiabilidade para tool-calling
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.ociCredentials- cria
~/.oci/e symlinkskey.pemeconfigpara/run/agenix/oci_keye/run/agenix/oci_config 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-clipboardnetworkmanagerludusavihyprpickerpapirus-icon-themempvevinceripgrep
Pacotes relevantes para trabalho/dev presentes no estado atual:
unstable.codexopencodeempacotado via Home Manager comlibstdc++.so.6noLD_LIBRARY_PATHvscodeclang-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
Backups locais de saves de jogos
Fonte principal:
home/ltadeu6.nix
Estado atual:
- O Home Manager instala
ludusavi. - O timer de usuario
game-save-ludusavi-backup.timerroda de hora em hora. - O servico
game-save-ludusavi-backup.serviceexecuta Ludusavi em modo CLI. - Os backups locais ficam em
~/Backups/game-saves/ludusavi. - O formato usado e
simple, com retencao de 14 backups completos e 14 diferenciais por jogo.
Cuidados:
- Este fluxo e apenas local; nao ha Restic, OCI ou outro destino remoto para saves de jogos no estado atual.
- Se adicionar backup remoto depois, mantenha segredos fora do repo e prefira um repo separado dos backups do VPS.
- Nao faca backup bruto de
~/.local/share/Steam/steamapps; prefira Ludusavi e excecoes pontuais para jogos nao detectados.
Secrets e variaveis de ambiente
Segredos versionados hoje
secrets/openai_api_key.agesecrets/openclaw_gateway_token.agesecrets/forgejo_api_token.agesecrets/android_release_keystore.agesecrets/android_release_store_password.agesecrets/android_release_key_password.agesecrets/matrix_android_firebase_service_account.agesecrets/matrix_android_google_services.agesecrets/matrix_android_commander_credentials.agesecrets/cloudflare_worker_api_token.agesecrets/cloudflare_dns_api_token.agesecrets/minecraft_rcon_password.agesecrets/wireguard_private_key.agesecrets/oci_key.agesecrets/oci_config.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_TOKENFORGEJO_API_TOKEN
/etc/profile.d/openai.sh,/etc/profile.d/openclaw.she/etc/profile.d/forgejo.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.
Android signing
- A chave de assinatura Android para distribuicao fora da Play Store fica em
secrets/android_release_keystore.age. - As senhas ficam em
secrets/android_release_store_password.ageesecrets/android_release_key_password.age. - O alias padrao da chave e
release. - O helper
android-signing-envexportaANDROID_KEYSTORE_PATH,ANDROID_KEYSTORE_TYPE,ANDROID_KEY_ALIAS,ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_PASSWORDePUSH_GATEWAY_URLapenas para o comando filho. PUSH_GATEWAY_URLaponta parahttps://matrix-push-gateway.ltadeu6.workers.dev.- Use
android-signing-env ./gradlew assembleReleaseouandroid-signing-env ./gradlew bundleRelease; nao exporte essas senhas globalmente. - Secrets locais do projeto
matrix-androidtambem ficam sob agenix:matrix_android_firebase_service_accountmaterializa.secrets/firebase-service-account.json.matrix_android_google_servicesmaterializaapp/google-services.json.matrix_android_commander_credentialsmaterializa.mc/credentials.json.
- O helper
matrix-android-secrets [project-dir]cria symlinks desses tres arquivos para/run/agenix; por default usa o diretorio atual. - Nao migre
local.properties, debug keystores,.gradle,.wranglerou caches locais domatrix-androidpara este repo sem um motivo explicito.
Cloudflare
secrets/cloudflare_worker_api_token.agecontem um token para deploy de Workers no account local.secrets/cloudflare_dns_api_token.agecontem um token para DNS/Zone Read.cloudflare-worker-env <comando>exportaCLOUDFLARE_API_TOKENapenas para o comando filho usando o token de Workers.cloudflare-dns-env <comando>exportaCLOUDFLARE_API_TOKENapenas para o comando filho usando o token de DNS.- O token bootstrap usado para criar outros tokens foi temporario; nao reintroduza
cloudflare_bootstrap_api_token.ageno repo. Se outro bootstrap for criado, use apenas para emitir tokens menores, revogue em seguida e remova o.agelocal.
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.OLLAMA_CONTEXT_LENGTHesta em64000; reduzir para 8k quebra prompts grandes de agentes com schemas de ferramentas.
Home Assistant / Codex status
Arquivo principal:
configs/home-assistant/codex_status.py
Estado atual:
- O host exporta preferencialmente o status web do Codex/ChatGPT a partir da sessao autenticada do navegador em
~/.zen/.../cookies.sqlite, usando o container pessoal (userContextId=1) para buscar/api/auth/sessione/backend-api/wham/usage. - Se a sessao web nao estiver disponivel, o exporter faz fallback para
~/.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 a sessao web do ChatGPT/Codex e mantem fallback local.
- Se mudar de perfil/container no Zen, ajuste
CHATGPT_COOKIE_DBouCHATGPT_COOKIE_CONTEXT_PREFIXno exporter antes de assumir que a coleta web continuara funcionando. - 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 / secagem de roupas
Fonte principal:
services.home-assistant.configemhosts/Nixos/configuration.nix
Estado atual:
- O helper
input_boolean.secar_roupase declarado pelo repo. - A automacao
secar_roupas_startinicia o script ao ligar o helper. - A automacao
secar_roupas_stopdesligaclimate.arao desligar o helper. - O script
script.secar_roupas_com_ar_condicionadousaclimate.ar. - As dashboards
ui-lovelace.yamleui-overview.yamlexibem um botao para alternarinput_boolean.secar_roupas. - A temperatura vem de
state_attr('climate.ar', 'current_temperature'); nao ha sensor de umidade dedicado. - A estrategia alterna aquecimento moderado para evaporar agua das roupas e
cool/drypara condensar e drenar a umidade. - No inicio, se a sala estiver abaixo de 24 C, o script usa
heatcom setpoint 25 C ate chegar em 25 C, segura ate 5 minutos se ainda estiver abaixo de 27 C, e tem timeout maximo de 15 minutos. - Durante o loop, abaixo de 21 C o script usa
heatcom setpoint 24 C ate chegar em 24 C, segura ate 5 minutos se ainda estiver abaixo de 26 C, e tem timeout maximo de 20 minutos. - Entre 23 C e 28 C, o script usa pulsos planejados de
coolcom setpoint 22 C por ate 15 minutos, depois volta paradrypor ate 40 minutos. - Acima de 28 C, o script nunca aquece; usa
coolcom setpoint 23 C por ate 20 minutos e depoisdry. - O tempo maximo de execucao e 6 horas; ao expirar, o script desliga
climate.are desligainput_boolean.secar_roupas. - Fan mode e definido apenas se o valor existir em
state_attr('climate.ar', 'fan_modes'); a integracao atual aceita niveis numericos1..5. - O script usa fan
3nodry, fan4nocoole fan5noheat, sempre com fallback para um nivel abaixo. - Apos trocar
hvac_mode, o script espera 10 segundos antes de setpoint/fan para evitar comandos rejeitados durantePOWER_ON.
Cuidados:
- Se trocar a entidade do ar, atualize
haAirConditionernoletdehosts/Nixos/configuration.nix. - Se trocar o helper, atualize
haLaundryDryingToggleno mesmolet. - Nao mova essa logica para arquivos em
/var/lib/hassou pela UI sem refletir a mudanca no repo.
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~/.oci/config(symlink para/run/agenix/oci_config)~/.oci/key.pem(symlink para/run/agenix/oci_key)/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
Servicos no NixOracle (VPS)
| Servico | URL | Porta interna | Notas |
|---|---|---|---|
| Homepage | tadix.dev |
— | Site estatico |
| Forgejo | git.tadix.dev |
3000 |
Git; token em $FORGEJO_API_TOKEN |
| Nextcloud 32 | nextcloud.tadix.dev |
— | PostgreSQL local; admin: ltadeu6 |
| JupyterLab | jupyter.tadix.dev |
8888 |
Senha protegida |
| BioLab | biolab.tadix.dev |
— | Site estatico do repo BioLab |
Forgejo API: base URL https://git.tadix.dev/api/v1. Token disponivel em $FORGEJO_API_TOKEN no ambiente de shell.
Exemplo: curl -H "Authorization: token $FORGEJO_API_TOKEN" https://git.tadix.dev/api/v1/user
Restic backup diario → Oracle Object Storage (bucket-20260526-1825, regiao sa-vinhedo-1).
Itens salvos: dados do Nextcloud, repositorios do Forgejo, notebooks, dump PostgreSQL do Nextcloud.
Retencao: 7 diarios, 4 semanais, 3 mensais.
Secrets de acesso: /etc/restic-secrets/password e /etc/restic-secrets/s3-env (nao sao agenix; provisionados manualmente no VPS).
Deploy NixOracle (com snapshot automatica)
./deploy-oracle.sh- Requer
~/.oci/configurado (gerado automaticamente pelo Home Manager apos rebuild local). - Cria snapshot incremental do boot volume antes de cada deploy, mantendo no maximo 4.
Rebuild / apply
sudo nixos-rebuild switch --flake .#Nixos- NixOracle:
nixos-rebuild switch --flake .#NixOracle --target-host root@tadix.dev(ou via./deploy-oracle.sh)
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
- Sempre faca commit das mudancas feitas por agentes antes de encerrar a tarefa, salvo pedido explicito em contrario.
- Use mensagens curtas e descritivas em ingles.
- Se o GPG falhar, prefira desabilitar assinatura naquele commit em vez de bloquear a mudanca.