Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Tvix - A Rust implementation of Nix. Read-only mirror ofhttps://code.tvl.fyi/tree/tvix

License

NotificationsYou must be signed in to change notification settings

tvlfyi/tvix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Tvix is a new implementation of the Nix language and package manager. See theannouncement post for information about the background of thisproject.

Tvix is developed byTVL in our monorepo, thedepot, at//tvix. Code reviews take place onGerrit, bugs arefiled inour issue tracker.

For more information about Tvix, feel free to reach out. We are interested inpeople who would like to help us review designs, brainstorm and describerequirements that we may not yet have considered.

Development discussion is focused around two IRC channels, which are alsoavailablevia XMPP andvia Matrix.

  1. TVL runs the#tvl channel onhackint.Tvix-related discussion in this channel is focused on eval, and on (almost)1:1 replacements of C++ Nix with Rust components.

  2. The separate#tvix-dev channel (onMatrix) focuses on the content-addressed store model,innovating on the plain files approach used in C++ Nix.

There is also a low-trafficmailing list with occasional design discussions.

Contributions to Tvix follow the TVLreview flow andcontribution guidelines.

WARNING: Tvix is not ready for use in production. None of our current APIsshould be considered stable in any way.

WARNING: Any other instances of this project or repository arejosh-mirrors. We do not accept code contributions or issues outside ofthe methods outlined above.

Components

This folder contains the following components:

  • //tvix/boot - tooling to boot MicroVMs off oftvix-[ca]store
  • //tvix/build - a generic (Nix-unaware) builder protocol and various implementations
  • //tvix/castore - subtree storage/transfer in a content-addressed fashion
  • //tvix/cli - preliminary REPL & CLI implementation for Tvix
  • //tvix/docs - standalone documentation
  • //tvix/eval - an implementation of the Nix programming language
  • //tvix/glue - combines tvix-eval with tvix-[ca]store and tvix-build, implementation of build- and import-related builtins
  • //tvix/nar-bridge - a HTTP webserver providing a Nix HTTP Binary Cache interface in front of a tvix-store
  • //tvix/nix-compat - a Rust library for compatibility with C++ Nix, features like encodings and hashing schemes and formats
  • //tvix/nix-daemon - a Nix-compatible store daemon backed by Tvix
  • //tvix/serde - a Rust library for using the Nix language for app configuration
  • //tvix/store - a "filesystem" linking Nix store paths and metadata with the content-addressed layer
  • //tvix/tracing - unified library to configure logging, tracing, instrumentation and progress concerns

Some additional folders with auxiliary things exist and can be explored at yourleisure.

Building the CLI

The CLI can also be built with standard Rust tooling (i.e.cargo build),as long as you are in a shell with the right dependencies.

  • If you cloned the full monorepo, it can be provided bymg shell //tvix:shell.
  • If you cloned thetvix workspace only(git clone https://code.tvl.fyi/depot.git:workspace=views/tvix.git),nix-shell provides it.

If you're in the TVL monorepo, you can also runmg build //tvix/cli(ormg build from inside that folder) for a more incremental build.

Please follow the depot-wide instructions on how to getmg and use the depottooling.

Compatibility

Important note: We only use and test Nix builds of our softwareagainst Nix 2.3. There are a variety of bugs and subtle problems innewer Nix versions which we do not have the bandwidth to address,builds in newer Nix versions may or may not work.

Rust projects, crate2nix

Some parts of Tvix are written in Rust. To simplify the dependencymanagement on the Nix side of these builds, we usecrate2nix in asingle Rust workspace in//tvix to maintain the Nix buildconfiguration.

When making changes to Cargo dependency configuration in any of theRust projects under//tvix, be sure to runmg run //tools:crate2nix-generate in//tvix itself and commit the changesto the generatedCargo.nix file. This only applies to the full TVL checkout.

When adding/removing a Cargo feature for a crate, you will want to add it to thefeatures power set that gets tested in CI. For each crate there's a default.nix with amkFeaturePowerset invocation, modify the list to include/remove the feature.Note that you don't want to add "collection" features, such asfs for tvix-[ca]store ordefault.

License structure

All code implemented for Tvix is licensed under the GPL-3.0, with theexception of the protocol buffer definitions used for communicationbetween services which are available under a more permissive license(MIT).

The idea behind this structure is that any direct usage of our code(e.g. linking to it, embedding the evaluator, etc.) will fall underthe terms of the GPL3, but users are free to implement their owncomponents speaking these protocols under the terms of the MITlicense.

About

Tvix - A Rust implementation of Nix. Read-only mirror ofhttps://code.tvl.fyi/tree/tvix

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp