diff --git a/flake.lock b/flake.lock index c6af7fc..57d1ec1 100644 --- a/flake.lock +++ b/flake.lock @@ -38,6 +38,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1716715802, @@ -58,7 +76,29 @@ "inputs": { "crane": "crane", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717985971, + "narHash": "sha256-24h/qKp0aeI+Ew13WdRF521kY24PYa5HOvw0mlrABjk=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "abfe5b3126b1b7e9e4daafc1c6478d17f0b584e7", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "systems": { @@ -75,6 +115,21 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 502a641..e1747c0 100644 --- a/flake.nix +++ b/flake.nix @@ -8,14 +8,19 @@ url = "github:ipetkov/crane"; inputs.nixpkgs.follows = "nixpkgs"; }; + + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, crane, flake-utils, ... }: + outputs = { self, nixpkgs, crane, flake-utils, rust-overlay, ... }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = nixpkgs.legacyPackages.${system}.appendOverlays [(import rust-overlay)]; craneLib = crane.mkLib pkgs; my-crate = craneLib.buildPackage { src = craneLib.cleanCargoSource (craneLib.path ./.); @@ -39,9 +44,7 @@ packages = with pkgs; [ cargo - rustc - rust-analyzer - rustfmt + (rust-bin.stable.latest.default.override {extensions = ["rust-src"];}) ]; }; }); diff --git a/src/main.rs b/src/main.rs index 4667caa..7bb243e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -128,12 +128,12 @@ async fn fetch_twitter_image_link(http: &reqwest::Client, url: &Uri) -> AppResul .path_and_query(url.path_and_query().unwrap().clone()) .build()? .to_string(); - let req = http.get(fxurl).build()?; + let req = http.get(&fxurl).build()?; let resp = http.execute(req).await?.error_for_status()?; let link = resp .headers() .get(http::header::LOCATION) - .unwrap() + .ok_or_else(|| format!("twitter link {fxurl} did not return an image location"))? .to_str()?; // use webp format for direct twitter links since webp is cheaper Ok(format!("{link}?format=webp"))