79 lines
2.1 KiB
Nix
79 lines
2.1 KiB
Nix
{
|
|
description = "A trevstack development environment";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = { nixpkgs, flake-utils, ... }@inputs:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
};
|
|
protoc-gen-connect-openapi = pkgs.buildGoModule rec {
|
|
name = "protoc-gen-connect-openapi";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "sudorandom";
|
|
repo = "protoc-gen-connect-openapi";
|
|
rev = "v0.16.1";
|
|
sha256 = "sha256-3XBQCc9H9N/AZm/8J5bJRgBhVtoZKFvbdTB+glHxYdA=";
|
|
};
|
|
vendorHash = "sha256-CIiG/XhV8xxjYY0sZcSvIFcJ1Wh8LyDDwqem2cSSwBA=";
|
|
nativeCheckInputs = with pkgs; [ less ];
|
|
};
|
|
in
|
|
{
|
|
devShells.default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
# Go backend
|
|
go
|
|
gotools
|
|
gopls
|
|
goreleaser
|
|
air
|
|
|
|
# Protobuf middleware
|
|
buf
|
|
protoc-gen-go
|
|
protoc-gen-connect-go
|
|
protoc-gen-connect-openapi
|
|
|
|
# Svelte frontend
|
|
nodejs_22
|
|
|
|
# Helper scripts
|
|
(writeShellApplication {
|
|
name = "run";
|
|
|
|
text = ''
|
|
gitroot=$(git rev-parse --show-toplevel)
|
|
(cd "''${gitroot}" && air) & (cd "''${gitroot}" && npm run dev) && fg
|
|
'';
|
|
})
|
|
|
|
(writeShellApplication {
|
|
name = "build";
|
|
|
|
text = ''
|
|
gitroot=$(git rev-parse --show-toplevel)
|
|
(cd "''${gitroot}" && npm run build) && (cd "''${gitroot}" && go build -o ./build_server/golte .)
|
|
'';
|
|
})
|
|
|
|
(writeShellApplication {
|
|
name = "gen";
|
|
|
|
text = ''
|
|
gitroot=$(git rev-parse --show-toplevel)
|
|
(cd "''${gitroot}" && buf generate)
|
|
'';
|
|
})
|
|
];
|
|
};
|
|
}
|
|
);
|
|
}
|