home-manager
なんで1ページにしてるんだ?mrsekut.icon
install
dotfilesのnixのrootをここにsymbolic linkはる
uninstall
$ home-manager uninstall
$ nix-channel --update
$ home-manager switch
memo
nixかbrewか
$ which batとかしたときに
nixなら/Users/mrsekut/.nix-profile/bin/bat
brewなら/usr/local/bin/bat
となっているのでわかる
home.nix上でprograms.zshでゴニョるなら、~/.zshrcが存在してはならない エラーになる
そこでの併用はできない
.zshrc完全に消せるようになるまではprograms.zshの設定は書けない
だから既存の大規模zshrcがあると移行はややダルいかも
ちがうなmrsekut.icon
home-managerにzsh設定を書くと良い感じにzshrcを生成してくれるので、
user固有の設定もできる?
home-managerでdotfilesを管理する入門
かなり丁寧
home-managerでdotfilesを管理する入門
記事最後にいくつかリンクがあるのでそれも参考になる
逆にhome-managerを使わずにdotfilesをやろうと思うとどのへんがめんどいのか
たぶんnix-envでゴニョゴニョやっていく感じになる
nix-env -i jdk8でjava8を入れている状態でnix-env --upgradeするとjava10が入る
java8を入れると最初に明示したのに、upgradeすると内容が変わってしまう
flakeの設定
これ?
何が変わる?
知らんけどこれ多分dotfilesのrepoの中に作ってエイリアスでやっていく感じじゃないかな
.config/nixpkgs/home.nixとかそうだし
dotfilesを書くとどこかのnixpkgsから取ってくることになるが、そのnixpkgsをhome-manager上で明示的にpinするために使う
generationsの過去のやつの消し方
$ brew bundle tap
$ brew listより見やすい
できること
user環境を宣言的に管理する
dotfilesの管理をする
これもdotfiles repoからaliasでやっていくと良いmrsekut.icon
$ home-manager switch
変更を適用する
具体的には
ユーザー環境の設定
globalに入れるpackageの管理
~/.profile, ~/.bashrc, ~/config/fishなどの設定ファイルのせってい
zshのplugin
emailの管理
nixpkgsとは違うもんね?mrsekut.icon
?
portできるようにする設定ってことか?
そういえば、どうやってportingしているんだろう
portって何のこと言っているのかと思ったらやりとりのことか
Elmのportと同じような概念
FFI的な
gitの設定を、Nix言語で書けるよ、見たいなノリのことをportingと呼んでる
xdg.configFile."hoge".source = ..という感じで書く
例えば
code:starship.nix
xdg.configFile."starship.toml".source = ./starship.toml;
これ以外の追加の設定をする必要はない
例えばhome.packagesにxdgを追加したりする必要はない