From 64908e190cc52e740a90074b72fe6983ee3d2cf2 Mon Sep 17 00:00:00 2001 From: satler-git Date: Mon, 9 Dec 2024 21:21:46 +0900 Subject: [PATCH 1/5] WIP: nix-get-stated-nyumon --- content/blog/nix-get-stated-nyumon.md | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 content/blog/nix-get-stated-nyumon.md diff --git a/content/blog/nix-get-stated-nyumon.md b/content/blog/nix-get-stated-nyumon.md new file mode 100644 index 0000000..f81490c --- /dev/null +++ b/content/blog/nix-get-stated-nyumon.md @@ -0,0 +1,46 @@ ++++ +title = "Nix入門入門とTips" +date = 2024-12-12 +description = "Nixの入門に入門するのとTips" + +[extra] +comment = true + +[taxonomies] +tags = ["Nix", "NixOS"] ++++ +# Tips + +## 検索 + +Nixについての情報を得たい場合、何かしらで検索することになると思います。その方法です。 + +### Google + +一般的な方法。NixOS DiscourseとかRedditとかのページがよくでてきます。 + +### GitHub + +GitHubの検索機能を使う方法です。`repo:NixOS/nixpkgs `をつけて検索する方法と、`lang:Nix `をつけて検索する方法があります。前者はパッケージングで困ったとき、後者は前者で見つからないときとその他の場合に使うと良いと思います。 + +さらにパッケージ関連で困っているときはパッケージ名などでIssueを検索すると良いと思います。 + +### パッケージとオプション + +- [Home Managerのオプションの検索](https://home-manager-options.extranix.com/) +- [NixOSのオプションの検索](https://search.nixos.org/options) +- [nixpkgsの検索](https://search.nixos.org/packages) + +### [Noogle](https://noogle.dev/) + +Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogleと同じような感覚でnixpkgsのライブラリと標準(`builtins`)を検索できます。 + +## [Nixpkgs Pull Request Tracker](https://nixpk.gs/pr-tracker.html) + +nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。[NixOSを使い始めた](/blog/kick-started)にも少し書きましたが、 + +## https://lazamar.co.uk/nix-versions/ + +# 言語ごとの話 + +ロックファイルが生成される言語またはパッケージマネージャーを使っているあなたは幸運です。すでにNixでのビルドをサポートするための何らかのツールが作られている可能性が高いです。[awesome-nixのプログラミング言語別の章] ()を見に行ってみましょう。 From a0927872de45cdd4491a5b1f604f20fbff4003c7 Mon Sep 17 00:00:00 2001 From: satler-git Date: Mon, 9 Dec 2024 21:23:34 +0900 Subject: [PATCH 2/5] fix: wrong url --- content/blog/nix-get-stated-nyumon.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/nix-get-stated-nyumon.md b/content/blog/nix-get-stated-nyumon.md index f81490c..60de3fc 100644 --- a/content/blog/nix-get-stated-nyumon.md +++ b/content/blog/nix-get-stated-nyumon.md @@ -37,7 +37,7 @@ Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogl ## [Nixpkgs Pull Request Tracker](https://nixpk.gs/pr-tracker.html) -nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。[NixOSを使い始めた](/blog/kick-started)にも少し書きましたが、 +nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、 ## https://lazamar.co.uk/nix-versions/ From 52632730b1f3f2e04e70ad63e3fb3390d512e06f Mon Sep 17 00:00:00 2001 From: satler-git Date: Mon, 9 Dec 2024 21:25:15 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E5=A4=89=E3=81=AA=E3=82=B9=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E3=82=92=E9=A7=86=E9=80=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/blog/nix-get-stated-nyumon.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/nix-get-stated-nyumon.md b/content/blog/nix-get-stated-nyumon.md index 60de3fc..fad7f43 100644 --- a/content/blog/nix-get-stated-nyumon.md +++ b/content/blog/nix-get-stated-nyumon.md @@ -43,4 +43,4 @@ nixpkgsには複数のブランチがあり、それぞれどの程度安定し # 言語ごとの話 -ロックファイルが生成される言語またはパッケージマネージャーを使っているあなたは幸運です。すでにNixでのビルドをサポートするための何らかのツールが作られている可能性が高いです。[awesome-nixのプログラミング言語別の章] ()を見に行ってみましょう。 +ロックファイルが生成される言語またはパッケージマネージャーを使っているあなたは幸運です。すでにNixでのビルドをサポートするための何らかのツールが作られている可能性が高いです。[awesome-nixのプログラミング言語別の章]()を見に行ってみましょう。 From 3096b29f265912f039f52e0bb5d10c6617a2ef14 Mon Sep 17 00:00:00 2001 From: satler-git Date: Sat, 14 Dec 2024 18:50:19 +0900 Subject: [PATCH 4/5] WIP: add new tips --- content/blog/nix-get-stated-nyumon.md | 51 +++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/content/blog/nix-get-stated-nyumon.md b/content/blog/nix-get-stated-nyumon.md index fad7f43..95c43c7 100644 --- a/content/blog/nix-get-stated-nyumon.md +++ b/content/blog/nix-get-stated-nyumon.md @@ -11,6 +11,8 @@ tags = ["Nix", "NixOS"] +++ # Tips +いろいろ書いているので、自分に関係ないなと感じたものは適当に読みとばしてください。 + ## 検索 Nixについての情報を得たい場合、何かしらで検索することになると思います。その方法です。 @@ -37,9 +39,54 @@ Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogl ## [Nixpkgs Pull Request Tracker](https://nixpk.gs/pr-tracker.html) -nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、 +nixpkgsには複数のブランチがあり、それぞれどの程度安定しているのかが違います。よく使うブランチには以下のようなものがあります。 + +- `nixpkgs-unstable` +- `nixos-unstable` +- `nixos-unstable-small` +- `release-` + - `` にはリリースのバージョンが入ります。 `yy.mm` の形になっていて毎年5月と11月にリリースされます。記事投稿時の最新は `24.11` です。 + +[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、修正はnixpkgsに対してPull Request(以下PR)が作成されまず、 `master` にマージされます。そのあとテストやビルドが実行され `nixos-unstable-small`、 `nixos-unstable` や `nixpkgs-unstable` にマージされます。`release-` にはPRがバックポートするPRに指定されないとマージされません。 + +テストなどを実行するため、 `master` にマージされてから他のブランチにマージされるまでにはラグがあります。そこでPRがどこまで進んでいるのかを確認するためにこのツールが使えます。問題を修正するPRがマージされているのに手元では修正されない場合に確認してみてください。 + +## [Nix Version](https://lazamar.co.uk/nix-versions/) + +nixpkgsは基本的にパッケージごとに個別のバージョンを指定することが出来ません。しかし、複数のnixpkgsを同時に使えば(少しHackyですが)できなくはないです。そのときに[Nix Version](https://lazamar.co.uk/nix-versions/)を使えばあるパッケージがどのnixpkgsに含まれているかを確認することが出来ます。 + +## `nix develop` 関連 + +### [nix-your-shell](https://github.com/mercurytechnologies/nix-your-shell) で好みのシェルを使う + +なにもしていない場合、 `nix develop` のシェルにはbashが使われます。しかし、nix-your-shellを使えば好みの別のシェルも使えるようになります。 + +nix-your-shellはnixpkgsに `nix-your-shell` としてパッケージされています。インストールできたら、シェルのプロファイルに起動するためのスクリプトを追記する必要があります。 +例えばzshなら以下ですが他のシェルについては [プロジェクトのReadMe](https://github.com/MercuryTechnologies/nix-your-shell#usage)を確認してください。 + +```shell +if command -v nix-your-shell > /dev/null; then + nix-your-shell zsh | source /dev/stdin +fi +``` + +### [nix-direnv](https://github.com/nix-community/nix-direnv) で自動的に `nix develop` を実行する + +[direnv](https://github.com/direnv/direnv)というツールのNixのための拡張です。Home Mangerを使っている場合は以下のNix式でインストールできます。 + +```nix +{ + programs = { + direnv = { + enable = true; + nix-direnv.enable = true; + }; + }; + }; +} +``` -## https://lazamar.co.uk/nix-versions/ +そして `shell.nix` を使うなら `use nix` を、FlakesのdevShellsを使うなら `use flake` を `.envrc` に追記します。そして `direnv allow` を実行すればそのディレクトリにcdすると自動で起動されるようになります。 # 言語ごとの話 From 0f7273437733fdb7fe2709f39bc3a301e54bb26f Mon Sep 17 00:00:00 2001 From: satler-git Date: Sat, 21 Dec 2024 15:52:37 +0900 Subject: [PATCH 5/5] WIP: --- content/blog/nix-get-stated-nyumon.md | 28 +++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/content/blog/nix-get-stated-nyumon.md b/content/blog/nix-get-stated-nyumon.md index 95c43c7..8191531 100644 --- a/content/blog/nix-get-stated-nyumon.md +++ b/content/blog/nix-get-stated-nyumon.md @@ -1,7 +1,7 @@ +++ -title = "Nix入門入門とTips" -date = 2024-12-12 -description = "Nixの入門に入門するのとTips" +title = "NixのTips" +date = 2024-12-21 +description = "NixのTips" [extra] comment = true @@ -9,6 +9,13 @@ comment = true [taxonomies] tags = ["Nix", "NixOS"] +++ + +この記事は[Nix Advent Calendar](https://adventar.org/calendars/10086)の21日目の記事です。 + +--- + +もともとはコード例をまじえたチュートリアル的な記事にしようとおもったのですが、結局うまくまとまらなかったためちょっとしたTipsの記事になりました。 + # Tips いろいろ書いているので、自分に関係ないなと感じたものは適当に読みとばしてください。 @@ -27,6 +34,8 @@ GitHubの検索機能を使う方法です。`repo:NixOS/nixpkgs `をつけて さらにパッケージ関連で困っているときはパッケージ名などでIssueを検索すると良いと思います。 +この方法はかなり強力なので困ったら一旦これを使っています。 + ### パッケージとオプション - [Home Managerのオプションの検索](https://home-manager-options.extranix.com/) @@ -35,7 +44,7 @@ GitHubの検索機能を使う方法です。`repo:NixOS/nixpkgs `をつけて ### [Noogle](https://noogle.dev/) -Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogleと同じような感覚でnixpkgsのライブラリと標準(`builtins`)を検索できます。 +Nixには[Noogle](https://noogle.dev/)というものがあり、HaskellのHoogleと同じような感覚でnixpkgsのライブラリと標準(`builtins`)の関数を検索できます。 ## [Nixpkgs Pull Request Tracker](https://nixpk.gs/pr-tracker.html) @@ -47,7 +56,7 @@ nixpkgsには複数のブランチがあり、それぞれどの程度安定し - `release-` - `` にはリリースのバージョンが入ります。 `yy.mm` の形になっていて毎年5月と11月にリリースされます。記事投稿時の最新は `24.11` です。 -[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、修正はnixpkgsに対してPull Request(以下PR)が作成されまず、 `master` にマージされます。そのあとテストやビルドが実行され `nixos-unstable-small`、 `nixos-unstable` や `nixpkgs-unstable` にマージされます。`release-` にはPRがバックポートするPRに指定されないとマージされません。 +[NixOSを使い始めた](/blog/kick-started-with-nixos)にも少し書きましたが、修正はnixpkgsに対してPull Request(以下PR)が作成され、まず `master` にマージされます。そのあとテストやビルドが実行され `nixos-unstable-small`、 `nixos-unstable` や `nixpkgs-unstable` にマージされます。`release-` にはPRがバックポートするPRに指定されないとマージされません。 テストなどを実行するため、 `master` にマージされてから他のブランチにマージされるまでにはラグがあります。そこでPRがどこまで進んでいるのかを確認するためにこのツールが使えます。問題を修正するPRがマージされているのに手元では修正されない場合に確認してみてください。 @@ -62,7 +71,7 @@ nixpkgsは基本的にパッケージごとに個別のバージョンを指定 なにもしていない場合、 `nix develop` のシェルにはbashが使われます。しかし、nix-your-shellを使えば好みの別のシェルも使えるようになります。 nix-your-shellはnixpkgsに `nix-your-shell` としてパッケージされています。インストールできたら、シェルのプロファイルに起動するためのスクリプトを追記する必要があります。 -例えばzshなら以下ですが他のシェルについては [プロジェクトのReadMe](https://github.com/MercuryTechnologies/nix-your-shell#usage)を確認してください。 +例えばzshなら以下ですが他のシェルについては [プロジェクトのREADME](https://github.com/MercuryTechnologies/nix-your-shell#usage)を確認してください。 ```shell if command -v nix-your-shell > /dev/null; then @@ -91,3 +100,10 @@ fi # 言語ごとの話 ロックファイルが生成される言語またはパッケージマネージャーを使っているあなたは幸運です。すでにNixでのビルドをサポートするための何らかのツールが作られている可能性が高いです。[awesome-nixのプログラミング言語別の章]()を見に行ってみましょう。 + +# おわりに + +Tipsの共有は大事なのでぜひみなさんも記事を書いてみてください!自分もいつか入門記事を書きます(多分)。 + +最近 [nix-jaのCosense](https://scrapbox.io/nix-ja) ができたのでそこにも書きます(多分)。 +