143 lines
4.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
lucide-src = {
15
url = "https://unpkg.com/lucide@latest";
16
flake = false;
17
};
18
gitignore = {
19
url = "github:hercules-ci/gitignore.nix";
20
inputs.nixpkgs.follows = "nixpkgs";
21
};
22
};
23
24
outputs = {
25
self,
26
nixpkgs,
27
indigo,
28
htmx-src,
29
lucide-src,
30
gitignore,
31
}: let
32
supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
33
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
34
nixpkgsFor = forAllSystems (system:
35
import nixpkgs {
36
inherit system;
37
overlays = [self.overlays.default];
38
});
39
inherit (gitignore.lib) gitignoreSource;
40
in {
41
overlays.default = final: prev: {
42
indigo-lexgen = with final;
43
final.buildGoModule {
44
pname = "indigo-lexgen";
45
version = "0.1.0";
46
src = indigo;
47
subPackages = ["cmd/lexgen"];
48
vendorHash = "sha256-pGc29fgJFq8LP7n/pY1cv6ExZl88PAeFqIbFEhB3xXs=";
49
doCheck = false;
50
};
51
52
appview = with final;
53
final.pkgsStatic.buildGoModule {
54
pname = "appview";
55
version = "0.1.0";
56
src = gitignoreSource ./.;
57
postUnpack = ''
58
pushd source
59
cp -f ${htmx-src} appview/pages/static/htmx.min.js
60
cp -f ${lucide-src} appview/pages/static/lucide.min.js
61
${pkgs.tailwindcss}/bin/tailwindcss -i input.css -o appview/pages/static/tw.css
62
popd
63
'';
64
doCheck = false;
65
subPackages = ["cmd/appview"];
66
vendorHash = "sha256-u9LwvapAwyVOIOAag0IRrk+ot6B0PaqyEnt0EeJciGQ=";
67
env.CGO_ENABLED = 1;
68
stdenv = pkgsStatic.stdenv;
69
};
70
knotserver = with final;
71
final.pkgsStatic.buildGoModule {
72
pname = "knotserver";
73
version = "0.1.0";
74
src = gitignoreSource ./.;
75
subPackages = ["cmd/knotserver"];
76
vendorHash = "sha256-t7lWrCyFWCI7zjUcC6XNWzCrUPSCFnFu9gTmRTsYrz0=";
77
env.CGO_ENABLED = 1;
78
};
79
repoguard = with final;
80
final.pkgsStatic.buildGoModule {
81
pname = "repoguard";
82
version = "0.1.0";
83
src = gitignoreSource ./.;
84
subPackages = ["cmd/repoguard"];
85
vendorHash = "sha256-t7lWrCyFWCI7zjUcC6XNWzCrUPSCFnFu9gTmRTsYrz0=";
86
env.CGO_ENABLED = 0;
87
};
88
keyfetch = with final;
89
final.pkgsStatic.buildGoModule {
90
pname = "keyfetch";
91
version = "0.1.0";
92
src = gitignoreSource ./.;
93
subPackages = ["cmd/keyfetch"];
94
vendorHash = "sha256-t7lWrCyFWCI7zjUcC6XNWzCrUPSCFnFu9gTmRTsYrz0=";
95
env.CGO_ENABLED = 0;
96
};
97
};
98
packages = forAllSystems (system: {
99
inherit (nixpkgsFor."${system}") indigo-lexgen appview knotserver repoguard keyfetch;
100
});
101
defaultPackage = forAllSystems (system: nixpkgsFor.${system}.appview);
102
formatter = forAllSystems (system: nixpkgsFor."${system}".alejandra);
103
devShells = forAllSystems (system: let
104
pkgs = nixpkgsFor.${system};
105
staticShell = pkgs.mkShell.override {
106
stdenv = pkgs.pkgsStatic.stdenv;
107
};
108
in {
109
default = staticShell {
110
nativeBuildInputs = [
111
pkgs.go
112
pkgs.air
113
pkgs.gopls
114
pkgs.httpie
115
pkgs.indigo-lexgen
116
pkgs.litecli
117
pkgs.websocat
118
pkgs.tailwindcss
119
];
120
};
121
});
122
apps = forAllSystems (system: let
123
pkgs = nixpkgsFor."${system}";
124
air-watcher = name:
125
pkgs.writeShellScriptBin "run"
126
''
127
${pkgs.air}/bin/air -c /dev/null \
128
-build.cmd "${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" \
129
-build.bin "./out/${name}.out" \
130
-build.include_ext "go,html,css"
131
'';
132
in {
133
watch-appview = {
134
type = "app";
135
program = ''${air-watcher "appview"}/bin/run'';
136
};
137
watch-knotserver = {
138
type = "app";
139
program = ''${air-watcher "knotserver"}/bin/run'';
140
};
141
});
142
};
143
}
144