diff --git a/flake.nix b/flake.nix index 27313ef..288a293 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ # either `curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install` # or https://github.com/DeterminateSystems/nix-installer # and then `nix build` or `nix develop` - { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; @@ -15,66 +14,71 @@ }; outputs = inputs: - inputs.flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ "x86_64-linux" ]; + inputs.flake-parts.lib.mkFlake {inherit inputs;} { + systems = ["x86_64-linux" "aarch64-linux"]; imports = [ inputs.treefmt-nix.flakeModule ]; - perSystem = { config, self', pkgs, lib, system, ... }: - let - cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); - nonRustDeps = [ - pkgs.libiconv - pkgs.pkg-config - pkgs.protobuf + perSystem = { + config, + self', + pkgs, + lib, + system, + ... + }: let + cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); + nonRustDeps = [ + pkgs.libiconv + pkgs.pkg-config + pkgs.protobuf + ]; + rust-toolchain = pkgs.symlinkJoin { + name = "rust-toolchain"; + paths = [pkgs.rustc pkgs.cargo pkgs.cargo-watch pkgs.rust-analyzer pkgs.rustPlatform.rustcSrc]; + }; + in { + # Rust package + packages.default = pkgs.rustPlatform.buildRustPackage { + inherit (cargoToml.package) name version; + nativeBuildInputs = nonRustDeps; + buildInputs = nonRustDeps; + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + }; + + # Rust dev environment + devShells.default = pkgs.mkShell { + inputsFrom = [ + config.treefmt.build.devShell ]; - rust-toolchain = pkgs.symlinkJoin { - name = "rust-toolchain"; - paths = [ pkgs.rustc pkgs.cargo pkgs.cargo-watch pkgs.rust-analyzer pkgs.rustPlatform.rustcSrc ]; - }; - in - { - # Rust package - packages.default = pkgs.rustPlatform.buildRustPackage { - inherit (cargoToml.package) name version; - nativeBuildInputs = nonRustDeps; - buildInputs = nonRustDeps; - src = ./.; - cargoLock.lockFile = ./Cargo.lock; - }; + shellHook = '' + # For rust-analyzer 'hover' tooltips to work. + export RUST_SRC_PATH=${pkgs.rustPlatform.rustLibSrc} + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${pkgs.vulkan-loader}/lib/:${pkgs.wayland}/lib/:${pkgs.libxkbcommon}/lib/ + echo $RUST_SRC_PATH - # Rust dev environment - devShells.default = pkgs.mkShell { - inputsFrom = [ - config.treefmt.build.devShell - ]; - shellHook = '' - # For rust-analyzer 'hover' tooltips to work. - export RUST_SRC_PATH=${pkgs.rustPlatform.rustLibSrc} - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${pkgs.vulkan-loader}/lib/:${pkgs.wayland}/lib/:${pkgs.libxkbcommon}/lib/ - echo $RUST_SRC_PATH + echo + echo "Run 'just ' to get started" + just + ''; + buildInputs = nonRustDeps; + nativeBuildInputs = with pkgs; [ + just + rust-toolchain + ]; + RUST_BACKTRACE = 1; + }; - echo - echo "Run 'just ' to get started" - just - ''; - buildInputs = nonRustDeps; - nativeBuildInputs = with pkgs; [ - just - rust-toolchain - ]; - RUST_BACKTRACE = 1; - }; - - # Add your auto-formatters here. - # cf. https://numtide.github.io/treefmt/ - treefmt.config = { - projectRootFile = "flake.nix"; - programs = { - nixpkgs-fmt.enable = true; - rustfmt.enable = true; - }; + # Add your auto-formatters here. + # cf. https://numtide.github.io/treefmt/ + treefmt.config = { + projectRootFile = "flake.nix"; + programs = { + nixpkgs-fmt.enable = true; + rustfmt.enable = true; }; }; + }; }; }