summaryrefslogtreecommitdiffstatshomepage
path: root/nix/fetch-crate.nix
diff options
context:
space:
mode:
authorsommerfeld <sommerfeld@sommerfeld.dev>2026-09-17 15:05:36 +0100
committersommerfeld <sommerfeld@sommerfeld.dev>2026-09-17 15:05:36 +0100
commit64f4695932ff4d27967cf4f0e854e40371dbcc90 (patch)
treefd7106349ed3705a6de32b3a42e952f2c07582db /nix/fetch-crate.nix
parente67e4fefb7085f94aff5712e9fdbf21ef085f494 (diff)
downloaddotfiles-64f4695932ff4d27967cf4f0e854e40371dbcc90.tar.gz
dotfiles-64f4695932ff4d27967cf4f0e854e40371dbcc90.tar.bz2
dotfiles-64f4695932ff4d27967cf4f0e854e40371dbcc90.zip
Fetch Rust crates from the static archive server
Diffstat (limited to 'nix/fetch-crate.nix')
-rw-r--r--nix/fetch-crate.nix17
1 files changed, 17 insertions, 0 deletions
diff --git a/nix/fetch-crate.nix b/nix/fetch-crate.nix
new file mode 100644
index 0000000..733d83a
--- /dev/null
+++ b/nix/fetch-crate.nix
@@ -0,0 +1,17 @@
+fetchurl: attrs:
+let
+ crate = builtins.match "https://crates[.]io/api/v1/crates/([^/]+)/([^/]+)/download" (
+ attrs.url or ""
+ );
+in
+fetchurl (
+ attrs
+ // (
+ if crate == null then
+ { }
+ else
+ {
+ url = "https://static.crates.io/crates/${builtins.elemAt crate 0}/${builtins.elemAt crate 0}-${builtins.elemAt crate 1}.crate";
+ }
+ )
+)