{ inputs = { handlebars-rust-src = { url = "github:sunng87/handlebars-rust"; flake = false; }; naersk.url = "github:nix-community/naersk/master"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils, naersk, handlebars-rust-src }: utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; naersk-lib = pkgs.callPackage naersk { }; in rec { packages = { # naersk doesnt work without a Cargo.lock => patch it in handlebars-rust = naersk-lib.buildPackage (pkgs.applyPatches { name = "patched-handlebars-rust-src"; src = handlebars-rust-src; patches = [ ./add-cargo-lockfile.patch ]; }); squeezer = naersk-lib.buildPackage ./squeezer; }; devShells = { default = pkgs.mkShell { nativeBuildInputs = [ packages.handlebars-rust packages.squeezer pkgs.imagemagick pkgs.gnumake pkgs.remake pkgs.jq pkgs.zip (pkgs.python3.withPackages (ps: [ps.clize])) ]; }; rust = pkgs.mkShell { nativeBuildInputs = [ pkgs.cargo pkgs.rustc ]; }; }; } ); }