LinuxとかOSSのこととか

Linux (主にNixOS) や OSS に関する取り組みを記述するブログ。

NixOSマシンを自分好みにカスタマイズする

はじめに

前回の記事では ThinkPad に NixOS をインストールしました。 今回の記事では、このマシンを自分好みにカスタマイズします。 NixOS でシステムの構成するには、設定ファイル configuration.nix を編集し、ビルドコマンドを実行します。 本記事では、マシンのカスタマイズに何をしたかとそのために configuration.nix をどのように編集したかを書いていきます。 また、この記事はカスタマイズした NixOS マシン上で書いており、文章の推敲にはtextlintを使用しています。

タイムゾーンの設定

time.timeZone = "Asia/Tokyo"

GUIの環境の導入

services.xserver.enable = true; で, X11 を使えるようにします。 また, ウィンドウマネージャとして i3 を使用します。 他に、以下の設定を加えています。

  • Control(Left)と Caps Lock キーを入れ替える設定
  • トラックパッドを使用できるようにする設定
  • トラックパッドのスクロールを上にスワイプすると下にスクロールする設定

最終的に、以下のコードになります。

services.xserver = {
  enable = true;
  windowManager.i3.enable = true;
  xkbOptions = "ctrl:swapcaps";
  libinput.enable = true;
  libinput.naturalScrolling = true;
};

サウンドを使えるようにする

あまり使ってませんが、一応。

sound.enable = true;
hardware.pulseaudio.enable = true;

Wi-Fi の設定

無線 LAN を使えるようにするための Wi-Fi の設定のコードは以下です。 ハッシュされた PSK は wpa_passphrase コマンドで生成しました。 ちなみに、平文の場合は networking.wireless.networks.<ESSID>.psk を使います。 また、DHCP で IP アドレスをサーバから自動で取得できるようにしました。

networking.wireless.enable = true;
networking.wireless.networks = {
  <ESSID> = {
    pskRaw = "<ハッシュされたPSK>";
  };
}
networking.useDHCP = false; # is deprecated, therefore explicitly set to false here.
networking.interfaces.<インタフェース名>.useDHCP = true;

日本語入力の設定

インプットメソッドに fcitx を使います。また、日本語入力の変換に mozc を使いました。 ビルド後(後述)、再起動すると fcitx が自動で立ち上がります。 fcitx-configtool で「Keyboard - English(US)」「Mozc」を設定し、Ctrl+Space で切り替えるようにしました。

i18n.inputMethod = {
  enabled = "fcitx";
  fcitx.engines = with pkgs.fcitx-engines; [ mozc ];
};

システムに様々なソフトウェアをインストールする

使いたいパッケージを記述します。 Vim はパッケージから取得すると、クリップボードのサポートがないものを取得します。 この Vim は、システムのクリップボードを共有しないため、不便です。 そのため、vimHugeX を指定しています。

environment.systemPackages = with pkgs; [
  vimHugeX
  w3m
  git
  chromium
  rxvt_unicode
];

日常ユーザーの作成

ビルド後、root アカウントからpasswdでパスワードを後から設定しました。

users.users.ykonomi = {
  isNormalUser = true;
  home = "/home/ykonomi";
  extraGroups = [ "wheel" ];
};

システム構成のビルド

作成した configuration.nix を元に、以下のコマンドより、システム構成をビルドし切り替えます。 システム構成が大きく変わりのもあり、正しく変更されたかの確認のため、再起動もしてます。 ちなみに、システム構成のビルドだけを試しに行う場合は nixos-rebuild buildを実行します。 また、システム構成を切り替えるがデフォルトのシステム構成にしない場合は nixos-rebuild testを実行します。

nixos-rebuild switch
reboot

最後に

以上により、NixOS マシンのシステム設定しました。 一度にすべての設定をしたわけではないため、再現性に乏しいです。 特に、日本語入力は、はじめは Mozc が起動しなかったため、一時期 Anthy を使用していました。1 設定を configuration.nix 1ファイルでできることで、自分がどのようにシステム設定したかをひと目でわかるのがいいと感じています。 他の利点は、ビルドしたシステム設定間を切り替えることができる点です。 トライアンドエラーでお世話になりました。


  1. xterm を urxvt に変えたあたり、うまくいくように。 一方、xterm に戻しても Mozc が使用できたので真相は闇の中です。その際、いろいろいじりすぎたのであまり参考にはならないと思います。