zaphyra's git: tgcNUR

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

commit 4545b7f022c5dccb789cf42a38459de8fa211ae9
parent 24c41ce554350194de51fb725012f45fd859d16e
Author: emily lucy onyx reia yuki linfan ishikawa <elishikawa+git@jagudev.net>
Date: Mon, 28 Jul 2025 02:03:47 +0200

emacs
1 file changed, 66 insertions(+), 0 deletions(-)
A
pkgs/emimacs/package.nix
|
66
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/pkgs/emimacs/package.nix b/pkgs/emimacs/package.nix
@@ -0,0 +1,66 @@
+{
+  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;
+  };
+
+  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";
+
+          # 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
+          };
+
+          phases = [ "unpackPhase" "buildPhase" "installPhase" ];
+
+          buildInputs = with pkgs; [ emacs-nox ];
+
+          buildPhase = ''
+            emacs --batch --script $src/init.el > dependencies.json
+          '';
+
+          installPhase = ''
+            mkdir -p $out
+            cp dependencies.json $out
+          '';
+        }
+      )))
+  )];
+
+  src = fetchFromGitea {
+    domain = "git.linfan.moe";
+    owner = "emily";
+    repo = "emacs";
+    rev = "f592e91739590d980410e832583bd3ca5453ecb2";
+    hash = ""; # later
+  };
+
+  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
+  '';
+}