94 lines
2.5 kB
1
{
2
description = "site";
3
4
inputs = {
5
nixpkgs.url = "github:nixos/nixpkgs";
6
vite.url = "github:icyphox/go-vite";
7
ia-fonts-src = {
8
url = "github:iaolo/iA-Fonts";
9
flake = false;
10
};
11
};
12
13
outputs =
14
{ self
15
, nixpkgs
16
, vite
17
, ia-fonts-src
18
}:
19
let
20
supportedSystems = [
21
"x86_64-linux"
22
"x86_64-darwin"
23
"aarch64-linux"
24
"aarch64-darwin"
25
];
26
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
27
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
28
in
29
{
30
devShells = forAllSystems (
31
system:
32
let
33
pkgs = nixpkgsFor.${system};
34
in
35
{
36
default = pkgs.mkShell {
37
buildInputs = [
38
vite.packages.${system}.vite
39
pkgs.gotools
40
pkgs.gnumake
41
pkgs.entr
42
pkgs.tailwindcss
43
];
44
shellHook = ''
45
cp -f ${ia-fonts-src}/"iA Writer Quattro"/Static/*.ttf static/fonts/
46
cp -f ${ia-fonts-src}/"iA Writer Mono"/Static/*.ttf static/fonts/
47
'';
48
};
49
}
50
);
51
52
apps = forAllSystems (
53
system:
54
let
55
pkgs = nixpkgsFor.${system};
56
in
57
{
58
default = {
59
type = "app";
60
program = "${pkgs.writeShellScriptBin "vite-build" ''
61
#!/usr/bin/env bash
62
${vite.packages.${system}.vite}/bin/vite build
63
''}/bin/vite-build";
64
cwd = ./.;
65
};
66
serve = {
67
type = "app";
68
program = "${pkgs.writeShellScriptBin "vite-serve" ''
69
#!/usr/bin/env bash
70
71
kill_vite() {
72
trap SIGINT
73
echo "cleaning up..."
74
pkill vite
75
exit
76
}
77
trap "kill_vite" INT
78
79
${vite.packages.${system}.vite}/bin/vite serve &
80
find pages/ static/ templates/ | ${pkgs.entr}/bin/entr ${vite.packages.${system}.vite}/bin/vite build --drafts
81
''}/bin/vite-serve";
82
};
83
deploy = {
84
type = "app";
85
program = "${pkgs.writeShellScriptBin "deploy" ''
86
#!/usr/bin/env bash
87
${vite.packages.${system}.vite}/bin/vite build
88
${pkgs.wrangler}/bin/wrangler pages deploy --project-name tangled-blog ./build
89
''}/bin/deploy";
90
};
91
}
92
);
93
};
94
}
95