]> gitweb.ps.run Git - chirp/blobdiff - flake.nix
update submodule urls
[chirp] / flake.nix
index fd691a8755163ebfec058e5c21762ba335dc08bb..29c9adedf3ee958f85d8b947d6faf561770ca5a1 100644 (file)
--- a/flake.nix
+++ b/flake.nix
@@ -1,56 +1,65 @@
 {
-  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";
+  description = "Chirp Flake";
+
+  inputs.self.submodules = true;
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, nixpkgs, flake-utils }:
+    flake-utils.lib.eachDefaultSystem (system:
+      let
+        pkgs = import nixpkgs { inherit system; };
+      in {
+        packages.default = pkgs.stdenv.mkDerivation {
+          pname = "chirp";
+          version = "0.0.0";
+          src = ./.;
+
+          buildPhase = ''
+            mkdir -p .zig-cache-global/zig
+            ${pkgs.zig}/bin/zig build --verbose --global-cache-dir .zig-cache-global
+          '';
+
+          installPhase = ''
+            mkdir -p $out/bin $out/db
+            cp zig-out/bin/chirp $out/bin
+          '';
         };
-      };
 
-      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";
+        apps.default = {
+          type = "app";
+          program = "${self.packages.${system}.default}/bin/chirp";
+        };
+      })
+      // {
+        nixosModules.default = { config, lib, pkgs, ... }: {
+          options.services.chirp = {
+            enable = lib.mkEnableOption "Enable Chirp";
+
+            port = lib.mkOption {
+              type = lib.types.port;
+              default = 8080;
+              description = "Port to listen on";
+            };
           };
-          environment = {
-            PORT = toString config.services.chirp.port;
+
+          config = lib.mkIf config.services.chirp.enable {
+            systemd.services.chirp = {
+              description = "Chirp SystemD Service";
+              wantedBy = ["multi-user.target"];
+              after = ["network.target"];
+              serviceConfig = {
+                ExecStart = "${self.packages.${pkgs.system}.default}/bin/chirp";
+                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;
-    };
 }
+