{ description = "War in Tunnels flake for development and production"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; naersk = { url = "github:nix-community/naersk"; inputs = { nixpkgs.follows = "nixpkgs"; fenix.follows = "fenix"; }; }; }; outputs = { self, nixpkgs, naersk, fenix, }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; rustToolchain = fenix.packages.${system}.stable.toolchain; naerskLib = pkgs.callPackage naersk { cargo = rustToolchain; rustc = rustToolchain; }; cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); packageVersion = cargoToml.package.version; bevyVersion = cargoToml.dependencies.bevy; in { packages.${system} = { default = pkgs.callPackage ./default.nix { }; develop = naerskLib.buildPackage { name = "war-in-tunnels"; src = ./.; buildInputs = with pkgs; [ wayland alsa-lib udev libxkbcommon vulkan-loader ]; nativeBuildInputs = with pkgs; [ pkg-config ]; }; }; devShells.${system}.default = pkgs.mkShell { buildInputs = [ rustToolchain ] ++ (with pkgs; [ wayland alsa-lib udev libxkbcommon vulkan-loader ]); nativeBuildInputs = with pkgs; [ pkg-config ]; env = { RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; LD_LIBRARY_PATH = with pkgs; "$LD_LIBRARY_PATH:${ lib.makeLibraryPath [ wayland alsa-lib udev libxkbcommon vulkan-loader ] }"; }; shellHook = '' echo "War in Tunnels v${packageVersion}" echo "Bevy v${bevyVersion}" echo "" echo "Commands:" echo " nix build - Build production version" echo " nix run - Run production version" echo " nix build .#develop - Build development version" echo " nix run .#develop - Run development version" ''; }; }; }