GodotNixDevelopmentEnviroment/flake.nix

52 lines
1.6 KiB
Nix
Raw Permalink Normal View History

{
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; };
});
};
}