Sonunda chromeos üzerinde nixos’u crostini üzerinde çalıştırabildim. Bu konu ile ilgili notlarımı ve yararlandığım kaynakları buradan paylaşacağım. Nix’in bir yığın üstün özelliği var. Mesela bu blogu yerelde çalıştırarak ekleme yapmak için nix kullanıyorum. Bunun için kullandığım dosya default.nix ;
{ pkgs ? import <nixpkgs> {}
}:
pkgs.mkShell {
name="dev-environment";
buildInputs = [
pkgs.bundler
];
shellHook = ''
echo "Start developing..."
'';
}
sonra bundle install
devamıında bundle exec jekyll serve –watch
tamam Hikari teması ile yeni sass sürümünde bir takım hatalar v.s. olabilir ama Voila; bloğum 127.0.0.1:4000 de yayında…
Bunun gibi bir sürü kolaylık için neden nix ve nixos kullanmayayım ki ?
Bu konuda olabilirliği gösteren ve tamamlamamı sağlayan aşağıdaki linklerdir.
Cody’nin NixOS in Crostini (Part 1) yazısı ile Adriano’nun NixOS containers in ChromeOS ve Deploying NixOS container images yazıları.
Sonuçta nasıl yapıyorum. Nix kurulu debian konteynerimde Adriano’nun deposuden tarball dosyalarını oluşturdum. ilk seferinde flake tanımlamak vs uzun sürdü. Ancak bir kere nixos konteynerini başlatınca tamamdır onun içerisinde çok daha kolay oluyor.
crosh terminalde aşağıdaki komut ile linuxa Downloads dizinini paylaşıyorum.
vmc share termina Downloads
Downloads izinine tarball dosyalarını kopyalıyorum.
lxc image import metadata.tar.xz image.tar.xz --alias lxc-nixos
# `lxc-nixos` burada imaj dosyasının ve konteynerin adı oluyor.
lxc init lxc-nixos lxc-nixos --config security.nesting=true
# konteyneri ilk kez çalıştıralım
lxc start lxc-nixos
# logları görmek istersem
lxc console --show-log lxc-nixos
#acaba konteyner İP almış mı kontrol etmek lazım.
lxc list
# konteynerde bash çalıştırıyorum.
lxc exec lxc-nixos bash
# buraya kadar gelmişken kullanıcımın passwordunu ayarlamazsam olmaz.
passwd $USER
# From crosh (ctrl-d from `termina`)
# Konteynerde `/dev/.container_token` oluşması için
vmc container termina lxc-nixos
İlki hata verecek, ancak bakın konteyner çalışmıştır. Artık Chromeos’a konteyneri bağlıyorum.
Adrano’dan farklı olarak içine git ve docker kurduğum benim yapılandırmam; burada
Tamamdır. İyi Eğlenceler