about summary refs log tree commit diff
path: root/tvix/website
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/website')
-rw-r--r--tvix/website/default.nix46
-rw-r--r--tvix/website/landing-en.md39
2 files changed, 85 insertions, 0 deletions
diff --git a/tvix/website/default.nix b/tvix/website/default.nix
new file mode 100644
index 000000000000..a2fc247e4a48
--- /dev/null
+++ b/tvix/website/default.nix
@@ -0,0 +1,46 @@
+{ depot, lib, pkgs, ... }:
+
+let
+  description = "Rust implementation of the purely-functional Nix package manager";
+
+  # https://developers.google.com/search/docs/advanced/structured-data/
+  # https://schema.org/SoftwareApplication
+  structuredData = {
+    "@context" = "https://schema.org";
+    "@type" = "SoftwareApplication";
+    name = "Tvix";
+    url = "https://tvix.dev";
+    abstract = description;
+    applicationCategory = "DeveloperApplication";
+    contributor = "https://tvl.fyi";
+    image = "https://tvix.dev/logo.webp";
+  };
+
+  # All Tvix-related blog posts from the main TVL website
+  tvixPosts = builtins.filter
+    (post: !(post.draft or false) && (lib.hasInfix "Tvix" post.title))
+    depot.web.tvl.blog.posts;
+
+  postListEntries = map (p: "* [${p.title}](https://tvl.fyi/blog/${p.key})") tvixPosts;
+
+  landing = depot.web.tvl.template {
+    title = "Tvix - A new implementation of Nix";
+    content = ''
+      ${builtins.readFile ./landing-en.md}
+      ${builtins.concatStringsSep "\n" postListEntries}
+    '';
+
+    extraHead = ''
+      <meta name="description" content="${description}">
+      <script type="application/ld+json">
+        ${builtins.toJSON structuredData}
+      </script>
+    '';
+  };
+
+in
+pkgs.runCommand "tvix-website" { } ''
+  mkdir $out
+  cp ${landing} $out/index.html
+  cp ${depot.tvix.logo}/logo.webp $out/
+''
diff --git a/tvix/website/landing-en.md b/tvix/website/landing-en.md
new file mode 100644
index 000000000000..4537fc7f2a3b
--- /dev/null
+++ b/tvix/website/landing-en.md
@@ -0,0 +1,39 @@
+<img class="tvl-logo" src="./logo.webp"
+     alt="A candy bar in different shades of blue that says 'Tvix by TVL' on it">
+
+------------------
+
+Tvix is a new implementation of Nix, a purely-functional package manager. It
+aims to have a modular implementation, in which different components can be
+reused or replaced based on the use-case.
+
+Tvix is developed as a GPLv3-licensed open-source project by
+[TVL][], with source code available in the [TVL monorepo][].
+
+There are several projects within Tvix, such as:
+
+* `//tvix/castore` - subtree storage/transfer in a content-addressed fashion
+* `//tvix/cli` - preliminary REPL & CLI implementation for Tvix
+* `//tvix/eval` - an implementation of the Nix programming language
+* `//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/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
+* ... and a handful others!
+
+The language evaluator can be toyed with in [Tvixbolt][], and you can check out
+the [Tvix README][] ([GitHub mirror][gh]) for additional information on the
+project and development workflows.
+
+Developer documentation for some parts of Tvix is [available online][docs].
+
+[TVL]: https://tvl.fyi
+[TVL monorepo]: https://cs.tvl.fyi/depot/-/tree/tvix
+[Tvixbolt]: https://tvixbolt.tvl.su
+[Tvix README]: https://code.tvl.fyi/about/tvix
+[gh]: https://github.com/tvlfyi/tvix/
+[docs]: https://docs.tvix.dev
+
+-------------------
+
+Check out the latest Tvix-related blog posts from TVL's website: