Nix home-managerを導入してみる ~ macOS ~
環境設定を宣言的にできるとウワサで気になっていた。いろいろと調べてみる。
まず読んだのはこちら↓
公式マニュアル
Home Manager is a Nix-powered tool for reproducible management of the contents of users’ home directories. This includes programs, configuration files, environment variables and, well… arbitrary files.
「Nixのパワーでユーザーのホームディレクトリを管理できる、しかも再現性がある!プログラム、設定ファイル、環境変数、なんでもござれ」だそうです。おもしろそうや〜
Flakes使うべきか問題
nixについて調べているとnix flakesを使う例がよく出てくるが、一方でnix公式ドキュメントではflakesを使うのに注意がある。
これらを読んで正直理解できなかったので、まずはnix自体に慣れようと思う。nixだけでhome managerを使っていき、flakesはなにが違うのか分かってから使うことした。
なので、ピュアなnixでhome managerに入門してみる。
nix-darwin
モジュールとして使ってみる
ピュアなnixの中でも3択の方法がある。
-
Home-manager
を単体でインストールする方法。 -
NixOS
モジュールとしてインストールする方法。 -
Nix-darwin
モジュールとしてインストールする方法。
macでしか使う予定がないので、ネイティヴに近そうな(初心者の勘)nix-darwin
を使うことにする。
LnL7/nix-darwin: nix modules for darwinの"Getting started"のchannelを使ったインストール方法を実行する。darwin-rebuild switch
が通った。
nix
をインストール
ようやくドキュメントにしたがう。
nix-darwin
をインストール
設定ファイルは/etc/nix-darwin/configuration.nix
home-manager
をインストール
Flakesを使わずにnix-darwin module
としてインストールするガイドを採用。
試しに「隠しファイルを表示する」ように設定してみる。
{ config, pkgs, lib, ... }:
{
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages =
[ pkgs.vim
];
# Enable alternative shell support in nix-darwin.
# programs.fish.enable = true;
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 6;
+ # My configs
+ system.defaults.NSGlobalDomain={
+ AppleShowAllFiles=true;
+ };
}
darwin-rebuild switch & killall Finder
で設定が反映されたのを確認!
ここでconfiguration.nix
をgit管理しようとしたときに権限の問題にであう。/etc
以下にリポジトリがあるのでgitコマンドに毎回sudoをつけないといけない。ちょっとめんどくさい。場所を変えることにした。~/.config/nix-darwin/
を作成しconfiguration.nix
ファイルをおく。
一旦まとめる。
- (方針)初めてはflakesを使わずにバニラでやってみる。
- まず
nix-darwin
をインストール&~/.config/nix-darwin/configuration.nix
で設定する。 - Nixdをインストール。エディタでLSPを利用したいから早めに入れる。
- Zedでの設定方法:zed-extensions/nix: Nix language support in Zed
一度nix-darwin
をインストールした際に/etc/nix-darwin/configuration.nix
をdarwin-config
に設定したのがどうしても消せない...
なのでnix-darwin
を一度アンインストールすることにした。公式のreadmeを参考にした。
nix --extra-experimental-features "nix-command flakes" run nix-darwin#darwin-uninstaller
設定ファイルの置き場で行き詰まる
Nix-darwinの設定ファイルを~/.config/nix-darwin/configuration.nix
にしたらビルドエラーが出る。
warning: Nix search path entry '/etc/nix-darwin/configuration.nix' does not exist, ignoring
error: file 'darwin-config' was not found in the Nix search path (add it using $NIX_PATH or -I)
error: Changed <darwin-config> but target does not exist, aborting activation
Create /etc/nix-darwin/configuration.nix or set environment.darwinConfig:
environment.darwinConfig = "***";
And rebuild using (only required once)
$ darwin-rebuild switch -I "darwin-config=***"
Nix-darwinのドキュメントの例に/etc/nix-darwin/configuration.nix
とあったが、nixについての色々な記事ではホームディレクトリに置いている。なんなんだ????