-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2023-01-17 - Nix 楽に使えそうだけど、言語系は気軽に最新版使いたいとか思ってると厳しい? #204
Comments
子(ChatGPT)曰く Q,
A,
|
便利すぎて、全然使用法わかってないのに nix-shell のためだけに使いまくってる。かなりのツール群が用意されてて、そのコマンド名で pkgs.theName で指定すると大体ある。 default.nix とshell.nix の使い分けがピンとこなかったんだけど、https://stackoverflow.com/a/44118856/1212807 を読んでからは default.nix に倒してる しかしそのままのノリで GitHub Actions で使おうと思えば使えるんだけど、公式のアクション使ってツール群入れるまでがまぁ時間かかる。ワンバイナリ系とか個別に使えば数秒のところが、全体とは言え2分以上とかかかるようになるとちょっと抵抗があって、元々コンパイルに時間がかかるような物でなければ CI では個別のアクションを使ったりしてる。正しくは無さそうだけど、今んとこ把握できてるのでこれが楽。。。 |
なんだかんだNix使いだして1年以上経過しているのに驚いた。特段大きな進歩はなくて、未だに読み書きすら覚束ない。 ここ10年とかシェルスクリプトって基本敵視されているというか、構文のクセもそうだけど書きづらいしGNUとBSDスタイルどちらでも動くようにコマンドのオプションを調整して・・・みたいなのが厄介なのでなるべく書かない方が良いし、新規のものはシングルバイナリで配布し易いGoとかRustで書こうという流れだったと思うんだけど、Nixを使うとこの「どの外部コマンドが実行時に見えているかを厳密に指定出来る」のがガツンと効く。それはGoとかのワンバイナリな物からRubyみたいにコンパイルで引っかかりやすい物、それらを組み合わせて自分で書いた他のシェルスクリプトとかなんでもかんでも厳密に指定できる。 ということでなんか書く時に「あー、これNixとシェルスクリプトで1行だな」みたいな事を思う瞬間が増えた 尚 GitHub Actions 内で長めのシェルスクリプト書く度 🤮 になるので別に常にシェルスクリプトを書きたいみたいな欲求は無い(ここでベタ書きしないで Nix installer action 使って nix run 出来ると楽なのにー みたいな事は思うけど Nix のセットアップにかかるオーバーヘッドが微妙で避けがち) |
中央集権リポジトリに無くても自分で適当にフォークしたりして使える。しかしこれだとバイナリキャッシュを効かせるのが面倒なのと、複数の nixpkgs を取り回す面倒さが出てくる 慣れればアドホックなコードも書きやすくなってきて気軽に使えるけど、結局幸せになるためにはアップストリームへマージしてもらっていったほうが良いというのはどこでも同じっちゃ同じな気はする |
Linux でも macOS でも大体はいける。 https://github.com/NixOS/nixpkgs/blob/8dab54e2b3c4d0c946e1a24cad6bf23e552b2b36/pkgs/top-level/all-packages.nix#L28067-L28069 |
2年弱使っていることになる割に大して理解度が増していないけれど、今時点での経験談というか2年前の自分に伝えるとしたら的なの
総じて触る時間が増えるにつれ自分でパッチ当てて当面解決できる範囲は増えるんだけれど、じゃあ気軽になんでもパッチを当てまくって自分だけ使えるようにしておけば良いのかというとそのスタイルだとnixpkgsから普段使いの感覚でバイナリキャッシュが効かせられないので厳しい。そういったインフラ部分まで自分でカバー出来るなら macOS での使用感もまた変わるかも。自分はまだバイナリキャッシュの自前準備できてないからなんとも |
devbox https://github.com/jetpack-io/devbox が流行りだした頃、まだ asdf とか *env とかでのバージョン管理に疲弊してるの・・・? と自分で自分に思った。
ということで、https://github.com/digitallyinduced/ihp でもガッツリ使われているらしいことから気になってた Nix https://github.com/NixOS/nix を使いだしてみた。devbox はラッパーっぽい雰囲気なのと必要性がまだあんま良くわかってないので保留
なるほど、サックリ固定バージョン同士の組み合わせを自分の環境に導入出来てめっちゃ便利!
asdf だと先に chezscheme を導入しないといけない面倒さだった idris2 をサックリ入れられたのも嬉しい ( #201 はそこで引っかかった)
CIの構築も楽なだけでなく、一定以上構成準備に時間がかかる場合は https://github.com/cachix/cachix 使うと速度向上も期待できそうだし
とは思ったんだけど、ガチガチに固めてるのと広範囲にカバーしてくれてる反面なのか最新版がなかなか中央集権リポジトリ?に無かったりする。 登場からほぼ一ヶ月経った Ruby も まだ 3.1 が最新だし、Crystal に至っては まだ 1年前の 1.2 で止まってる。PRを出してくれている方は居るんだけど、なかなかマージに至るまでが大変そう NixOS/nixpkgs#195606
そもそも4500以上のPRが滞留してるし・・・
crystal 自身もビルドに Nix 使ってるみたい https://github.com/crystal-lang/crystal/blob/62b0adecc4cdfb4c84632a8f329d48983da97c6c/shell.nix だし、便利なのは間違いないと思うんだけど用途次第なんだろうなぁ
自分で定義すれば良いとは言え、気軽に出来るかというとちと大変そう
The text was updated successfully, but these errors were encountered: