# Computes the fibonacci numbers by recursively importing derivations. Evaluate with # # nix-instantiate --eval --read-write-mode ./fib.nix -A result --arg n 5 { n }: let pkgs = import {}; subImport = k: '' import (import ${toString __curPos.file} { n = ${toString k}; }) ''; text = if n < 2 then toString n else "${subImport (n - 1)} + ${subImport (n - 2)}"; drv = pkgs.writeText "fib-${toString n}" text; in drv // { result = import drv; }