A fast, high-performance exam scheduling system backed by Z3, with a SvelteKit frontend. Designed for small-medium sized schools. kemisolve.wobbl.in
schools school z3 scheduling exam-scheduling solver
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126{ description = "Build a cargo workspace";
inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
advisory-db = { url = "github:rustsec/advisory-db"; flake = false; }; };
outputs = { self, nixpkgs, crane, flake-utils, advisory-db, rust-overlay, ... }: flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) ]; };
inherit (pkgs) lib;
craneLib = (crane.mkLib pkgs).overrideToolchain ( p: p.rust-bin.stable.latest.default.override { extensions = [ "rust-src" "rust-analyzer" "clippy" "rustfmt" "llvm-tools-preview" ]; } );
src = lib.fileset.toSource { root = ./.; fileset = lib.fileset.unions [ (lib.fileset.fromSource (craneLib.cleanCargoSource ./.) ) ./frontend/app/tauri.conf.json ./frontend/app/capabilities ./frontend/app/build.rs ./frontend/app/icons ./migrations ]; };
commonArgs = { inherit src; strictDeps = true; stdenv = p: p.clangStdenv;
buildInputs = [ pkgs.z3 pkgs.pkg-config pkgs.glib pkgs.gtk3 pkgs.librsvg pkgs.webkitgtk_4_1 ] ++ lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ];
nativeBuildInputs = [ pkgs.mold pkgs.pkg-config pkgs.cmake pkgs.python314 ];
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
# Additional environment variables can be set directly # MY_CUSTOM_VAR = "some value"; }; in { devShells.default = craneLib.devShell { inherit (commonArgs) buildInputs nativeBuildInputs; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
shellHook = '' export XDG_DATA_DIRS="$GSETTINGS_SCHEMAS_PATH" export LD_LIBRARY_PATH="${pkgs.webkitgtk_4_1}/lib:$LD_LIBRARY_PATH" export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-driver.browsers} export PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true '';
packages = with pkgs; [ cargo-hakari cargo-llvm-cov cargo-tauri tombi nodejs playwright-driver.browsers diesel-cli clang mold pkg-config wrapGAppsHook4 python3 dbus glib gtk3 librsvg webkitgtk_4_1 ]; }; } );}