nix-envについて
概要
- macOS, Linuxで利用できるパッケージ管理ツール
- macOSでは
brew
が有名だが、nix
もある nix
は~./nix-profile
にパッケージをインストールを行うのでユーザ権限でインストールが可能
インストール
Linux
$ curl -L https://nixos.org/nix/install | sh -s -- --daemon
macOS
$ curl -L https://nixos.org/nix/install | sh
基本的な使い方
パッケージのインストール
$ nix-env -iA nixpkgs.hello
パッケージのアンインストール
$ nix-env -e hello
パッケージの検索
$ nix-env -qaP | less
パッケージのアップデート
$ nix-channel --update nixpkgs
$ nix-env --upgrade '*'
チャンネルの追加
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
$ nix-channel --update
パッケージの作成
実行バイナリの作成
#!/bin/sh
echo "hello nix."
権限の付与
$ chmod +x hello-nix.sh
hello.nixの作成
let
nixpkgs = import <nixpkgs> {};
stdenv = nixpkgs.stdenv;
lib = nixpkgs.lib;
in
stdenv.mkDerivation {
name = "hello-nix";
src = ./.;
buildInputs = [ ];
installPhase = ''
mkdir -p $out/bin
cp hello-nix.sh $out/bin/hello-nix
'';
meta = {
description = "A simple hello script";
homepage = null;
license = lib.licenses.mit;
};
}
ビルド
$ nix-build hello.nix
インストール
$ nix-env -i ./result
トラブルシューティング
bash: warning: setlocale: LC_ALL: cannot change locale nix
と表示される
- 対応
$ nix-env -iA nixpkgs.glibcLocales
export LOCALE_ARCHIVE="$(nix-env --installed --no-name --out-path --query glibc-locales)/lib/locale/locale-archive"
- 参考