@nyeongAn Nyeong (安寧) 혹시 fetchTarball을 쓰지 않고 emacs-overlay를 flake inputs에 추가하는 건 해보셨나요? 아니면 fetchFromGithub로 받아와도 괜찮습니다. 아무리 sha256을 지정해도 fetchTarball은 이걸 다운받은 tarball을 검증하는 용도로 사용하는거지 fixed-output derivation 처럼 outpath를 찾는데 사용하지는 않을 거예요. cache TTL이 지나거나 nix daemon을 껐다 켜면 다시 다운받을 거예요.

이게 왜 재빌드를 유발하는지는 저도 지금 명확히 설명이 어렵지만 fetchTarball의 결과값이 derivation나 path가 아닌 스트링이라서 생기는 미묘한 차이점이 있기는 합니다. 일례로 remote 빌딩을 하기 위해 prerequisite들을 빌드 서버에 넘기는데 fetchTarball로 받아온 애들은 prerequisite closure에 포함이 안됐던 걸로 기억해요. 목적하는 derivation이 remote에서 직접 nix 표현을 eval 해서 얻어진 경우는 (eval 시 fetch를 해서 store에 담기 때문에) 문제가 없지만 그렇지 않은 경우는 존재하지 않는 store path에 대한 에러가 날 수 있거든요.

하여튼 다른 건 딱히 눈에 띄는게 없어 보여서 fetchTarball만 의심하게 되네요.

3

If you have a fediverse account, you can reply to this note from your own instance. Search https://hackers.pub/ap/notes/01981aed-54f8-71a8-9512-e49fb39a7833 on your instance and reply to it.

2