• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

nix-env

date: 2023-12-30 excerpt: nix-envついて

tag: nixnixpkgsmacoslinuxnixpackage manager


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"
  • 参考
    • Every time I run a program installed with…
    • Locales - NixOS Wiki

参考

  • NixOS Wiki/Welcome to the unofficial user’s wiki
  • Nix Reference Manual
  • Welcome to nix.dev


nixnixpkgsmacoslinuxnixpackage manager Share Tweet