diff --git a/doc/build-helpers/trivial-build-helpers.chapter.md b/doc/build-helpers/trivial-build-helpers.chapter.md index 31b42bd77426..ff00548e049a 100644 --- a/doc/build-helpers/trivial-build-helpers.chapter.md +++ b/doc/build-helpers/trivial-build-helpers.chapter.md @@ -501,7 +501,7 @@ writeTextFile { text = '' Contents of File ''; - destination = "share/my-file"; + destination = "/share/my-file"; } ``` @@ -586,7 +586,7 @@ writeTextFile { echo "hi" ''; executable = true; - destination = "bin/my-script"; + destination = "/bin/my-script"; } ``` @@ -674,7 +674,7 @@ writeTextFile { echo "hi" ''; executable = true; - destination = "bin/my-script"; + destination = "/bin/my-script"; } ``` diff --git a/pkgs/build-support/trivial-builders/default.nix b/pkgs/build-support/trivial-builders/default.nix index 3bccc871a7dc..a02fe1fd6d0a 100644 --- a/pkgs/build-support/trivial-builders/default.nix +++ b/pkgs/build-support/trivial-builders/default.nix @@ -86,6 +86,13 @@ rec { , preferLocalBuild ? true , derivationArgs ? { } }: + assert lib.assertMsg (destination != "" -> (lib.hasPrefix "/" destination && destination != "/")) '' + destination must be an absolute path, relative to the derivation's out path, + got '${destination}' instead. + + Ensure that the path starts with a / and specifies at least the filename. + ''; + let matches = builtins.match "/bin/([^/]+)" destination; in