clangd broke because it can't look through symlinks. compile_commands manipulation does not fix it, clangd configuration does not fix it, a vfs overlay does not fix it, and while a combination of those can fix it with a bind mount in place that's just too cursed to even consider clangd bug: https://github.com/llvm/llvm-project/issues/116877 Change-Id: I8e3e8489548eb3a7aa65ac9d12a5ec8abf814aec
1.5 KiB
name, args, renameInGlobalScope
| name | args | renameInGlobalScope | |
|---|---|---|---|
| import |
|
false |
Load, parse and return the Nix expression in the file path.
The value path can be a path, a string, or an attribute set with an
__toString attribute or a outPath attribute (as derivations or flake
inputs typically have).
If path is a directory, the file default.nix in that directory
is loaded.
Evaluation aborts if the file doesn’t exist or contains
an incorrect Nix expression. import implements Nix’s module
system: you can put any Nix expression (such as a set or a
function) in a separate file, and use it from Nix expressions in
other files.
Note
Unlike some languages,
importis a regular function in Nix. Paths using the angle bracket syntax (e.g.,import<foo>) are normal path values.
A Nix expression loaded by import must not contain any free
variables (identifiers that are not defined in the Nix expression
itself and are not built-in). Therefore, it cannot refer to
variables that are in scope at the call site. For instance, if you
have a calling expression
rec {
x = 123;
y = import ./foo.nix;
}
then the following foo.nix will give an error:
x + 456
since x is not in scope in foo.nix. If you want x to be
available in foo.nix, you should pass it as a function argument:
rec {
x = 123;
y = import ./foo.nix x;
}
and
x: x + 456
(The function argument doesn’t have to be called x in foo.nix;
any name would work.)