{ description = "Generate constraint-based diagrams"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11"; inputs.naersk.url = "github:nix-community/naersk"; outputs = { self, nixpkgs, naersk, }: let pkgs = import nixpkgs { overlays = [self.overlays.default]; localSystem = "x86_64-linux"; }; naersk-lib = pkgs.callPackage naersk {}; in { overlays.default = final: prev: { diaphragm = final.lua5_4.passthru.pkgs.toLuaModule (naersk-lib.buildPackage { src = ./.; nativeBuildInputs = with final; [pkg-config rustPlatform.bindgenHook]; buildInputs = with final; [pango z3]; copyBins = false; copyLibs = true; postInstall = '' mkdir -p $out/lib/lua/5.4 $out/share/lua/5.4 mv $out/lib/libdiaphragm.so $out/lib/lua/5.4 cp $src/lua-bindings/diaphragm.lua $out/share/lua/5.4/ ''; }); }; packages.x86_64-linux.default = pkgs.diaphragm; devShell.x86_64-linux = pkgs.mkShell { LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; buildInputs = with pkgs; [ pkg-config cairo gdk-pixbuf gtk3 libxml2 pango z3 cargo-watch lua5_4 luarocks stylua ]; }; }; }