VienDesu! Rust standard library
  • Rust 96%
  • Nix 4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Aleksandr ebc0818293 nix: keep snapshots and migrations in the build source
filterCargoSources passes Cargo sources only, so insta snapshots and SQL
migrations never reached the sandbox. Both are needed at build time:
checkPhase compares against the snapshots, and `sqlx::migrate!` embeds the
migrations at compile time — without them ai-router failed with nine
snapshot tests having nothing to compare against and every e2e test meeting
a database with no schema.

Co-Authored-By: Eva
2026-08-25 14:03:43 +03:00
macros fix review findings: soundness, time, hex, macros; rework oneshot 2026-07-21 19:53:28 +03:00
nix nix: keep snapshots and migrations in the build source 2026-08-25 14:03:43 +03:00
src time: fix cross-wired Date serde branches 2026-08-03 21:59:16 +03:00
utils fix review findings: soundness, time, hex, macros; rework oneshot 2026-07-21 19:53:28 +03:00
.envrc Initial commit 2025-09-15 19:58:24 +03:00
.gitignore Initial commit 2025-09-15 19:58:24 +03:00
Cargo.toml time: fix cross-wired Date serde branches 2026-08-03 21:59:16 +03:00
flake.lock nix: bump flake inputs 2026-08-23 18:58:22 +03:00
flake.nix nix: export flake lib for service flakes 2026-08-23 17:45:02 +03:00
README.md nix: export flake lib for service flakes 2026-08-23 17:45:02 +03:00

Eva

A backbone standard library for the VienDesu! projects. Carefully crafted functionality.

We emphasize:

  • Correctness - the code inside is carefully crafted to ensure that it would be used in a correct way
  • Performance - no perf trade-offs where possible
  • Precise types - eva contains and allows you to define types more precisely, this ensures correctness statically and reveals more use-cases to the user and provides more information to the compiler

This library may re-export other crates selectively or entirely, but I strive to do that as rarely as possible.

Flake library

The flake exports lib with shared Nix machinery for eva services: a pinned Rust toolchain, crane-based package builds (git dependencies come straight from Cargo.lock, no outputHashes), a dev shell, and a generated NixOS module (services.<pname> with settings/extraConfigFiles/user/group/ environment). A typical service flake is just:

{
  inputs.eva.url = "git+https://git.desu.church/VienDesu/eva.git";

  outputs = { self, eva, ... }: eva.lib.mkServiceFlake {
    inherit self;
    pname = "my-service";
    mainProgram = "my-service-server"; # default: pname
    description = "my-service, does things";
    settingsDefaults = { http.listen = "127.0.0.1:8080"; };
  };
}

Knobs: version, env (extra build env, e.g. an embedded commit hash), srcFilter (extra non-cargo sources), format ("yaml" default, "toml"), extraServiceConfig (merged into the systemd unit), devShell (pkgs: { stdenv, extraPackages, env }). The pieces (mkPkgs, rustToolchain, mkPackage, mkDevShell, mkModule) are exported separately for nonstandard flakes.