--- /dev/null
+{
+ 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;
+ };
+}