Clean paths and refresh agent docs
This commit is contained in:
parent
4b403be798
commit
24f4096ed4
9 changed files with 665 additions and 172 deletions
645
AGENTS.md
645
AGENTS.md
|
|
@ -1,42 +1,623 @@
|
||||||
# AGENTS.md
|
# AGENTS.md
|
||||||
|
|
||||||
Instrucoes para agentes trabalhando neste repositorio.
|
Guia operacional para agentes trabalhando neste repositorio.
|
||||||
|
|
||||||
## Escopo
|
Este arquivo deve refletir o estado atual do repo. Se a estrutura mudar, atualize este documento junto.
|
||||||
- Este repo guarda configuracoes do NixOS e componentes relacionados.
|
|
||||||
- Priorize mudancas simples, pequenas e revisaveis.
|
|
||||||
|
|
||||||
## Estrutura
|
## Objetivo do repo
|
||||||
- `hosts/Nixos/configuration.nix`: configuracao principal do sistema.
|
|
||||||
- `hosts/Nixos/hardware-configuration.nix`: gerado pelo NixOS; edite somente se solicitado.
|
|
||||||
- `secrets/secrets.nix`: regras do agenix (sem segredos em texto puro).
|
|
||||||
- `secrets/secrets.nix`: regras do agenix (sem segredos em texto puro).
|
|
||||||
- `configs/hypr/hyprland.conf`: configuracao do Hyprland.
|
|
||||||
- `configs/hypr/hyprpaper.conf`: wallpaper do Hyprpaper.
|
|
||||||
- `configs/doom/config.el`: configuracao do Doom Emacs (edite este arquivo).
|
|
||||||
- `configs/doom/config.org`: atualmente nao esta funcionando; nao usar como fonte.
|
|
||||||
- `configs/doom/init.el`: modulos do Doom Emacs.
|
|
||||||
- `configs/doom/packages.el`: pacotes adicionais do Doom Emacs.
|
|
||||||
- `configs/doom/custom.el`: customizacoes do Emacs (gerado).
|
|
||||||
|
|
||||||
## Boas praticas
|
- Este repo contem a configuracao pessoal de NixOS e Home Manager da maquina `Nixos`.
|
||||||
- Evite alterar `hardware-configuration.nix` sem pedido explicito.
|
- O setup e especifico para o usuario `ltadeu6` e para o host atual; nao trate este repo como template generico sem adaptar usuario, host, mounts, rede e segredos.
|
||||||
- Nao imprimir segredos, tokens ou chaves.
|
- O flake principal gera apenas `nixosConfigurations.Nixos`.
|
||||||
- Prefira blocos Nix claros e agrupados por topico.
|
- O Home Manager esta embutido no modulo NixOS; nao existe fluxo separado de `home-manager switch`.
|
||||||
- Ao adicionar servicos, habilite apenas o necessario.
|
|
||||||
- Faca mudancas pequenas e simples para evitar complexidade.
|
|
||||||
|
|
||||||
## Waybar (AC)
|
## Regras gerais para agentes
|
||||||
- `configs/waybar/air_control.py` usa apenas stdlib (`urllib`) para falar com o Home Assistant.
|
|
||||||
- Alteracoes de setpoint/modo/fan sao imediatas na UI, com envio real atrasado (debounce) via arquivos em `~/.cache/`.
|
|
||||||
- `fan_only` e `dry` mostram sempre a temperatura atual (room) no display.
|
|
||||||
- Indicador pequeno de fan speed aparece como subscrito ao lado do icone.
|
|
||||||
- `configs/waybar/config` (modulo `custom/ac`): clique alterna on/off, clique direito cicla modos (sem `off`), clique do meio cicla fan; `interval` esta em 3s.
|
|
||||||
|
|
||||||
## Aplicar mudancas
|
- Priorize mudancas pequenas, simples e revisaveis.
|
||||||
- Rebuild: `sudo nixos-rebuild switch --flake .#Nixos`
|
- Nao edite `hosts/Nixos/hardware-configuration.nix` sem pedido explicito.
|
||||||
- Validar sintaxe basica: `nix-instantiate --parse hosts/Nixos/configuration.nix`
|
- Nao imprima segredos, tokens, chaves, conteudo de arquivos `.age` ou valores vindos de `/run/agenix/*`.
|
||||||
|
- Prefira editar a fonte de verdade declarativa, nao o arquivo gerado em `~/.config`, `/etc` ou `/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 por `home/ltadeu6.nix` ou `hosts/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.
|
||||||
|
- `home/ltadeu6.nix`: modulo principal do Home Manager do usuario.
|
||||||
|
- `home/openclaw.nix`: modulo opcional do OpenClaw; so entra se `enableOpenClaw = true` em `flake.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/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; o `AGENTS.md` deve ser mais preciso para trabalho automatizado.
|
||||||
|
|
||||||
|
## Inputs do flake e dependencias externas
|
||||||
|
|
||||||
|
### Inputs declarados em `flake.nix`
|
||||||
|
|
||||||
|
- `nixpkgs`: canal principal `nixos-25.11`.
|
||||||
|
- `nixpkgs-unstable`: canal `nixos-unstable`, exposto via overlay como `pkgs.unstable`.
|
||||||
|
- `home-manager`: `release-25.11`, seguindo o `nixpkgs` principal.
|
||||||
|
- `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 `enableOpenClaw` esta `false` em `flake.nix`.
|
||||||
|
- Mesmo com `home/openclaw.nix` e `openclaw/documents/` no repo, eles nao entram na avaliacao enquanto `enableOpenClaw` continuar `false`.
|
||||||
|
- 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/agenix` ou 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 `~/.config` a partir de `configs/` ou gera alguns deles inline.
|
||||||
|
|
||||||
|
### Hyprland / wallpaper
|
||||||
|
|
||||||
|
- `configs/hypr/hyprland.conf` e a fonte de verdade do Hyprland.
|
||||||
|
- `configs/hypr/nixos.png` e o asset versionado do wallpaper.
|
||||||
|
- `~/.config/hypr/hyprpaper.conf` NAO existe no repo; ele e gerado inline por `home/ltadeu6.nix`.
|
||||||
|
- `~/.config/hypr/nixos.png` tambem e publicado pelo Home Manager a partir de `configs/hypr/nixos.png`.
|
||||||
|
- `~/.config/hypr/scripts/screenshot-active-window.sh` e gerado inline por `home/ltadeu6.nix`.
|
||||||
|
- O comentario de cabecalho "AUTOGENERATED HYPR CONFIG" em `configs/hypr/hyprland.conf` e legado; apesar disso, o arquivo versionado no repo e a fonte real.
|
||||||
|
|
||||||
|
### Waybar
|
||||||
|
|
||||||
|
- Fontes de verdade:
|
||||||
|
- `configs/waybar/config`
|
||||||
|
- `configs/waybar/style.css`
|
||||||
|
- `configs/waybar/dracula.css`
|
||||||
|
- `configs/waybar/air_control.py`
|
||||||
|
- `configs/waybar/launch.sh`
|
||||||
|
- `configs/waybar/switch_sink.sh`
|
||||||
|
- `configs/waybar/spotify_status.sh`
|
||||||
|
- Esses arquivos sao publicados em `~/.config/waybar/` pelo Home Manager.
|
||||||
|
|
||||||
|
### Doom Emacs
|
||||||
|
|
||||||
|
- Fontes de verdade:
|
||||||
|
- `configs/doom/config.el`
|
||||||
|
- `configs/doom/init.el`
|
||||||
|
- `configs/doom/packages.el`
|
||||||
|
- Nao existe `configs/doom/config.org` no estado atual do repo.
|
||||||
|
- `configs/doom/custom.el` nao e versionado; trate customizacoes locais geradas pelo Emacs como fora do escopo do repo.
|
||||||
|
|
||||||
|
### Wofi
|
||||||
|
|
||||||
|
- Fontes de verdade:
|
||||||
|
- `configs/wofi/config`
|
||||||
|
- `configs/wofi/style.css`
|
||||||
|
- `configs/wofi/menu`
|
||||||
|
- `configs/wofi/menu.css`
|
||||||
|
|
||||||
|
### OpenClaw
|
||||||
|
|
||||||
|
- `home/openclaw.nix` e a fonte do modulo Home Manager do OpenClaw.
|
||||||
|
- `openclaw/documents/` so importa quando `enableOpenClaw = 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`
|
||||||
|
- `nix.settings`:
|
||||||
|
- `nix-command`
|
||||||
|
- `flakes`
|
||||||
|
- `auto-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
|
||||||
|
- `extraHosts` com alias `vps`
|
||||||
|
- bloco WireGuard comentado
|
||||||
|
- locale:
|
||||||
|
- timezone `America/Sao_Paulo`
|
||||||
|
- locale `pt_BR.UTF-8`
|
||||||
|
- keymap `br-abnt2`
|
||||||
|
- programas habilitados:
|
||||||
|
- `cdemu`
|
||||||
|
- `gamescope`
|
||||||
|
- `virt-manager`
|
||||||
|
- `gnupg.agent`
|
||||||
|
- `nautilus-open-any-terminal`
|
||||||
|
- `fish`
|
||||||
|
- `hyprland`
|
||||||
|
- `neovim`
|
||||||
|
- `nix-ld`
|
||||||
|
- `dconf`
|
||||||
|
- `kdeconnect`
|
||||||
|
- `steam`
|
||||||
|
- `starship`
|
||||||
|
- `java`
|
||||||
|
- `htop`
|
||||||
|
- `git`
|
||||||
|
- `gamemode`
|
||||||
|
- `firefox`
|
||||||
|
- `adb`
|
||||||
|
- servicos habilitados:
|
||||||
|
- `fstrim`
|
||||||
|
- `home-assistant`
|
||||||
|
- `dbus`
|
||||||
|
- `displayManager.gdm`
|
||||||
|
- `gvfs`
|
||||||
|
- `gnome.gnome-keyring`
|
||||||
|
- `udisks2`
|
||||||
|
- `flatpak`
|
||||||
|
- `openssh`
|
||||||
|
- `emacs`
|
||||||
|
- `printing`
|
||||||
|
- `pipewire`
|
||||||
|
- servicos atualmente declarados mas desabilitados:
|
||||||
|
- `mysql`
|
||||||
|
- `terraria`
|
||||||
|
- `minecraft-server`
|
||||||
|
- `jupyterhub`
|
||||||
|
- audio e input:
|
||||||
|
- `services.pulseaudio.enable = false`
|
||||||
|
- `pipewire` com ALSA, Pulse e JACK
|
||||||
|
- `security.rtkit.enable = true`
|
||||||
|
- `hardware.uinput.enable = true`
|
||||||
|
- `hardware.bluetooth.enable = true`
|
||||||
|
- automacoes do sistema:
|
||||||
|
- perfil `/etc/profile.d/openai.sh`
|
||||||
|
- perfil `/etc/profile.d/openclaw.sh`
|
||||||
|
- `nix-flake-update` timer/service
|
||||||
|
- `flatpak-update` timer/service
|
||||||
|
- `nix.gc` semanal
|
||||||
|
- usuario:
|
||||||
|
- `users.users.ltadeu6`
|
||||||
|
- grupos: `terraria`, `mysql`, `networkmanager`, `wheel`, `storage`
|
||||||
|
- shell `fish`
|
||||||
|
- virtualizacao:
|
||||||
|
- `libvirtd.enable = true`
|
||||||
|
- `docker = false`
|
||||||
|
- `waydroid = false`
|
||||||
|
- desktop infra:
|
||||||
|
- fontes Nerd Fonts
|
||||||
|
- `xdg.portal` com portal GTK
|
||||||
|
- `allowUnfree = true`
|
||||||
|
|
||||||
|
### Notas importantes sobre `configuration.nix`
|
||||||
|
|
||||||
|
- `services.transmission` e `services.syncthing` foram removidos; nao reintroduza sem pedido explicito.
|
||||||
|
- Os segredos do Syncthing tambem foram removidos do repo.
|
||||||
|
- O servico `nix-flake-update` nao depende mais de path absoluto fixo do checkout; ele busca um repo sob `$HOME` contendo `hosts/Nixos/configuration.nix`.
|
||||||
|
- `nix-flake-update` faz:
|
||||||
|
- `nix flake update --commit-lock-file`
|
||||||
|
- `nixos-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:
|
||||||
|
- `kitty`
|
||||||
|
- `dunst`
|
||||||
|
- `gtk`
|
||||||
|
- cursor `Breeze`
|
||||||
|
- `xdg.mimeApps`
|
||||||
|
- `xdg.userDirs`
|
||||||
|
- `spotifyd`
|
||||||
|
- `programs.home-manager.enable = true`
|
||||||
|
- session variables:
|
||||||
|
- `MANPAGER`
|
||||||
|
- `HYPRCURSOR_THEME`
|
||||||
|
- `HYPRCURSOR_SIZE`
|
||||||
|
- `QT_QPA_PLATFORMTHEME`
|
||||||
|
- ativacao custom:
|
||||||
|
- `home.activation.openclawGatewayEnv`
|
||||||
|
- gera `~/.config/openclaw/gateway.env` a 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`
|
||||||
|
- Hyfetch:
|
||||||
|
- gera `~/.config/hyfetch.json`
|
||||||
|
- Waybar:
|
||||||
|
- publica `config`, `style.css`, `dracula.css`
|
||||||
|
- publica `air_control.py`
|
||||||
|
- publica `spotify_status.sh`
|
||||||
|
- publica `launch.sh`
|
||||||
|
- publica `switch_sink.sh`
|
||||||
|
- Doom:
|
||||||
|
- publica `config.el`, `init.el`, `packages.el`
|
||||||
|
- Wofi:
|
||||||
|
- publica `config`, `style.css`, `menu`, `menu.css`
|
||||||
|
|
||||||
|
### 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:
|
||||||
|
|
||||||
|
- `waybar`
|
||||||
|
- `hyprpaper`
|
||||||
|
- `wofi`
|
||||||
|
- `pavucontrol`
|
||||||
|
- `playerctl`
|
||||||
|
- `jq`
|
||||||
|
- `grim`
|
||||||
|
- `slurp`
|
||||||
|
- `wl-clipboard`
|
||||||
|
- `networkmanager`
|
||||||
|
- `hyprpicker`
|
||||||
|
- `papirus-icon-theme`
|
||||||
|
- `mpv`
|
||||||
|
- `evince`
|
||||||
|
- `ripgrep`
|
||||||
|
|
||||||
|
Pacotes relevantes para trabalho/dev presentes no estado atual:
|
||||||
|
|
||||||
|
- `unstable.codex`
|
||||||
|
- `vscode`
|
||||||
|
- `clang-tools`
|
||||||
|
- `nodejs`
|
||||||
|
- `stylelint`
|
||||||
|
- `html-tidy`
|
||||||
|
- `shfmt`
|
||||||
|
- `shellcheck`
|
||||||
|
- `black`
|
||||||
|
- `isort`
|
||||||
|
- `pipenv`
|
||||||
|
- `nixfmt-classic`
|
||||||
|
- `fd`
|
||||||
|
- `tmux`
|
||||||
|
- `texlab`
|
||||||
|
|
||||||
|
Pacotes de uso geral e apps pesados presentes:
|
||||||
|
|
||||||
|
- `tor-browser`
|
||||||
|
- `libreoffice`
|
||||||
|
- `gimp`
|
||||||
|
- `inkscape`
|
||||||
|
- `blender`
|
||||||
|
- `discord-ptb`
|
||||||
|
- `android-studio`
|
||||||
|
- `gnome-boxes`
|
||||||
|
- `prismlauncher`
|
||||||
|
- `sageWithDoc`
|
||||||
|
|
||||||
|
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:
|
||||||
|
- `waybar`
|
||||||
|
- `hyprpaper`
|
||||||
|
- `dbus-launch kdeconnect-indicator`
|
||||||
|
- `antimicrox` com perfil em `/etc/antimicrox/controller-mouse.amgp`
|
||||||
|
- shell snippet que usa `hyprctl`, `jq` e `xrandr` para forcar monitor primario
|
||||||
|
- Launcher:
|
||||||
|
- usa `wofi --show drun`
|
||||||
|
- Screenshots:
|
||||||
|
- area via `grim` + `slurp`
|
||||||
|
- tela inteira via `grim`
|
||||||
|
- janela ativa via script gerado pelo Home Manager
|
||||||
|
- Workspaces:
|
||||||
|
- workspaces `1..9` no monitor ultrawide
|
||||||
|
- workspace `10` no monitor lateral
|
||||||
|
- Regras especiais:
|
||||||
|
- Steam e jogos Proton na workspace 4
|
||||||
|
- Emacs na workspace 2
|
||||||
|
- Multimedia keys:
|
||||||
|
- dependem de `playerctl`
|
||||||
|
|
||||||
|
Cuidados:
|
||||||
|
|
||||||
|
- O autostart assume disponibilidade de `dbus-launch`, `kdeconnect-indicator`, `hyprctl`, `jq` e `xrandr`.
|
||||||
|
- 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 arquivo `configs/hypr/hyprpaper.conf`.
|
||||||
|
- O runtime usa `~/.config/hypr/nixos.png`, publicado a partir de `configs/hypr/nixos.png`.
|
||||||
|
- Se trocar a imagem do wallpaper, prefira substituir `configs/hypr/nixos.png` ou ajustar o source em `home/ltadeu6.nix`.
|
||||||
|
|
||||||
|
### Waybar
|
||||||
|
|
||||||
|
Arquivos principais:
|
||||||
|
|
||||||
|
- `configs/waybar/config`
|
||||||
|
- `configs/waybar/style.css`
|
||||||
|
- `configs/waybar/dracula.css`
|
||||||
|
- `configs/waybar/air_control.py`
|
||||||
|
- `configs/waybar/launch.sh`
|
||||||
|
- `configs/waybar/switch_sink.sh`
|
||||||
|
- `configs/waybar/spotify_status.sh`
|
||||||
|
|
||||||
|
Modulos relevantes:
|
||||||
|
|
||||||
|
- `hyprland/workspaces`
|
||||||
|
- `cava`
|
||||||
|
- `custom/ac`
|
||||||
|
- `clock`
|
||||||
|
- `custom/spotify`
|
||||||
|
- `network`
|
||||||
|
- `bluetooth`
|
||||||
|
- `pulseaudio`
|
||||||
|
- `backlight`
|
||||||
|
- `battery`
|
||||||
|
- `custom/poweroff`
|
||||||
|
|
||||||
|
Dependencias e assumptions do Waybar:
|
||||||
|
|
||||||
|
- `custom/spotify` depende de `spotifyd` e `playerctl`.
|
||||||
|
- `pulseaudio` usa `pavucontrol` e `pactl`.
|
||||||
|
- `bluetooth` chama `bluetoothctl`.
|
||||||
|
- `custom/ac` executa `~/.config/waybar/air_control.py`.
|
||||||
|
- Os botoes de lock chamam `hyprlock`.
|
||||||
|
|
||||||
|
Cuidados:
|
||||||
|
|
||||||
|
- `configs/waybar/config` referencia `hyprlock`, `bluetoothctl` e o modulo `cava`.
|
||||||
|
- Nem toda dependencia usada no runtime aparece perto do arquivo que a consome; verifique `home.packages`, `environment.systemPackages` e 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:
|
||||||
|
- `urllib`
|
||||||
|
- `json`
|
||||||
|
- `fcntl`
|
||||||
|
- etc.
|
||||||
|
- Nao depende de `requests`, apesar de `python3Packages.requests` existir em `home.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_only` e `dry` mostram 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 `Playing` e outro para `Paused`.
|
||||||
|
- So faz sentido se `services.spotifyd.enable = true`, o que esta habilitado hoje em `home/ltadeu6.nix`.
|
||||||
|
|
||||||
|
### Doom Emacs
|
||||||
|
|
||||||
|
Arquivos principais:
|
||||||
|
|
||||||
|
- `configs/doom/init.el`
|
||||||
|
- `configs/doom/config.el`
|
||||||
|
- `configs/doom/packages.el`
|
||||||
|
|
||||||
|
Estado atual:
|
||||||
|
|
||||||
|
- `init.el` habilita uma lista longa de modulos Doom, incluindo:
|
||||||
|
- `vertico`
|
||||||
|
- `corfu`
|
||||||
|
- `treemacs`
|
||||||
|
- `vterm`
|
||||||
|
- `lsp`
|
||||||
|
- linguagens como `cc`, `ess`, `gdscript`, `json`, `java`, `javascript`, `kotlin`, `latex`, `nix`, `org`, `python`, `qt`, `rust`, `sh`, `web`, `yaml`
|
||||||
|
- `packages.el` adiciona:
|
||||||
|
- `org-ref`
|
||||||
|
- `vue-mode`
|
||||||
|
- `kivy-mode`
|
||||||
|
- `treemacs-all-the-icons`
|
||||||
|
- `config.el` contem:
|
||||||
|
- identidade do usuario
|
||||||
|
- tema Dracula
|
||||||
|
- fontes FiraCode Nerd Font Mono
|
||||||
|
- ajustes de LSP/clangd
|
||||||
|
- integracao com `org-ref`
|
||||||
|
- configuracao de PDF tools
|
||||||
|
- classe `abntex2` para LaTeX
|
||||||
|
- dashboard customizado
|
||||||
|
|
||||||
|
Cuidados:
|
||||||
|
|
||||||
|
- Se alterar modulos ou `packages.el`, normalmente e preciso rodar `doom sync` fora do fluxo Nix.
|
||||||
|
- Nao documente `config.org` ou `custom.el` como fonte de verdade; esses arquivos nao sao parte ativa do repo atual.
|
||||||
|
|
||||||
|
### Wofi
|
||||||
|
|
||||||
|
Arquivos principais:
|
||||||
|
|
||||||
|
- `configs/wofi/config`
|
||||||
|
- `configs/wofi/style.css`
|
||||||
|
- `configs/wofi/menu`
|
||||||
|
- `configs/wofi/menu.css`
|
||||||
|
|
||||||
|
Estado atual:
|
||||||
|
|
||||||
|
- `config` define um launcher `drun` centralizado com prompt `Buscar...`.
|
||||||
|
- `menu` parece ser config auxiliar para `wofi-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 = false` em `flake.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`
|
||||||
|
|
||||||
|
## Secrets e variaveis de ambiente
|
||||||
|
|
||||||
|
### Segredos versionados hoje
|
||||||
|
|
||||||
|
- `secrets/openai_api_key.age`
|
||||||
|
- `secrets/openclaw_gateway_token.age`
|
||||||
|
- `secrets/minecraft_rcon_password.age`
|
||||||
|
- `secrets/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`, atualize `secrets/secrets.nix` e o consumo correspondente no modulo Nix.
|
||||||
|
|
||||||
|
### Exposicao em runtime
|
||||||
|
|
||||||
|
- `fish.shellInit` exporta:
|
||||||
|
- `OPENAI_API_KEY`
|
||||||
|
- `OPENCLAW_GATEWAY_TOKEN`
|
||||||
|
- `/etc/profile.d/openai.sh` e `/etc/profile.d/openclaw.sh` fazem 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:
|
||||||
|
|
||||||
|
- `hyprlock` e chamado pelo Waybar, mas nao aparece explicitamente perto do modulo que o consome.
|
||||||
|
- `xrandr` e chamado por `configs/hypr/hyprland.conf`; confirme disponibilidade antes de trocar esse fluxo.
|
||||||
|
- `dbus-launch` e `kdeconnect-indicator` sao usados no autostart do Hyprland.
|
||||||
|
- `bluetoothctl` e usado por Waybar.
|
||||||
|
- `playerctl` e usado tanto no Hyprland quanto no Waybar.
|
||||||
|
- `pactl` e necessario para `configs/waybar/switch_sink.sh`.
|
||||||
|
- `Home Assistant` local e `~/.config/secrets/ha_token` sao dependencias externas do controle de ar.
|
||||||
|
- `open-webui` depende do `ollama` configurado no host.
|
||||||
|
|
||||||
|
## 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.nix`
|
||||||
|
- `nix-instantiate --parse home/ltadeu6.nix`
|
||||||
|
|
||||||
|
### Procura estrutural
|
||||||
|
|
||||||
|
- `rg -n 'algum-termo' .`
|
||||||
|
- `rg --files`
|
||||||
|
|
||||||
|
### Doom Emacs
|
||||||
|
|
||||||
|
- Se mudar `configs/doom/init.el` ou `configs/doom/packages.el`, pode ser necessario rodar `doom 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/...`
|
||||||
|
- Se um arquivo em `configs/` estiver versionado e for publicado por `home.file`, prefira editar esse arquivo.
|
||||||
|
- Se um arquivo em `~/.config` e gerado via `.text` ou script inline, edite `home/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 `git` ou `nix`, 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.conf` nao existe mais no repo como fonte de verdade.
|
||||||
|
- `Transmission` nao esta configurado no sistema.
|
||||||
|
- `Syncthing` nao 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.sh` e a fonte real do status do Spotify no Waybar.
|
||||||
|
|
||||||
## Commits
|
## Commits
|
||||||
|
|
||||||
- Use mensagens curtas e descritivas em ingles.
|
- Use mensagens curtas e descritivas em ingles.
|
||||||
- Desative assinatura se o GPG falhar.
|
- Se o GPG falhar, prefira desabilitar assinatura naquele commit em vez de bloquear a mudanca.
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
# preload = /home/ltadeu6/Imagens/wallpaper/second-collection/spooky-minimal/dracula-spooky-44475a.png
|
|
||||||
preload = /home/ltadeu6/Imagens/wallpaper/first-collection/nixos.png
|
|
||||||
#if more than one preload is desired then continue to preload other backgrounds
|
|
||||||
|
|
||||||
#set the default wallpaper(s) seen on initial workspace(s) --depending on the number of monitors used
|
|
||||||
# wallpaper = , /home/ltadeu6/Imagens/wallpaper/second-collection/spooky-minimal/dracula-spooky-44475a.png
|
|
||||||
wallpaper = , /home/ltadeu6/Imagens/wallpaper/first-collection/nixos.png
|
|
||||||
|
|
||||||
splash = false
|
|
||||||
BIN
configs/hypr/nixos.png
Normal file
BIN
configs/hypr/nixos.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 475 KiB |
|
|
@ -15,7 +15,7 @@ fi
|
||||||
|
|
||||||
case "$status" in
|
case "$status" in
|
||||||
Playing)
|
Playing)
|
||||||
printf ' %s\n' "$text"
|
printf ' %s\n' "$text"
|
||||||
;;
|
;;
|
||||||
Paused)
|
Paused)
|
||||||
printf ' %s\n' "$text"
|
printf ' %s\n' "$text"
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,6 @@
|
||||||
defaultApplications = {
|
defaultApplications = {
|
||||||
"x-scheme-handler/discord-402572971681644545" = [ "discord-402572971681644545.desktop" ];
|
"x-scheme-handler/discord-402572971681644545" = [ "discord-402572971681644545.desktop" ];
|
||||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||||
"x-scheme-handler/magnet" = [ "userapp-transmission-gtk-B3E3L2.desktop" ];
|
|
||||||
"x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
|
||||||
"x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
|
||||||
"x-scheme-handler/chrome" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/chrome" = [ "app.zen_browser.zen.desktop" ];
|
||||||
|
|
@ -169,7 +168,6 @@
|
||||||
};
|
};
|
||||||
associations.added = {
|
associations.added = {
|
||||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||||
"x-scheme-handler/magnet" = [ "userapp-transmission-gtk-B3E3L2.desktop" ];
|
|
||||||
"x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
|
||||||
"x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
|
||||||
"x-scheme-handler/chrome" = [ "app.zen_browser.zen.desktop" ];
|
"x-scheme-handler/chrome" = [ "app.zen_browser.zen.desktop" ];
|
||||||
|
|
@ -283,7 +281,17 @@
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/hypr/hyprland.conf".source = ../configs/hypr/hyprland.conf;
|
".config/hypr/hyprland.conf".source = ../configs/hypr/hyprland.conf;
|
||||||
".config/hypr/hyprpaper.conf".source = ../configs/hypr/hyprpaper.conf;
|
".config/hypr/hyprpaper.conf".text = ''
|
||||||
|
preload = ${config.home.homeDirectory}/.config/hypr/nixos.png
|
||||||
|
|
||||||
|
#if more than one preload is desired then continue to preload other backgrounds
|
||||||
|
|
||||||
|
#set the default wallpaper(s) seen on initial workspace(s) --depending on the number of monitors used
|
||||||
|
wallpaper = , ${config.home.homeDirectory}/.config/hypr/nixos.png
|
||||||
|
|
||||||
|
splash = false
|
||||||
|
'';
|
||||||
|
".config/hypr/nixos.png".source = ../configs/hypr/nixos.png;
|
||||||
".config/hypr/scripts/screenshot-active-window.sh" = {
|
".config/hypr/scripts/screenshot-active-window.sh" = {
|
||||||
executable = true;
|
executable = true;
|
||||||
text = ''
|
text = ''
|
||||||
|
|
@ -328,35 +336,8 @@
|
||||||
executable = true;
|
executable = true;
|
||||||
};
|
};
|
||||||
".config/waybar/spotify_status.sh" = {
|
".config/waybar/spotify_status.sh" = {
|
||||||
|
source = ../configs/waybar/spotify_status.sh;
|
||||||
executable = true;
|
executable = true;
|
||||||
text = ''
|
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
player="$(playerctl -l 2>/dev/null | rg '^spotifyd\.instance' -m1 || true)"
|
|
||||||
|
|
||||||
if [ -z "$player" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
status="$(playerctl -p "$player" status 2>/dev/null || true)"
|
|
||||||
text="$(playerctl -p "$player" metadata --format '{{artist}} - {{title}}' 2>/dev/null || true)"
|
|
||||||
|
|
||||||
if [ -z "$text" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$status" in
|
|
||||||
Playing)
|
|
||||||
printf ' %s\n' "$text"
|
|
||||||
;;
|
|
||||||
Paused)
|
|
||||||
printf ' %s\n' "$text"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
".config/waybar/launch.sh" = {
|
".config/waybar/launch.sh" = {
|
||||||
source = ../configs/waybar/launch.sh;
|
source = ../configs/waybar/launch.sh;
|
||||||
|
|
|
||||||
|
|
@ -2,18 +2,22 @@
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{ config, pkgs, lib, agenix, ... }: {
|
{ config, pkgs, lib, agenix, ... }:
|
||||||
|
let
|
||||||
|
username = "ltadeu6";
|
||||||
|
homeDir = "/home/${username}";
|
||||||
|
in {
|
||||||
imports = [ # Include the results of the hardware scan.
|
imports = [ # Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
age = {
|
age = {
|
||||||
identityPaths = [ "/home/ltadeu6/.ssh/id_ed25519" ];
|
identityPaths = [ "${homeDir}/.ssh/id_ed25519" ];
|
||||||
secrets = { } // lib.optionalAttrs
|
secrets = { } // lib.optionalAttrs
|
||||||
(builtins.pathExists ../../secrets/openai_api_key.age) {
|
(builtins.pathExists ../../secrets/openai_api_key.age) {
|
||||||
openai_api_key = {
|
openai_api_key = {
|
||||||
file = ../../secrets/openai_api_key.age;
|
file = ../../secrets/openai_api_key.age;
|
||||||
owner = "ltadeu6";
|
owner = username;
|
||||||
group = "users";
|
group = "users";
|
||||||
mode = "0400";
|
mode = "0400";
|
||||||
};
|
};
|
||||||
|
|
@ -21,7 +25,7 @@
|
||||||
(builtins.pathExists ../../secrets/openclaw_gateway_token.age) {
|
(builtins.pathExists ../../secrets/openclaw_gateway_token.age) {
|
||||||
openclaw_gateway_token = {
|
openclaw_gateway_token = {
|
||||||
file = ../../secrets/openclaw_gateway_token.age;
|
file = ../../secrets/openclaw_gateway_token.age;
|
||||||
owner = "ltadeu6";
|
owner = username;
|
||||||
group = "users";
|
group = "users";
|
||||||
mode = "0400";
|
mode = "0400";
|
||||||
};
|
};
|
||||||
|
|
@ -30,12 +34,6 @@
|
||||||
minecraft_rcon_password.file =
|
minecraft_rcon_password.file =
|
||||||
../../secrets/minecraft_rcon_password.age;
|
../../secrets/minecraft_rcon_password.age;
|
||||||
} // lib.optionalAttrs
|
} // lib.optionalAttrs
|
||||||
(builtins.pathExists ../../secrets/syncthing_pixel_id.age) {
|
|
||||||
syncthing_pixel_id.file = ../../secrets/syncthing_pixel_id.age;
|
|
||||||
} // lib.optionalAttrs
|
|
||||||
(builtins.pathExists ../../secrets/syncthing_tv_id.age) {
|
|
||||||
syncthing_tv_id.file = ../../secrets/syncthing_tv_id.age;
|
|
||||||
} // lib.optionalAttrs
|
|
||||||
(builtins.pathExists ../../secrets/wireguard_private_key.age) {
|
(builtins.pathExists ../../secrets/wireguard_private_key.age) {
|
||||||
wireguard_private_key.file = ../../secrets/wireguard_private_key.age;
|
wireguard_private_key.file = ../../secrets/wireguard_private_key.age;
|
||||||
};
|
};
|
||||||
|
|
@ -272,16 +270,6 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "0.0.0.0";
|
host = "0.0.0.0";
|
||||||
};
|
};
|
||||||
transmission = {
|
|
||||||
enable = false;
|
|
||||||
user = "ltadeu6";
|
|
||||||
home = "/home/ltadeu6/Extra/Transmission/";
|
|
||||||
package = pkgs.transmission_4;
|
|
||||||
settings = {
|
|
||||||
rpc-bind-address = "0.0.0.0";
|
|
||||||
rpc-whitelist = "*.*.*.*";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
jupyterhub = {
|
jupyterhub = {
|
||||||
enable = false;
|
enable = false;
|
||||||
port = 8000;
|
port = 8000;
|
||||||
|
|
@ -368,12 +356,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
c.Authenticator.allowed_users = {"ltadeu6"};
|
c.Authenticator.allowed_users = {"${username}"};
|
||||||
c.JupyterHub.admin_users = {"ltadeu6"};
|
c.JupyterHub.admin_users = {"${username}"};
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
displayManager.autoLogin.enable = true;
|
displayManager.autoLogin.enable = true;
|
||||||
displayManager.autoLogin.user = "ltadeu6";
|
displayManager.autoLogin.user = username;
|
||||||
|
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -393,39 +381,6 @@
|
||||||
# no need to redefine it in your config for now)
|
# no need to redefine it in your config for now)
|
||||||
#media-session.enable = true;
|
#media-session.enable = true;
|
||||||
};
|
};
|
||||||
syncthing = {
|
|
||||||
enable = false;
|
|
||||||
user = "ltadeu6";
|
|
||||||
dataDir = "/home/ltadeu6"; # Default folder for new synced folders
|
|
||||||
configDir = "/home/ltadeu6/.config/syncthing";
|
|
||||||
settings = {
|
|
||||||
devices = { } // lib.optionalAttrs (config.services.syncthing.enable
|
|
||||||
&& config.age.secrets ? syncthing_pixel_id) {
|
|
||||||
"Pixel" = {
|
|
||||||
id = builtins.readFile config.age.secrets.syncthing_pixel_id.path;
|
|
||||||
};
|
|
||||||
} // lib.optionalAttrs (config.services.syncthing.enable
|
|
||||||
&& config.age.secrets ? syncthing_tv_id) {
|
|
||||||
"TV" = {
|
|
||||||
id = builtins.readFile config.age.secrets.syncthing_tv_id.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
folders = {
|
|
||||||
"RetroArch" = { # Name of folder in Syncthing, also the folder ID
|
|
||||||
path =
|
|
||||||
"/home/ltadeu6/.config/retroarch"; # Which folder to add to Syncthing
|
|
||||||
devices = [ "Pixel" "TV" ]; # Which devices to share the folder with
|
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params = {
|
|
||||||
keep = "5";
|
|
||||||
cleanoutDays = "15";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
console.keyMap = "br-abnt2";
|
console.keyMap = "br-abnt2";
|
||||||
|
|
@ -719,9 +674,9 @@
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
users.groups.libvirtd.members = [ "ltadeu6" ];
|
users.groups.libvirtd.members = [ username ];
|
||||||
|
|
||||||
users.users.ltadeu6 = {
|
users.users.${username} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "Lucas Tadeu";
|
description = "Lucas Tadeu";
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
|
|
@ -729,31 +684,27 @@
|
||||||
"mysql"
|
"mysql"
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
"syncthing"
|
|
||||||
"transmission"
|
|
||||||
"storage"
|
"storage"
|
||||||
];
|
];
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
};
|
};
|
||||||
|
|
||||||
system.autoUpgrade = {
|
|
||||||
enable = true;
|
|
||||||
flake = "/home/ltadeu6/nixos-config";
|
|
||||||
dates = "02:00";
|
|
||||||
randomizedDelaySec = "45min";
|
|
||||||
flags = [
|
|
||||||
"--print-build-logs"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services."nix-flake-update" = {
|
systemd.services."nix-flake-update" = {
|
||||||
description = "Update flake.lock and commit";
|
description = "Update flake.lock, commit, and rebuild";
|
||||||
path = [ pkgs.git pkgs.nix pkgs.coreutils ];
|
path = [
|
||||||
|
pkgs.findutils
|
||||||
|
pkgs.git
|
||||||
|
pkgs.gnugrep
|
||||||
|
pkgs.gnused
|
||||||
|
pkgs.nixos-rebuild
|
||||||
|
pkgs.nix
|
||||||
|
pkgs.coreutils
|
||||||
|
];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "ltadeu6";
|
User = username;
|
||||||
WorkingDirectory = "/home/ltadeu6/nixos-config";
|
|
||||||
Environment = [
|
Environment = [
|
||||||
|
"HOME=${homeDir}"
|
||||||
"GIT_AUTHOR_NAME=auto-upgrade"
|
"GIT_AUTHOR_NAME=auto-upgrade"
|
||||||
"GIT_AUTHOR_EMAIL=auto-upgrade@localhost"
|
"GIT_AUTHOR_EMAIL=auto-upgrade@localhost"
|
||||||
"GIT_COMMITTER_NAME=auto-upgrade"
|
"GIT_COMMITTER_NAME=auto-upgrade"
|
||||||
|
|
@ -764,7 +715,13 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
export PATH="${pkgs.git}/bin:${pkgs.nix}/bin:/run/current-system/sw/bin"
|
export PATH="${pkgs.git}/bin:${pkgs.nix}/bin:/run/current-system/sw/bin"
|
||||||
|
|
||||||
repo_status="$(git status --porcelain=v1 --untracked-files=normal)"
|
repo_dir="$(${pkgs.findutils}/bin/find "$HOME" -path '*/hosts/Nixos/configuration.nix' -print -quit | ${pkgs.gnused}/bin/sed 's#/hosts/Nixos/configuration\.nix##')"
|
||||||
|
if [ -z "$repo_dir" ]; then
|
||||||
|
echo "Skipping flake update: could not locate repo under $HOME"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
repo_status="$(git -C "$repo_dir" status --porcelain=v1 --untracked-files=normal)"
|
||||||
relevant_status="$(printf '%s\n' "$repo_status" | ${pkgs.gnugrep}/bin/grep -vE '^[ MARCUD?!]{2} flake\.lock$' || true)"
|
relevant_status="$(printf '%s\n' "$repo_status" | ${pkgs.gnugrep}/bin/grep -vE '^[ MARCUD?!]{2} flake\.lock$' || true)"
|
||||||
if [ -n "$relevant_status" ]; then
|
if [ -n "$relevant_status" ]; then
|
||||||
echo "Skipping flake update: repository has local changes"
|
echo "Skipping flake update: repository has local changes"
|
||||||
|
|
@ -773,19 +730,20 @@
|
||||||
|
|
||||||
backup=""
|
backup=""
|
||||||
cleanup() {
|
cleanup() {
|
||||||
if [ -n "$backup" ] && [ -f "$backup" ] && [ ! -f flake.lock ]; then
|
if [ -n "$backup" ] && [ -f "$backup" ] && [ ! -f "$repo_dir/flake.lock" ]; then
|
||||||
mv "$backup" flake.lock
|
mv "$backup" "$repo_dir/flake.lock"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
if [ -f flake.lock ] && [ ! -w flake.lock ]; then
|
if [ -f "$repo_dir/flake.lock" ] && [ ! -w "$repo_dir/flake.lock" ]; then
|
||||||
backup="$(mktemp)"
|
backup="$(mktemp)"
|
||||||
cp flake.lock "$backup"
|
cp "$repo_dir/flake.lock" "$backup"
|
||||||
rm -f flake.lock
|
rm -f "$repo_dir/flake.lock"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
/run/current-system/sw/bin/nix flake update --commit-lock-file
|
/run/current-system/sw/bin/nix flake update --commit-lock-file "$repo_dir"
|
||||||
|
/run/current-system/sw/bin/nixos-rebuild switch --flake "$repo_dir#Nixos"
|
||||||
|
|
||||||
if [ -n "$backup" ] && [ -f "$backup" ]; then
|
if [ -n "$backup" ] && [ -f "$backup" ]; then
|
||||||
rm -f "$backup"
|
rm -f "$backup"
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,6 @@ in {
|
||||||
"secrets/openai_api_key.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
"secrets/openai_api_key.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
||||||
"secrets/openclaw_gateway_token.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
"secrets/openclaw_gateway_token.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
||||||
"secrets/minecraft_rcon_password.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
"secrets/minecraft_rcon_password.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
||||||
"secrets/syncthing_pixel_id.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
|
||||||
"secrets/syncthing_tv_id.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
|
||||||
"secrets/wireguard_private_key.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
"secrets/wireguard_private_key.age".publicKeys = [ users.ltadeu6 systems.Nixos ];
|
||||||
|
|
||||||
wireguard = {
|
wireguard = {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 PLsDCw jeIeeJWcN+xV5azLkyMK2YdaZXlav1ehnv5kzmcURzE
|
|
||||||
o6DUO2AoYX8OeIHlPM8dK21tGoG54Gnvr/CjlBGTLj4
|
|
||||||
-> ssh-ed25519 PLsDCw SHKfV63stmxfaRZ/ZAWRsIDLRHpdjI5+IACMW1zv7Uc
|
|
||||||
grXmEGA58z/XxNIWuhWlyUEPo4l3t6UGwnQbKiEs/50
|
|
||||||
--- Sd2JFl0CaniOP+PynBOtGT+OJc3I/PFRMNZi0L9Ants
|
|
||||||
¤ÌÇf+RsÍr#ì3W(¢•¿Îv!¸žv+‡
|
|
||||||
ŽÕQã>“JÉEw–»SÍ[¸LQt|r7ñ].¥/a&‚B<0C>èׂôšï*úê¢Ø’ctƒÑ
|
|
||||||
•<EFBFBD>Z+Y
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 PLsDCw wlxQ0eW0pF5TUUZH9/4eCc7fx5hJZ98mi0CHcRvUVFQ
|
|
||||||
tGbNvthS41qp+SfzRsKZkBsQocuQxTpYE0u/0i23RdQ
|
|
||||||
-> ssh-ed25519 PLsDCw Xz4F9+s7tS9r+qVf62ALAqqmbGfR719SdloCBmjZZ3U
|
|
||||||
2Fdp5L0rVXH1U7GOWX07cxpkGfEVTuTFvTKGwFb+ueI
|
|
||||||
--- G/eTc6dYfIhisIYxaWfhR3K52ruwAgtWpTj5V9nBs5Q
|
|
||||||
d1Y<31>ÒÌF…<46>
ÈxÁk²îM>„<>g@$3Ïöu䂨àOWðÐÂã¡ÐJ}îR`Ô¢²ÊbÕž¤Öˆk¬Fv•‘l¸††<E280A0>—ó¼c”8ZÎȇ±Â<C2B1>QÄeüËw
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue