{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, rust-overlay, ... }: let systems = [ "x86_64-linux" "aarch64-linux" ]; pkgsFor = system: import nixpkgs { localSystem = { inherit system; }; overlays = [ rust-overlay.overlays.default ]; }; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f (pkgsFor system)); rustToolchain = pkgs: pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-analyzer" "rust-src" ]; }; in { devShells = forAllSystems (pkgs: { default = import ./nix/shell.nix { inherit pkgs; rustToolchain = rustToolchain pkgs; }; }); packages = forAllSystems (pkgs: { libudev-zero-rs = pkgs.callPackage ./nix/package.nix { rustPlatform = pkgs.makeRustPlatform { cargo = rustToolchain pkgs; rustc = rustToolchain pkgs; }; }; default = self.packages.${pkgs.stdenv.hostPlatform.system}.libudev-zero-rs; }); formatter = forAllSystems ( pkgs: import ./nix/formatter.nix { inherit pkgs; rustToolchain = rustToolchain pkgs; } ); }; }