|
3 | 3 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
4 | 4 | flake-utils.url = "github:numtide/flake-utils"; |
5 | 5 | }; |
6 | | - |
7 | | - outputs = |
8 | | - { |
9 | | - self, |
10 | | - nixpkgs, |
11 | | - flake-utils, |
12 | | - }: |
| 6 | + outputs = { self, nixpkgs, flake-utils }: |
13 | 7 | flake-utils.lib.eachDefaultSystem ( |
14 | 8 | system: |
15 | 9 | let |
16 | 10 | pkgs = nixpkgs.legacyPackages.${system}; |
17 | | - |
18 | 11 | buildPkgs = with pkgs; [ |
19 | 12 | pkg-config |
20 | 13 | templ |
21 | 14 | scdoc |
22 | 15 | go |
23 | 16 | tailwindcss_4 |
| 17 | + zig # Add Zig |
24 | 18 | ]; |
25 | | - |
26 | 19 | devPkgs = with pkgs; [ |
27 | 20 | just |
28 | 21 | air |
|
32 | 25 | hivemind |
33 | 26 | watchman |
34 | 27 | ]; |
35 | | - |
36 | | - mkPolybase = |
37 | | - os: |
| 28 | + mkPolybase = os: |
38 | 29 | pkgs.buildGoModule { |
39 | 30 | pname = "polybase"; |
40 | 31 | version = "0.1.0"; |
41 | 32 | src = ./.; |
42 | 33 | vendorHash = "sha256-l5RNYoXMVAUeI96lTO0who2uje3IrlycD2GpCDFX3F0="; |
43 | | - |
44 | 34 | nativeBuildInputs = buildPkgs; |
45 | | - |
| 35 | + |
46 | 36 | postPatch = '' |
47 | 37 | tailwindcss -i static/css/main.css -o static/css/styles.css -m |
48 | 38 | templ generate |
49 | 39 | ''; |
50 | | - |
| 40 | + |
| 41 | + preBuild = '' |
| 42 | + export CGO_ENABLED=1 |
| 43 | + export GOOS=${os} |
| 44 | + export GOARCH=amd64 |
| 45 | + |
| 46 | + export CC="zig cc -target x86_64-${os}" |
| 47 | + export CXX="zig c++ -target x86_64-${os}" |
| 48 | + ''; |
| 49 | + |
51 | 50 | buildPhase = '' |
52 | 51 | go test ./tests/... |
53 | | -
|
54 | | - export GOOS=${os} GOARCH=amd64 CGO_ENABLED=0 |
| 52 | + |
55 | 53 | mkdir -p bin |
56 | 54 | go build -o bin/polybased ./polybased |
57 | 55 | go build -o bin/polybase ./polybase |
| 56 | + |
58 | 57 | scdoc < polybase.1.scd | sed "s/1980-01-01/$(date '+%B %Y')/" > polybase.1 |
59 | 58 | scdoc < polybased.1.scd | sed "s/1980-01-01/$(date '+%B %Y')/" > polybased.1 |
60 | 59 | ''; |
61 | | - |
| 60 | + |
62 | 61 | installPhase = '' |
63 | 62 | mkdir -p $out/dist/{usr/local/bin,usr/local/man/man1,etc/rc.d} |
64 | 63 | cp bin/polybased bin/polybase $out/dist/usr/local/bin/ |
|
71 | 70 | { |
72 | 71 | packages = { |
73 | 72 | default = mkPolybase "openbsd"; |
74 | | - |
75 | 73 | docker = pkgs.dockerTools.buildImage { |
76 | 74 | name = "polybase"; |
77 | 75 | tag = "latest"; |
78 | | - |
79 | 76 | extraCommands = '' |
80 | 77 | mkdir -p var/lib/polybase var/log/polybase etc/polybase |
81 | | -
|
82 | 78 | find ${./.}/migrations -name "*.sql" | \ |
83 | 79 | sort -n | \ |
84 | 80 | xargs cat | \ |
85 | 81 | ${pkgs.sqlite}/bin/sqlite3 var/lib/polybase/polybase.db |
86 | | -
|
87 | 82 | chmod 755 var/lib/polybase var/log/polybase |
88 | 83 | chmod 644 var/lib/polybase/polybase.db |
89 | | -
|
90 | 84 | touch etc/polybase/polybase.cfg |
91 | 85 | ''; |
92 | | - |
93 | 86 | config = { |
94 | 87 | Cmd = [ "${mkPolybase "linux"}/dist/usr/local/bin/polybased" ]; |
95 | 88 | ExposedPorts = { |
|
101 | 94 | }; |
102 | 95 | }; |
103 | 96 | }; |
104 | | - |
105 | 97 | devShell = pkgs.mkShell { |
106 | 98 | nativeBuildInputs = buildPkgs; |
107 | 99 | buildInputs = devPkgs; |
|
0 commit comments