A character sheet creator for TTRPGs
sheetr.app/
gleam
dnd
dnd5e
atproto
1{
2 inputs = {
3 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4 };
5
6 outputs = {nixpkgs, ...} @ inputs: let
7 lib = nixpkgs.lib;
8 supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
9 forEachSupportedSystem = f:
10 lib.genAttrs supportedSystems (system:
11 f {
12 pkgs = import nixpkgs {inherit system;};
13 });
14 in {
15 devShells = forEachSupportedSystem ({pkgs}: {
16 default = pkgs.mkShell {
17 packages = with pkgs; [
18 gleam
19 beamMinimal28Packages.erlang
20 beamMinimal28Packages.rebar3
21 jq
22 ];
23 };
24 });
25 apps = forEachSupportedSystem ({pkgs}: let
26 cdInto = service: ''
27 rootDir=$(jj --ignore-working-copy root || git rev-parse --show-toplevel) || (echo "error: can't find repo root?"; exit 1)
28 cd "$rootDir/${service}"
29 '';
30 runtimeInputs = with pkgs; [
31 jujutsu
32 gleam
33 beamMinimal28Packages.erlang
34 beamMinimal28Packages.rebar3
35 ];
36 in {
37 # TODO: make default app run both frontend and backend
38 frontend = {
39 type = "app";
40 program = "${(pkgs.writeShellApplication {
41 inherit runtimeInputs;
42 name = "run-frontend";
43 text = ''
44 ${cdInto "frontend"}
45 # TODO: dev server proxy thing
46 ${pkgs.gleam}/bin/gleam run -m lustre/dev start
47 '';
48 })}/bin/run-frontend";
49 };
50 backend = {
51 type = "app";
52 program = "${(pkgs.writeShellApplication {
53 inherit runtimeInputs;
54 name = "run-backend";
55 text = ''
56 ${cdInto "backend"}
57 ${pkgs.gleam}/bin/gleam run
58 '';
59 })}/bin/run-backend";
60 };
61 lexgen = {
62 type = "app";
63 program = "${(pkgs.writeShellApplication {
64 inherit runtimeInputs;
65 name = "run-lexgen";
66 text = ''
67 ${cdInto "shared"}
68 ${pkgs.gleam}/bin/gleam run -m alicia/lexgen -- --dir=${./lexicons}
69 '';
70 })}/bin/run-lexgen";
71 };
72 test = {
73 type = "app";
74 program = "${(pkgs.writeShellApplication {
75 inherit runtimeInputs;
76 name = "run-tests";
77 text = ''
78 ${cdInto "alicia/identity"}
79 ${pkgs.gleam}/bin/gleam test
80 ${cdInto ""}
81 '';
82 })}/bin/run-tests";
83 };
84 });
85 };
86}