Chromebook Acer Spin 311 に Emacs を入れて幸せになる
Chromebook Acer Spin 311 を半ば衝動買いした。
当初の目的としては、電子書籍を Moon+ Reader Pro で読みつつ、 Orgzly でメモを取り、それを Syncthing で共有する、というような Android でのユースケースを、キーボード付きのデバイスでやりたいな、というくらいだった。
実際購入してみたところ、 Linux (Debian) をシュッと立ち上げて使えるということだったので、それならばと Emacs を使えるようにしよう、と相成った。
この Linux は本当に Debian なので、実は Chromebook 特有の何かというのはあまりなかったのだけれど、備忘録として作業内容を記録しておく。
Emacs のインストール
Linux コンテナを立ち上げたらまずは更新をかける:
sudo apt update
sudo apt upgrade
日本語ロケールが設定されていないので、設定しておく:
sudo dpkg-reconfigure locales
Emacs や開発系のツールは新し目のを使いたいので、 nix で導入する。
こういう場合に snap や flatpak 等で入れると、 Emacs 内からリンクを開く際に既存のブラウザインスタンスが使われなかったり等の変な挙動をするので、 nix を使うようにしている (参考: Opening urls from emacs in firefox : r/emacs)。
そして、現状の ChromeOS 特有の問題として、 nix のインストールに失敗する、という物がある(参考: can’t install nix-2.3.7 on ChromeOS linux container: operation not permitted mounting /proc · Issue #4107 · NixOS/nix)。ここに記載の通りワークアラウンドとして以下を実行する:
sudo umount /proc/{cpuinfo,diskstats,meminfo,stat,uptime}
これで nix のインストールが出来るようになる:
curl -L https://nixos.org/nix/install | sh
Emacs のインストールは以下の通り:
nix-env -i emacs-27.1
インストールしたアプリを ChromeOS 側から見えるように、以下のように設定する(参考: Installing Nix on Crostini - NixOS Wiki):
mkdir -p ~/.config/systemd/user/cros-garcon.service.d/
cat > ~/.config/systemd/user/cros-garcon.service.d/override.conf <<EOF
[Service]
Environment="PATH=%h/.nix-profile/bin:/usr/local/sbin:/usr/local/bin:/usr/local/games:/usr/sbin:/usr/bin:/usr/games:/sbin:/bin"
Environment="XDG_DATA_DIRS=%h/.nix-profile/share:%h/.local/share:/usr/local/share:/usr/share"
EOF
これで一度再起動すれば、もう普通に使えるようになってしまう。
(おまけ)git の credential helper を設定する
GitHub のプライベートリポジトリを利用する場合等には、パーソナルアクセストークンによる認証が必要になる。
Chromebook でも gnome-keyring
を入れれば libsecret による認証ヘルパーを利用出来る。
sudo apt install gnome-keyring -y
(cd ~/.nix-profile/share/git/contrib/credential/libsecret/ && sudo make)
git config --file ~/.gitconfig.local credential.helper ~/.nix-profile/share/git/contrib/credential/libsecret/git-credential-libsecret
これで、認証が必要なリポジトリをクローンしようとすると、以下のようなダイアログが出てくるようになる:
(おまけ)スクリーンショットの利用
上記のようなスクリーンショットは Chromebook 側で撮影したあとにクリップボードに送信することで、 Linux 側からも xclip
等で普通に使えるようになる。
(おまけ)arm 版 hugo-extended を作る
せっかく Emacs が使えるようになったので、ブログも Chromebook で書いてしまおうと思い、 Hugo をインストールしようとした所で引っ掛かってしまった。
現在利用しているテーマ( Wowchemy )では、 Hugo の Extended 版が必要なのだが、 Spin 311 の CPU は arm であり、また Hugo 公式では arm 用の Extended バイナリを配布していない (参考: Extended Version for ARM - support - HUGO)。
そこで、 Install Update Hugo Extended for ARM in Ubuntu | Apoorv Blog を参考にしつつ
(と言っても、 arm 版 go を入れて go build --tags extended
しましょう、というだけだが…)、ソースからビルドすることで対応した。
なお、 go 自体のインストールは asdf の Go プラグイン を利用した。
終わりに
Moon+ Reader で電子書籍を読みつつ、 Emacs でメモを取り、 Android の Syncthing で同期する、という面白い環境が出来上がった。
ついでにブログ執筆環境も整えることが出来た。サクサク、というわけには行かないが、それほどストレスなく利用出来るし、キーボードも案外打ち易い。この記事自体も Chromebook で書いている。
なかなか良い買い物だったと思う。