katgba/flake.nix
2025-08-09 21:41:21 -07:00

84 lines
2.3 KiB
Nix

{
description = "gba";
inputs = {
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
flake-utils,
rust-overlay,
crane,
...
}:
let
inherit (nixpkgs) lib;
rustTriple = "thumbv4t-none-eabi";
nixTriple = "arm-none-eabi";
in flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [
(import rust-overlay)
];
};
pkgsCross = import nixpkgs {
inherit system;
overlays = [
(import rust-overlay)
];
config = {
allowUnsupportedSystem = true;
#replaceStdenv = ({ pkgs }: pkgs.clangStdenvNoLibs );
};
crossSystem = {
config = nixTriple;
libc = "newlib";
#rust.rustcTarget = rustTriple;
gcc = {
arch = "armv4t";
};
};
};
rustToolchainFor =
p:
p.rust-bin.selectLatestNightlyWith (
toolchain:
toolchain.minimal.override {
extensions = [ "rust-analyzer" "rust-src" "clippy" "rustfmt" ];
targets = [ ];
}
);
rustToolchain = rustToolchainFor pkgs;
rustToolchainConfig = builtins.fromTOML (builtins.readFile ./rust-toolchain.toml );
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchainFor;
katgba-emu = pkgs.callPackage ./katgba-emu.nix { inherit katgba; };
katgba = pkgs.callPackage ./package.nix { inherit craneLib rustToolchain rustTriple; };
in {
devShells = let
katgba-emu = import ./shell.nix { inherit self pkgs rustToolchain; };
in {
default = katgba-emu;
inherit katgba-emu;
};
packages = {
default = katgba;
katgba-emu = katgba-emu;
inherit katgba;
};
});
}