{ description = "Flake for RMK"; # Flake inputs inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix }; # Flake outputs outputs = { self, nixpkgs, rust-overlay, ... }: let # Overlays enable you to customize the Nixpkgs attribute set overlays = [ # 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.nightly.latest.default; }) ]; # Systems supported allSystems = [ "x86_64-linux" # 64-bit Intel/AMD Linux "aarch64-linux" # 64-bit ARM Linux ]; # 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 = pkgs.mkShell { # The Nix packages provided in the environment packages = (with pkgs; [ # Fluff pkg-config udev clang lld # Rust rustup rustToolchain cargo-make flip-link ]) ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ libiconv ]); shellHook = '' # Required export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [ pkgs.udev pkgs.libxkbcommon pkgs.libllvm pkgs.libdrm pkgs.libelf pkgs.elfutils pkgs.xorg.libxcb pkgs.zstd # If using an intel GPU # If on x11 pkgs.xorg.libxshmfence pkgs.xorg.xcbutilkeysyms pkgs.lld ]}" # Aliases and other fluff/ease of use alias runIntel="nixVulkanIntel cargo run" echo "Welcome to nix-hell uh nix-shell!" ''; }; }); }; }