summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-01-28 12:05:07 -0500
committerLLLL Colonq <llll@colonq>2025-01-28 12:06:04 -0500
commita3c6970a50a3c769aebce2bcb17cd9d9febe4354 (patch)
tree1f1d2940997b9fd5d326b7eb10dcff84c9a7e754 /flake.nix
parent39a0ff935e6298193188d8569ae3cbb96807f34c (diff)
Move to GLFW for transparent clickthrough overlay
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix60
1 files changed, 13 insertions, 47 deletions
diff --git a/flake.nix b/flake.nix
index b188d0e..0599005 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,20 +1,12 @@
{
- description = "Build a cargo project";
-
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
-
- # The version of wasm-bindgen-cli needs to match the version in Cargo.lock
- # Update this to include the version you need
nixpkgs-for-wasm-bindgen.url = "github:NixOS/nixpkgs/4e6868b1aa3766ab1de169922bb3826143941973";
-
crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
};
-
flake-utils.url = "github:numtide/flake-utils";
-
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs = {
@@ -34,57 +26,38 @@
inherit (pkgs) lib;
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
- # Set the build targets supported by the toolchain,
- # wasm32-unknown-unknown is required for trunk
targets = [ "wasm32-unknown-unknown" ];
};
craneLib = ((crane.mkLib pkgs).overrideToolchain rustToolchain).overrideScope (_final: _prev: {
- # The version of wasm-bindgen-cli needs to match the version in Cargo.lock. You
- # can unpin this if your nixpkgs commit contains the appropriate wasm-bindgen-cli version
inherit (import nixpkgs-for-wasm-bindgen { inherit system; }) wasm-bindgen-cli;
});
- # When filtering sources, we want to allow assets other than .rs files
src = lib.cleanSourceWith {
- src = ./.; # The original, unfiltered source
+ src = ./.;
filter = path: type:
(lib.hasSuffix "\.html" path) ||
(lib.hasSuffix "\.scss" path) ||
- # Example of a folder for images, icons, etc
(lib.hasInfix "/assets/" path) ||
- # Default filter from crane (allow .rs files)
(craneLib.filterCargoSources path type)
;
};
- # Common arguments can be set here to avoid repeating them later
commonArgs = {
inherit src;
strictDeps = true;
- # We must force the target, otherwise cargo will attempt to use your native target
CARGO_BUILD_TARGET = "wasm32-unknown-unknown";
-
buildInputs = [
- # Add additional build inputs here
] ++ lib.optionals pkgs.stdenv.isDarwin [
- # Additional darwin specific inputs can be set here
pkgs.libiconv
];
};
- # Build *just* the cargo dependencies, so we can reuse
- # all of that work (e.g. via cachix) when running in CI
cargoArtifacts = craneLib.buildDepsOnly (commonArgs // {
- # You cannot run cargo test on a wasm build
doCheck = false;
});
- # Build the actual crate itself, reusing the dependency
- # artifacts from above.
- # This derivation is a directory you can put on a webserver.
teleia = craneLib.buildTrunkPackage (commonArgs // {
inherit cargoArtifacts;
- # The version of wasm-bindgen-cli here must match the one from Cargo.lock.
wasm-bindgen-cli = pkgs.wasm-bindgen-cli.override {
version = "0.2.90";
hash = "sha256-X8+DVX7dmKh7BgXqP7Fp0smhup5OO8eWEhn26ODYbkQ=";
@@ -94,21 +67,11 @@
in
{
checks = {
- # Build the crate as part of `nix flake check` for convenience
inherit teleia;
-
- # Run clippy (and deny all warnings) on the crate source,
- # again, reusing the dependency artifacts from above.
- #
- # Note that this is done as a separate derivation so that
- # we can block the CI if there are issues here, but not
- # prevent downstream consumers from building our crate by itself.
teleia-clippy = craneLib.cargoClippy (commonArgs // {
inherit cargoArtifacts;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
});
-
- # Check formatting
teleia-fmt = craneLib.cargoFmt {
inherit src;
};
@@ -117,21 +80,24 @@
packages.default = teleia;
devShells.default = craneLib.devShell {
- # Inherit inputs from checks.
checks = self.checks.${system};
-
- # Additional dev-shell environment variables can be set directly
- # MY_CUSTOM_DEVELOPMENT_VAR = "something else";
-
- # Extra inputs can be added here; cargo and rustc are provided by default.
packages = [
pkgs.trunk
pkgs.rust-analyzer
- pkgs.pkg-config
- pkgs.openssl.dev
- pkgs.SDL2
pkgs.glxinfo
pkgs.alsa-lib
+ pkgs.cmake
+ pkgs.pkg-config
+ pkgs.openssl.dev
+ pkgs.glfw
+ pkgs.xorg.libX11
+ pkgs.xorg.libXcursor
+ pkgs.xorg.libXi
+ pkgs.xorg.libXrandr
+ pkgs.xorg.libXinerama
+ pkgs.libxkbcommon
+ pkgs.xorg.libxcb
+ pkgs.libglvnd
];
};
});