86 lines
2.5 kB
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
}
87