abouttreesummaryrefslogcommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorPatrick2026-05-30 07:45:21 +0000
committerPatrick2026-05-30 07:45:21 +0000
commit536d9433c45a5019551d462df3b7578ccbf53067 (patch)
tree8f2ee77a92ddd85878f72836494c0c50bf4d54ab /flake.nix
parent0de66dc9f4f86e197d9787a4e74e0e2df1353655 (diff)
downloadchirp-536d9433c45a5019551d462df3b7578ccbf53067.tar.gz
chirp-536d9433c45a5019551d462df3b7578ccbf53067.zip
idk update all of itHEADmain
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix74
1 files changed, 53 insertions, 21 deletions
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}
+ '';
};
- });
+ };
+ };
}