mirror of
https://github.com/NixOS/nix
synced 2025-07-07 22:33:57 +02:00
Add parseFlakeRef
and flakeRefToString
builtins (#8670)
Over the last year or so I've run into several use cases where I need to parse and/or serialize URLs for use by `builtins.fetchTree` or `builtins.getFlake`, largely in order to produce _lockfile-like_ files for lang2nix frameworks or tools which use `nix` internally to drive builds. I've gone through the painstaking process of emulating `nix::FlakeRef::fromAttrs` and `nix::parseFlakeRef` several times with mixed success; but these are difficult to create and even harder to maintain if I hope to stay aligned with changes to the real parser/serializer. I understand why adding new `builtins` isn't something we want to do flagrantly. I'm recommending this addition simply because I keep encountering use cases where I need to parse/serialize these URIs in `nix` expressions, and I want a reliable solution. Co-authored-by: Eelco Dolstra <edolstra@gmail.com> Co-authored-by: John Ericson <git@JohnEricson.me>
This commit is contained in:
parent
484c820c48
commit
2d1d81114d
6 changed files with 112 additions and 0 deletions
1
tests/lang/eval-okay-flake-ref-to-string.exp
Normal file
1
tests/lang/eval-okay-flake-ref-to-string.exp
Normal file
|
@ -0,0 +1 @@
|
|||
"github:NixOS/nixpkgs/23.05?dir=lib"
|
7
tests/lang/eval-okay-flake-ref-to-string.nix
Normal file
7
tests/lang/eval-okay-flake-ref-to-string.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
builtins.flakeRefToString {
|
||||
type = "github";
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
ref = "23.05";
|
||||
dir = "lib";
|
||||
}
|
1
tests/lang/eval-okay-parse-flake-ref.exp
Normal file
1
tests/lang/eval-okay-parse-flake-ref.exp
Normal file
|
@ -0,0 +1 @@
|
|||
{ dir = "lib"; owner = "NixOS"; ref = "23.05"; repo = "nixpkgs"; type = "github"; }
|
1
tests/lang/eval-okay-parse-flake-ref.nix
Normal file
1
tests/lang/eval-okay-parse-flake-ref.nix
Normal file
|
@ -0,0 +1 @@
|
|||
builtins.parseFlakeRef "github:NixOS/nixpkgs/23.05?dir=lib"
|
Loading…
Add table
Add a link
Reference in a new issue