この記事はQiitaで公開されていました
TL;DR
NixpkgsのmacOSインストーラはマルチユーザインストーラなので、rootユーザにインストールされているnixパッケージのアップデートが必要。
$ sudo -i nix-env -q nix-2.0 nss-cacert-3.35 $ nix-env --version nix-env (Nix) 2.0
モチベーション
最近nix-channel --update
した環境では、nix-env -qa
するとエラーになってしまう。
$ nix-env -qa ct error: undefined variable ‘placeholder’ at /nix/store/f81z(snip)ba37/nixpkgs/pkgs/development/libraries/pipewire/default.nix:37:46
これは、Nix 2.0でplaceholder
変数が導入されたけれど、Nix 1.11以前には存在していないため発生するエラーなので、先にNix自体をアップグレードする必要がある。しかしbrew upgrade
のようなそれ自身をアップグレードするコマンドは用意されていない。
現在、macOS版のNixpkgsはマルチユーザ用にインストールされているので、Nixpkgs自体をアップグレードするには、rootのnixパッケージを更新する必要がある。
$ sudo -i su - root# nix-channel --update root# nix-env -iA nixpkgs.nix root# launchctl stop org.nixos.nix-daemon root# launchctl start org.nixos.nix-daemon
sudo -i nix-channel --update
でも良さそうに思えるが、
error: unable to download ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-18.09pre133932.ee28e35ba37/nixexprs.tar.xz’: Problem with the SSL CA cert (path? access rights?) (77)
というエラーでうまく動作しなかった。