kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2023-07-09 - nix で flake.nix だけコピーして新しく使おうとしたら `error: 'getting status of /nix/store/...-source/flake.nix: No such file or directory` と怒られた時は大抵 `git add flake.nix` が漏れてそう #228

Closed kachick closed 1 year ago

kachick commented 1 year ago

TL;DR

  1. git add flake.nix
  2. git add flake.lock
  3. git add . or git stash

段階踏んで直っていくのを眺めたくなければ、単に最初から git add . しちゃえば良い

何についてか / About

ref: https://discourse.nixos.org/t/nix-flakes-nix-store-source-no-such-file-or-directory/17836/12

経緯 / History

  1. https://github.com/bobvanderlinden/nixpkgs-ruby/tree/e6ae16647947d0858a99e033ce695c33d6212852#development-shell をベースに nix flake init で flake.nix を作ったリポジトリがある
  2. そこではうまく行ってたので他のリポジトリに flake.nix をコピーしたら、error: getting status of '/nix/store/5g9af846xrx3zfbqnmz119849b5h7ldv-source/flake.nix': No such file or directory というエラーが出てうまく行かない
  3. ということで上のスレッドに行き当たった。原因はまさに git add してないからだったらしい。 確かに、エラーログの直前に warning: Git tree '/home/kachick/repos/the_ruby_repo' is dirty とか出てたけど、それが原因とは思い至らなかった
  4. そして flake.nix を git add するとこのエラーメッセージは消えるが、更にうだうだ言われてうまく行かない。とりあえず通すには git add flake.lock が必要だった。 lock ファイルを入れたくないときもあるけど、nix の思想的に仕方ないんか? https://github.com/NixOS/nix/issues/5810
  5. で、更に dirty な何かがあるといつまでたっても最初の nix develop やら direnv allow による shell 起動ができない。 git add . だとか git stash なりで一層してやればとりあえず先に進める
  6. nix flake はまだ experimental 扱いらしい(しかし推奨されてる)ので、流石にこの手のはリリース前になくなるか、エラーメッセージなりで誘導されるようになりそうな気はする(本来気づいた人がそういうPRを送れという話なのだとは思うけれど)