105 lines
2.6 KiB
Nix
105 lines
2.6 KiB
Nix
|
{
|
||
|
pkgs,
|
||
|
lib,
|
||
|
crane,
|
||
|
advisory-db,
|
||
|
}:
|
||
|
let
|
||
|
runtimeInputs = [ ];
|
||
|
rustToolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||
|
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
|
||
|
src = craneLib.cleanCargoSource ./.;
|
||
|
commonArgs = {
|
||
|
inherit src;
|
||
|
strictDeps = true;
|
||
|
buildInputs = [ ];
|
||
|
nativeBuildInputs = [
|
||
|
pkgs.leptosfmt
|
||
|
pkgs.cargo-leptos
|
||
|
pkgs.binaryen
|
||
|
pkgs.dart-sass
|
||
|
];
|
||
|
};
|
||
|
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
||
|
individualCrateArgs = commonArgs // {
|
||
|
inherit cargoArtifacts;
|
||
|
inherit (craneLib.crateNameFromCargoToml { inherit src; }) version;
|
||
|
doCheck = false;
|
||
|
};
|
||
|
fileSet = lib.fileset.toSource {
|
||
|
root = ./.;
|
||
|
fileset = lib.fileset.unions [
|
||
|
./Cargo.lock
|
||
|
./Cargo.toml
|
||
|
./rust-analyzer.toml
|
||
|
./rust-toolchain.toml
|
||
|
./rustfmt.toml
|
||
|
./styles
|
||
|
./src
|
||
|
./public
|
||
|
];
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
rustPackage = craneLib.buildPackage (
|
||
|
individualCrateArgs
|
||
|
// {
|
||
|
pname = "mx-aliases";
|
||
|
src = fileSet;
|
||
|
nativeBuildInputs = commonArgs.nativeBuildInputs ++ [ pkgs.makeWrapper ];
|
||
|
buildPhaseCargoCommand = ''
|
||
|
cargoBuildLog=$(mktemp cargoBuildLogXXXX.json)
|
||
|
cargo leptos build --release > "$cargoBuildLog"
|
||
|
'';
|
||
|
installPhase = ''
|
||
|
mkdir -p $out/bin/
|
||
|
cp target/release/mx-aliases $out/bin/
|
||
|
cp -r target/mx-aliases $out/lib
|
||
|
'';
|
||
|
postFixup = ''
|
||
|
wrapProgram $out/bin/mx-aliases \
|
||
|
--set PATH "${lib.makeBinPath runtimeInputs}" \
|
||
|
--set LEPTOS_SITE_ROOT $out/lib \
|
||
|
--set LEPTOS_SITE_PKG_DIR assets
|
||
|
'';
|
||
|
meta = {
|
||
|
mainProgram = "mx-aliases";
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
checks = {
|
||
|
mx-aliases-clippy = craneLib.cargoClippy (
|
||
|
commonArgs
|
||
|
// {
|
||
|
inherit cargoArtifacts;
|
||
|
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
|
||
|
}
|
||
|
);
|
||
|
mx-aliases-doc = craneLib.cargoDoc (
|
||
|
commonArgs
|
||
|
// {
|
||
|
inherit cargoArtifacts;
|
||
|
}
|
||
|
);
|
||
|
mx-aliases-fmt = craneLib.cargoFmt (
|
||
|
commonArgs
|
||
|
// {
|
||
|
inherit cargoArtifacts;
|
||
|
}
|
||
|
);
|
||
|
# Not used currently, as I have some other formatter changing toml formatting
|
||
|
# not sure where it comes from, but I need to find out and decide on a formatter
|
||
|
mx-aliases-toml-fmt = craneLib.taploFmt {
|
||
|
src = lib.sources.sourceFilesBySuffices src [ ".toml" ];
|
||
|
};
|
||
|
mx-aliases-audit = craneLib.cargoAudit {
|
||
|
inherit src advisory-db;
|
||
|
};
|
||
|
};
|
||
|
devDeps = [
|
||
|
rustToolchain
|
||
|
]
|
||
|
++ commonArgs.buildInputs
|
||
|
++ commonArgs.nativeBuildInputs;
|
||
|
}
|