Flakes
Nix言語自体の依存関係管理を行う
Flakesが扱う個々のpackageの単位をFlakeと呼ぶ
まだexperimental
Tweag製
NixOSのWiki
install方法なども書いている
blog
参考
Nix Flakes, Part 1: An introduction and tutorial - Tweag
開発元のTweagのblog
Flakesが解決する課題、試す方法など、まとまってて良い
tutorialとか
Flakes|Nix入門
§3. Flakeを作る|Nix入門: ハンズオン編
#WIP
https://nixos-and-flakes.thiscute.world/nixos-with-flakes/introduction-to-flakes
Flakesの立ち位置
Nixでは2回の依存解決のタイミングがある
Nix式を評価してnix-instantiateする時
この時にFlakesが使われる
Nix式を入力に取り一意なFlakeを生成する
Nixのderivationをbuild (realise)する時
Flakesが解決する課題
Nixの再現性の問題
良い感じにchannelを作るのが難しい
Nixベースのprojectはstandardizedなstructureを持っていない
shell.nixとかはあるが、多くのユースケースに対応できていない
commands
https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake.html
https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html
λ nix build
flakeを読みこむ
nix flake check
builx check
とは
nix flake check --no-build
nix式の評価
λ nix flake clone <path>
flakeのclone
nix flake info
リポジトリの説明
λ nix flake init
$ nix flake new -t template#full /path/to/output
指定のdirにflakeを作製
λ nix flake show
λ nix flake update
導入
home-managerを使ってglobalに使えるようにする ref
初回に1度やっておけば良い
projectに導入する
λ nix flake init
これでそのprojectがFlakeになった
https://blog.ryota-ka.me/posts/2023/11/25/handling-private-resources-with-a-nix-flake
https://www.jetpack.io/blog/why-did-nix-adopt-flakes/
https://github.com/hnakano863/nixos-overlay
使ってる
RFC
https://github.com/NixOS/rfcs/pull/49
example
https://github.com/edolstra/dwarffs
#??
flakeが誕生した今、わざわざflakeなしで使うメリットってあるの?
無い気がするので、defaultで入っているようにはしないの?
flakeを使うかどうかの選択の余地を残すと、学習コストが増えてしまわない?
けどまだexperimentalだからか
$ nix devleop
これはなに?
何が違うのかいまいちわからん
ここでみた
Nixに統合された
もともとは外部のものだったのか #??
今は「Nixエコシステムの新機能」と紹介される
Stateful Channelを代替する
そもそも↑これがなにかわからんmrsekut.icon
↑こいつの概念が複雑で初心者が混乱するらしい
$ nix shell github:edolstra/dwarffs/cd7955af31698c571c30b7a0f78e59fd624d0229 ...
こんな感じでgithubのrepoとcommit hashで指定して実行する
flakesはnixpkgsの特定のversionに依存する
気密性を上げるために、必要なものはgitに管理させる
自分のprojectにflakeとgitを使って設定を書いたら、他のユーザーはflakeを使って1行で再現し、利用できる
$ nix shell github:edolstra/hello -c hello
home-managerにprograms.direnv.nix-direnv.enableFlakesって設定あるな
https://www.tweag.io/blog/2020-05-25-flakes/
もっかい読むか
https://nixos.wiki/wiki/Flakes
https://serokell.io/blog/practical-nix-flakes
https://www.reddit.com/r/NixOS/comments/kauf1m/dealing_with_post_nixflake_god_complex/
https://gist.github.com/edolstra/40da6e3a4d4ee8fd019395365e0772e7
https://github.com/nix-community/home-manager/blob/master/flake.nix
https://github.com/colemickens/nixos-flake-example
https://zimbatm.com/NixFlakes/
https://www.breakds.org/post/flake-part-1-packaging/
https://blog.ysndr.de/posts/internals/2021-01-01-flake-ification/
https://hoverbear.org/blog/nix-flake-live-media/
https://reposhub.com/linux/shell-script-development/gytis-ivaskevicius-flake-utils-plus.html
https://serokell.io/blog/practical-nix-flakes
https://scrapbox.io/mrsekut-p/Flakes
https://www.tweag.io/blog/2020-05-25-flakes/
https://nixos.wiki/wiki/Flakes
https://www.tweag.io/blog/2020-06-25-eval-cache/
https://www.tweag.io/blog/2020-07-31-nixos-flakes/
https://serokell.io/blog/practical-nix-flakes