7.7 KiB
/orient — Guia operacional do nixos-config
Você está trabalhando no repositório NixOS pessoal de ltadeu6. Este guia cobre tudo o que você precisa para operar, modificar e depurar este sistema. Leia com atenção antes de fazer qualquer mudança.
1. Fonte de verdade primária
O arquivo AGENTS.md na raiz do repo é a documentação canônica e deve ser consultado sempre. Este skill é um complemento de orientação rápida — se houver conflito, o AGENTS.md prevalece.
Se tiver dúvidas adicionais que não estejam aqui nem no AGENTS.md, inspecione o código diretamente:
hosts/Nixos/configuration.nix— sistema localhosts/NixOracle/configuration.nix— VPS Oraclehome/ltadeu6.nix— Home Managerflake.nix— entrypoint, inputs, overlayssecrets/secrets.nix— mapa de todos os secrets
Use rg -n 'termo' para buscar definições. Leia os arquivos antes de assumir qualquer coisa.
2. Dois sistemas neste flake
| Sistema | Host | Onde fica | Como fazer deploy |
|---|---|---|---|
Nixos |
máquina local x86_64 | hosts/Nixos/ |
sudo nixos-rebuild switch --flake .#Nixos |
NixOracle |
VPS Oracle Cloud (tadix.dev) |
hosts/NixOracle/ |
./deploy-oracle.sh |
Nunca confunda os dois. Secrets, serviços e hardware são completamente diferentes.
3. Deploy do NixOracle (VPS)
Sempre use o script de deploy — ele cria uma snapshot antes de cada rebuild:
./deploy-oracle.sh
O script:
- Lê credenciais OCI de
~/.oci/(gerado automaticamente pelo Home Manager) - Localiza a instância e o boot volume via API
- Apaga snapshots antigas se houver mais de 4
- Cria nova snapshot incremental
- Roda
nixos-rebuild switch --flake .#NixOracle --target-host root@tadix.dev
Se ~/.oci/ não existir, rode um sudo nixos-rebuild switch --flake .#Nixos para ativar o home.activation.ociCredentials.
4. Secrets e credenciais
Como funciona
- Secrets ficam em
secrets/*.age, criptografados comageusando a chave SSH do usuário. - O
agenixdescriptografa em/run/agenix/<nome>na ativação do sistema. - A identidade usada é
~/.ssh/id_ed25519. - Para adicionar um secret: criptografe com
age, adicione emsecrets/secrets.nix, declare emage.secretsnoconfiguration.nix.
Secrets disponíveis hoje
Arquivo .age |
Onde é usado |
|---|---|
openai_api_key |
OPENAI_API_KEY no ambiente (fish + profile.d) |
openclaw_gateway_token |
OPENCLAW_GATEWAY_TOKEN + ~/.config/openclaw/gateway.env |
forgejo_api_token |
FORGEJO_API_TOKEN no ambiente |
android_release_keystore |
keystore para assinar APKs |
android_release_store_password |
senha do keystore |
android_release_key_password |
senha da chave dentro do keystore |
matrix_android_firebase_service_account |
.secrets/firebase-service-account.json no projeto |
matrix_android_google_services |
app/google-services.json no projeto |
matrix_android_commander_credentials |
.mc/credentials.json no projeto |
cloudflare_worker_api_token |
deploy de Workers |
cloudflare_dns_api_token |
leitura de DNS/Zone |
minecraft_rcon_password |
servidor Minecraft |
oci_key |
chave privada OCI API → ~/.oci/key.pem |
oci_config |
config OCI → ~/.oci/config |
Nunca imprima conteúdo de /run/agenix/* ou arquivos .age.
5. Como buildar um APK Android
O projeto Android relevante é o matrix-android. O processo exige três coisas:
5a. Credenciais de assinatura
# Exporta variáveis de ambiente para o processo filho apenas
android-signing-env ./gradlew assembleRelease
# ou
android-signing-env ./gradlew bundleRelease
O helper android-signing-env expõe:
ANDROID_KEYSTORE_PATH→/run/agenix/android_release_keystoreANDROID_KEYSTORE_TYPE,ANDROID_KEY_ALIAS,ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_PASSWORDPUSH_GATEWAY_URL→https://matrix-push-gateway.ltadeu6.workers.dev
5b. Secrets do projeto (Firebase, google-services, credenciais)
# No diretório raiz do projeto matrix-android:
matrix-android-secrets .
Isso cria symlinks de /run/agenix/ para os paths esperados pelo projeto.
5c. Se faltar alguma ferramenta (Gradle, JDK, etc.)
Use nix develop — veja a seção 8.
6. OCI CLI (Oracle Cloud)
Para operações na Oracle Cloud:
nix-shell -p oci-cli --run "oci <comando> --auth api_key"
As credenciais ficam em ~/.oci/config e ~/.oci/key.pem (symlinks para /run/agenix/). Se não existirem, recrie com:
sudo nixos-rebuild switch --flake .#Nixos
Operações comuns:
# Listar instâncias
nix-shell -p oci-cli --run "oci compute instance list --compartment-id $(awk -F= '/^tenancy/{gsub(/ /,"",$2);print $2}' ~/.oci/config) --auth api_key"
# Criar snapshot manual
nix-shell -p oci-cli --run "oci bv boot-volume-backup create --boot-volume-id <id> --display-name 'manual-backup' --type INCREMENTAL --auth api_key"
Limite free tier: 5 snapshots. Apague antigas antes de criar novas.
7. Serviços no NixOracle (VPS)
| Serviço | URL | Porta interna |
|---|---|---|
| homepage | tadix.dev |
— |
| Forgejo | git.tadix.dev |
3000 |
| Nextcloud 32 | nextcloud.tadix.dev |
— |
| JupyterLab | jupyter.tadix.dev |
8888 |
| BioLab (site estático) | biolab.tadix.dev |
— |
- SSH:
root@tadix.devou via Tailscaleroot@100.64.0.1 - IP público:
204.216.130.111 - Deploy: sempre via
./deploy-oracle.sh
8. Software ausente — use nix develop ou nix-shell
Se qualquer ferramenta não estiver disponível no ambiente atual, não tente instalar globalmente. Use:
# Ambiente temporário com um pacote
nix-shell -p <pacote> --run "<comando>"
# Ex: OCI CLI
nix-shell -p oci-cli --run "oci ..."
# Ex: ferramentas de build
nix-shell -p gradle jdk21 --run "gradle assembleRelease"
# Ex: Python com pacotes
nix-shell -p python3 python3Packages.requests --run "python3 script.py"
# Se o projeto tem flake.nix ou shell.nix com devShell:
nix develop
Pacotes instalados via nix-shell não persistem — isso é intencional.
9. Home Manager
O Home Manager está embutido no módulo NixOS — não existe home-manager switch separado. Para aplicar mudanças em home/ltadeu6.nix:
sudo nixos-rebuild switch --flake .#Nixos
Arquivos em configs/ são a fonte de verdade para apps — o Home Manager os publica em ~/.config/. Nunca edite os arquivos em ~/.config/ diretamente.
10. Adicionando serviços ou pacotes
No sistema local (Nixos)
- Pacotes do sistema:
environment.systemPackagesemhosts/Nixos/configuration.nix - Pacotes do usuário:
home.packagesemhome/ltadeu6.nix - Serviços:
services.<nome>.enable = trueemhosts/Nixos/configuration.nix
No VPS (NixOracle)
- Edite
hosts/NixOracle/configuration.nix - Deploy com
./deploy-oracle.sh
11. Validação antes de rebuild
# Verifica sintaxe Nix
nix-instantiate --parse hosts/Nixos/configuration.nix
nix-instantiate --parse home/ltadeu6.nix
# Build completo sem aplicar (mais lento, mais fiel)
nix build --print-out-paths '.#nixosConfigurations."Nixos".config.system.build.toplevel' --no-link
12. Regras invioláveis
- Nunca edite
hardware-configuration.nixsem pedido explícito. - Nunca imprima conteúdo de
/run/agenix/*ou.age. - Nunca edite arquivos em
/etc,/run,~/.configgerados pelo sistema — edite a fonte Nix. - Nunca faça commit de secrets em texto claro.
- Sempre use
./deploy-oracle.shpara o NixOracle — nuncanixos-rebuilddireto em produção. - Se não encontrar um pacote, use
nix-shell -p <pacote>antes de qualquer outra alternativa.