+17
flake.lock
+17
flake.lock
···
32
"url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"
33
}
34
},
35
+
"ia-fonts-src": {
36
+
"flake": false,
37
+
"locked": {
38
+
"lastModified": 1686932517,
39
+
"narHash": "sha256-2T165nFfCzO65/PIHauJA//S+zug5nUwPcg8NUEydfc=",
40
+
"owner": "iaolo",
41
+
"repo": "iA-Fonts",
42
+
"rev": "f32c04c3058a75d7ce28919ce70fe8800817491b",
43
+
"type": "github"
44
+
},
45
+
"original": {
46
+
"owner": "iaolo",
47
+
"repo": "iA-Fonts",
48
+
"type": "github"
49
+
}
50
+
},
51
"indigo": {
52
"flake": false,
53
"locked": {
···
95
"inputs": {
96
"gitignore": "gitignore",
97
"htmx-src": "htmx-src",
98
+
"ia-fonts-src": "ia-fonts-src",
99
"indigo": "indigo",
100
"lucide-src": "lucide-src",
101
"nixpkgs": "nixpkgs"
+15
-4
flake.nix
+15
-4
flake.nix
···
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";
···
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;
···
63
'';
64
doCheck = false;
65
subPackages = ["cmd/appview"];
66
-
vendorHash = "sha256-u9LwvapAwyVOIOAag0IRrk+ot6B0PaqyEnt0EeJciGQ=";
67
env.CGO_ENABLED = 1;
68
stdenv = pkgsStatic.stdenv;
69
};
···
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;
···
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;
···
91
version = "0.1.0";
92
src = gitignoreSource ./.;
93
subPackages = ["cmd/keyfetch"];
94
-
vendorHash = "sha256-t7lWrCyFWCI7zjUcC6XNWzCrUPSCFnFu9gTmRTsYrz0=";
95
env.CGO_ENABLED = 0;
96
};
97
};
···
117
pkgs.websocat
118
pkgs.tailwindcss
119
];
120
};
121
});
122
apps = forAllSystems (system: let
···
15
url = "https://unpkg.com/lucide@latest";
16
flake = false;
17
};
18
+
ia-fonts-src = {
19
+
url = "github:iaolo/iA-Fonts";
20
+
flake = false;
21
+
};
22
gitignore = {
23
url = "github:hercules-ci/gitignore.nix";
24
inputs.nixpkgs.follows = "nixpkgs";
···
32
htmx-src,
33
lucide-src,
34
gitignore,
35
+
ia-fonts-src,
36
}: let
37
supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
38
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
···
68
'';
69
doCheck = false;
70
subPackages = ["cmd/appview"];
71
+
vendorHash = "sha256-ywhhGrv8KNqy9tCMCnA1PU/RQ/+0Xyitej1L48TcFvI=";
72
env.CGO_ENABLED = 1;
73
stdenv = pkgsStatic.stdenv;
74
};
···
78
version = "0.1.0";
79
src = gitignoreSource ./.;
80
subPackages = ["cmd/knotserver"];
81
+
vendorHash = "sha256-ywhhGrv8KNqy9tCMCnA1PU/RQ/+0Xyitej1L48TcFvI=";
82
env.CGO_ENABLED = 1;
83
};
84
repoguard = with final;
···
87
version = "0.1.0";
88
src = gitignoreSource ./.;
89
subPackages = ["cmd/repoguard"];
90
+
vendorHash = "sha256-ywhhGrv8KNqy9tCMCnA1PU/RQ/+0Xyitej1L48TcFvI=";
91
env.CGO_ENABLED = 0;
92
};
93
keyfetch = with final;
···
96
version = "0.1.0";
97
src = gitignoreSource ./.;
98
subPackages = ["cmd/keyfetch"];
99
+
vendorHash = "sha256-ywhhGrv8KNqy9tCMCnA1PU/RQ/+0Xyitej1L48TcFvI=";
100
env.CGO_ENABLED = 0;
101
};
102
};
···
122
pkgs.websocat
123
pkgs.tailwindcss
124
];
125
+
shellHook = ''
126
+
cp -f ${htmx-src} appview/pages/static/htmx.min.js
127
+
cp -f ${lucide-src} appview/pages/static/lucide.min.js
128
+
cp -f ${ia-fonts-src}/"iA Writer Quattro"/Static/*.ttf appview/pages/static/fonts/
129
+
cp -f ${ia-fonts-src}/"iA Writer Mono"/Static/*.ttf appview/pages/static/fonts/
130
+
'';
131
};
132
});
133
apps = forAllSystems (system: let
+1
-1
go.mod
+1
-1
go.mod
···
6
7
require (
8
github.com/Blank-Xu/sql-adapter v1.1.1
9
github.com/bluekeyes/go-gitdiff v0.8.0
10
github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20
11
github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1
···
30
github.com/Microsoft/go-winio v0.6.2 // indirect
31
github.com/ProtonMail/go-crypto v1.0.0 // indirect
32
github.com/acomagu/bufpipe v1.0.4 // indirect
33
-
github.com/alecthomas/chroma/v2 v2.15.0 // indirect
34
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
35
github.com/aymerick/douceur v0.2.0 // indirect
36
github.com/beorn7/perks v1.0.1 // indirect
···
6
7
require (
8
github.com/Blank-Xu/sql-adapter v1.1.1
9
+
github.com/alecthomas/chroma/v2 v2.15.0
10
github.com/bluekeyes/go-gitdiff v0.8.0
11
github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20
12
github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1
···
31
github.com/Microsoft/go-winio v0.6.2 // indirect
32
github.com/ProtonMail/go-crypto v1.0.0 // indirect
33
github.com/acomagu/bufpipe v1.0.4 // indirect
34
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
35
github.com/aymerick/douceur v0.2.0 // indirect
36
github.com/beorn7/perks v1.0.1 // indirect
+6
go.sum
+6
go.sum
···
9
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
10
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
11
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
12
github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
13
github.com/alecthomas/chroma/v2 v2.15.0/go.mod h1:gUhVLrPDXPtp/f+L1jo9xepo9gL4eLwRuGAunSZMkio=
14
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
15
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
16
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
···
119
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
120
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
121
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
122
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
123
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
124
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
···
9
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
10
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
11
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
12
+
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
13
+
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
14
github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
15
github.com/alecthomas/chroma/v2 v2.15.0/go.mod h1:gUhVLrPDXPtp/f+L1jo9xepo9gL4eLwRuGAunSZMkio=
16
+
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
17
+
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
18
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
19
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
20
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
···
123
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
124
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
125
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
126
+
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
127
+
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
128
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
129
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
130
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+65
input.css
+65
input.css
···
3
@tailwind utilities;
4
@layer base {
5
@font-face {
6
+
font-family: 'iA Writer Quattro S';
7
+
src: url('/static/fonts/iAWriterQuattroS-Regular.ttf') format('truetype');
8
+
font-weight: normal;
9
+
font-style: normal;
10
+
font-display: swap;
11
+
font-feature-settings: "calt" 1, "kern" 1;
12
+
}
13
+
@font-face {
14
+
font-family: 'iA Writer Quattro S';
15
+
src: url('/static/fonts/iAWriterQuattroS-Bold.ttf') format('truetype');
16
+
font-weight: bold;
17
+
font-style: normal;
18
+
font-display: swap;
19
+
}
20
+
@font-face {
21
+
font-family: 'iA Writer Quattro S';
22
+
src: url('/static/fonts/iAWriterQuattroS-Italic.ttf') format('truetype');
23
+
font-weight: normal;
24
+
font-style: italic;
25
+
font-display: swap;
26
+
}
27
+
@font-face {
28
+
font-family: 'iA Writer Quattro S';
29
+
src: url('/static/fonts/iAWriterQuattroS-BoldItalic.ttf') format('truetype');
30
+
font-weight: bold;
31
+
font-style: italic;
32
+
font-display: swap;
33
+
}
34
+
35
+
@font-face {
36
+
font-family: 'iA Writer Mono S';
37
+
src: url('/static/fonts/iAWriterMonoS-Regular.ttf') format('truetype');
38
+
font-weight: normal;
39
+
font-style: normal;
40
+
font-display: swap;
41
+
}
42
+
@font-face {
43
+
font-family: 'iA Writer Mono S';
44
+
src: url('/static/fonts/iAWriterMonoS-Bold.ttf') format('truetype');
45
+
font-weight: bold;
46
+
font-style: normal;
47
+
font-display: swap;
48
+
}
49
+
@font-face {
50
+
font-family: 'iA Writer Mono S';
51
+
src: url('/static/fonts/iAWriterMonoS-Italic.ttf') format('truetype');
52
+
font-weight: normal;
53
+
font-style: italic;
54
+
font-display: swap;
55
+
}
56
+
@font-face {
57
+
font-family: 'iA Writer Mono S';
58
+
src: url('/static/fonts/iAWriterMonoS-BoldItalic.ttf') format('truetype');
59
+
font-weight: bold;
60
+
font-style: italic;
61
+
font-display: swap;
62
+
}
63
+
64
+
@font-face {
65
font-family: "Inter";
66
font-style: normal;
67
font-weight: 400;
···
79
@apply text-black;
80
@apply bg-opacity-30;
81
}
82
+
83
+
html {
84
+
letter-spacing: -0.01em;
85
+
word-spacing: -0.07em;
86
+
}
87
+
88
a {
89
@apply underline text-black hover:text-gray-800;
90
}
+2
-1
tailwind.config.js
+2
-1
tailwind.config.js