- O NixOS, baseado no gerenciador de pacotes Nix, tem uma estrutura em que todo o sistema é definido como código e pode ser restaurado a qualquer momento para um estado determinístico e reproduzível
- Todos os ajustes e pacotes são gerenciados em um único arquivo de configuração declarativa, permitindo reconstruir o mesmo ambiente a partir de uma única fonte até mesmo em um equipamento novo
- Oferece lançamentos estáveis em ciclos de 6 meses, atualizações automáticas e, quando necessário, a possibilidade de experimentar software mais recente pelo canal unstable
- Fornece ambientes de desenvolvimento isolados, permitindo testar várias linguagens e ferramentas sem contaminar o sistema, além de manter uma experiência de desenvolvimento consistente entre macOS e Linux
- Também se adapta à rápida troca de ferramentas na era da programação com LLMs e garante consistência até na implantação com um modelo de build determinístico e em camadas que o Docker
Filosofia e atrativos do NixOS
- O núcleo do NixOS não é a distribuição Linux, e sim o gerenciador de pacotes Nix
- O NixOS é o resultado de um gerenciador de pacotes funcional, determinístico e reproduzível, capaz de compor todo o sistema operacional a partir da Nix DSL fornecida como entrada
- Ele oferece uma estrutura em que é possível reconstruir o sistema, alterar apenas partes dele e, se não gostar do resultado, fazer rollback
- Enquanto a maioria dos sistemas operacionais tende a ficar instável com o tempo, o NixOS permite definir o estado e fazer o build dele
- Evita o acúmulo de estados pouco claros causados por instalação de pacotes, mudanças de configuração e adição ou remoção de ferramentas
- Como o sistema é definido em código, é possível reproduzir o mesmo resultado sempre que necessário
Configuração declarativa e gerenciamento a partir de uma única fonte
- No NixOS, é possível definir todo o sistema — pacotes, configurações, mapeamento de teclado etc. — em uma única configuração declarativa
- Até comportamentos detalhados, como ajustes de extensões do GNOME e mapeamentos de teclado, podem ser descritos em Nix DSL
- Mesmo em um computador novo, é possível reconstruir o sistema inteiro a partir de uma única fonte
- Sem depender de ajustes manuais ou de scripts espalhados, é possível manter um estado de sistema consistente
Estabilidade e gerenciamento de atualizações
- O NixOS mantém lançamentos previsíveis em ciclos de 6 meses e oferece suporte a atualizações automáticas
- Minimiza problemas comuns em upgrades de SO, como instabilidade, notificações incômodas e drift do sistema
- Quando necessário, é possível ativar o canal unstable para usar software mais recente de forma experimental
- Mesmo em um notebook HP, a compatibilidade de hardware e a estabilidade são altas, permitindo uso imediato sem configuração adicional
Experimentação e isolamento do ambiente de desenvolvimento
- O NixOS oferece um ambiente de experimentação seguro e de baixo custo
- Em vez de instalar pacotes diretamente no sistema, eles podem ser executados em um ambiente shell isolado
- Com a Nix DSL, dependências, etapas de build e artefatos podem ser definidos declarativamente, mantendo um ambiente de desenvolvimento sem contaminação
- Como o mesmo gerenciador de pacotes Nix pode ser usado tanto no macOS quanto no Linux, garante-se consistência no gerenciamento de ferramentas de desenvolvimento e dependências
- Também existe suporte comunitário para FreeBSD
Afinidade com a era da programação com LLMs
- Ferramentas de programação baseadas em LLMs frequentemente exigem a troca de versões específicas de utilitários, compiladores e runtimes
- O Nix atende bem a essa necessidade ao tratar ferramentas como entradas declarativas e executá-las em ambientes isolados
- Por exemplo, ao fazer o build de um agente de voz para texto em Rust, o Nix carrega automaticamente o toolchain Rust e monta um ambiente de build isolado
- Sem alterar o ambiente do sistema (
~/.cargo, ~/.rustup, PATH etc.)
- Com
flake.nix e nix flake check, é possível fixar o ambiente experimental do agente como um artefato reproduzível
- Convertendo uma sessão temporária em uma unidade de build verificável
Implantação e modelo de desenvolvimento consistente
- O Nix oferece um método de build de imagens mais determinístico e em camadas do que o Docker
- Com
dockerTools.buildLayeredImage, é possível criar imagens Docker pequenas e reproduzíveis
- Com a mesma configuração, também é possível gerar o mesmo resultado em outras arquiteturas
- O mesmo modelo é aplicado de forma consistente a notebooks, shells, dependências de projeto, pipelines de CI e artefatos de implantação
- Em vez de combinar várias ferramentas, é possível gerenciar todo o sistema de software com uma única forma de pensar
Conclusão
- O NixOS é a implementação de um sistema declarativo, reproduzível, reversível e estável
- Permite experimentar e fazer upgrades sem medo, além de evitar contaminar o sistema mesmo em ambientes de ferramentas que mudam rapidamente
- Também oferece estabilidade e flexibilidade ao mesmo tempo em fluxos modernos de desenvolvimento, como agentes de programação com LLM
- O NixOS é a forma que implementa essa filosofia da maneira mais completa no dia a dia
6 comentários
Eu também usei o NixOS por quase meio ano antigamente, mas acabei voltando para o Arch porque me deparei com uma tarefa muito simples — daquelas que em outros OS você resolve sem nem precisar procurar muito — e, por mais que eu pesquisasse no Google, não conseguia resolver. Aí vi em um lugar como o fórum do NixOS uma solução registrada por algum especialista? em NixOS, e quando percebi que aquela solução gambiarra de dezenas de linhas era a que tinha recebido mais joinhas, senti que minha vida futura com o NixOS seria sombria...
E também não lembro direito, mas era
flakeou alguma função assim: em um lugar dizem que é best practice, em outro dizem que é experimental, em outro dizem que é os dois, e vendo isso se arrastar por anos já dava para ver claramente o tanto de dor de cabeça que viria pela frente..Claro, a experiência de conseguir transformar facilmente todo o ambiente de desktop em código foi prazerosa.
O Firebase Studio também usa Nix
Quem conhece, usa meio no boca a boca mesmo kkk
Um setup reproduzível implementado com uma linguagem funcional declarativa
A curva de aprendizado é absurda. Como garante reprodutibilidade, exige um nível bem alto.
Mesmo usando
flake, ainda é complicado.Além disso, parece usar SQLite internamente, e o desempenho varia bastante, então há uma certa flutuação no tempo que leva para reproduzir o ambiente novamente uma vez.
Comentários no Hacker News
Acho que o NixOS é incomparável em compatibilidade com ferramentas de IA
Em outros sistemas operacionais é difícil confiar a configuração do sistema à IA, mas no NixOS isso é confiável graças à sua estrutura declarativa e com rollback
Eu não confiaria ao Claude ou ao Codex a tarefa de migrar de Pulseaudio para Pipewire ou instalar o Hyprland, mas com o NixOS eu confiaria até ao Grok
O ponto-chave é a estabilidade de poder revisar as mudanças com antecedência e voltar atrás a qualquer momento
Se você é desenvolvedor, recomendo experimentar o NixOS sonhando com um “desktop Linux gerenciado por IA”. Dá para começar dizendo ao Claude: “crie uma configuração do Gnome baseada em Flake que eu possa demonstrar numa VM”
É impressionante ver o Claude ajustar configurações dconf do GNOME de forma declarativa
Ainda assim, como a IA não entende o contexto complexo do ecossistema Nix, às vezes ela produz resultados sem sentido
Dá para sentir que a estrutura lambda não padronizada do Nix e o escopo implícito entre módulos tornam tudo difícil não só para humanos, mas também para a IA
Por isso, é importante definir com clareza a estrutura e os padrões do projeto. Mesmo assim, o processo de criar templates baseados em Nix é divertido e produtivo
Será que realmente precisa usar um LLM para instalar o Hyprland? Simplesmente
sudo dnf install hyprlandjá bastaEm vez de o Nix ser “amigável para IA”, parece mais que ele é incômodo demais para lidar manualmente, então as pessoas acabam recorrendo a LLMs
Eu gerenciava a configuração de várias máquinas como “perfis de negócio” e distribuía automaticamente os repositórios e ajustes necessários para cada máquina
Um colega de trabalho, que antes era usuário de Windows, agora usa NixOS no dia a dia
Todas as configurações de hardware também estão sendo gerenciadas de forma declarativa, e minhas configurações estão neste repositório público no GitHub. Feedback é bem-vindo
Ao migrar configurações para uma nova estrutura ou criar vários ambientes de teste de WM/DE, o Claude cuida da maior parte do trabalho repetitivo
Agora o sistema está completamente estável, então quase não há mais nada para fazer manualmente
Em outros sistemas operacionais é difícil ter esse nível de confiança
Em vez disso, eu gerenciava o ambiente de desenvolvimento com scripts Docker, mas agora sinto que a combinação de Nix e IA é perfeita
Acho que no futuro vão surgir muitos softwares que a IA poderá lidar com mais facilidade
Depois de usar Windows por 30 anos, migrei completamente para o Nix há 1 ano
Agora não tenho absolutamente nenhuma vontade de voltar para o Windows
Gosto muito do fato de toda a configuração do sistema operacional estar dentro de um repositório Git
Desenvolver sem Nix é tão ineficiente quanto programar sem Git
Depois que tudo está configurado uma vez, preparar um novo sistema fica muito simples
Quero executar cada app em um ambiente independente sem afetar o sistema inteiro
Acho que o NixOS é um dos caminhos para esse futuro
A GPU Nvidia também funciona bem, e é muito mais estável que o Gamescope
Eu queria gostar mais do NixOS, mas o maior problema é a falta de documentação
As informações estão espalhadas entre vários fóruns, blogs antigos e issues
Ambas são atualizadas, mas na hora de pesquisar nunca fica claro qual está mais atualizada
Clonar o nixpkgs e ler diretamente é o caminho mais rápido
Já usei o NixOS como sistema operacional de notebook, e os prós e contras eram bem claros
A configuração declarativa e os snapshots são revolucionários, mas a distinção entre pacote/serviço e o conceito de Flake eram confusos
Ao instalar o KDE, só o conjunto mínimo era instalado, então era preciso configuração adicional, e a documentação variava de versão para versão, o que dificultava acompanhar
No fim, desisti porque precisava de uma máquina estável, mas parece ser uma excelente escolha para administradores de sistema
O instalador da Determinate Systems ativa Flake por padrão
Dá para mover a configuração de
/etc/nixospara um repositório Git e implantar uma configuração completa com o comandonixos-install --flake <repo>Se usar junto com o Home-manager, também dá para gerenciar declarativamente até o diretório do usuário
Arquivos em
/etcpodem ser gerenciados comenvironment.etc, e arquivos em.configcom opções do home-managerLinks relacionados: opção environment.etc, opções do home-manager
mkOutOfStoreSymlinke achei engraçado receber a resposta de que “é tão simples que não precisa de documentação”Mesmo assim, as vantagens do NixOS são tão grandes que estou migrando tudo completamente na ordem homelab → notebook → desktop
Ainda assim, a situação da documentação continua desesperadora
Ou seja, ele faz no nível do Nix o papel de um package.json e de um lock file
Eu já gostava do NixOS antes, mas gosto ainda mais dele desde a era dos LLMs
Se eu pedir ao Codex “modifique esta configuração de servidor para que um certificado curinga funcione”, em 5 minutos está resolvido
Gerenciamento reprodutível de servidores nunca foi tão fácil
Depois de migrar para o NixOS, a época em que eu gerenciava tudo com apt ou brew parece tecnologia da Idade da Pedra
Ele também combina muito bem com ferramentas de IA como o Copilot
Para resolver problemas, é preciso um entendimento mais profundo do que em Linux comum
Em compensação, é uma estrutura em que a complexidade é paga de uma vez logo no começo
O melhor é poder fazer instalações temporárias com nix-shell e ver todos os pacotes instalados em um único arquivo de configuração
Graças aos snapshots automáticos, não tenho medo de experimentar. Se algo der errado, basta inicializar a geração anterior
Antes eu tinha medo de mexer em parâmetros do kernel, mas agora posso tentar à vontade
Como gosto de Lisp, também considerei o Guix System, mas em termos de uso prático o NixOS é melhor
Eu queria que o NixOS não tivesse essa estrutura de sistema de arquivos tão peculiar
É uma abordagem para resolver o problema de usar várias versões de Python ao mesmo tempo, mas para mim isso é desnecessário
Eu só quero manter a mesma configuração em todas as máquinas
Atualmente estou experimentando imagens Fedora bootc e Podman, mas é incômodo não ter algo com aplicação imediata como
nixos-rebuild switchNo fim, é um trade-off entre o Nix fácil de experimentar e o Fedora com sistema de arquivos padrão
A maior vantagem do NixOS é a reprodutibilidade determinística do cache de CI
Não é preciso reconstruir pacotes toda vez, e configurar o ambiente de desenvolvimento também é simples
Por exemplo, a Tangled construiu todo o sistema de CI com Nix e resolveu completamente os problemas de cache do GitHub Actions
Eu não uso no sistema inteiro, mas gosto muito do devenv.sh
Dá para montar um ambiente de desenvolvimento muito mais facilmente do que com contêineres locais
Faz falta um jeito simples de alinhar versões como no
.tool-versionsdo asdfNo ecossistema Nix dizem que “essa é a abordagem errada”, mas eu ainda quero fixar versões individuais
pkgs.mkShell, então fico curioso sobre por que usar o devenvEu gosto do NixOS, mas prefiro o Guix
A linguagem Guile me é mais familiar, e a documentação também é melhor. Considero os dois sistemas como irmãos
O fato de usar uma linguagem de programação de verdade (Scheme) é uma grande vantagem
Ele tem uma base muito mais poderosa do que uma simples linguagem de configuração