Skip to content

possible way to expose devshell.toml's path?聽#95

Open

Description

@nrdxp

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 馃槥

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

Activity

  1. zimbatm commented on Feb 17, 2021

    @zimbatm
    Member

    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?

  2. nrdxp commented on Feb 17, 2021

    @nrdxp
    ContributorAuthor

    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.

  3. blaggacao commented on Feb 17, 2021

    @blaggacao
    Contributor

    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)

  4. zimbatm commented on Feb 28, 2021

    @zimbatm
    Member

    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

  5. added a commit that references this issue on Jun 21, 2021
    4fe876c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions