Instalei o NixOS 18.03 do Ubuntu em outra partição seguindo a seção " 2.4. Instalando de outra distribuição Linux " do manual do NixOS. Tudo correu bem, mas eu fiz algumas coisas idiotas [?] , a saber:
Esqueci de adicionar a entrada extra do gerenciador de inicialização GRUB para a instalação do Ubuntu antes
nixos-install
. Adicionado como uma reflexão tardia após a instalação e reiniciei (claro, sem entrada no Ubuntu)Não habilitou nenhuma rede em
configuration.nix
, e acabou sem comandos de configuração de rede após a reinicialização para se conectar ao wi-fi. O problema 22 é quenixos-rebuild switch
requer uma conexão de rede, então não consegui finalizar nenhuma alteração.
Então, pensei que posso inicializar a partir de um NixOS Live CD (17.03), conectar-me ao nosso wi-fi e, de alguma forma, reconstruir a configuração da instalação.
É mais do que possível que eu esteja perdendo algo essencial, tenha suposições incorretas acima, etc; bastante novo no nix e no NixOS.
EDIT: Esqueci de incluir como minhas partições estão configuradas e o que tentei antes de instalar o NixOS com sucesso.
Partições (pontos de montagem do Ubuntu):
sda
├─sda1 ntfs Recovery # some Win7 artifact
├─sda2 vfat /boot/efi
├─sda3 vfat NIXBOOT # boot partition (esp, boot)
├─sda4 ext4 onyx # NixOS data
├─sda5 swap # Ubuntu swap
│ └─cryptswap1 swap [SWAP]
├─sda6 ext4 # (Arch install)
├─sda7 ext4 / # Ubuntu install
├─sda8 swap nixswap
└─sda9 ext4 home
Eu não queria bagunçar a partição de inicialização do Ubuntu, então criei outra ( /dev/sda3
). Meu plano era incluir posteriormente uma entrada de menu no GRUB do Ubuntu para NixOS, mas, por enquanto, instale, reinicie e teste a inicialização do NixOS a partir do console GRUB ( set root=...
, linux ...
, initrd ...
, boot
)
sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt --no-bootloader
Após a reinicialização, não consegui ver nada na partição de inicialização do NixOS. Voltei para o Ubunut, instalei sem --no-bootloader
, lembrei de adicionar uma entrada para o Ubuntu e reiniciar. (Foi só depois disso que percebi que systemd-boot
e GRUB são duas coisas completamente diferentes...)
ATUALIZAÇÃO: Consegui voltar ao Ubuntu selecionando a partição de inicialização do Ubuntu como um dispositivo de inicialização alternativo no BIOS, e o menu GRUB usual apareceu. Posso apenas refazer a instalação com a configuração correta.
A maneira mais simples de ir é instalar a partir do LiveCD.
nixos-generate-config
irá regenerar a configuração de hardware, mas se achar queconfiguration.nix
já existe, irá deixá-la sozinha. Enixos-install
é projetado de forma que possa ser executado com segurança quantas vezes forem necessárias.Isso significa que você pode seguir o guia de instalação principal usando o sistema de arquivos (e configuração) que você já criou para o NixOS e continuar de onde parou.
Algumas coisas a serem observadas:
systemd-boot
por padrão nos sistemas EFI. Portanto, você terá um novo executável EFI ao lado dos que já possui.nixos-install
também tentará definirsystemd-boot
como o gerenciador de inicialização padrão. Eu acredito que você pode desabilitar isso definindoboot.loader.efi.canTouchEfiVariables
como false emconfiguration.nix
Adicionando esta resposta para fins de integridade: em teoria, a sugestão de @ Mioriin acima de
chroot
ing seria a resposta correta, que poderia ser alcançada pelo comandonixos-enter
.Do Ubuntu, com as partições do NixOS montadas em
/mnt
:Na prática, isso não funcionou, porque a rede não funcionaria (provavelmente porque
configuration.nix
faltava a configuração correta em primeiro lugar) e recebi várias mensagens de erro:No final, a resposta de @ Emmanuel Rosa é a certa, especialmente porque (como ele aponta)
nixos-install
pode ser executada com segurança várias vezes.