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
deploy = {
67
type = "app";
68
program = "${pkgs.writeShellScriptBin "s3-sync" ''
69
#!/usr/bin/env bash
70
${vite.packages.${system}.vite}/bin/vite build
71
${pkgs.awscli2}/bin/aws s3 sync build s3://site/ --size-only
72
''}/bin/s3-sync";
73
};
74
serve = {
75
type = "app";
76
program = "${pkgs.writeShellScriptBin "vite-serve" ''
77
#!/usr/bin/env bash
78
79
kill_vite() {
80
trap SIGINT
81
echo "cleaning up..."
82
pkill vite
83
exit
84
}
85
trap "kill_vite" INT
86
87
${vite.packages.${system}.vite}/bin/vite serve &
88
find pages/ static/ templates/ | ${pkgs.entr}/bin/entr ${vite.packages.${system}.vite}/bin/vite build --drafts
89
''}/bin/vite-serve";
90
};
91
}
92
);
93
};
94
}
95