{ description = "Chirp!"; inputs = { zig.url = "github:mitchellh/zig-overlay"; }; outputs = { self, zig, pkgs, }: let nixosModule = { config, lib, pkgs, ... }: { options.services.chirp = { enable = lib.mkEnableOption "Chirp"; port = lib.mkOption { type = lib.types.port; default = 8080; description = "Port to listen on"; }; }; config = lib.mkIf config.services.chirp.enable { systemd.services.chirp = { description = "Chirp SystemD Service!"; wantedBy = ["multi-user.target"]; after = ["network.target"]; serviceConfig = { ExecStart = "${zig.packages.master}"; Restart = "always"; Type = "simple"; DynamicUser = "yes"; }; environment = { PORT = toString config.services.chirp.port; }; }; }; }; in { # TODO: packages.default build apps.default = { type = "app"; program = "${zig.packages.${pkgs.system}."0.14.0"} build run"; }; } // { nixosModules.default = nixosModule; }; }