Commit d237926

HPCesia <me@hpcesia.com>
2026-06-13 15:15:54
refactor: miaomiaowu package structure
1 parent 76809db
Changed files (2)
pkgs/miaomiaowu/default.nix
@@ -1,62 +1,22 @@
 {
   lib,
   buildGoModule,
-  buildNpmPackage,
   fetchFromGitHub,
-  runCommand,
-  jq,
+  callPackage,
+  miaomiaowu-frontend ? callPackage ./frontend.nix {},
 }: let
   version = "0.7.8";
 
   src = fetchFromGitHub {
     owner = "iluobei";
     repo = "miaomiaowu";
-    tag = "v0.7.8";
+    tag = "v${version}";
     hash = "sha256-zdD2aW0zqVqBSuzJv5C5hG+hd4/SFkWJo2F5ohWzoKM=";
   };
-
-  # @tailwindcss/oxide is missing resolved/integrity in the lockfile,
-  # which causes prefetch-npm-deps to not download it.
-  srcPatched =
-    runCommand "miaomiaowu-source-patched" {
-      nativeBuildInputs = [jq];
-    } ''
-      cp -r ${src} $out
-      chmod -R u+w $out
-      jq '.packages["node_modules/@tailwindcss/oxide"] += {
-        "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz",
-        "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw=="
-      }' "$out/miaomiaowu/package-lock.json" > tmp.json
-      mv tmp.json "$out/miaomiaowu/package-lock.json"
-    '';
-
-  frontend = buildNpmPackage {
-    pname = "miaomiaowu-frontend";
-    inherit version;
-
-    src = "${srcPatched}/miaomiaowu";
-
-    npmDepsHash = "sha256-KwlLVo5OE77OsaYhOF7dvLfa+Q7KbdbtySo1zHIWC0w=";
-    npmDepsFetcherVersion = 2;
-    makeCacheWritable = true;
-
-    installPhase = ''
-      mkdir -p $out
-      cp -r ../internal/web/dist/* $out/
-    '';
-  };
-
-  srcWithFrontend = runCommand "miaomiaowu-source-with-frontend" {} ''
-    cp -r ${src} $out
-    chmod -R u+w $out
-    cp -r ${frontend} $out/internal/web/dist
-  '';
 in
   buildGoModule (finalAttrs: {
     pname = "miaomiaowu";
-    inherit version;
-
-    src = srcWithFrontend;
+    inherit version src;
 
     vendorHash = "sha256-Q3dpE3sncuSOVjDa2LgevNGb9VJj7mR0cn/sZiGRxjI=";
 
@@ -64,6 +24,11 @@ in
 
     ldflags = ["-s" "-w"];
 
+    postPatch = ''
+      mkdir -p internal/web/dist
+      cp -r ${miaomiaowu-frontend}/* internal/web/dist/
+    '';
+
     postInstall = ''
       mv $out/bin/server $out/bin/${finalAttrs.pname}
     '';
pkgs/miaomiaowu/frontend.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  jq,
+}: let
+  version = "0.7.8";
+
+  src = fetchFromGitHub {
+    owner = "iluobei";
+    repo = "miaomiaowu";
+    tag = "v${version}";
+    hash = "sha256-zdD2aW0zqVqBSuzJv5C5hG+hd4/SFkWJo2F5ohWzoKM=";
+  };
+in
+  buildNpmPackage {
+    pname = "miaomiaowu-frontend";
+    inherit version;
+    src = "${src}/miaomiaowu";
+
+    npmDepsHash = "sha256-KwlLVo5OE77OsaYhOF7dvLfa+Q7KbdbtySo1zHIWC0w=";
+    npmDepsFetcherVersion = 2;
+    makeCacheWritable = true;
+
+    postPatch = ''
+      ${lib.getExe jq} '.packages["node_modules/@tailwindcss/oxide"] += {
+        "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz",
+        "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw=="
+      }' package-lock.json > tmp.json
+      mv tmp.json package-lock.json
+    '';
+
+    installPhase = ''
+      mkdir -p $out
+      cp -r ../internal/web/dist/* $out/
+    '';
+  }