-
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
Fix getexe warning #6
base: main
Are you sure you want to change the base?
Conversation
あ、コミットミスっとる |
7eeb999
to
ca2a5f4
Compare
let | ||
pname = "nikuussay"; | ||
in | ||
stdenv.mkDerivation (finalAttrs: { | ||
inherit pname; | ||
version = "1.0.0"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
stdenv.mkDerivation
は不動点コンビネータを使って再帰していくことができるのですが、変数を let
で束縛してしまうとオーバーライドした際に他で使われている箇所の変更ができません。
なので stdenv.mkDerivation
の引数には self: { a = 1; b = self.a + 1; }
のような関数を渡すのが望ましいです。
nix-repl> pname = "kuusay"
nix-repl> ((stdenv.mkDerivation {
inherit pname;
version = "1.0.0";
passthru.pname = pname;
}).overrideAttrs (_: { pname = "nikuussay"; })).pname
"kuusay"
nix-repl> ((stdenv.mkDerivation (finalAttrs: {
pname = "kuusay";
version = "1.0.0";
passthru.pname = finalAttrs.pname;
})).overrideAttrs (_: { pname = "nikuussay"; })).pname
"nikuussay"
@@ -26,4 +29,6 @@ stdenv.mkDerivation (finalAttrs: { | |||
runHook postInstall | |||
''; | |||
|
|||
meta.mainProgram = pname; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
上の説明に従うと finalAttrs.pname
と書くべきですが、実はここは変更されたくありません。
今回の場合はパッケージの名前とコマンドの名前がたまたま一致したケースであり、一般に mainProgram
と pname
の間には関連がないのでやや冗長にはなりますが
meta.mainProgram = "nikuussay";
とするのが良いです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なるほど、共通性あるもんだと誤解していました
evaluation warningがうるさくてyasu活に集中できない