NixOS, instalação e configurações

A um tempinho atrás eu fiz o tópico : nixOS, básico sobre o projeto - #37

Que eu tentei explicar o projeto em si, não era bem o objetivo ,pois antes de postar o tópico eu tinha colocado algo como : nixOS,explicando sobre.
Só que eu me arrependi ,pois não tem como explicar esse sistema sem explicar o nixSHELL e nixPKG, então agora eu vou tentar não tocar no assunto sobre esses dois,qualquer duvida,acesse o tópico sobre o projeto.

Naquele mesmo tópico eu falei que ia fazer um tutorial de instação , mais não tem nada além doque o proprio manual/wiki mesmo para falar,mas mesmo assim eu vou escrever aqui.

nixos.org | fonte para o tutorial | O que o nix tem de diferente ? | Basico sobre o projeto

                                 INSTALAÇÂO

dê um sudo su antes de começar.

  1. Particionamento e formatação (Esse tutorial esta sendo feito pensando em /dev/sda e disco inteiro,se nao for o seu caso,adapite para o seu uso.)
  • PARA UEFI (GPT)

(Observação : você pode ignorar com segurança a mensagem informativa do parted sobre a necessidade de atualizar o / etc / fstab.)

Crie uma tabela de partição GPT .

parted /dev/sda -- mklabel gpt

Adicione a partição raiz . Isso irá preencher o disco, exceto a parte final, onde o swap ficará, e o espaço deixado na frente (512 MiB) que será usado pela partição de boot.

parted /dev/sda -- mkpart primary 512MiB -8GiB

Em seguida, adicione uma partição swap . O tamanho necessário irá variar de acordo com as necessidades, aqui é criado um 8GiB.

parted /dev/sda -- mkpart primary linux-swap -8GiB 100%

( Nota: As regras de tamanho da partição swap não são diferentes das de outras distribuições Linux.)

Finalmente, a partição de inicialização . O NixOS por padrão usa o ESP (partição do sistema EFI) como sua partição / boot . Ele usa os 512 MiB inicialmente reservados no início do disco.

parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB
parted /dev/sda -- set 3 esp on
  • PARA Legacy Boot (MBR)

Crie uma tabela de partição MBR .

parted /dev/sda -- mklabel msdos

Adicione a partição raiz . Isso irá preencher o disco, exceto para a parte final, onde ficará o swap.

parted /dev/sda -- mkpart primary 1MiB -8GiB

Finalmente, adicione uma partição swap . O tamanho necessário irá variar de acordo com as necessidades, aqui é criado um 8GiB.

parted /dev/sda -- mkpart primary linux-swap -8GiB 100%
  1. Formatação.

Para inicializar partições Ext4: mkfs.ext4 . É recomendável atribuir um rótulo simbólico exclusivo ao sistema de arquivos usando a opção , pois isso torna a configuração do sistema de arquivos independente das alterações do dispositivo. Por exemplo:-L label

mkfs.ext4 -L nixos /dev/sda1

Para criar partições de troca: mkswap . Mais uma vez é recomendado para atribuir um rótulo para a partição swap: . Por exemplo:-L label

mkswap -L swap /dev/sda2

PARA Sistemas UEFI

Para criar partições de inicialização: mkfs.fat . Mais uma vez, é recomendável atribuir um rótulo para a partição de boot: . Por exemplo:-n label

mkfs.fat -F 32 -n boot /dev/sda3
  1. Instalando

Monte o sistema de arquivos de destino no qual o NixOS deve ser instalado /mnt , por exemplo

mount /dev/disk/by-label/nixos /mnt

PARA Sistemas UEFI

Monte o sistema de arquivos de inicialização /mnt/boot, por exemplo

mkdir -p /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot

Se a sua máquina tiver uma quantidade limitada de memória, você pode querer ativar os dispositivos de troca agora ( swapondevice** ). O instalador (ou melhor, as ações de construção que ele pode gerar) pode precisar de um pouco de RAM, dependendo da sua configuração.

swapon /dev/sda2

Agora você precisa criar um arquivo /mnt/etc/nixos/configuration.nix que especifica a configuração pretendida do sistema. Isso porque o NixOS tem um modelo de configuração declarativo : você cria ou edita uma descrição da configuração desejada do seu sistema, e então o NixOS se encarrega de fazer isso acontecer.

nixos-generate-config --root /mnt
nano /mnt/etc/nixos/configuration.nix

Agora nessa parte , é preciso eu dar um aviso : Se for fazer esse tutorial,faça em maquina virtual primeiro,o arquivo de configuração é totalmente pessoal,então não é possivel eu compartilhar o meu,porque eu escrevi de uma maneira com que só funcionaria em alguma maquina da minha casa.
Estou pedindo para que faça em máquina virtual,que se voçê não tiver experiencia com a “sintaxe nix” não comprometa a usabilidade,pois ja existe uma iso com os drivers de maquina virtual.
Treine em maquina virtual que eu acredito que todo mundo conseguiria instalar o sistema futuramente sem dor de cabeça.

Pronto,aviso dado e depois de modificar o arquivo com:

nano /mnt/etc/nixos/configuration.nix

somente dê um:

nixos-install

Este tutorial foi feito com a tradução do google tradutor,qualquer comando que dê errado,porfavor fale aqui.


Qualquer duvida , escreva aqui e todos os links para tutorial de configuração,instalação,eu coloquei em cima do tópico.


7 curtidas

Tem o instalador gráfico também.

1 curtida

Instalador grafico? Alem do meu ,ainda não existe projeto para instalador nem em cli ainda…

“A imagem ISO de instalação gráfica contém o instalador NixOS , bem como o Desktop Environment e vários aplicativos. É um live CD , por isso permite que você tenha uma impressão do NixOS (e do gerenciador de pacotes Nix) sem instalá-lo.”

Sim,isso é um erro deles. O que isso quer dizer é que da para testar em modo grafico ,seja com kde ou gnome.
Logo em cima está escrito:
" Observe que no momento o NixOS carece de um instalador gráfico amigável e agradável. Portanto, esta forma de instalação pode não ser adequada para usuários novatos do Linux."

1 curtida

oxi! precisa de outra distro pra instalar o nixos em cima?!

não tem como instalar ele já diretamente sem intermediários?

Não! eles oferecem 3 iso’s, uma com gnome,uma com plasma,e outra sem nenhuma interface,so que você escolhe a interface final pelo arquivos de configuração.

eu ainda não entendi!

vc pode me passar um site ou vc tem blog que explique isso?

1 curtida

Vou criar um blog assim que meu projeto de distro concretizar!

Mais é assim:
Existem 3 iso’s oficiais.
1 livecd com interface GNOME
1 livecd com interface PLASMA
1 livecd sem interface
Ele não tem instalador,então tem que instalar de forma manual como eu ensinei aqui.
Pense em um arch com outras 2 iso’s com interface…

2 curtidas

Opa, beleza?

Realizei a instalação e queria tirar uma dúvida.
Instalei a versão KDE Plasma que depois de instalado verifiquei que esta na versão 5.21.5 e gostaria de atualizar o sistema para a versão mais nova que atualmente é 5.22.5. Até mudei o canal para unstable -small mas depois do upgrade o sistema não entrou mais então tive que voltar na versão anterior.

Nesse caso como funciona?

1 curtida

Olá!

Provavelmente esse comportamento é por causa do lançamento do gnome41.
Ja temos no repositorio alguns “pedaços” do mesmo,então eles ja vão disponibilizar o plasma em uma iso, e outra iso com gnome41. ( um comportamento que eu não posso discordar que é no minimo esquisito. )
Realmente eu olhei a pagina de pacotes e eles ainda não disponibilizaram o plasma 5.22.5.
Eu não tenho certeza do metodo , mais temos o NUR.

(NUR é o AUR do nix, a comunidade gerencia esse Repo. , não cheguei a usar ainda porque tudo que eu preciso está no Repo. principal.)

1 curtida

Depois do que você disse nesse e em outro tópicos queria que me respondesse as minhas interpretações sendo elas:

1 - Quando se instala app pelo nix-env quer dizer que é instalado no ambiente do usuário logado em questão?

2 - Quando se coloca os app para se instalar via nix rebuild dentro do arquivo de configuração ele é instalado a nível sistema?

3 - As instalações em si de qualquer app pelo metódo nix-env são todos instalados fora da camada do sistema em si, fazendo uma analogia aos Flatpak que diz que isola os programs do sistema?

4 - Se o 3 for uma verdade então é mais fácil fazer as instalações via channel oficiais deles ou o Flatpak ainda gera alguma vantagem por se isolar ainda mais?

5 - O nix-shell pelo que entendi é a execução de apps sem a necessidade de instalação e os mesmos ficam em memória um tipo container que ao ser destruído é liberado?

6 - No seu sistema você conseguiu utilizar app do tipo appImage, aqui não roda nenhum, até instalei pacotes do tipo appImage-run e appImageTools.

Logo mais tenho mais perguntas hehehe

1 curtida

SIm,Somente o usuario em questão.

Sim, o equivalente a você instalar uma distro com os apps ja dentro .

Sim,mais eu compararia mais ao snap , pois é instalado somente com o systemD e é separado por patchs, criando um eco-sistema quasse inquebravel.

Eu, particulamente, se existir opção eu instalo via flatpak, pois adoro essa forma de empacotamento,mais o nixPKG tambem é “global”.

Não, o nix chega a ser mais profundo , como eu disse é quase 100% movido a patch, a cada atualização o mesmo cria-rá um novo binario.

Depende do metodo,se você está se referindo 100% ao nixPKG,sim , funciona no mesmo estilo container.

Você não é o primeiro a reclamar disso,em minha maquina funciona normal,pode ser questão de configuração, mais tente seguir o metodo de montagem nix ,que você poderá tentar arrumar qualquer erro.

Não se preocupe, o que eu souber eu te ajudarei!

2 curtidas

Sobre a questão dos channel você usa qual atualmente?
O que acha da versão unstable-small? Se usou já teve problemas? Recomenda em uso para produção?

Obs: Estou lendo a questão do metódo de montagem nix que você sugeriu

1 curtida

Somente o padrão,não mudo porque não acho conveniente.

Usei bem pouco e achei bem instavel. (o nome sugere kkk)
Pelo pouco que li, ai é pra quem busca uma distro minimalista e 100% source-based.

Definitivamente não!

2 curtidas

me parece que os appimages não são tão universais assimmm, como alguns falam para depreciar snaps e flatpaks (já não funcionam em sistemas baseados em musl libc)

1 curtida

Testando o sistema aqui, ainda me surgiu dúvidas.

1 - Por exemplo o diferencial da distro que vi alguns canais é que se pode ter versões diferentes do mesmo softwares de forma simples.
Para simular esse cenário montei um ambiente de c# com a IDE Rider e instalei via arquivo de configuration que tem que gerar o rebuild sendo assim coloquei lá o dotnet-sdk e automaticamente instalou a versão 5. Agora precisei instalar a versão dotnet-sdk-2.2.401 e essa versão em si não achei na minha instalação atual, realizei algumas pesquisas e descobri que essa versão em si foi lançada na versão nixOS 19.09 então imaginei em fazer o seguinte

nix-channel --add https: //nixos.org/channels/nixos-19.09 nixos-19.09

Imaginando que agora o meu nix search traria mais uma versão dentre as outras apresentadas, o que não ocorreu.

Então realizei a instalação pelo usuário:

nix-env -i dotnet-sdk-2.2.401 -f https://github.com/NixOS/nixpkgs/archive/596739026bbe0c693708119e5cd3e1b3aa88fd2d.tar.gz

E instalou, mas o que realmente acontece é que isso não deixa duas versões e sim substitui.
Voltei a instalar a versão dotnet-sdk-5 e fiz uma outra instalação no nix-shell

nix-shell -p dotnet-sdk -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/596739026bbe0c693708119e5cd3e1b3aa88fd2d.tar.gz

Executei o Rider(IDE) por dentro dele e sim ele reconheceu a versão 2.2 e fora do shell reconheceu a versão 5. Mas… Mas… A minha pergunta é isso não deveria ser mais simples em ter várias versões do mesmo app no ambiente? Pois ficar montando o shell toda vez para utilizar a versão 2.2 achei estranho? Até consegui colocar usando alguns argumentos do tipo nix-env --preserve-installed… seria isso quando dizem que podem usar várias versões? Por que o comportamento também não foi muito satisfatório. Li alguma coisa bem por cima que estão implementando uma feature flake já viu e testou algo com ela desse tipo?

Outra coisa sobre os appImage, segundo li nos fóruns gringo o nixOS não se dá bem com appImage, basicamente não é compatível pois os AppImage necessita de alguns pacotes globais coisa que o nixOs não vem por si instalado (por ser minimalista) e quando instalada ele isola com o sistema. Um usuário colaborou com o pacote appImage-run, e usando ele (appimage-run nomeDoAppImage.appimage) pelo terminal o app funciona (mas nem todos funcionam conforme o próprio autor disse), então queria saber como você executa seus appImage?

1 curtida

Olá!

Recomendo uma lida na documentação, você precisa usar parametros especiais para manter os dois pacotes juntos. Os desenvolvedores ressaltam bastante sobre essa configuração.

então queria saber como você executa seus appImage?

Depois de ler as pessoas falando disso, eu fui testar, e eu não faço a minima ideia de como roda, eu vi que realmente não é comum, agora nesse momento eu estou no guix (que eu pretendo fazer um tópico especial para ele.) mais amanhã eu mostro uma print, deve ser alguma coisa especial no meu config. Vou mudar o ramo amanha, pois titve alguns atrasos para o flatpak, então quero ver se uma depois de uma simples atualização , o appimage para (que na verdade é o esperado). Agora nos ultimos dias, eu não estou tanto no nix por estar explorando outros sistemas de uma maneira mais profunda, como o gentoo. Agora desde ontem eu estou com o guix, que no momento está parecendo mais polido que o proprio nix, se você quiser eu te marco no post que eu vou escrever, talvez para montar ambientes que por si só não podem ser tão isolados, o guix pode se sair melhor. ( e pelo que eu li, os sistemas compartilham desenvolvedores. )

1 curtida

Sim cheguei a fazer alguns testes como mencionei.
Mas minha visão era se colocasse um canal de versão antiga já teria a opção de instalar, e aí fiquei assim: O objetivo de ter mais canais é usar somente no arquivo configuration (imagino que seja isso)

O app que mais queria consegui fazer rodar com um atalho maroto rsrs menos mal.

Você usao o nix-shell em qual situação?

1 curtida

Para a automatização. Você pode puxar pacotes de “brenchs” diferentes, mesmo não sendo o correto. Não lembro se foi você, mais ja me perguntaram se o nix funciona parecido com o fedora silverblue, mais ele se parece mais com o qubes. Você pode escolher o modo com que vai instalar e controlar o sistema, por isso o “modulo” nix-shell. (modulo entre aspas pois ele é muito mais que isso, só que resumidamente “é” um modulo)

Em teoria, o “cache-center” do nix, cortaria essa opção, mais é estranho não ter um app mais antigo nos repos. novos, pois na verdade eles juntam tudo para ficar mais facil gerenciar, ou pelo menos é a ideia do projeto nixPKG, ter tudo facil para uso.

1 curtida