{ description = "Flake for developing and building godot projects"; # Flake inputs inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix nixgl.url = "github:guibou/nixGL"; # Allows you to run OpenGL and or Vulkan applications in a nix shell }; # Flake outputs outputs = { self, nixpkgs, rust-overlay, nixgl, ... }: let # Overlays enable you to customize the Nixpkgs attribute set overlays = [ nixgl.overlay # Makes a `rust-bin` attribute available in Nixpkgs (import rust-overlay) # Provides a `rustToolchain` attribute for Nixpkgs that we can use to # create a Rust environment (self: super: { rustToolchain = super.rust-bin.stable.latest.default; }) ]; # Systems supported allSystems = [ "x86_64-linux" # 64-bit Intel/AMD Linux "aarch64-linux" # 64-bit ARM Linux "x86_64-darwin" # 64-bit Intel macOS "aarch64-darwin" # 64-bit ARM macOS ]; # Helper to provide system-specific attributes forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f { pkgs = import nixpkgs { inherit overlays system; }; }); in { # Development environment output devShells = forAllSystems ({ pkgs }: { default = import ./nix/shell.nix { inherit pkgs; }; }); # Builder packages = forAllSystems ({ pkgs }: { default = import ./nix/godot.nix { inherit pkgs; }; rust = import ./nix/rust.nix { inherit pkgs; }; }); }; }