@Daigo @JG22 @TiagoCardoso @msteles @Osiel
Esse topico é uma continuação do tópico : Sobre o NixOS: o que ele tem de diferente na prática? - #3 by JG22
E para explicar esse sistema nada mais justo que contar primeiro a historia. (algumas informações tiradas da wikipedia : NixOS - Wikipedia
HISTÓRIA DO SISTEMA
o nixOS é uma distro independente. O lançamento inicial do sistema foi em 2003.
Criado por Eelco Dolstra. A ideia do inicial que está aqui até hoje,é criar um sistema que fosse rapido e facil configurar.
MODO DE ATUALIZAÇÃO
O nixOS tem 2 versões principais que são lançadas todo anos.
Diferente de muitos sistemas o nixOS não segue uma maneira só de atualização,
ou seja : ele não é nem LTS nem ROLING RELEASE.
MODO COM QUE FUNCIONA
Acho que agora eu expliquei o basico,posso começar a explicar o que eu sei de experiencia com ele e o que eu ja li.
-
PROJETO NIX FOUNDATION
o projeto nix , diferente do que alguns pensão, ele não é so um sistema.
Ele é a junção de três ramos,que são separados. -
NIX-SHELL
Nix shell seria o que torna o nixOS declarativo,pois ele foi escrito na linguagem que eles mesmos fizeram.
Nix Shell ,você ja a conhecerá logo no site a qual você instala o nixOS.
Nix shell,em resumo, é para você poder ter acesso a varias linguagens em um lugar só.
Nix shell, também com os “Nix-scripts” que seria acessado no arquivo de configuração do sistema,não é um bixo de sete cabeças,pois no manual do próprio sistema ja temos exemplos de como usá-lo.
Não satisfeito?
Na pagina : NixOS Search
Na qual você poderá acessar os pacotes do nix (do ramo principal)
você terá a opcão “options” que nada mais é ,do que uma pagina cheia de codigo de tudo que você imaginar para configurações diversas do sistema.
Vou dar um exemplo classico de uma vpn que não quer iniciar de jeito nenhum,um ptoblema que em muitas distros acontece :
Assim você encontrará varios exemplos de complemento para o seu codigo no /etc/nixos/configuration.nix
Ok,Mais você ainda não conseguiu achar o seu problema na vpn. Ai nesse caso com quase certeza você acha-rá o erro olhando a wiki.
NOTA:Como alguns sabem o sistema tem uma comunidade pequena ,por isso ela não se aproxima tanto da bibli, digo,wiki do gentoo.
NOTA2 sobre nix-shell: Ele pode ser instalado em outras distros, (claro,ai não vai ter o arquivo de configuração de sistema,mais vai ajudar programadores.) e provavelmente você ira achar como instalar em um ubuntu por exemplo na wiki.
- NIX-PKGS
o nixPKG, pra quem conhece o snap,vai achar um tanto similar,so que não é tão simples assim.
nixPKG pode ser instalado em qualquer distro com systemD digitando :
curl -L https://nixos.org/nix/install | sh
Mesmo ele sendo na maior parte das vezes binário,assim como o arch com seu makepkg,
o nix tem o nix-build. Para explicar sobre ele,ninguem melhor do que à própria wiki do nix:
"O nix-build
comando constrói as derivações descritas pelas expressões Nix em caminhos . Se a construção for bem-sucedida, ele coloca um link simbólico para o resultado no diretório atual. O link simbólico é chamado result
. Se houver várias expressões Nix, ou as expressões Nix avaliar a múltiplas derivações, várias ligações simbólicas numerados sequencialmente são criados ( result
, result-2
, e assim por diante).
Se nenhum caminho for especificado, nix-build
o usará default.nix
no diretório atual, se existir.
Se um elemento de caminhos começar com http://
ou https://
, ele será interpretado como a URL de um tarball que será baixado e descompactado em um local temporário. O tarball deve incluir um único diretório de nível superior contendo pelo menos um arquivo denominado default.nix
.
nix-build
é essencialmente um invólucro nix-instantiate
(para traduzir uma expressão Nix de alto nível em uma derivação de armazenamento de baixo nível) e nix-store --realise
(para construir a derivação de armazenamento)."
Provavelmente,quando pensamos em algo como compilação ,sempre vem o problema de depéndencias, que basicamente parte do “slogan” do nix é sobre isso.
"Ao fazer um pacote para um sistema de gerenciamento de pacotes, como o RPM, você deve declarar suas dependências, mas não pode garantir facilmente que sua declaração de dependências esteja completa. Se você esquecer uma dependência, que instalou separadamente em sua máquina, o componente pode ser construído e funcionar corretamente em sua máquina, mas falhar na máquina do usuário final.
Nix garante que as especificações de dependência do pacote sejam completas.
No Nix, um processo de construção encontrará apenas recursos que foram declarados explicitamente como dependências. Não há como construir até que tudo de que precisa tenha sido declarado corretamente. Se for compilado, você saberá que forneceu uma declaração completa.
Depois que uma compilação é concluída, as dependências de tempo de execução contínuas são detectadas automaticamente."
Bem,agora eu vou falar o que pra mim é uma das coisas mais importantes.
SEMPRE formatei o computador , mesmo por causa de um erro bobo.
Com o nixOS eu simplesmente parei.
se meu sistema estava funcionando do jeito que eu formatei, é simples,ir até o terminal e digitar:
nixos-rebuild switch
e o que acontecerá é o sistema criar duas entradas dele mesmo,como se fosse um dualboot com a mesma distro.
So que assim você pode continuar usando o sistema,fazer backup das suas coisas antigas e dar um:
nix-collect-garbage -d
e isso basicamente limpará seu sistema todo de falhas antigas, SEM FORMATAR.
Com isso você pode criar uma instancia por exemplo:
Uma para jogos,outra para trabalho.
Você tem alguma pessoa que você divide o computador?
se você criar um usuário novo, vocẽ não precisara se preocupar na pessoa instalar coisas ou mexer em coisas que você não queira,porque ele separa-rá os pacotes!
estou falando de um gerenciador de pacotes e até agora não falei de como instalar apps por ele, então vou dar o exemplo de 2 navegadores muto queridos,firefox e google chrome.
Basicamente,o firefox é so digitar em seu terminal:
nix-env -iA nixos.firefox
só que para o google chrome é diferente,pois é um pacote próprietario.
1-Habilite o repositorio non-free do nix:
NIXPKGS_ALLOW_UNFREE=1
2-e como o firefox digite:
nix-env -iA nixos.google-chrome
sobre a gestão de pacotes,também podemos instalar pelo nix-shell no /etc/nixos/configuration.nix
acrescentando nosso pacote em:
environment.systemPackages = [
];
Acho que consegui explicar o BASICO do sistema, sei que soou estranho a palavra basico em um topico desse tamanho mais esse sistema tem muito mais coisas que isso,tentei ser o mais cuidadoso nas palavras para usuarios mais “novatos” também conseguirem entender o conceito,so que falando desse sistema é impossivel.
Qualquer duvida sobre o sistema,me avisem que criarei topicos mais especificos como :
“Como jogar no nixOS”
“Como instalar nixOS”
e cada pergunta é praticamente um favor para mim,pois adoro esse sistema!
Esse foi meu primeiro tópico então perdão por qualquer erro.