NixOS」カテゴリーアーカイブ

NixOSに挑戦してみました

2月も中旬になりましたが、個人的に忙しい状況が続いている事やKamurikiLinuxが開発終了してから色々とLinuxも試しているのですが、なかなか個人的にこれだ!っと思う様なLinuxが見つからずにメイン機はなかなか変更ができないのでExtrox Linuxにしているのですが、サブ機の方が定まらずに色々と情報収集などを行っていましたが、今回はNixOSを導入しましたので設定などについて記載したいと思います。

いつもお世話になっている薬局さんで相談して人参養栄湯柴葛解肌湯を服用して調子が回復しましたので今回は花粉症などの影響もあってかなり鼻水や鼻詰まり、目のかゆみなどもありましたので鼻の症状が強いの場合は麻黄附子細辛湯、目の症状が強い場合は洗肝明目湯人参養栄湯の併用で様子を見ることになりました。


今回の記事に関する目次


NixOSについて

NixOSはLINUXではありますが、他の代表的なLinux(Fedora・Ubuntu・Debian・Archlinuxなど)の様に命令を入力して何か物事をするのではなく、原則システムの状態や設定などを決まったコードで宣言をしてリビルドする事でソフトを導入したりする事ができる再現性と信頼性を極限まで高めたLinuxです。

概念として宣言をするので日常的に使用しているsudo apt ◯◯やsudo pacman -S ◯◯という感じではなく、コンフィグファイルに入力してから環境を再構築させる事によってソフト(パッケージ)の導入や環境を整えるLINUXです。

大前提としてGUIのISOをUSBに書き込んだりして読み込ませた場合はインターネットに接続されている環境が必須となりますのでネットへ接続されていないとそもそもインストールをする事ができません。また、導入などに関してはあくまでも自己責任でお願いします。

目次へ戻る

実は一度挫折してます

実は数年前にNixOSは導入してみようと思ってインストールをしてみたのですが、不安定な部分が多かった点や恥ずかしい話ですが現在の様な感じでもなかったのですぐに諦めてしまった歴史がありますが、最近ふとまたNixOSに関しては導入などをしてみようと思ったので今回は下調べなどをある程度行った上でインストールなどを実施してみると意外とインストールと設定ができてしまいましたのでバージョンも上がって改善されてきてはいると思いますが、ちょっと驚きました。

目次へ戻る

設定について

NixOSは宣言型なので設定やソフトの導入は原則全て1つのファイルです。

この部分に関しては意外と多い説明として$nix-env -i ◯◯で導入という感じで記載される方も多いのですが、この&nix-envに関する構文は個人設定や一時的な使用などで用いる方法として紹介されている事も多く、ユーザーが増えても同じ環境にする場合やシステム設定やパッケージの導入が比較的簡単にできるLinuxでもあるNixOSのメリットでもある宣言型である意味がありませんし、逆に余計な部分が増えたりしますのでおすすめできないのではないかと思います。

ですので設定やソフトの導入に関しては$sudo nano /etc/nixos/configuration.nixに記述した上で$sudo nixos-rebuild switchを実行する事で勝手に解決してくれます。

目次へ戻る

主に設定する項目($sudo nano /etc/nixos/configuration.nixの編集)

まず、一番参考になったサイトは@feles-ao42さんが記載しているNIX OS入門のページでした。特に今までは命令形だった部分が宣言型の部分へ変更になっていますのでその辺りの概念がいまいち前回は理解しにくい感じでしたが、今回はわかりやすいサイトなども登場してきていますのでなんとかなりました。

Githubのページに機種が存在する場合にはnix-hardwareの設定を実施しても良いかもしれないけど機種がない際に明確な理由がなければ特に実施する必要もないかもしれません。Macbookpro A1502で試してみましたが、Fanなどは改善された感じがありますが内蔵のWifiアダプタは接続ができませんでした。

ただ、自分も設定や検証をしておりますが導入や設定は自己責任でお願いします。また、環境などによっても設定項目などは異なりますのでご注意ください。

機種ごとの変更1:CPUにm3やm5を使用している場合

最初に導入する機種のCPUがもしm3やm5などを使用している場合には、他のLINUXの様なちらつきではなく、NixOSのの場合は勝手にフリーズして固まりますのでインストール後にすぐに対応が必要です。主にBootloaderの下辺りに下記を$sudo nano /etc/nixos/configuration.nixへ追加します。

#cpu m3.m5 bootup option
boot.kernelParams = [
“i915.enable_execlists=0”
“intel_idle.max_cstate=2”
“quiet”
“splash”
];

上記を記述後に$sudo nixos-rebuild switchを実行する事で自分の環境ではフリーズなどもしなくなりましたので動作も改善しました。イメージとしてGrubの記述している部分をコンフィグファイルで記述して読み込ませるのをNIXOSではリビルドする事で反映されるイメージです。

目次へ戻る

機種ごとの変更2:Macbookを使用している場合

  • ctrlとcapslockの入れ替えについて
    $sudo nano /etc/nixos/configuration.nixにある# Configure keymap in X11の項目内にoptions = “ctrl:swapcaps”;と記述して $sudo nixos-rebuild switchを実行する事で改善する場合があります。ただし、デスクトップ環境によっては設定を無視されますのでその場合は諦めが必要です。

目次へ戻る

日本語フォント設定

フォント設定はフォントを導入してこのフォントを使用するとして設定をする事で解決しますので$sudo nano /etc/nixos/configuration.nixに記述します。

#font
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
liberation_ttf
fira-code
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
];

fontconfig = {
defaultFonts = {
serif = [ “Noto Sans CJK jp” ];
sansSerif = [ “Noto Sans CJK jp” ];
monospace = [ “Noto Sans CjK jp” ];
};
};
};

上記を記述後に$sudo nixos-rebuild switchを実行する事で自分の環境では改善しました。

目次へ戻る

日本語入力(Fcitx5の導入)

#fcitx5(https://wiki.nixos.org/wiki/Fcitx5)
i18n.inputMethod = {
enable = true;
type = “fcitx5”;
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
];
};

上記を記述後に$sudo nixos-rebuild switchを実行する事で自分の環境では改善しました。

目次へ戻る

パッケージの導入について

パッケージの導入に関しては原則としてenvironment.systemPackages = with pkgs; [ ]の中にパッケージ名を記載します。パッケージがあるかないかなどに関してはNIXOSの公式ページにあるパッケージ検索ページから検索し、pkg.を取り除いた形で記述します。

例えばThunderbird(メーラー)を検索してNixOS Configurationの項目を見るとホームページ上では下記の様な記載があります。

environment.systemPackages = [
pkgs.thunderbird
];

この場合は単純にthunderbirdと記述します。#を先頭につけるとコメントになりますので項目別や分野別に分ける意味でも記載しておくとわかりやすくなるかと思います。保存後に$sudo nixos-rebuild switchを実行する事で勝手に導入してくれます。逆に削除したい場合は逆に削除(一時的な場合はコメント化)をしてから$sudo nixos-rebuild switchを実行する事で勝手に削除してくれます。

つまりパッケージを記述する(sudo apt install ◯◯やsudo pacman -S 〇〇)、コメント化や削除する(sudo apt autoremove 〇〇やsudo pacman -Rs 〇〇)といった感じになります。

自分で宣言をしても良いかもしれませんが、特段ソフトの量が多くなったりする等の特別に別にしたいという事がなければenvironment.systemPackages = with pkgs; [ ]の中に記述しても問題ないかと思います。

目次へ戻る

まとめ

最近感じるのは自分の環境が例えば複数環境の場合などの際に実際に導入から使用までにかかる時間をできるだけ短縮できる方法はないかと考えた際にMX linuxExtroxなども含む)、Antixなどはかなり負担が楽になっています。ただ、ある程度使用するパッケージが限られる場合や一度にトントントンっと導入してハイ終わりっといった感じで導入する場合にはNixOSの選択肢はありではないかと思いました。

デスクトップ環境ではBudgieだとMacbookの場合に設定するctrl:swapcapsが無視されますし、LXQtだとサスペンドやハイバネーションからの復帰が困難で強制電源OFFなどが必要となりますのでおすすめできません。

一番シンプルで使いやすいデスクトップ環境がXFCEです。電源に関してはメニューからはスタンバイやハイバネートなどができない反面、ラップトップの蓋を閉めた場合などにハイバネートの指定が可能なので一時的な離席などの際に応用できるのではないかと思います。

最初はかなり大変ですが、なれると命令文などを頻繁に打ち込む事がなくなりますのでかなり導入と管理は楽になりますし、依存などの心配も比較的考えなくても良い感じがありますので概念的な部分が把握できればインストールなども楽ではないかと思いますのでおすすめできると思います。

目次へ戻る

注意事項

主に注意する部分について下記のとおりです。

  • 台数が多い場合で同じ環境にしたい場合に構築が楽にはなりますが、同じ機種でない限りはコンフィグファイルの変更は多分必要になりますので完全に一緒ではありません。
  • 最初は理解なども含めて苦労しましたが、導入して宣言型に慣れると安定駆動しますのでかなり使いやすくなります。
  • デスクトップ環境によってはインストール(Mateなど)に失敗します。
  • LXQtだとスタンバイやハイバネーションから復帰が困難になります。
  • $sudo nixos-rebuild switchを実行した際にエラーが発生する場合はエラーで返されますので訂正が必要です。(これがある意味でシステムが壊れるのを防いでくれます。)
  • メモリーをそこそこ使用しますので注意が必要です。

目次へ戻る

今日は旧暦の元旦ですね。

そういえば今日(2026年2月17日)は旧暦でいうところの元旦ですね…新暦でも今年に入ってからあまり良い感じはないので心機一転して良い年になってくれれば良いな…とも思っています。来月に入るとまたドタバタする感じもありますが、体調管理に気をつけながら過ごしていければと思っています。

まあこんな感じです。

目次へ戻る