diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-01-03 12:34:50 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-01-06 12:16:15 +0000 |
commit | 016ab41242b6d8ffb4421c99fd6517bebc668de4 (patch) | |
tree | ecb6d80942121d45258efdaad1799a23817b654a /overlays/patches/emacs/overlay/default.nix | |
parent | f7f87ad5647224a21f3dc6ef14a28f665a7091b6 (diff) | |
parent | fb55d703a751357bb0ebd2e7a0daae753e18b1bc (diff) | |
download | nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar.gz nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar.bz2 nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar.lz nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar.xz nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.tar.zst nixlib-016ab41242b6d8ffb4421c99fd6517bebc668de4.zip |
patches/emacs/overlay: init at 474bafd
Diffstat (limited to 'overlays/patches/emacs/overlay/default.nix')
-rw-r--r-- | overlays/patches/emacs/overlay/default.nix | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/overlays/patches/emacs/overlay/default.nix b/overlays/patches/emacs/overlay/default.nix new file mode 100644 index 000000000000..2f5c45a764a9 --- /dev/null +++ b/overlays/patches/emacs/overlay/default.nix @@ -0,0 +1,194 @@ +self: super: +let + mkExDrv = emacsPackages: name: args: + let + repoMeta = super.lib.importJSON (./repos/exwm/. + "/${name}.json"); + in + emacsPackages.melpaBuild ( + args // { + pname = name; + ename = name; + version = repoMeta.version; + recipe = builtins.toFile "recipe" '' + (${name} :fetcher github + :repo "ch11ng/${name}") + ''; + + src = super.fetchFromGitHub { + owner = "ch11ng"; + repo = name; + inherit (repoMeta) rev sha256; + }; + } + ); + + mkGitEmacs = namePrefix: jsonFile: + let + repoMeta = super.lib.importJSON jsonFile; + fetcher = + if repoMeta.type == "savannah" then + super.fetchFromSavannah + else if repoMeta.type == "github" then + super.fetchFromGitHub + else + throw "Unknown repository type ${repoMeta.type}!"; + in + builtins.foldl' + (drv: fn: fn drv) + self.emacs + [ + + (drv: drv.override { srcRepo = true; }) + + ( + drv: drv.overrideAttrs ( + old: { + name = "${namePrefix}-${repoMeta.version}"; + inherit (repoMeta) version; + src = fetcher (builtins.removeAttrs repoMeta [ "type" "version" ]); + + patches = [ + ./patches/tramp-detect-wrapped-gvfsd.patch + ./patches/clean-env.patch + ]; + postPatch = old.postPatch + '' + substituteInPlace lisp/loadup.el \ + --replace '(emacs-repository-get-version)' '"${repoMeta.rev}"' \ + --replace '(emacs-repository-get-branch)' '"master"' + ''; + + } + ) + ) + + # Stable compat + ( + drv: + let + # The nativeComp passthru attribute is used a heuristic to check if we're on 20.03 or older + isStable = !(super.lib.hasAttr "nativeComp" (drv.passthru or { })); + withX = super.lib.elem "--with-xft" drv.configureFlags; + in + if isStable then drv.overrideAttrs ( + old: { + + configureFlags = old.configureFlags + ++ super.lib.optional withX "--with-cairo"; + + buildInputs = old.buildInputs ++ [ + self.harfbuzz.dev + self.jansson + ] + ++ super.lib.optional withX self.cairo; + + } + ) else drv + ) + ]; + + mkPgtkEmacs = namePrefix: jsonFile: (mkGitEmacs namePrefix jsonFile).overrideAttrs ( + old: { + configureFlags = (super.lib.remove "--with-xft" old.configureFlags) + ++ super.lib.singleton "--with-pgtk"; + } + ); + + emacsGit = mkGitEmacs "emacs-git" ./repos/emacs/emacs-master.json; + + emacsGcc = (mkGitEmacs "emacs-gcc" ./repos/emacs/emacs-feature_native-comp.json).override { + nativeComp = true; + }; + + emacsPgtk = mkPgtkEmacs "emacs-pgtk" ./repos/emacs/emacs-feature_pgtk.json; + + emacsPgtkGcc = (mkPgtkEmacs "emacs-pgtkgcc" ./repos/emacs/emacs-pgtk-nativecomp.json).override { + nativeComp = true; + }; + + emacsUnstable = (mkGitEmacs "emacs-unstable" ./repos/emacs/emacs-unstable.json).overrideAttrs ( + old: { + patches = [ + ./patches/tramp-detect-wrapped-gvfsd-27.patch + ./patches/clean-env.patch + ]; + } + ); + +in +{ + inherit emacsGit emacsUnstable; + + inherit emacsGcc; + + inherit emacsPgtk emacsPgtkGcc; + + emacsGit-nox = ( + ( + emacsGit.override { + withX = false; + withGTK2 = false; + withGTK3 = false; + } + ).overrideAttrs ( + oa: { + name = "${oa.name}-nox"; + } + ) + ); + + emacsUnstable-nox = ( + ( + emacsUnstable.override { + withX = false; + withGTK2 = false; + withGTK3 = false; + } + ).overrideAttrs ( + oa: { + name = "${oa.name}-nox"; + } + ) + ); + + emacsWithPackagesFromUsePackage = import ./elisp.nix { pkgs = self; }; + + emacsWithPackagesFromPackageRequires = import ./packreq.nix { pkgs = self; }; + + emacsPackagesFor = emacs: ( + (super.emacsPackagesFor emacs).overrideScope' ( + eself: esuper: + let + melpaStablePackages = esuper.melpaStablePackages.override { + archiveJson = ./repos/melpa/recipes-archive-melpa.json; + }; + + melpaPackages = esuper.melpaPackages.override { + archiveJson = ./repos/melpa/recipes-archive-melpa.json; + }; + + elpaPackages = esuper.elpaPackages.override { + generated = ./repos/elpa/elpa-generated.nix; + }; + + orgPackages = esuper.orgPackages.override { + generated = ./repos/org/org-generated.nix; + }; + + epkgs = esuper.override { + inherit melpaStablePackages melpaPackages elpaPackages orgPackages; + }; + + in + epkgs // { + xelb = mkExDrv eself "xelb" { + packageRequires = [ eself.cl-generic eself.emacs ]; + }; + + exwm = mkExDrv eself "exwm" { + packageRequires = [ eself.xelb ]; + }; + } + ) + ); + +} |