Something went wrong. Try again.
A better Rust ATProto crate forked from nonbinary.computer/jacquard
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172{inputs, ...}: { imports = [ inputs.rust-flake.flakeModules.default inputs.rust-flake.flakeModules.nixpkgs # inputs.process-compose-flake.flakeModule # inputs.cargo-doc-live.flakeModule ]; perSystem = { config, self', pkgs, lib, ... }: let inherit (pkgs.stdenv) isDarwin; inherit (pkgs.darwin) apple_sdk;
# Common configuration for all crates globalCrateConfig = { crane.clippy.enable = false; };
# Common build inputs for all crates commonBuildInputs = with pkgs; [ ] ++ lib.optionals isDarwin ( with apple_sdk.frameworks; [ IOKit Security SystemConfiguration ] ); in { rust-project = { # Source filtering to avoid unnecessary rebuilds src = lib.cleanSourceWith { src = inputs.self; filter = config.rust-project.crane-lib.filterCargoSources; }; crates = { "jacquard" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard; crane = { args = { buildInputs = commonBuildInputs; }; }; };
"jacquard-common" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-common; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-derive" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-derive; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-lexicon" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-lexicon; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-lexgen" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-lexgen; crane = { args = { buildInputs = commonBuildInputs; nativeBuildInputs = [pkgs.installShellFiles]; doCheck = false; # Tests require lexicon corpus files not available in nix build postInstall = '' # Install man pages and completions from build script output for outdir in target/release/build/jacquard-lexgen-*/out; do if [ -d "$outdir/man" ]; then installManPage $outdir/man/*.1 fi if [ -d "$outdir/completions" ]; then # Install completions for both binaries for completion in $outdir/completions/*; do case "$(basename "$completion")" in *.bash) installShellCompletion --bash "$completion" ;; *.fish) installShellCompletion --fish "$completion" ;; _*) installShellCompletion --zsh "$completion" ;; esac done fi done
# Install example lexicons.kdl config install -Dm644 ${./../../crates/jacquard-lexgen/lexicons.kdl.example} $out/share/doc/jacquard-lexgen/lexicons.kdl.example ''; }; }; }; "jacquard-api" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-api; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-identity" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-identity; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-oauth" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-oauth; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-axum" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-axum; crane = { args = { buildInputs = commonBuildInputs; }; }; }; "jacquard-repo" = { imports = [globalCrateConfig]; autoWire = ["crate" "clippy"]; path = ./../../crates/jacquard-repo; crane = { args = { buildInputs = commonBuildInputs; }; }; }; }; }; packages.default = self'.packages.jacquard-lexgen; };}