Gnu GuixはOSおよびパッケージ管理システム。
- システム設定をリポジトリで管理できる
- ロールバックできる
- マシンによって設定を変えることも可能
- 依存性に対する完全なコントロール。完全に再現できる
などの先進的な機能がある。Schemeで設定ファイルを書ける。
guix buildしたあとにguix packageで追加する。
guix package --roll-back
guix buildでビルドしたパッケージはGuixのソフトウェアストアに追加され、他のプログラムから利用できるようになる。システム全体から利用できる。
guix build [email protected]
guix package -i [email protected]
バージョンを探すにはguix searchを使う。
guix search emacs
guix build -f emacs.scm
スペックファイルはEmacsのソースコードのURL、チェックサム、ビルド手順などを含むSchemeスクリプトである。
homeコマンドではユーザ個別の設定ができる。 インストールするソフトウェア、環境変数、起動サービスなど。 Home Configuration (GNU Guix Reference Manual)
いっぽうでsystemの方では、ユーザ作成やパーティション、キーボードレイアウトなどシステム全体にかかることを設定できる。
Guixに限ったことではないが、Linuxをインストールしたドライブを認識しないときは、BIOSモードを確認する。 UEFIモードだとLinuxを認識してくれない。 レガシーモードにすると認識してくれ、起動もできる。
guix pull --news
guix install {package}
guix remove {package}
guix package --list-generations
guix package --list-installed
guix package --switch-generation=42
guix package --roll-back
guix package --export-manifest
guix refresh # 更新
guix environment
を使う。 https://guix.gnu.org/manual/en/html_node/Invoking-guix-environment.html
usbメモリーからインストールする方法をわかりやすく解説。
https://github.com/daviwil/dotfiles/blob/master/Systems.org (動画) https://www.youtube.com/watch?v=oSy-TmoxG_Y https://systemcrafters.cc/craft-your-system-with-guix/full-system-install/ (↑メモ)
- ブートusb用意
- インストール(TTY作業)
- ログイン(以後、GUI)
- パスワード設定
- guix設定ファイル準備(etcから移す)
mkdir -p ~/.config/guix
cd ~/.config/guix
cp /etc/channels.scm .
cp /etc/config.scm ./system.scm
chmod +w channels.scm
- commit削除
- アップデート
guix pull
sudo -E guix system reconfigure ~/.config/guix/system.scm
- インストールパッケージをすべてアップデート
guix package -u
言語設定を日本語にしただけでは入力や表示ができない。手動で設定する必要がある。
guix package -i ibus ibus-anthy font-adobe-source-han-sans
.bash_profile
などに追加。
export GUIX_GTK2_IM_MODULE_FILE="$HOME/.guix-profile/lib/gtk-2.0/2.10.0/immodules-gtk2.cache"
export GUIX_GTK3_IM_MODULE_FILE="$HOME/.guix-profile/lib/gtk-3.0/3.0.0/immodules-gtk3.cache"
ibusのキャッシュを削除する(重要)。
rm -rf ~/.cache/ibus
再起動する。
ibus-setup
一覧にJapanese(Anthy)が追加されているので、選択する。
- インプットメソッド切り替えはKeyboard Shortcutからできる。
- ibus設定画面はGNOME検索には出てこない。言語選択のJapanese(Anthy)歯車から設定できる。
vtermのコンパイルにCmakeが必要。
guix install cmake
guix install nss-certs
export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
export GIT_SSL_CAINFO="$SSL_CERT_FILE"
export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
system.scm書き換えでできるはずだが、反映させる方法がわからない。 gnomeのコマンドを1回打って代用する。
gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps']"
デスクトップ環境関係なくできる↓。
/usr/bin/setxkbmap -option "ctrl:nocaps"
guix package -m ~/dotfiles/.config/guix/manifests/desktop.scm
ctrl入れ替え → syncthingインストールと設定 → ssh鍵 → sshインストール。 gitインストール → dotfilesをclone。
ファイルを配置して自動実行されるようにする。
サービス系の自動起動はguixが利用しているサービスマネージャGNU Shepherdで行う。 https://github.com/kijimaD/dotfiles/blob/develop/.config/shepherd/init.scm このように追加しておくと自動で実行する。 ただし、shepherd自体が自動で起動しないよう。デスクトップ環境に合わせて、自動実行させるようにする。 https://github.com/kijimaD/dotfiles/blob/develop/.config/autostart/gnome.desktop 実行権限をつけること。
いつの間にか、Alt+Shiftでinput method切り替えになっていて不便なことになっていた。 いつからかは不明。dotfilesの影響か、そうでないかもよくわからない。 gnome-tweaksをインストールしてAdditional OptionsにAlt+Shiftオプションがあるのでオフにした。(Emacs inputの設定項目があったので選択しておいた。)
この辺configにまとめられないのか。 gnome使いたくないな。
ibus-anthyのショートカット一覧。 https://wiki.ubuntulinux.jp/UbuntuTips/JapaneseEnvironment/IbusAnthy#Setting
anthyにC-c C-jが奪われるようになった。設定で変えても変更が反映されない。 まあ、英語に切り替えてからやればいいか。 クリーンインストールすると解決する問題か。
C-c C-jを押すと無変換モードになるので、変換されないときは再度C-c C-jを押す必要がある。
たまにカタカナ入力なって困る。
ctrl+.
で入力モードを順番に切り替える。
Guixがgemをサポートしているので、RVM, rbenv, bundlerは必要ないよう。 https://git.genenetwork.org/pjotrp/guix-notes/src/branch/master/RUBYGEMS-Nokogiri.org#headline-33
だがよくわからない。ひどく面倒そうな環境変数を追加しているのを見て、これは間違ったアプローチだと思った。 npmでlintは普通にできたので、同じようにできると思ったのだが。
nm-connection-editor
よくわからないので実際の例を見てみる。
ビルドしてる。 https://notabug.org/mthl/cuirass
ノート。 https://github.com/pjotrp/guix-notes/blob/master/RUBY.org
System Crafters. https://www.youtube.com/channel/UCAiiOTio8Yu69c3XnR7nQBQ https://github.com/daviwil/dotfiles
guix-works。開発環境として使うための情報が豊富。 https://www.draketo.de/software/guix-work.html
AltとSuperの位置が近すぎて、workspaceを打ち間違う。
日本語入力のときのスペースが全角になってうざい。 configで挙動を変更できないのか。
例によって日本語入力ができない。 Emacs以外ではできてるので、やはりi3と同じ。 最初に起動するEmacsで環境変数を指定できれば解決なのだが。 インストールした最初からできたので、どこで制御してるのかわからない。
i3ではconfigに環境変数入力 && emacs を直書きすることができる。emacs-exwmでは最初に起動するEmacsを記述してる箇所はどこにあるんだろう。
guixを使うようにする。
- 日本語入力
- Bluetooth
- Chrome
- Zoom
あたりをどうするのかが気になる。
guix install node
npm install npm
npm install
npx textlint .*org
- i3ではshepherdを実行してなかった。
2.ログをとってみてみると、 ibus-daemon -d
はダメで、 ibus-daemon
とする必要がある。つまりふつうに実行してそこでコンソールが止まる形式で実行する必要がある。
Emacsだけならともかく、ほかのブラウザなどの操作と一貫性がなくなるのを避けたい。 ほかにも発生する人がいた。だいたい同じ環境変数の定義を示していて、いくつか試すなかでなんとかうまくいった。
https://raawaa.github.io/2016/05/05/input-with-ibus-on-emacs/
export LC_CTYPE=ja_JP.UTF-8
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
重要なのは、この環境変数が評価されているセッションでEmacsを実行すること。 ibus側の設定ではなく、Emacs側にinput methodを教えてあげる環境変数、ということだ。 上をターミナルで実行してそのままemacsを実行すると、たぶんうまくいく。
それを確かめてから、あとは .bashrc
に書き込む。ターミナルでemacsを起動すると日本語が打てる。
ランチャーから起動すると打てないので、ランチャー側を少しいじる必要がある。
guix environment -C guix --network --ad-hoc ruby ruby-sinatra
みたく、仮想環境が作れるのだが、実際どう使えばいいのかわからない。
当面はディレクトリにインストールしてそこで使うようにすればよい。 グローバルにインストールしなければ普通に使える。
たとえばM+<が使えない。単に<
入力と判定されてしまう。
alt+shiftが奪われてた問題と共通してるように見える。
system.scmの “grp:alt_shift_toggle” を消してreconfigureしたら直った。 理解してない設定は危険だな。
ibusの何かショートカットを押している。Ctrl+,
だった。
とてもうざい。
時間経過で回復した。
少なくとも今はうまく動いてるので。timeshift-gtkでできる。guixのリポジトリ。
カンファレンス2022。
System Craftersの動画。 Guixを使うべき理由。仮想マシン上で実際に試す。
翻訳によるコミットのやり方。
guixのチャンネル。
IME Anthyのショートカット一覧。