nixOS, básico sobre o projeto

@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.

10 curtidas

@Dio não sei o Sr, mas acho que um vídeo a respeito do NixOS seria bem interessante para, digamos assim, alavancar o interesse nacional neste projeto tão interessante :slight_smile:

5 curtidas

Pelo que eu notei no pouco que usei até agora, o Nixos não é difícil, ele é diferente, o que pode até assustar um pouco. É o medo do novo. Mas depois que se entende como ele funciona, passa a ser muito divertido.

2 curtidas

@Vnp, tenho visto o pessoal falar dos flakes. O que seria isso?

2 curtidas

O repositorio “instavel” do nix. Tabem existem outros so que esse seria o da comunidade com o AUR
So que pelo repositorio principal da distro ser gigante,outros não recebem tanta atenção.

2 curtidas

Entendi, obrigado.

2 curtidas

Vou ver se arrumo uma máquina física pra instalar o Nixos e brincar mais com ele.

2 curtidas

Em maquina fisica acho que você terá um desempenho até melhor! o arquivo de hardware.nix
que eu não mencionei no tópico ira te dar um ganho muito bom de performace em maquina real.

2 curtidas

Eu imagino isso. Apesar de que mesmo na VM o carinha voa. É impressionante a velocidade de boot dele.

2 curtidas

Primeiramente parabéns pelo tópico e explicação. Agora me ajuda com o meu cenário e veja se a distro atende o meu uso diário:

  • Trabalho com programação direto pelo Linux e libvirt (VirtManager)
  • No Linux estudo c# e flutter tudo hoje esta configurado e rodando 100% (IDE - Android Studio/VSCode/JetBrains Rider)
  • Uso para o trabalho a VPN Forticlient para acessar a rede da empresa
  • No VirtManager tenho o Windows 10 instalado e utilizando para programação Delphi
  • Demais uso Teams, Dbeaver, pCloud, Vivaldi, vários appImage e alguns poucos flatpak

Uso Kde Plasma 5.22.5

Gosto muito de manter o KDE na versão mais nova e alguns APP como por exemplo VsCode | Android Studio | Vivaldi | DbEaver | Ferdi

Não sou um jogador… Não mais :frowning:

2 curtidas

Praticamente uso tudo que você falou.
Creio que se você se interessou deve-se testar,acho que tudo funcionara normalmente,com algumas facilidades do nix.

2 curtidas

Era tudo que queria ler hehe… Vou testar no note…

2 curtidas

ok então,boa sorte ,acho que não vai se arrepender :smile:

2 curtidas

Muito interessante, vou dar uma testada em uma VM.

2 curtidas

Eu tive uma boa dificuldade em configurar o path para o binario do .Net por ele (testei a ISO para Vm’s). Acho que você terá de configurar o ~/.bashrc pelo nix-shell, não pelo “Bash cru” :grimacing:

2 curtidas

Você tentou instalar ele por onde?

1 curtida

A priori tentei o script da própria MS (havia instalado a dependência do libgdiplus também). Não consegui exportar o path pelo bashrc, depois tentei seguir a instalação do empacotamento do próprio NixOS Packages. O segundo método funciona, mas não consigo criar um app console, quiçá um “new MVC”…

É erro meu. Assim que eu conseguir me desenrolar com os cursos e a faculdade, cairei dentro da documentação.

Obs: essa forma de instalar usando o script, eu já fazia quando usei o Solus e uso até hoje com o openSUSE Tumbleweed (pois não existe repositório oficial, apenas para o Leap 15.x).

2 curtidas

Hummm é bom saber, obrigado por compartilhar, última coisa que posso é ficar amarrado com ambiente… Vou pesquisar sobre também

3 curtidas

tente ir até o /etc/nixos/configuration.nix e adicione o final da linha para instalar o pacote:

dê um:

sudo nixos-rebuild switch

se der erro instale o libgdiplus novamente.
e olhe se ocorre algo novamente,vi algumas pessoas reclamando sobre isso no forum do nix.

3 curtidas

A comunidade é grande? É leve? Vem com os snaps (:nauseated_face:) por padrão?

1 curtida