commit 7c7c16d22960582984455fdcf7e9300b72bee057
parent 67d404e9dc07543e31db8ddcbca101cf0263d4f8
Author: Hannah Izzie Gesser <hannah@totient.eu>
Date: Sun, 3 Aug 2025 12:24:14 +0200
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
|
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" + ] +)