query
On this page

resolveDefaultNix

lib.filesystem.resolveDefaultNix

Docs pulled from | This Revision | about 1 hour ago


Append /default.nix if the passed path is a directory.

Type

resolveDefaultNix :: (Path | String) -> (Path | String)

Inputs

A single argument which can be a path value or a string containing an absolute path.

Output

If the input refers to a directory that exists, the output is that same path with /default.nix appended. Furthermore, if the input is a string that ends with /, default.nix is appended to it. Otherwise, the input is returned unchanged.

Examples

lib.filesystem.resolveDefaultNix usage example

This expression checks whether a and b refer to the same locally available Nix file path.

resolveDefaultNix a == resolveDefaultNix b

For instance, if a is /some/dir and b is /some/dir/default.nix, and /some/dir/ exists, the expression evaluates to true, despite a and b being different references to the same Nix file.


Noogle detected

Implementation

The following is the current implementation of this function.

resolveDefaultNix =
    v:
    if pathIsDirectory v then
      v + "/default.nix"
    else if lib.isString v && hasSuffix "/" v then
      # A path ending in `/` can only refer to a directory, so we take the hint, even if we can't verify the validity of the path's `/` assertion.
      # A `/` is already present, so we don't add another one.
      v + "default.nix"
    else
      v;