123 lines
3.0 KiB
Nix
123 lines
3.0 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
fenix = {
|
|
url = "github:nix-community/fenix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
crane.url = "github:ipetkov/crane";
|
|
};
|
|
|
|
outputs = {
|
|
nixpkgs,
|
|
fenix,
|
|
crane,
|
|
flake-utils,
|
|
...
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
pkgs = import nixpkgs {inherit system;};
|
|
|
|
pname = "pomomon-garden";
|
|
version = "0.1.0";
|
|
|
|
rust-toolchain = with fenix.packages.${system};
|
|
combine [
|
|
beta.rustc
|
|
beta.cargo
|
|
beta.rust-src
|
|
beta.rust-analyzer
|
|
];
|
|
|
|
bevyDeps = with pkgs; [
|
|
pkg-config
|
|
# Audio
|
|
alsa-lib
|
|
# Vulkan
|
|
vulkan-loader
|
|
vulkan-tools
|
|
libudev-zero
|
|
# X11
|
|
xorg.libX11
|
|
xorg.libXcursor
|
|
xorg.libXi
|
|
xorg.libXrandr
|
|
# Wayland
|
|
wayland
|
|
libxkbcommon
|
|
# linker
|
|
lld
|
|
|
|
openssl
|
|
];
|
|
runtimeLibs = pkgs.lib.makeLibraryPath bevyDeps;
|
|
|
|
craneLib = (crane.mkLib pkgs).overrideToolchain rust-toolchain;
|
|
|
|
cargoArtifacts = craneLib.buildDepsOnly {
|
|
pname = "${pname}-deps";
|
|
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
|
nativeBuildInputs = with pkgs; [pkg-config];
|
|
buildInputs = bevyDeps;
|
|
};
|
|
|
|
CARGO_PROFILE_RELEASE_LTO = "thin";
|
|
CARGO_PROFILE_RELEASE_CODEGEN_UNITS = 1;
|
|
CARGO_PROFILE_RELEASE_STRIP = "true";
|
|
RUSTFLAGS = "-C link-arg=-fuse-ld=lld";
|
|
in {
|
|
packages.default = craneLib.buildPackage {
|
|
inherit pname version;
|
|
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
|
inherit cargoArtifacts;
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
rust-toolchain
|
|
lld
|
|
makeWrapper
|
|
];
|
|
|
|
buildInputs = bevyDeps;
|
|
|
|
inherit CARGO_PROFILE_RELEASE_LTO CARGO_PROFILE_RELEASE_CODEGEN_UNITS CARGO_PROFILE_RELEASE_STRIP RUSTFLAGS;
|
|
|
|
postInstall = ''
|
|
wrapProgram "$out/bin/${pname}" \
|
|
--prefix LD_LIBRARY_PATH : ${runtimeLibs}
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "A pomodoro garden management game.";
|
|
license = licenses.mit;
|
|
};
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
lld
|
|
];
|
|
|
|
packages = with pkgs;
|
|
[
|
|
rust-toolchain
|
|
cargo-watch
|
|
cargo-edit
|
|
cargo-tarpaulin
|
|
]
|
|
++ bevyDeps;
|
|
|
|
# inherit CARGO_PROFILE_RELEASE_LTO CARGO_PROFILE_RELEASE_CODEGEN_UNITS CARGO_PROFILE_RELEASE_STRIP RUSTFLAGS;
|
|
|
|
shellHook = ''
|
|
export RUST_SRC_PATH=${fenix.packages.${system}.stable.rust-src}/lib/rustlib/src/rust/library
|
|
export LD_LIBRARY_PATH=${runtimeLibs}:$LD_LIBRARY_PATH
|
|
'';
|
|
};
|
|
|
|
formatter = pkgs.nixpkgs-fmt;
|
|
});
|
|
}
|