nix-uri

Crates Documentation

nix-uri is a rust crate that parses the nix-uri-scheme into a FlakeRef struct.

Also allows for building a nix-uri through the FlakeRef struct.

Convenience functionality for working with nix flake.nix references (flakerefs). Provides types for the generic attribute set representation, but does not parse it:

rust { type = "github"; owner = "NixOS"; repo = "nixpkgs"; }

Installation

To use nix-uri, add it as a dependency in your Cargo.toml file:

rust [dependencies] nix-uri = "0.1.4"

or use cargo add:

rust cargo add nix-uri

Examples

Check out the examples directory, for more information, or run an example:

rust cargo run --example simple cargo run --example cli github:nixpkgs/nixos

The uri syntax representation is parsed by this library:

Example: Parsing from github:nixos/nixpkgs:

rust let uri = "github:nixos/nixpkgs"; let expected = FlakeRef::new( FlakeRefType::GitHub { owner: "nixos".into(), repo: "nixpkgs".into(), ref_or_rev: None, }); let parsed: FlakeRef = uri.try_into().unwrap(); assert_eq!(expected, parsed);

It can also be generated from FlakeRef. ### Example: Constructing the following uri github:nixos/nixpkgs: rust let expected = "github:nixos/nixpkgs"; let uri = FlakeRef::new( FlakeRefType::GitHub { owner: "nixos".into(), repo: "nixpkgs".into(), ref_or_rev: None, }).to_string(); assert_eq!(expected, uri);

Note

This library is still an early WIP and not all cases are covered yet. Especially error handling is not properly implemented at this time.