diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a589adb --- /dev/null +++ b/flake.nix @@ -0,0 +1,87 @@ +{ + description = "Quad4 Linking Tool development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + }; + + go = pkgs.go_1_25; + + task = pkgs.buildGoModule rec { + pname = "task"; + version = "3.46.3"; + + src = pkgs.fetchFromGitHub { + owner = "go-task"; + repo = "task"; + rev = "v${version}"; + hash = "sha256-163b9ce6ab8afaf0247b60c742f7d7d66fbf1d1f64d91d5cdbf6d75b1dd54b52"; + }; + + vendorHash = null; + + doCheck = false; + + meta = with pkgs.lib; { + description = "A task runner / simpler Make alternative written in Go"; + homepage = "https://taskfile.dev/"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; + }; + + wails = pkgs.buildGoModule rec { + pname = "wails"; + version = "2.11.0"; + + src = pkgs.fetchFromGitHub { + owner = "wailsapp"; + repo = "wails"; + rev = "v${version}"; + hash = "sha256-3dbdf683ce67968c1319436950e6da1f27e6d64802d477105fc4d7a60be19860"; + }; + + vendorHash = null; + + doCheck = false; + + meta = with pkgs.lib; { + description = "Build applications using Go + HTML + CSS + JS"; + homepage = "https://wails.io/"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; + }; + in + { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + go + task + nodejs_20 + nodePackages.pnpm + wails + gcc + pkg-config + ]; + + shellHook = '' + echo "Quad4 Linking Tool Development Environment" + echo "Go version: $(go version)" + echo "Task version: $(task --version 2>/dev/null || echo 'installed')" + echo "Node version: $(node --version)" + echo "pnpm version: $(pnpm --version)" + echo "Wails version: $(wails version 2>/dev/null || echo 'installed')" + ''; + }; + }); +} +