🚀 Init public commit
This commit is contained in:
commit
62fbf6d17c
42 changed files with 7433 additions and 0 deletions
137
flake.nix
Normal file
137
flake.nix
Normal file
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
description = "Flake for building mascully with Crane";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
fenix = {
|
||||
url = "github:nix-community/fenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
crane.url = "github:ipetkov/crane";
|
||||
};
|
||||
|
||||
nixConfig = { };
|
||||
|
||||
outputs =
|
||||
inputs@{
|
||||
flake-parts,
|
||||
nixpkgs,
|
||||
fenix,
|
||||
crane,
|
||||
...
|
||||
}:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
debug = true;
|
||||
systems = nixpkgs.lib.systems.flakeExposed;
|
||||
|
||||
perSystem =
|
||||
{
|
||||
config,
|
||||
self',
|
||||
inputs',
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
rustToolchain = fenix.packages.${system}.combine ([
|
||||
(fenix.packages.${system}.complete.withComponents [
|
||||
"cargo"
|
||||
"clippy"
|
||||
"rust-src"
|
||||
"rustc"
|
||||
"rustfmt"
|
||||
])
|
||||
fenix.packages.${system}.complete.rust-analyzer
|
||||
fenix.packages.${system}.targets.wasm32-unknown-unknown.latest.rust-std
|
||||
]);
|
||||
|
||||
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
|
||||
|
||||
# extraPackages = with pkgs; [
|
||||
# cargo-leptos
|
||||
# binaryen
|
||||
# leptosfmt
|
||||
# ];
|
||||
|
||||
commonArgs = {
|
||||
# src = craneLib.cleanCargoSource ./.;
|
||||
src = ./.;
|
||||
strictDeps = true;
|
||||
buildInputs = with pkgs; [
|
||||
cargo-leptos
|
||||
leptosfmt
|
||||
binaryen
|
||||
];
|
||||
nativeBuildInputs = with pkgs; [
|
||||
cargo-leptos
|
||||
leptosfmt
|
||||
binaryen
|
||||
];
|
||||
};
|
||||
|
||||
leptosOptions = builtins.elemAt (builtins.fromTOML (builtins.readFile ./Cargo.toml)).workspace.metadata.leptos 0;
|
||||
|
||||
|
||||
# --profile=${leptosOptions.lib-profile-release}
|
||||
cargoArtifacts = craneLib.buildDepsOnly (
|
||||
commonArgs
|
||||
// {
|
||||
# if work is duplicated by the `mascullyWebsiteServer` package, update these
|
||||
# commands from the logs of `cargo leptos build --release -vvv`
|
||||
buildPhaseCargoCommand = ''
|
||||
cargo build --package=${leptosOptions.lib-package} --lib --target-dir=/build/source/target/front --target=wasm32-unknown-unknown --no-default-features
|
||||
cargo build --package=${leptosOptions.bin-package} --no-default-features --release
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
mascullyWebsiteServer = craneLib.buildPackage (
|
||||
commonArgs
|
||||
// {
|
||||
pname = "mascully_website_server";
|
||||
version = "0.1.0";
|
||||
|
||||
nativeBuildInputs = commonArgs.nativeBuildInputs ++ [ pkgs.makeWrapper ];
|
||||
|
||||
buildPhaseCargoCommand = ''
|
||||
RUST_BACKTRACE=full cargo-leptos build --release -vvv
|
||||
'';
|
||||
|
||||
installPhaseCommand = ''
|
||||
mkdir -p $out/bin
|
||||
ls target/
|
||||
pwd
|
||||
cp target/server/release/mascully_website_server $out/bin/
|
||||
# cp target/release/hash.txt $out/bin/
|
||||
cp -r target/site $out/bin/
|
||||
wrapProgram $out/bin/mascully_website_server --set LEPTOS_SITE_ROOT $out/bin/site
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
doNotPostBuildInstallCargoBinaries = true;
|
||||
cargoArtifacts = cargoArtifacts;
|
||||
}
|
||||
);
|
||||
|
||||
in
|
||||
{
|
||||
packages = rec {
|
||||
inherit mascullyWebsiteServer;
|
||||
default = mascullyWebsiteServer;
|
||||
};
|
||||
|
||||
devShells.default = craneLib.devShell {
|
||||
inputsFrom = [ mascullyWebsiteServer ];
|
||||
# packages = extraPackages;
|
||||
RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue