Native Lightspeed LiveView app on Mist (Gleam)
1{
2 description = "star — native Lightspeed LiveView on Mist";
3
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 };
7
8 outputs =
9 { self, nixpkgs }:
10 let
11 systems = [
12 "x86_64-linux"
13 "aarch64-linux"
14 "x86_64-darwin"
15 "aarch64-darwin"
16 ];
17 forAllSystems = nixpkgs.lib.genAttrs systems;
18 in
19 {
20 devShells = forAllSystems (
21 system:
22 let
23 pkgs = nixpkgs.legacyPackages.${system};
24 in
25 {
26 default = pkgs.mkShell {
27 packages = [
28 pkgs.gleam
29 pkgs.beamPackages.erlang
30 pkgs.rebar3
31 ];
32
33 shellHook = ''
34 echo "star dev shell"
35 echo " gleam run # http://localhost:8080/"
36 echo " gleam test"
37 '';
38 };
39 }
40 );
41
42 # `nix run` → gleam run (from the current working directory).
43 apps = forAllSystems (
44 system:
45 let
46 pkgs = nixpkgs.legacyPackages.${system};
47 star = pkgs.writeShellApplication {
48 name = "star";
49 runtimeInputs = [
50 pkgs.gleam
51 pkgs.beamPackages.erlang
52 pkgs.rebar3
53 ];
54 text = ''
55 exec gleam run "$@"
56 '';
57 };
58 in
59 {
60 default = {
61 type = "app";
62 program = "${star}/bin/star";
63 };
64 }
65 );
66
67 formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt);
68 };
69}