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