Es por el tipo Path e interpolación de cadenas.
El error en mi opinión no es muy útil, tuve que buscar más de lo que querría para entender qué estaba pasando.
Mi código inicial
El código inicial que tira provocó el error does not represent absolute path
:
let
pathToFile = "./../vimfiles";
in
{
vimrcConfig.customRC = (builtins.readFile "${pathToFile}/vimrc.vim")
}
Solución
El tipo Path
tiene reglas, debe contener por lo menos un /
, y es evaluado antes que la interpolación de
cadenas (string interpolation).
La forma de solucionarlo es dejar literal ./
al principio de la declaración del Path
, de esta manera, para cuando la interpolación de cadenas es ejecutada y reemplaza pathToFile
por el valor definido en el bloque let, así se cumple con la regla que requiere el tipo Path
.
let
pathToFile = "../vimfiles";
in
{
vimrcConfig.customRC = (builtins.readFile ./${pathToFile}/vimrc.vim)
}
You can find more information in NixOS documentation