macbookair
NixOS

NixOSをMacBookAirに入れてみた(restore)

きっかけ

つい先日にOSC東京というイベントに参加してLinuxのブースを重点的にまわった。
NixOSのブースの人と話したことでNixOSに興味がわき今回MBAへのインストールをしようという考えに至った。

注意

今回、この文書はいくらか説明を飛ばしている部分がある。
パーティション分けのところなどはArch LinuxとMacOSXのデュアルブート環境の構築と大差ないので詳しくはそちらを参照。

インストールする前にすること

パーティション分け

Machintosh HDを適当に分けてMacOS SierraとNixOS用のパーティションを作る。

インストールディスクの作成

NixOS公式サイトにて配布されているMinimal ISOをダウンロードしてddでUSBに書き込み。

再起動

電源ボタン押した後にAlt長押し。
やらないと永遠にスタート地点に立てない。

パーティション分け

lsblkにてインストールするパーティションのあるデバイスを見つける。

cgdiskやらgdisk、fdiskやらを使ってパーティションを分ける。

200MBをEFI System Partition(sdxA)、残りをNixOSのRootとするためLinux filesystemとして割り当て(sdxB)。

フォーマット

sdxAをRoot、sdxBをEFI System Partitionとする。

mkfs.vfat /dev/sdxA
mkfs.ext4 /dev/sdxB

マウント

mount /dev/sdxB /mnt
mkdir /mnt/boot
mount /dev/sdxA /mnt/boot

config設定

NixOSの特徴は1つのconfigファイルだけでOS全体の設定ができるところ。

Archのようにコマンドをちまちま入力することなくファイルを書き換えれば良いだけでとても簡単。

nixos-generate-config --root /mnt

このコマンドで必要なconfigファイルが生成される。

追記するのは以下の行。

nixpkgs.config.allowUnfree = true;

上の設定はbroadcomのドライバのインストールに必要になる。

またenvironment.systemPackagesにvimやgitなどシステム全体に適用させたいパッケージを指定しておくことを推奨。
(パッケージ検索はnix-env -qaP | grep 、またはNOXを使うのもあり。)
(インストールはnix-env -iA nixos.nox)

インストール

インストールにはインターネットに接続する必要がある。

USBテザリングは以下のコマンドで行う。
デバイス名をip linkを使って調べる。

dhcpcd <device name>

以下のコマンドでインストールを行う。

nixos-install

詳細な設定

インストールが完了した後はuseraddでhomeディレクトリを作成したりする。

configuration.nixに何らかの変更をした場合はnixos-rebuild switchで変更を読み込ませる必要がある。

さらなる詳細はman configuration.nixを参照。

コンソールのキーマップ変更

i18n = {
  ...
  consoleKeyMap = "jp106";
  ...
};

Xウィンドウ下で使うキーボードレイアウトの変更

services.xserver.layout = "jp";

タッチパッドの設定

services = {
  xserver = {
   synaptics = {
      enable = true;
      accelFactor = "0.005";
      palmDetect = true;
      twoFingerScroll = true;
      horizEdgeScroll = false;
      tapButtons = true;
      fingersMap = [0 0 0];
      buttonsMap = [1 3 2];
    };
  };
};

日本語化

日本語対応フォントの有効化

fonts = {
  enableFontDir = true;
  enableGhostscriptFonts = true;
  fonts = with pkgs; [
    ipafont
  ];
};

日本語入力環境の有効化(fcitx mozc)

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

オーディオ関係の設定

boot.extraModprobeConfig = ''
  options libata.force=noncq
  options resume=/dev/sda5
  options snd_hda_intel index=0 model=intel-mac-auto id=PCH
  options snd_hda_intel index=1 model=intel-mac-auto id=HDMI
  options snd_hda_intel model=mbp101
  options hid_apple fnmode=2
'';

参考文献

https://github.com/mbbx6spp/mbp-nixos
https://nixos.org/nixos/manual