LoginSignup
5
0

NIX OS入門

Last updated at Posted at 2023-08-29

そもそもNixとは?

OSとしてのNIX OS

NixOSは、構成管理とパッケージ管理を統合した、機能豊富なLinuxディストリビューションです。NixOSは、他のディストリビューションと異なる特徴を持っており、システム構成やアプリケーションの管理方法が独自です。

特徴:

  • Declarative Configuration: NixOSは、システムの構成を宣言的に定義します。これは、コンフィグレーションファイルやスクリプトを編集する代わりに、設定オプションを変更するだけでシステムを変更できることを意味します。
  • Atomic Upgrades and Rollbacks: NixOSは、システム全体をアトミックにアップグレードまたはロールバックできる機能を提供します。これにより、システムの安定性と信頼性が向上します。
  • Isolation and Reproducibility: アプリケーションや環境は、Nixパッケージマネージャを使用して分離され、再現性のある方法で管理されます。これにより、異なるバージョンのパッケージを同じシステム上で簡単に実行できます。

パッケージ管理ツールとしてのNIX

Nixは、パッケージ管理システムであり、NixOSだけでなく他のLinuxディストリビューションやUnix系オペレーティングシステムでも使用できます。Nixは、従来のパッケージ管理システムとは異なる方法でパッケージを管理します。

特徴:

  • Functional Package Management: Nixは、パッケージの依存関係を含む全体の環境を関数として表現します。これにより、環境の変更や異なるバージョンのパッケージの同居が容易になります。
  • Atomic Transactions: パッケージのインストールやアンインストールは、トランザクションとしてアトミックに実行されます。これにより、環境の一貫性と信頼性が保たれます。
  • Versioning and Isolation: 異なるバージョンのパッケージは、互いに干渉せずにシステム内で共存できます。これにより、アプリケーション間の依存関係が問題なく管理されます。

NIX OSのインストール方法

公式ダウンロードサイトからNIXOSをダウンロード。
ページ上部のNixはパッケージマネージャなので注意する。

インストーラは手元の環境に一致するものをダウンロード。
Ubuntuなど一般的なLinuxGUIインストーラの手順と同じなので、手順に沿ってインストールする。

configファイルの分類

  • ユーザー全員にインストールしたい場合

    • /etc/nixos/configuration.nixに設定を書く。
  • 特定のユーザだけインストールしたい場合

    • nix-envコマンドで直接インストールする。
    • ~/.config/nixpkgs/config.nixに設定を書く。
  • あるユーザーのある開発環境だけ

    • nix-shellコマンドを使う。
    • nix-shell -p hogehoge とすると、hogehogeのあるshell環境ができる。
    • exitをするとそのhogehogeへの参照が消える。

最初にやること。

初期設定のために

各種configを書き換えるために、vimをインストールする。
nix-shellとは、あるユーザーのある開発環境だけに作用するパッケージでexitすると参照が消えるもの。
他にも一時的に使用したいものがある場合はこれを使う。
nix-shell -p vim

ハードウェア情報を反映する。

nix-hardwareからお使いのハードウェア情報を調べる。

nixos-hardwareのチャンネルを追加してアップデートする。

$ sudo nix-channel --add https://github.com/NixOS/nixos-hardware/archive/master.tar.gz nixos-hardware
$ sudo nix-channel --update

configuration.nix上部のconfigurationを読んでいる部分を以下のように書き換える。

$ sudo vim /etc/nixos/configuration.nix
imports = [
  <nixos-hardware/lenovo/thinkpad/x1/10th-gen>
  ./hardware-configuration.nix
];

リビルドする。

sudo nixos-rebuild switch 

各種packageをインストールする。

configuration.nixを変更してパッケージを宣言する。

$ sudo vim /etc/nixos/configuration.nix

configration.nix下部のenvironment.systemPackagesに好きなパッケージを追加する。
パッケージの名前は以下のサイトから検索できる。

以下サンプル

  environment.systemPackages = with pkgs; [
    vscode wireshark
    gnumake automake cmake
    gcc gdb nodejs
    tilix
    brave 
    zoom-us slack discord
    docker-compose
    fzf
    direnv
    gnupg
    mpd
    htop
  ];

日本語入力

他のi18nの記述周辺に以下の設定を入れる。

$ sudo vim /etc/nixos/configuration.nix
 i18n.inputMethod = {
     enabled = "fcitx5";
     fcitx5.addons = with pkgs; [
         fcitx5-mozc
         fcitx5-gtk
     ];
 };

リビルドし、再起動する。

sudo nixos-rebuild switch 
sudo reboot now

その後以下のコマンドを用いてmozcを有効化する。

$ fcitx5-configtool

画面右側の検索バーからmozcを選んで左に移す。
デフォルトのIME切り替えはCtr+Spa
Screenshot from 2023-08-30 10-37-10.png

指紋認証有効化

configにfprintdパッケージを追加する。追加箇所は他のパッケージと同じところ。

$ sudo vim /etc/nixos/configuration.nix

任意の場所に以下の設定をいれる。

services.fprintd.enable = true;
services.fprintd.tod.enable = true;
services.fprintd.tod.driver = pkgs.libfprint-2-tod1-vfs0090; 

リビルドして再起動。その後gnomのSettingのUserにfingureprintが出るので登録する。
sudo権限の指紋認証も自動で設定される。

sudo nixos-rebuild switch 
sudo reboot now

flakes

  nix = {
    settings = {
      experimental-features = ["nix-command" "flakes"];
    };
  };

任意のフォルダで以下を実行することで,flakeのテンプレートを入手可能

nix flake init --template github:kino-ma/flake-templates#devshell
vim flake.nix
nix develop

home-manager

  imports =
    [ # Include the results of the hardware scan.
	<nixos-hardware/lenovo/thinkpad/x1/10th-gen>	
	./hardware-configuration.nix
	<home-manager/nixos>
    ];

  home-manager.users.feles = { config, pkgs, ... }: {
    imports = [
      /home/feles/dotfiles/home.nix
      #/home/feles/.config/nixpkgs/custom.nix
    ];

    home.homeDirectory = "/home/feles";
  };

基本的なコマンド

- 特定のユーザにインストールする場合:nix-env
- /etc/nixos/configuration.nixを編集した後に打つもの。:sudo nixos-rebuild switch
- No space left on deviceと言われたとき:sudo nix-collect-garbage -d
- それでもだめなとき:sudo /run/current-system/bin/switch-to-configuration boot

以下学びながら追記していきます。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0