Emacs
archLinux
lxc
systemd
systemd-nspawn

Arch LinuxでSystemd-nspawnを使ってSpacemacsをGUIで起動し、Emacs-mozcを使う

More than 1 year has passed since last update.

ついにできた。誰が得をするのかという環境ですが、


  • 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


いやあ疲れた。動作はちょっともっさりしている。


参考