abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules8
-rw-r--r--build.zig39
-rw-r--r--build.zig.zon12
m---------ext/zighttp0
m---------ext/ziglmdb0
-rw-r--r--flake.lock49
-rw-r--r--flake.nix74
8 files changed, 83 insertions, 100 deletions
diff --git a/.gitignore b/.gitignore
index 69d242d..58ae243 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,3 @@ db
zig-out
.zig-cache
ssh
-*
diff --git a/.gitmodules b/.gitmodules
index 83080fc..e69de29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,8 +0,0 @@
-[submodule "ext/zighttp"]
- path = ext/zighttp
- url = git@ps.run:zighttp
- branch = main
-[submodule "ext/ziglmdb"]
- path = ext/ziglmdb
- url = git@ps.run:ziglmdb
- branch = main
diff --git a/build.zig b/build.zig
index b46d414..7b05285 100644
--- a/build.zig
+++ b/build.zig
@@ -6,48 +6,27 @@ pub fn build(b: *std.Build) void {
const exe = b.addExecutable(.{
.name = "chirp",
- .root_source_file = b.path("src/main.zig"),
- .target = target,
- .optimize = optimize,
+ .root_module = b.createModule(.{
+ .root_source_file = b.path("src/main.zig"),
+ .target = target,
+ .optimize = optimize,
+ }),
});
// other modules
exe.root_module.omit_frame_pointer = false;
- const exe_check = b.addExecutable(.{
- .name = "chirp",
- .root_source_file = b.path("src/main.zig"),
- .target = target,
- .optimize = optimize,
- });
-
- const check = b.step("check", "Check if chirp compiles");
- check.dependOn(&exe_check.step);
-
const lmdb = b.dependency("lmdb", .{ .target = target, .optimize = optimize });
- var lmdb_mod = lmdb.module("lmdb");
- lmdb_mod.omit_frame_pointer = false;
- var db_mod = lmdb.module("db");
- db_mod.omit_frame_pointer = false;
- const http = b.dependency("http", .{ .target = target, .optimize = optimize });
- const http_mod = http.module("http");
- // lmdb_mod.omit_frame_pointer = false;
-
- exe.root_module.addImport("http", http_mod);
- exe.root_module.addImport("lmdb", lmdb_mod);
- exe.root_module.addImport("db", db_mod);
- exe.linkLibC();
-
- exe_check.root_module.addImport("http", http_mod);
- exe_check.root_module.addImport("lmdb", lmdb_mod);
- exe_check.root_module.addImport("db", db_mod);
- exe_check.linkLibC();
+ exe.root_module.addImport("lmdb", lmdb.module("lmdb"));
+ exe.root_module.addImport("db", lmdb.module("db"));
+ exe.root_module.link_libc = true;
b.installArtifact(exe);
const run_cmd = b.addRunArtifact(exe);
run_cmd.step.dependOn(b.getInstallStep());
+
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
}
diff --git a/build.zig.zon b/build.zig.zon
index 9a97ec6..b284d7b 100644
--- a/build.zig.zon
+++ b/build.zig.zon
@@ -3,20 +3,14 @@
.fingerprint = 0xec28bf8bb19d527d,
.version = "0.0.0",
.paths = .{
- "src/main.zig",
+ "src",
"build.zig",
"build.zig.zon",
},
.dependencies = .{
.lmdb = .{
- // .url = "git+https://github.com/patrick-scho/ziglmdb#34515088c250366d2e37345997b9c54039395050",
- // .hash = "12205e0c136638e96ddea66e9df03f37d12307a3cc5c6e3adb59f6c3c29632dd0096",
- .path = "ext/ziglmdb",
- },
- .http = .{
- // .url = "git+https://github.com/patrick-scho/zighttp#cbbbc36896f78f177617755a59278342214f4c04",
- // .hash = "1220042dc55c4bf5fe1509264ce93a9f773a66db34212b5d670ef86fdda2d57d7333",
- .path = "ext/zighttp",
+ .url = "https://ps.run/git/ziglmdb/snapshot/ziglmdb-main.tar.gz",
+ .hash = "lmdb-0.0.0-mZjNUcbKBgCMIbeE-uFBaSx7x8bhNmENPw7HoieUgTxy",
},
},
}
diff --git a/ext/zighttp b/ext/zighttp
deleted file mode 160000
-Subproject d2215f174d1c9c8a66c62094d99e1c8d2305b1c
diff --git a/ext/ziglmdb b/ext/ziglmdb
deleted file mode 160000
-Subproject 8a83e6882df4994d1e32d7c633dd4e14e937d9a
diff --git a/flake.lock b/flake.lock
index 90c9144..31358fc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,30 +1,12 @@
{
"nodes": {
- "flake-utils": {
- "inputs": {
- "systems": "systems"
- },
- "locked": {
- "lastModified": 1731533236,
- "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
"nixpkgs": {
"locked": {
- "lastModified": 1744463964,
- "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=",
+ "lastModified": 1777954456,
+ "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650",
+ "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github"
},
"original": {
@@ -36,22 +18,27 @@
},
"root": {
"inputs": {
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs"
+ "nixpkgs": "nixpkgs",
+ "zig": "zig"
}
},
- "systems": {
+ "zig": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
"locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "lastModified": 1778524253,
+ "narHash": "sha256-zm8q9v7KmBjtMTP1x6kk2Fh3XrAySDnZl3dMZl0Jqkc=",
+ "owner": "silversquirl",
+ "repo": "zig-flake",
+ "rev": "824cb996143ba0f42653b5312a1d3cb8822c3947",
"type": "github"
},
"original": {
- "owner": "nix-systems",
- "repo": "default",
+ "owner": "silversquirl",
+ "repo": "zig-flake",
"type": "github"
}
}
diff --git a/flake.nix b/flake.nix
index e32262f..87e704b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,35 +1,67 @@
{
description = "Chirp Flake";
- inputs.self.submodules = true;
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
- inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.zig = {
+ url = "github:silversquirl/zig-flake";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
- outputs = { self, nixpkgs, flake-utils }:
- flake-utils.lib.eachDefaultSystem (system:
- let
- pkgs = import nixpkgs { inherit system; };
- in {
- packages.default = pkgs.stdenvNoCC.mkDerivation {
+ outputs = { self, nixpkgs, zig, ... }:
+ let
+ forAllSystems = f:
+ builtins.mapAttrs
+ (system: pkgs: f pkgs zig.packages.${system}.nightly)
+ nixpkgs.legacyPackages;
+ in {
+ devShells = forAllSystems (pkgs: zig: {
+ default = pkgs.mkShellNoCC {
+ packages = [pkgs.bash zig zig.zls];
+ };
+ });
+
+ packages = forAllSystems (pkgs: zig: {
+ default = zig.makePackage {
pname = "chirp";
version = "0.0.0";
src = ./.;
+ zigReleaseMode = "fast";
+ depsHash = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
+ };
+ });
- buildPhase = ''
- mkdir -p .zig-cache-global/zig
- ${pkgs.zig}/bin/zig build --global-cache-dir .zig-cache-global
- '';
-
- installPhase = ''
- mkdir -p $out/bin
- cp zig-out/bin/chirp $out/bin
- '';
+ nixosModules.default = { config, lib, pkgs, ... }:
+ let cfg = config.services.zhttpws;
+ in {
+ options.services.zhttpws = {
+ enable = lib.mkEnableOption "zhttpws";
+ domain = lib.mkOption {
+ type = lib.types.str;
+ };
+ port = lib.mkOption {
+ type = lib.types.port;
+ };
};
- apps.default = {
- type = "app";
- program = "${self.packages.${system}.default}/bin/chirp";
+ config = lib.mkIf cfg.enable {
+ systemd.services.chirp = {
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ serviceConfig = {
+ ExecStart = "${self.packages.${pkgs.system}.default}/bin/chirp";
+ DynamicUser = true;
+ Restart = "always";
+ };
+ environment = {
+ PORT = toString cfg.port;
+ };
+ };
+
+ services.caddy.virtualHosts."${cfg.domain}".extraConfig = ''
+ reverse_proxy localhost:${toString cfg.port}
+ '';
};
- });
+ };
+ };
}