Skip to content
Eric Sagnes edited this page Jan 19, 2016 · 10 revisions

日々のお手入れ

パッケージの検索

nix-envコマンドでパッケージを検索できます。

$ nix-env -qaP 'firefox'

正規表現も使えます

$ nix-env -qaP 'fire.*'

noxというパッケージ検索インストールヘルパーがあります。 nix-envよりは使いやすいのでメインで使うのはおすすめです。

$ nox firefox

パッケージのインストール

Nixではマルチユーザパッケージインストールが可能のため、パッケージインストールには2つの方法があります。

NixOSの宣言型設定を活かすやシングルユーザの場合はシステムプロフィールにインストールがおすすめです。

ユーザプロフィールに

一般Linuxディストリビューションと同様にコマンドを実行してパッケージをインストールする。

$ nix-env -i firefox
  • メリット: 一般ユーザがインストールできる
  • デメリット: 宣言型ではない

システムプロフィールに(NixOSのみ)

/etc/nixos/configuration.nixでシステムレベルでインストールするパッケージを指定できます。 該当設定項目はenvironment.systemPackagesとなります。

  environment.systemPackages = with pkgs; [
    firefox
    termite
    wget
  ];

パッケージを追加した後はnixos-rebuild switchで設定を適用し、パッケージをインストールします。

$ nixos-rebuild switch
  • メリット: root権限が必要
  • デメリット: 宣言型である

パッケージのアップデート

NixはNixストアで利用しているチャンネルに合っているnixpkgsをもっていますので、 パッケージアップデートをするは2ステップです。

  1. チャンネルをアップデートして、ストア内のnixpkgsをアップデートする
  2. パッケージをアップデートする

チャンネルをアップデート

$ nix-channel --update

チャンネルはグローバルとユーザにそれぞれ定義されています。 利用チャンネルを確認するには

$ nix-channel --list

パッケージのアップデート

ユーザパッケージは

$ nix-env -u

グローバルパッケージは

$ nixos-rebuild switch

で更新できます。

nixos-rebuild switchconfiguration.nixを再評価しますので、パッケージ以外にサービスやモジュールを同時にアップデートします。

パッケージを試す

nix-shellで簡単にパッケージを試す事ができます。

$ nix-shell -p qutebrowser
$ qutebrowser

-pの後に複数のパッケージを指定できます。

パッケージの削除

Nixの構造関係で直接にパッケージをアンインストールする事はできません。 アンインストールするためにはパッケージをアンリンクしてから、ガーベージコレクションを実行します。

パッケージのアンリンク

ユーザプロフィールにインストールしたパッケージなら

$ nix-env -e firefox

グローバルプロフィールにインストールされたパッケージはconfiguration.nixenvironment.systemPackagesから削除してから

$ nixos-rebuild switch

ガーベージコレクション

NixOSのロールバック機能のために以前のプロフィールジェネレーションに利用されているパッケージが必要です。 古いプロフィールジェネレーションを削除することで、NixOSは不要なパッケージを判断して、ストアから削除します。

$ nix-collect-garbage --delete-older-than 14d

--delete-older-than14dは14日以上の古いプロフィールジェネレーション削除し、不要パッケージをストアから削除します。

使い方によってNixストアは大きくなりやすいので、定期的にガーベージコレクションを行いたいです。

Clone this wiki locally