Error en la configuración de NixOS: 'does not represent an absolute path'

Escrito por Lyoneel el en Solución de problemas, NixOS
 1 min

Error en la configuración de NixOS: 'does not represent an absolute path'

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