{ description = "An x86 kernel written in Rust"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlays.url = "github:oxalica/rust-overlay"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { nixpkgs, flake-utils, rust-overlays, ...}: flake-utils.lib.eachDefaultSystem (system: let overlays = [ (import rust-overlays) ]; pkgs = import nixpkgs { inherit system overlays; config.allowUnfree = true; }; rust-override = { extensions = ["rust-src" "rust-analyzer" "miri"]; targets = [ "x86_64-unknown-linux-gnu" ]; }; rust-pkg = pkgs.rust-bin.nightly.latest.default.override rust-override; in with pkgs; { devShells = { default = mkShell rec { name = "rust-osdev"; nativeBuildInputs = [ pkg-config rust-pkg clang gcc gdb mold limine-full qemu OVMF mtools ]; buildInputs = [ udev stdenv.cc.cc.lib ]; LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs; OVMF_PATH = OVMF.fd; }; }; }); }