]> gitweb.ps.run Git - chirp/commitdiff
add flake.nix
authorpatrick-scho <patrick.schoenberger@posteo.de>
Tue, 8 Apr 2025 19:42:32 +0000 (21:42 +0200)
committerpatrick-scho <patrick.schoenberger@posteo.de>
Tue, 8 Apr 2025 19:42:32 +0000 (21:42 +0200)
flake.nix [new file with mode: 0644]

diff --git a/flake.nix b/flake.nix
new file mode 100644 (file)
index 0000000..fd691a8
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,56 @@
+{
+  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;
+    };
+}