zaphyra's git: tgcNUR

fork of https://git.transgirl.cafe/zaphoid/tgc-nix-user-repository

commit 7c7c16d22960582984455fdcf7e9300b72bee057
parent 67d404e9dc07543e31db8ddcbca101cf0263d4f8
Author: Hannah Izzie Gesser <hannah@totient.eu>
Date: Sun, 3 Aug 2025 12:24:14 +0200

pkg: emimacs: No more vibe coding
1 file changed, 73 insertions(+), 52 deletions(-)
M
pkgs/emimacs/package.nix
|
125
++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
diff --git a/pkgs/emimacs/package.nix b/pkgs/emimacs/package.nix
@@ -1,66 +1,87 @@
 {
+  emacs,
+  fetchFromGitea,
   lib,
-  pkgs,
   stdenvNoCC,
   ...
 }:
-stdenvNoCC.mkDerivation {
-  pname = "emimacs";
-  version = "mistress";
-
-  meta = with lib; {
-    description = "emis emacs configuration with dynamic dependencies and all wohoo";
-    homepage = "https://git.linfan.moe/emily/emacs";
-    license = licenses.gpl3Plus;
-    platforms = platforms.unix;
-    sourceProvenance = sourceTypes.fromSource;
+let
+  src = fetchFromGitea {
+    domain = "git.linfan.moe";
+    owner = "emily";
+    repo = "emacs";
+    rev = "cb74238d43a1872aa19585d45d9e427e86a55e23";
+    hash = "sha256-oO3Ec7hsWiiGug9P7Uwx/pMmN4eoSBkPLWBnM8tSs/k=";
   };
+in
+builtins.listToAttrs (
+  map
+    (name: {
+      inherit name;
+      value = stdenvNoCC.mkDerivation {
+        pname = "emimacs";
+        version = "mistress";
 
-  buildInputs = [ emacs.pkgs.withPackages (epkgs:
-    builtins.map
-      (name: if (builtins.hasAttr name epkgs.melpaPackages) then epkgs.melpaPackages.${name} else epkgs.${name})
-      (builtins.fromJSON ( builtins.readFile (
-        stdenvNoCC.mkDerivation {
-          name = "emimacs-dependencies.json";
+        meta = with lib; {
+          description = "emis emacs configuration with dynamic dependencies and all wohoo";
+          homepage = "https://git.linfan.moe/emily/emacs";
+          license = licenses.gpl3Plus;
+          platforms = platforms.unix;
+        };
 
-          # it feels a little stupid that we need to have this twice...
-          src = fetchFromGitea {
-            domain = "git.linfan.moe";
-            owner = "emily";
-            repo = "emacs";
-            rev = "f592e91739590d980410e832583bd3ca5453ecb2";
-            hash = ""; # later
-          };
+        buildInputs = [
+          (emacs.pkgs.withPackages (
+            epkgs:
+            builtins.map
+              (
+                name:
+                if (builtins.hasAttr name epkgs.melpaPackages) then epkgs.melpaPackages.${name} else epkgs.${name}
+              )
+              (
+                builtins.fromJSON (
+                  builtins.readFile (
+                    stdenvNoCC.mkDerivation {
+                      name = "emimacs-dependencies.json";
 
-          phases = [ "unpackPhase" "buildPhase" "installPhase" ];
+                      inherit src;
 
-          buildInputs = with pkgs; [ emacs-nox ];
+                      phases = [
+                        "unpackPhase"
+                        "buildPhase"
+                        "installPhase"
+                      ];
 
-          buildPhase = ''
-            emacs --batch --script $src/init.el > dependencies.json
-          '';
+                      buildInputs = [ emacs ];
 
-          installPhase = ''
-            mkdir -p $out
-            cp dependencies.json $out
-          '';
-        }
-      )))
-  )];
+                      buildPhase = ''
+                        export EMIMACS_HOST=${name}
+                        emacs --batch --script $src/init.el > dependencies.json
+                      '';
 
-  src = fetchFromGitea {
-    domain = "git.linfan.moe";
-    owner = "emily";
-    repo = "emacs";
-    rev = "f592e91739590d980410e832583bd3ca5453ecb2";
-    hash = ""; # later
-  };
+                      installPhase = ''
+                        cp dependencies.json $out
+                      '';
+                    }
+                  )
+                )
+              )
+          ))
+        ];
+
+        inherit src;
+
+        installPhase = ''
+          mkdir -p $out
+          cp $src/early-init.el $out/early-init.el
+          cp $src/init.el $out/init.el
+          cp $src/LICENSE $out/LICENSE
+          cp -r $src/config $out/config
+        '';
 
-  installPhase = ''
-    mkdir -p $out
-    cp $src/early-init.el $out/early-init.el
-    cp $src/init.el $out/init.el
-    cp $src/LICENSE $out/LICENSE
-    cp -r $src/config $out/config
-  '';
-}
+      };
+    })
+    [
+      "eminix"
+      "emidesk"
+    ]
+)