{ 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-1bS8ZZAcemgRG7PTeGTFfd49T9u6U6CxxrbotwCM15A="; }; vendorHash = "sha256-Tm0tqureCRwcP5KKDTa9TO1yZ3Px3ulf9/jKQDDTjDw="; subPackages = [ "cmd/task" ]; 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; [ ]; }; }; wailsSrc = pkgs.fetchFromGitHub { owner = "wailsapp"; repo = "wails"; rev = "v2.11.0"; hash = "sha256-H1Nml2vhCx4IB/CT+kDro5joAw8ewpxoQjDgvqamAr8="; }; wails = pkgs.buildGoModule rec { pname = "wails"; version = "2.11.0"; src = pkgs.runCommand "${pname}-${version}-src" {} '' cp -r ${wailsSrc}/v2 $out chmod -R +w $out ''; vendorHash = "sha256-HAIKhMKRTNI4hsm8Hvn5pUhnCTcitRxiw+WkVmxpfiU="; subPackages = [ "cmd/wails" ]; 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')" ''; }; }); }