diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..decf1b6 --- /dev/null +++ b/flake.nix @@ -0,0 +1,64 @@ +{ + description = "devshell-shfx"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + }; + + outputs = inputs @ { + self, + nixpkgs, + }: let + defaultSystems = ["aarch64-darwin" "aarch64-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"]; + + forAllSystems = f: + nixpkgs.lib.genAttrs defaultSystems (system: + f system (import nixpkgs { + inherit system; + overlays = builtins.attrValues self.overlays; + })); + in { + overlays.default = final: prev: { + shfx = final.buildNimPackage (finalAttrs: { + pname = "shfx"; + version = "0.0.1"; + + src = final.fetchFromGitea { + domain = "forge.imbored.dev"; + owner = "emileclarkb"; + repo = finalAttrs.pname; + rev = "9d04e47161219b4cd2d7f732bb9a40a25e5c93e5"; + hash = "sha256-d3gl38/5W2WWsYpRZ/TDNo2bpgVZvpuc/2yvVpvWQxI="; + }; + + nimRelease = true; + + nimbleFile = ./shfx.nimble; + lockFile = ./lock.json; + + nimFlags = ["-d:NimblePkgVersion=${finalAttrs.version}"]; + }); + }; + + devShells = forAllSystems ( + system: pkgs: { + default = pkgs.mkShell { + packages = with pkgs; [ + nim + nimble + + shfx + ]; + + shell = "${pkgs.bash}/bin/bash"; + }; + } + ); + + checks = self.packages; + packages = forAllSystems (system: pkgs: rec { + default = shfx; + shfx = pkgs.shfx; + }); + }; +}