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}