updated flake

Changed files
+149 -93
+22 -66
flake.lock
··· 1 { 2 "nodes": { 3 - "flake-utils": { 4 - "inputs": { 5 - "systems": "systems" 6 - }, 7 - "locked": { 8 - "lastModified": 1731533236, 9 - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 - "owner": "numtide", 11 - "repo": "flake-utils", 12 - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 - "type": "github" 14 - }, 15 - "original": { 16 - "owner": "numtide", 17 - "repo": "flake-utils", 18 - "type": "github" 19 - } 20 - }, 21 "naersk": { 22 "inputs": { 23 - "nixpkgs": "nixpkgs" 24 }, 25 "locked": { 26 "lastModified": 1752249768, ··· 38 }, 39 "nixpkgs": { 40 "locked": { 41 - "lastModified": 1752077645, 42 - "narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=", 43 - "owner": "NixOS", 44 - "repo": "nixpkgs", 45 - "rev": "be9e214982e20b8310878ac2baa063a961c1bdf6", 46 - "type": "github" 47 - }, 48 - "original": { 49 - "owner": "NixOS", 50 - "ref": "nixpkgs-unstable", 51 - "repo": "nixpkgs", 52 - "type": "github" 53 - } 54 - }, 55 - "nixpkgs-mozilla": { 56 - "flake": false, 57 - "locked": { 58 - "lastModified": 1744624473, 59 - "narHash": "sha256-S6zT/w5SyAkJ//dYdjbrXgm+6Vkd/k7qqUl4WgZ6jjk=", 60 - "owner": "mozilla", 61 - "repo": "nixpkgs-mozilla", 62 - "rev": "2292d4b35aa854e312ad2e95c4bb5c293656f21a", 63 - "type": "github" 64 - }, 65 - "original": { 66 - "owner": "mozilla", 67 - "repo": "nixpkgs-mozilla", 68 - "type": "github" 69 - } 70 - }, 71 - "nixpkgs_2": { 72 - "locked": { 73 - "lastModified": 1752077645, 74 - "narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=", 75 "owner": "NixOS", 76 "repo": "nixpkgs", 77 - "rev": "be9e214982e20b8310878ac2baa063a961c1bdf6", 78 "type": "github" 79 }, 80 "original": { 81 "owner": "NixOS", 82 - "ref": "nixpkgs-unstable", 83 "repo": "nixpkgs", 84 "type": "github" 85 } 86 }, 87 "root": { 88 "inputs": { 89 - "flake-utils": "flake-utils", 90 "naersk": "naersk", 91 - "nixpkgs": "nixpkgs_2", 92 - "nixpkgs-mozilla": "nixpkgs-mozilla" 93 } 94 }, 95 - "systems": { 96 "locked": { 97 - "lastModified": 1681028828, 98 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 99 - "owner": "nix-systems", 100 - "repo": "default", 101 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 102 "type": "github" 103 }, 104 "original": { 105 - "owner": "nix-systems", 106 - "repo": "default", 107 "type": "github" 108 } 109 }
··· 1 { 2 "nodes": { 3 "naersk": { 4 "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ] 8 }, 9 "locked": { 10 "lastModified": 1752249768, ··· 22 }, 23 "nixpkgs": { 24 "locked": { 25 + "lastModified": 1756787288, 26 + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", 27 "owner": "NixOS", 28 "repo": "nixpkgs", 29 + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", 30 "type": "github" 31 }, 32 "original": { 33 "owner": "NixOS", 34 + "ref": "nixos-unstable", 35 "repo": "nixpkgs", 36 "type": "github" 37 } 38 }, 39 "root": { 40 "inputs": { 41 "naersk": "naersk", 42 + "nixpkgs": "nixpkgs", 43 + "rust-overlay": "rust-overlay" 44 } 45 }, 46 + "rust-overlay": { 47 + "inputs": { 48 + "nixpkgs": [ 49 + "nixpkgs" 50 + ] 51 + }, 52 "locked": { 53 + "lastModified": 1757039615, 54 + "narHash": "sha256-qm53+EUFfzyF8F0MEscHGqf9tx462GV3/zUZrn9wiQU=", 55 + "owner": "oxalica", 56 + "repo": "rust-overlay", 57 + "rev": "4486e04adbb4b0e39f593767f2c36e2211003d01", 58 "type": "github" 59 }, 60 "original": { 61 + "owner": "oxalica", 62 + "repo": "rust-overlay", 63 "type": "github" 64 } 65 }
+127 -27
flake.nix
··· 1 { 2 inputs = { 3 - flake-utils.url = "github:numtide/flake-utils"; 4 - naersk.url = "github:nix-community/naersk"; 5 - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 - nixpkgs-mozilla = { 7 - url = "github:mozilla/nixpkgs-mozilla"; 8 - flake = false; 9 }; 10 }; 11 12 - outputs = { self, flake-utils, naersk, nixpkgs, nixpkgs-mozilla }: 13 - flake-utils.lib.eachDefaultSystem (system: 14 - let 15 - pkgs = (import nixpkgs) { 16 - inherit system; 17 - overlays = [ 18 - (import nixpkgs-mozilla) 19 - ]; 20 - }; 21 22 - naersk' = pkgs.callPackage naersk {}; 23 24 - in { 25 - # For `nix build` & `nix run`: 26 - defaultPackage = naersk'.buildPackage { 27 - src = ./.; 28 - }; 29 30 - # For `nix develop`: 31 - devShell = pkgs.mkShell { 32 - nativeBuildInputs = with pkgs; [ rustc cargo clippy rustfmt rust-analyzer cargo-expand ]; 33 - }; 34 - } 35 - ); 36 }
··· 1 { 2 + description = "Stack allocated structured concurrency"; 3 + 4 inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 + 7 + rust-overlay = { 8 + url = "github:oxalica/rust-overlay"; 9 + inputs.nixpkgs.follows = "nixpkgs"; 10 + }; 11 + 12 + naersk = { 13 + url = "github:nix-community/naersk"; 14 + inputs.nixpkgs.follows = "nixpkgs"; 15 }; 16 }; 17 18 + outputs = { nixpkgs, rust-overlay, naersk, ... }: 19 + let 20 + forAllSystems = function: 21 + nixpkgs.lib.genAttrs [ 22 + "x86_64-linux" 23 + "aarch64-linux" 24 + "riscv64-linux" 25 + "aarch64-darwin" 26 + ] (system: function nixpkgs.legacyPackages.${system}); 27 + 28 + forEachSystem = forAllSystems (pkgs: 29 + let 30 + pkgs' = pkgs.extend rust-overlay.overlays.default; 31 + 32 + rust-stable = pkgs'.rust-bin.stable.latest.default.override { 33 + extensions = [ "rust-src" "clippy" "rustfmt" ]; 34 + }; 35 + 36 + rust-nightly = pkgs'.rust-bin.nightly.latest.default.override { 37 + extensions = [ "rust-src" "clippy" "rustfmt" "miri" ]; 38 + }; 39 40 + naersk-stable = pkgs'.callPackage naersk { 41 + cargo = rust-stable; 42 + rustc = rust-stable; 43 + }; 44 45 + naersk-nightly = pkgs'.callPackage naersk { 46 + cargo = rust-nightly; 47 + rustc = rust-nightly; 48 + }; 49 50 + buildInputs = []; 51 + nativeBuildInputs = []; 52 + 53 + # Production package built with stable Rust 54 + package = naersk-stable.buildPackage { 55 + src = ./.; 56 + inherit buildInputs nativeBuildInputs; 57 + }; 58 + 59 + # Development package built with nightly (for Miri compatibility) 60 + packageNightly = naersk-nightly.buildPackage { 61 + src = ./.; 62 + inherit buildInputs nativeBuildInputs; 63 + }; 64 + 65 + in 66 + { 67 + packages = { 68 + default = package; 69 + stable = package; 70 + nightly = packageNightly; 71 + }; 72 + 73 + devShells = { 74 + default = pkgs'.mkShell { 75 + buildInputs = buildInputs ++ [ 76 + rust-stable 77 + pkgs'.rust-analyzer 78 + ]; 79 + nativeBuildInputs = nativeBuildInputs; 80 + 81 + # RUST_SRC_PATH = "${rust-stable}/lib/rustlib/src/rust/library"; 82 + }; 83 + 84 + nightly = pkgs'.mkShell { 85 + buildInputs = buildInputs ++ [ 86 + rust-nightly 87 + # pkgs'.rust-analyzer 88 + ]; 89 + nativeBuildInputs = nativeBuildInputs; 90 + 91 + # RUST_SRC_PATH = "${rust-nightly}/lib/rustlib/src/rust/library"; 92 + MIRIFLAGS = "-Zmiri-strict-provenance"; 93 + 94 + shellHook = '' 95 + echo "Nightly Rust environment with Miri" 96 + ''; 97 + }; 98 + }; 99 + 100 + checks = { 101 + test = pkgs'.runCommand "cargo-test" { 102 + buildInputs = [ rust-stable ] ++ buildInputs; 103 + nativeBuildInputs = nativeBuildInputs; 104 + } '' 105 + cargo test --release 106 + ''; 107 + 108 + miri = pkgs'.runCommand "cargo-miri-test" { 109 + buildInputs = [ rust-nightly ] ++ buildInputs; 110 + nativeBuildInputs = nativeBuildInputs; 111 + } '' 112 + cargo miri test --release 113 + ''; 114 + 115 + clippy = pkgs'.runCommand "cargo-clippy" { 116 + buildInputs = [ rust-stable ] ++ buildInputs; 117 + nativeBuildInputs = nativeBuildInputs; 118 + } '' 119 + cargo clippy --deny 120 + ''; 121 + 122 + fmt = pkgs'.runCommand "cargo-fmt" { 123 + buildInputs = [ rust-stable ]; 124 + } '' 125 + cargo fmt --all --check 126 + ''; 127 + }; 128 + } 129 + ); 130 + in 131 + { 132 + packages = forAllSystems (pkgs: forEachSystem.${pkgs.system}.packages); 133 + devShells = forAllSystems (pkgs: forEachSystem.${pkgs.system}.devShells); 134 + checks = forAllSystems (pkgs: forEachSystem.${pkgs.system}.checks); 135 + }; 136 }