flake.nix

 1{
 2  description = "Crush development environment";
 3
 4  inputs = {
 5    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 6    flake-utils.url = "github:numtide/flake-utils";
 7  };
 8
 9  outputs = {
10    self,
11    nixpkgs,
12    flake-utils,
13  }:
14    flake-utils.lib.eachDefaultSystem (
15      system: let
16        pkgs = nixpkgs.legacyPackages.${system};
17      in {
18        devShells.default = pkgs.mkShell {
19          buildInputs = with pkgs; [
20            # Go toolchain
21            go_1_26
22
23            # Development tools
24            gopls # Go language server
25            golangci-lint # Linter
26            gofumpt # Formatter (stricter than gofmt)
27            go-task # Task runner
28            delve # Go debugger
29
30            # Additional tools
31            git # Version control
32            gh # GitHub CLI
33            svu # Semantic version utility
34            sqlc # SQL code generator
35          ];
36
37          shellHook = ''
38            # Set Go environment variables
39            export CGO_ENABLED=0
40          '';
41        };
42      }
43    );
44}