GuixのFull-Source Bootstrapに感化されたのでやっていく。
方針
hex0から諸々をbootstrapするシステムにはGuixの他にfosslinux/live-bootstrapなるものもあるようだが,なんとなくGuixを使っていく。
本当はgnu/packages/commencement.scmを参考に手作業でやっていきたかったが,これが結構しんどくて,TCCでbootstrapしたGCCがGCCをコンパイルできなかったときに萎えて諦めた。
Guix
Guixでemerge -e
的なことをする方法がわからなかったので,更地の/gnu/store
からbootstrapしていくことにする。
まず,ディストロのパッケージを使うなり手打ちするなりでGuix 1.4.0を既存のシステムにインストールする。
公式ページからDLできるバイナリ/インストールスクリプトは既に出来上がった/gnu/store
を利用するので今回は使うことができない。
Guixのパッケージを提供しているディストロは,ぱっと見たところGentoo(nix-guix)・Debian・Alpineがあった。
AURのGuixは依存ライブラリのビルドが壊れていて使えなかった。
今後も便利に使うため,今回はAlpine on Dockerで作業する。
(Dockerといえば,今春からDocker Hubのpullのレート制限が10pull/時に厳しくなるらしい(cf. Usage and limits | Docker Docs)。
いくらなんでも厳しすぎやしませんかね……。)
そして初期設定をする。
といってもデフォルトで用いられるgit.savannah.gnu.org
が遅いのでCodebergにある公式ミラーを参照するようにするだけである。
guix/channels.scmを参考にやっていく。
% docker run -it alpine
% apk add guix
%