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
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(-)
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 + ''; +}