From 536d9433c45a5019551d462df3b7578ccbf53067 Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 30 May 2026 07:45:21 +0000 Subject: idk update all of it --- flake.nix | 74 +++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 21 deletions(-) (limited to 'flake.nix') 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} + ''; }; - }); + }; + }; } -- cgit v1.2.3