-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflake.nix
More file actions
81 lines (70 loc) · 2.67 KB
/
flake.nix
File metadata and controls
81 lines (70 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
description = "Meeting Plunger - A monorepo with Python FastAPI backend and Golang local-service";
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 = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
# Python (dependencies managed via pip + venv)
python311
# Golang
go
gotools # Includes goimports
gopls # Go language server (for IDE support)
air # Go live reload
oapi-codegen # OpenAPI code generator for Go
# Node.js and pnpm for e2e tests
nodejs_22
nodePackages.pnpm
# Linting and formatting tools
golangci-lint # Go linter
ruff # Python formatter and linter
# Development tools
git
# Optional but useful
curl
jq
];
shellHook = ''
# Add (nix) prefix to prompt
if [[ "$PS1" != *"(nix)"* ]]; then
export PS1="(nix) $PS1"
fi
# Activate Python venv if it exists
if [ -d .venv ]; then
source .venv/bin/activate
fi
echo "🚀 Meeting Plunger Development Environment"
echo ""
echo "Available tools:"
echo " Python: $(python --version)"
echo " Go: $(go version)"
echo " Node.js: $(node --version)"
echo " pnpm: $(pnpm --version)"
echo ""
echo "Quick start:"
echo " pnpm sut # Start backend + local-service (both auto-reload)"
echo " pnpm e2e # Run e2e tests"
echo " pnpm lint # Lint all code"
echo " pnpm format # Format all code"
echo ""
echo "First time setup:"
echo " pnpm install && pnpm e2e:install"
echo " python -m venv .venv && source .venv/bin/activate && pip install -r backend/requirements.txt"
echo ""
echo "More info: docs/QUICK_START.md"
# Note: Playwright will manage its own browsers via 'pnpm exec playwright install'
# We don't use Nix's playwright-driver.browsers to avoid version mismatches
export PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true
'';
};
}
);
}