diff --git a/flake.lock b/flake.lock index b6986fb..2a693b1 100644 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,29 @@ "type": "github" } }, + "kache": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1792081631, + "narHash": "sha256-thzKe50UE6CKYYfKNrVyNdgQdAqr0bLRYOZzvWwlxW8=", + "owner": "kunobi-ninja", + "repo": "kache", + "rev": "96052b4842239bb216f6c4812054203c21550788", + "type": "github" + }, + "original": { + "owner": "kunobi-ninja", + "ref": "stable", + "repo": "kache", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1791637130, @@ -53,11 +76,33 @@ "inputs": { "crane": "crane", "flake-utils": "flake-utils", + "kache": "kache", "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay" + "rust-overlay": "rust-overlay_2" } }, "rust-overlay": { + "inputs": { + "nixpkgs": [ + "kache", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1791101754, + "narHash": "sha256-y/GF+9B0t0TZ0nQiSRMqDXpr76yT7sdDbS/3GNLhzkE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "dbc715a4b7c0ace63b9769a032d1dd34cd89e5bd", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -91,6 +136,27 @@ "repo": "default", "type": "github" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "kache", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1784369104, + "narHash": "sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "df3c0640565d04a0261253cdd89fce78ec50168a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e61ce59..1ebff48 100644 --- a/flake.nix +++ b/flake.nix @@ -7,9 +7,13 @@ rust-overlay.url = "github:oxalica/rust-overlay"; rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; crane.url = "github:ipetkov/crane"; + kache = { + url = "github:kunobi-ninja/kache/stable"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { nixpkgs, flake-utils, rust-overlay, crane, ... }: + outputs = { nixpkgs, flake-utils, rust-overlay, crane, kache, ... }: flake-utils.lib.eachSystem flake-utils.lib.allSystems (system: let pkgs = import nixpkgs { @@ -35,7 +39,8 @@ moldEnv = pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { ${moldVar} = "-C link-arg=-fuse-ld=mold"; }; - runtimePath = pkgs.lib.makeBinPath ([ rust pkgs.stdenv.cc ] ++ mold); + builderTools = [ kache.packages.${system}.default pkgs.bubblewrap pkgs.nushell pkgs.wasm-tools ]; + runtimePath = pkgs.lib.makeBinPath ([ rust pkgs.stdenv.cc ] ++ builderTools ++ mold); # A WASI clang with wasi-libc, so that build scripts (the `cc` crate) # can compile C for wasm32-wasip2. Its headers are WASI 0.1: C code # that needs sockets does not build. @@ -204,10 +209,7 @@ apps.loop = { type = "app"; program = "${loop}/bin/sausage-loop"; }; devShells.default = pkgs.mkShell (wasiCcEnv // moldEnv // { - packages = [ rust pkgs.wasmtime pkgs.wasm-tools ] ++ mold; - shellHook = '' - export CARGO_HOME="$PWD/.cargo-home" - ''; + packages = [ rust pkgs.wasmtime ] ++ builderTools ++ mold; }); }); }