possible way to expose devshell.toml's path?
Issue
I wanted to add a feature to the git.hooks module to allow specifying a path to a hook. I got all the logic wired in and working, but the issue is that I have to specify a full path :disappointed:
nix doesn't seem to have the ability to convert a string with a relative path to a full path, and since toml doesn't have a native notion of a path, I'm kinda stuck. builtins.toPath is depricated and doesn't really do anything.
The only work around I can think of is if we define a variable somewhere containing the current devshell.toml's path. Then I can specify a path relative to the location of the devshell.toml to the git.hook source file. I'm sure this will come in handy for similar reasons in other modules.
I guess the alternative would be to leave it as a nix only option, but setting from toml would be ideal.
Context
my devshell.toml is not at the root of the project, otherwise I probably would have thought to use DEVSHELL_ROOT
Do you want the file to be added to the /nix/store or just point to its location in the repo?
Where is that path being used?
Whatever you believe would be the best solution, if indeed we find a good solution
Here is a draft pr so you can see the implementation. #96
The directory containting the devshell.toml. The pre-commit file I would like to specify is also there. The nix specific parts are in the default.nix.
A couple of days ago, I also had a thought on relative-to-toml file paths in the context of wanting to load per-repo devshell modules (without resorting to .nix)
The module has a _file attribute that exposes its location. Ideally, it would be possible to set the type of attribute to types.path and have it be resolved if it starts with ./. @infinisil do you know if that would be possible?
Otherwise, we will have to revert to something less ideal like a post-processing step. Or install config.resolveRoot = builtins.dirOf file when the user uses importTOML