Skip to content

Commit 8f56d31

Browse files
committed
WIP: add new tips
1 parent 7ed63e8 commit 8f56d31

File tree

1 file changed

+49
-2
lines changed

1 file changed

+49
-2
lines changed

content/blog/nix-get-stated-nyumon.md

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ tags = ["Nix", "NixOS"]
1111
+++
1212
# Tips
1313

14+
いろいろ書いているので、自分に関係ないなと感じたものは適当に読みとばしてください。
15+
1416
## 検索
1517

1618
Nixについての情報を得たい場合、何かしらで検索することになると思います。その方法です。
@@ -37,9 +39,54 @@ Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogl
3739

3840
## [Nixpkgs Pull Request Tracker](https://nixpk.gs/pr-tracker.html)
3941

40-
nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、
42+
nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。よく使うブランチには以下のようなものがあります。
43+
44+
- `nixpkgs-unstable`
45+
- `nixos-unstable`
46+
- `nixos-unstable-small`
47+
- `release-<version>`
48+
- `<version>` にはリリースのバージョンが入ります。 `yy.mm` の形になっていて毎年5月と11月にリリースされます。記事投稿時の最新は `24.11` です。
49+
50+
[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、修正はnixpkgsに対してPull Request(以下PR)が作成されまず、 `master` にマージされます。そのあとテストやビルドが実行され `nixos-unstable-small``nixos-unstable``nixpkgs-unstable` にマージされます。`release-<version>` にはPRがバックポートするPRに指定されないとマージされません。
51+
52+
テストなどを実行するため、 `master` にマージされてから他のブランチにマージされるまでにはラグがあります。そこでPRがどこまで進んでいるのかを確認するためにこのツールが使えます。問題を修正するPRがマージされているのに手元では修正されない場合に確認してみてください。
53+
54+
## [Nix Version](https://lazamar.co.uk/nix-versions/)
55+
56+
nixpkgsは基本的にパッケージごとに個別のバージョンを指定することが出来ません。しかし、複数のnixpkgsを同時に使えば(少しHackyですが)できなくはないです。そのときに[Nix Version](https://lazamar.co.uk/nix-versions/)を使えばあるパッケージがどのnixpkgsに含まれているかを確認することが出来ます。
57+
58+
## `nix develop` 関連
59+
60+
### [nix-your-shell](https://github.com/mercurytechnologies/nix-your-shell) で好みのシェルを使う
61+
62+
なにもしていない場合、 `nix develop` のシェルにはbashが使われます。しかし、nix-your-shellを使えば好みの別のシェルも使えるようになります。
63+
64+
nix-your-shellはnixpkgsに `nix-your-shell` としてパッケージされています。インストールできたら、シェルのプロファイルに起動するためのスクリプトを追記する必要があります。
65+
例えばzshなら以下ですが他のシェルについては [プロジェクトのReadMe](https://github.com/MercuryTechnologies/nix-your-shell#usage)を確認してください。
66+
67+
```shell
68+
if command -v nix-your-shell > /dev/null; then
69+
nix-your-shell zsh | source /dev/stdin
70+
fi
71+
```
72+
73+
### [nix-direnv](https://github.com/nix-community/nix-direnv) で自動的に `nix develop` を実行する
74+
75+
[direnv](https://github.com/direnv/direnv)というツールのNixのための拡張です。Home Mangerを使っている場合は以下のNix式でインストールできます。
76+
77+
```nix
78+
{
79+
programs = {
80+
direnv = {
81+
enable = true;
82+
nix-direnv.enable = true;
83+
};
84+
};
85+
};
86+
}
87+
```
4188

42-
## https://lazamar.co.uk/nix-versions/
89+
そして `shell.nix` を使うなら `use nix` を、FlakesのdevShellsを使うなら `use flake``.envrc` に追記します。そして `direnv allow` を実行すればそのディレクトリにcdすると自動で起動されるようになります。
4390

4491
# 言語ごとの話
4592

0 commit comments

Comments
 (0)