2 description = "Chirp Flake";
4 inputs.self.submodules = true;
5 inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 inputs.flake-utils.url = "github:numtide/flake-utils";
8 outputs = { self, nixpkgs, flake-utils }:
9 flake-utils.lib.eachDefaultSystem (system:
11 pkgs = import nixpkgs { inherit system; };
13 packages.default = pkgs.stdenv.mkDerivation {
19 mkdir -p .zig-cache-global/zig
20 ${pkgs.zig}/bin/zig build --verbose --global-cache-dir .zig-cache-global
25 cp zig-out/bin/chirp $out/bin
31 program = "${self.packages.${system}.default}/bin/chirp";
35 nixosModules.default = { config, lib, pkgs, ... }: {
36 options.services.chirp = {
37 enable = lib.mkEnableOption "Enable Chirp";
40 type = lib.types.port;
42 description = "Port to listen on";
46 config = lib.mkIf config.services.chirp.enable {
47 systemd.services.chirp = {
48 description = "Chirp SystemD Service";
49 wantedBy = ["multi-user.target"];
50 after = ["network.target"];
52 ExecStart = "${self.packages.${pkgs.system}.default}/bin/chirp";
58 PORT = toString config.services.chirp.port;