forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1{
2 description = "atproto github";
3
4 inputs = {
5 nixpkgs.url = "github:nixos/nixpkgs";
6 indigo = {
7 url = "github:oppiliappan/indigo";
8 flake = false;
9 };
10 htmx-src = {
11 url = "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js";
12 flake = false;
13 };
14 };
15
16 outputs = {
17 self
18 , nixpkgs
19 , indigo
20 , htmx-src
21 }: let
22 supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
23 forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
24 nixpkgsFor = forAllSystems (system:
25 import nixpkgs {
26 inherit system;
27 overlays = [self.overlays.default];
28 });
29 in {
30 overlays.default = final: prev: {
31 indigo-lexgen = with final;
32 final.buildGoModule {
33 pname = "indigo-lexgen";
34 version = "0.1.0";
35 src = indigo;
36 subPackage = ["cmd/lexgen"];
37 vendorHash = "sha256-pGc29fgJFq8LP7n/pY1cv6ExZl88PAeFqIbFEhB3xXs=";
38 doCheck = false;
39 };
40 };
41 packages = forAllSystems (system: {
42 inherit (nixpkgsFor."${system}") indigo-lexgen;
43 });
44 defaultPackage = forAllSystems (system: nixpkgsFor.${system}.indigo-lexgen);
45 formatter = forAllSystems (system: nixpkgsFor."${system}".alejandra);
46 devShells = forAllSystems (system: let
47 pkgs = nixpkgsFor.${system};
48 staticShell = pkgs.mkShell.override {
49 stdenv = pkgs.pkgsStatic.stdenv;
50 };
51 in {
52 default = staticShell {
53 nativeBuildInputs = [
54 pkgs.go
55 pkgs.air
56 pkgs.gopls
57 pkgs.httpie
58 pkgs.indigo-lexgen
59 pkgs.litecli
60 pkgs.websocat
61 pkgs.tailwindcss
62 ];
63 };
64 });
65 apps = forAllSystems (system: let
66 pkgs = nixpkgsFor."${system}";
67 air-watcher = name:
68 pkgs.writeShellScriptBin "run"
69 ''
70 ${pkgs.air}/bin/air -c /dev/null \
71 -build.cmd "cp -f ${htmx-src} appview/pages/static/htmx.min.js && ${pkgs.tailwindcss}/bin/tailwindcss -i input.css -o ./appview/pages/static/tw.css && ${pkgs.go}/bin/go build -o ./out/${name}.out ./cmd/${name}/main.go" \
72 -build.bin "./out/${name}.out" \
73 -build.include_ext "go,html,css"
74 '';
75 in {
76 watch-appview = {
77 type = "app";
78 program = ''${air-watcher "appview"}/bin/run'';
79 };
80 watch-knotserver = {
81 type = "app";
82 program = ''${air-watcher "knotserver"}/bin/run'';
83 };
84 });
85 };
86}