{ description = "rust-template"; inputs = { nixpkgs.url = github:NixOS/nixpkgs; flake-utils.url = github:numtide/flake-utils; rust-overlay = { url = github:oxalica/rust-overlay; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; cargo2nix = { url = github:cargo2nix/cargo2nix/main; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; inputs.rust-overlay.follows = "rust-overlay"; }; flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; }; outputs = { self, nixpkgs, flake-utils, rust-overlay, cargo2nix, ... } @ inputs: flake-utils.lib.eachSystem ["x86_64-linux"] (system: let overlays = [ cargo2nix.overlays.default (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; rustPkgs = pkgs.rustBuilder.makePackageSet { packageFun = import ./Cargo.nix; rustChannel = "nightly"; rustVersion = "latest"; packageOverrides = pkgs: pkgs.rustBuilder.overrides.all; }; in rec { devShells.default = with pkgs; mkShell { buildInputs = [ (rust-bin.nightly.latest.default.override { extensions = ["rust-src"]; }) cargo2nix.packages.${system}.cargo2nix llvmPackages_19.bintools rustfilt openssl pkg-config gdb ]; }; packages = pkgs.lib.mapAttrs (_: v: v {}) rustPkgs.workspace; nixosModules.default = import ./nixos { inherit inputs system; }; checks = pkgs.lib.mapAttrs (_: v: pkgs.rustBuilder.runTests v {}) rustPkgs.workspace; hydraJobs = { inherit packages checks; }; formatter = pkgs.alejandra; }); } # Trick renovate into working: "github:NixOS/nixpkgs/nixpkgs-unstable"