NixOSの設定とSteamなどの導入について

なんとなく花粉の季節になりましたので鼻と眼の症状が本格的に出始め、くしゃみなどもそこそこ出ていたり、だるさなども少し出るなど体力を少し消耗しているな…っと感じる季節でもありますし、今月下旬からまたドタバタが始まるので体調に気をつけながら過ごしていきたいと思います。

個人的にはいつもお世話になっている薬局さんで相談して鼻水や鼻詰まり、目のかゆみなどもありましたので鼻の症状が強いの場合は麻黄附子細辛湯、目の症状が強い場合は洗肝明目湯人参養栄湯の併用で様子を見ることになりましたが、なんとなく調子も良いのでこのまま継続したいと思います。

今回もNixOSについてですが、導入や設定などは自己責任でお願いいたします。


今回の記事に関する目次


Steamの導入について

前回は主に使用までの部分の記載をしましたが、今回は主に使う可能性が高いパッケージの導入(Steamを中心)について実施してみました。もともと最初はパッケージの中に存在しているので導入してそのまま起動したりもしましたが、ライブラリからのゲームダウンロードができなかったりしたので最終的にFlathubから導入していました…

ただ、NixOSのパッケージにあるのに導入しても使えないというのは困るな…っと思いながら調べていると$/etc/nixos/configuration.nixにて下記設定をして$sudo nixos-rebuild switchにて実行してみると問題なく動作しました。

#steam setup
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# Steam japanese
nixpkgs.config.packageOverrides = pkgs: {
steam = pkgs.steam.override {
extraPkgs = pkgs: with pkgs; [
migu
];
};
};

なんとなくですが、Firewallでの接続許可を出す、フォントをmiguで起動しろという内容的な感じではないかと思いますので一応これで起動や日本語への変更も問題なく可能となりました。この部分でFirewallの部分に関してはなんとなく他のプログラムでも応用できそうな感じかもしれません…

目次へ戻る

Zoomの導入について

Zoomの導入に関しては$/etc/nixos/configuration.nixのenvironment.systemPackages = with pkgs; [ パッケージ名 ]の項目を記述する方法がページにて紹介されていましたが、色々と試したのですが導入がうまく行かなかったり、導入後に不具合などが発生したりもしましたのでやむなくFlatpak(Linuxデスクトップ向けにアプリケーションを配布・実行するための次世代パッケージ管理システム)を導入した上で起動させています。

ただ、XFCEの場合はincipe.devさんのページに紹介されていますが、XFCEの場合はXDG Desktop Portalsを要求されるみたいなので以下の3行を$/etc/nixos/configuration.nixに追記した上で$sudo nixos-rebuild switchを実行するとうまく動作します。

xdg.portal.enable = true;
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
services.flatpak.enable = true;

なお、デスクトップ環境にLXQtを使用している場合にはservice.flatpak.enable = true;だけの記述だけでも問題なく実行する事ができます。この後はFlatpakの導入ページにあるNixOS用Flathubのセットアップページにレポジトリを導入して再起動する事でZoomを検索した上で構文をターミナルで実行する事でインストールが可能となりますのでZoomを導入しました。

また、インターフェイスで日本語での表示を希望する場合には先日紹介したフォントのインストールにて紹介したフォント名の下にmiguを事前に記載して導入しておく事でも解決できますが、Steam自体は初回起動時にはエラーや起動までに時間がかかりますので気長に待つという事が必要になります。

もう少しSteamに関してはこの辺りが全体的に改善してくれるとありがたいと思いますが…

目次へ戻る

Flathubを使用する事について

情報も少ない状況ですのでこの部分はなんとも言えない部分でもあるのではないかと思いしますし、賛否両論が起きている部分でもあるように思えますし、Linuxで実際に使いたいソフトをインストールしようと思った際に依存関係など生じると使いたいソフトがインストールできないという部分がありました。

調べても似たような感じでもありましたし、調べるのもかなり負担に感じていましたので今回はこの問題を解決する事などを目的としてFlathubという依存関係の問題を解決するために誕生したLinuxデスクトップ向けのソフトウェアやパッケージの管理、アプリケーション仮想化を行うユーティリティソフトウェアを導入してZoomなどをインストールしました。Flathubの他にもUbuntuなどの系統ではSnapもありますが、自分はこの様な場合にはFlathubを選択して使用しています。

実際にソフトなどの部分は導入が相当楽にできますので、特に問題が発生してどうしてもLinuxへソフトの導入ができない場合や比較的ソフトのインストールに関する手間を省きたい場合などには良いかもしれませんが、楽に導入できるといったメリットだけではなく、実際にコンテナ化されたソフトといった感じなので検証されていないソフト(SteamやZoomは未検証と表示されています…)であったりそれらのソフトが権限を超える可能性があるセキュリティーに関連する問題が出てしまう可能があると言われています。

また、実際には仮想化されている中での動作をしている状況ですので自分の場合はメモリーやディスク容量、CPUなどのリソースを多めに使用するといった感じが見受けられた事からその様なデメリットがあるのではないかと思いましたが、どうしても導入ができない場合やある程度のスペックでリソースなどを少し多く使用しても問題がない場合などには選択肢としてはありなのではないかと思います。

以前なんとなくLinuxの根幹部分とこの様な部分とを切り離すとか切り離さないとかといった話も出ていましたが、実際にリソースを多めに使用しますが検証などがある程度できていればFlathubを使用して導入する事自体は個人で使用する状況であれば問題はなさそうに思えます。

目次へ戻る

Wechatの動作について

友人からFlathubでWechatを導入したのだけど起動はするけど画像などが保存できないという話がありましたが、$sudo nano /etc/nixos/configuration.nixに下記内容を記載した上で$sudo nixos-rebuild switchを実行したら解決できました。

#wechat
flatpak override –user –filesystem=home com.tencent.WeChat
→ ただし、権限が強すぎる場合には下記内容で限定された方が確実かと思います。
#wechat
flatpak override –user –filesystem=~/Downloads com.tencent.WeChat
→ Downloadsフォルダのみに保存が可能になります。

権限を付与する事で普通に使用ができる様になりましたが、友人が当初パッケージにあるのでそちらを導入しようと思ったのですができないという話がありましたので自分も試したのですが、パッケージに関するダウンロードの接続先が中国の様な感じがあってダウンロードができない事態が発生している関係でリビルドが一向に進まない状況だったのでFlathubでの導入になったのはなんとなく納得しました…

目次へ戻る

Minibookへのインストールについて

Chuwi minibookへのインストールの場合、画面の回転とタッチスクリーンの回転が必要になりますディスプレイ名(例:DSI-1)を調べた上で下記のような設定を$sudo nano /etc/nixos/configuration.nixにて下記のように記述した上で$sudo nixos-rebuild switchを実行したら解決できました。

#display rotate
boot.kernelParams = [ “fbcon=rotate:1” ];
services.xserver.xrandrHeads = [
{
output = “DSI-1”;
monitorConfig = “Option \”Rotate\” \”right\””;
}
];

タッチスクリーンの回転はxinput listにてデバイス名を調べた上で同じく$sudo nano /etc/nixos/configuration.nixにて記述した上で$sudo nixos-rebuild switchを実行したら解決できました。

services.udev.extraRules = ”
SUBSYSTEM==”input”, KERNEL==”event“, ENV{ID_INPUT_TOUCHSCREEN}==”1”, ATTRS{name}==”xinput listで調べたタッチスクリーンのデバイス名“, ENV{LIBINPUT_CALIBRATION_MATRIX}=”0 1 0 -1 0 1”
”;

なお、デバイス名は*でも可能な場合もあるみたいですが、できれば指定してあげると確実な結果になると思います。

目次へ戻る

実際に使いだして思った事

機種特有の設定などを除き、複数台に自分の使用する環境と同じ様な感じで使えるようにするとなると他のLINUXでは命令を出すという感じですが、NixOSはそういった感じもなく記述してリビルドするだけでソフトなどに関しては環境を勝手に同じにできるし、その構築時間も比較的短時間でできるという特徴があると思います。

しかもそれが1つのファイルでできるというのは項目別に管理がきちんとできていれば問題ない感じではないかと思いますし、記述式なのである程度は楽に複数のパッケージを簡単に導入する事もできますのでそれぞれ使用しているパソコンの環境を替えたりしない場合やプライベート用に環境をほとんど買わないパソコンを1台で使用する場合にもかなりおすすめできるかと思います。

ただ、自分の場合はMateなどの場合にはインストールが途中でエラー出て止まる、BudgieだとMacbookでのキーボード変更が有効にならないのでXFCEもしくはLXQtでの構築が安全となっている事やZoomなどの部分でインストールが自分の知識不足もあってなぜかできなかったり、できたとしても使用に問題があったりもしました。

なおかつ問題が発生した際に調べたり、試行錯誤するのにもそこそこ時間がかかるのではないかと思いますが、前回と今回である程度の事はできるようになった感じなので一般的な使用であればある程度は対応できるのではないかと思います。

基本的に上記の事を考えるとある意味リソースなどを使っても構わないから割り切ってしまってNixOSをベースにインストールして入力とフォントなどの基本以外は全てFlathubから引っ張って構築するという使い方などもできるのではないかと思います。(その方がそもそもNixOSのベースを壊さないという考え方も考えを変える、以前そういう話がどこかで出ていた様な気もしますが…ある意味でこういう事もできるのではないかと…)

ただ、NixOSの公式からGUIのISOをダウンロードした場合にはLIVE環境ではなくインストールする事が一般的に想定されている感じでかつインストールへの接続がないとインストールを先に進ませてくれない状態(ネット環境必須)なのでその辺は注意が必要かもしれません。

まあこんな感じです。

目次へ戻る