ついにできた。誰が得をするのかという環境ですが、
- Arch Linux
- Systemd-nspawnによる仮想環境
- Host側で起動しているXserverに画面を映す
動機
Arch Linuxではfcitx-mozcとemacs-mozcが競合しており、双方を使うことができない
そこで、Systemd-nspawnによりコンテナを作り、そこで最低限のアプリケーションをインストールし、emacs-mozcを利用する。
ついでに、話題のエディタSpacemacsも利用する。
手順
まずはSpacemacsをホスト側に持ってくる
mkdir -p $HOME/etc/spacemacs
git clone https://github.com/syl20bnr/spacemacs $HOME/etc/spacemacs/.emacs.d
mozcのインストールスクリプトを作成
install_mozc.sh
#!/bin/bash
# This script is for install emacs-mozc to arch
UID=1000
cat << 'EOF' >> /etc/pacman.conf
[pnsft-pur]
SigLevel = Optional TrustAll
Server = http://downloads.sourceforge.net/project/pnsft-aur/pur/$arch
EOF
pacman -Syy
pacman -S --needed git emacs emacs-mozc adobe-source-code-pro-fonts
useradd --create-home --uid $UID arch
Arch Linuxのコンテナを作成し、mozcのインストールスクリプトをホストからゲストへコピー
create_container
#!/bin/bash
mkdir -p $HOME/var/container/arch
sudo pacstrap -i -c -d $HOME/container/arch base base-devel
sudo cp install_mozc.sh $HOME/var/container/arch/tmp/
コンテナに入り、↑でコピーしたmozcのインストールスクリプトを実行する
sudo systemd-nspawn -D $HOME/container/arch
chmod +x /tmp/install_mozc.sh
/tmp/install_mozc.sh
最後に、コンテナからXに画面を映せるように設定
xhost +local:
SPACEMACSを起動するには、下記のスクリプトを実行すればOK。パスの通っているところに置こう。
spacemacs
#!/bin/bash
CONTAINER_USER=arch
CONTAINER_HOME=/home/$CONTAINER_USER
sudo systemd-nspawn \
--setenv=DISPLAY=$DISPLAY \
--setenv=SHELL=/bin/bash \
--setenv=HOME=$CONTAINER_HOME/etc/spacemacs \
--bind=$HOME/etc/spacemacs:$CONTAINER_HOME/etc/spacemacs \
--bind=$HOME:$CONTAINER_HOME/host_home \
--bind=/tmp/.X11-unix \
-D ~/var/container/arch \
-u $CONTAINER_USER \
emacs
いやあ疲れた。動作はちょっともっさりしている。