From 2dca32ed6319c315996adaf1b97d1b4f9fa4e1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Fri, 25 Oct 2019 18:02:58 +0200 Subject: [PATCH] install the bundled package derivations by default --- default.nix | 60 ++++++++++++++++++++++++++++++++---------------- derivations.json | 20 ++++++++++++++++ derivations.lock | 54 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 20 deletions(-) create mode 100644 derivations.json create mode 100644 derivations.lock diff --git a/default.nix b/default.nix index 5a7ce55..0817cce 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,27 @@ { # The files would be going to ~/.config/doom (~/.doom.d) doomPrivateDir - # Package set to install emacs and dependent packages from + /* Package set to install emacs and dependent packages from + + Only used to get emacs package, if `bundledPackages` is set + */ , emacsPackages + /* Use bundled revision of github.com/nix-community/emacs-overlay + as `emacsPackages` + */ +, bundledPackages ? true + /* Override dependency versions + + Hadful for testing out updated dependencies without publishing + a new version of them. + + Type: dependencyOverrides :: attrset -> either path derivation + + Example: + dependencyOverrides = { + "emacs-overlay" = fetchFromGitHub { owner = /* ...*\/; }; + }; + */ +, dependencyOverrides ? { } , lib , pkgs , stdenv @@ -14,6 +34,12 @@ , writeTextDir }: let + lock = pkgs.callPackage + "${builtins.fetchTarball https://github.com/vlaci/nix-lock/archive/develop.tar.gz}/lock.nix" { + path = ./derivations.lock; + overrides = dependencyOverrides; + }; + # Packages we need to get the default doom configuration run overrides = self: super: { evil-escape = super.evil-escape.overrideAttrs (esuper: { @@ -24,24 +50,14 @@ let version = "1"; recipe = null; ename = pname; - src = fetchFromGitHub { - owner = "TobiasZawada"; - repo = "org-yt"; - rev = "40cc1ac76d741055cbefa13860d9f070a7ade001"; - sha256 = "0jsm3azb7lwikvc53z4p91av8qvda9s15wij153spkgjp83kld3p"; - }; + src = lock.get pname; }; }; # Stage 1: prepare source for byte-compilation doomSrc = stdenv.mkDerivation { name = "doom-src"; - src = fetchFromGitHub { - owner = "hlissner"; - repo = "doom-emacs"; - rev = "eb2a67d05ff4b178fedabd36ce448191cce8d6bb"; - sha256 = "05nhsn4q2bbs8m7x88ci2k7cq7hc7ql6xkyv0hmz762ip8g1jvlp"; - }; + src = lock.get "doom-emacs"; phases = ["unpackPhase" "patchPhase" "installPhase"]; patches = [ (substituteAll { @@ -55,16 +71,20 @@ let ''; }; + # Bundled version of `emacs-overlay` + emacs-overlay = import (lock.get "emacs-overlay") pkgs pkgs; + # Stage 2:: install dependencies and byte-compile prepared source doomLocal = let - straight-env = pkgs.callPackage (fetchFromGitHub { - owner = "vlaci"; - repo = "nix-straight.el"; - rev = "v1.0"; - sha256 = "038dss49bfvpj15psh5pr9jyavivninl0rzga9cn8qyc4g2cj5i0"; - }) { - emacsPackages = emacsPackages.overrideScope' overrides; + straight-env = pkgs.callPackage (lock.get "nix-straight.el") { + emacsPackages = + if bundledPackages then + let + epkgs = emacs-overlay.emacsPackagesNgFor emacsPackages.emacs; + in epkgs.overrideScope' overrides + else + emacsPackages.overrideScope' overrides; emacsLoadFiles = [ ./advice.el ]; emacsArgs = [ "install" diff --git a/derivations.json b/derivations.json new file mode 100644 index 0000000..af276f9 --- /dev/null +++ b/derivations.json @@ -0,0 +1,20 @@ +{ + "doom-emacs": { + "repo": "doom-emacs", + "owner": "hlissner", + "rev": "develop" + }, + "nix-straight.el": { + "owner": "vlaci", + "repo": "nix-straight.el", + "rev": "v1.0" + }, + "org-yt": { + "owner": "TobiasZawada", + "repo": "org-yt" + }, + "emacs-overlay": { + "owner": "nix-community", + "repo": "emacs-overlay" + } +} diff --git a/derivations.lock b/derivations.lock new file mode 100644 index 0000000..1a69737 --- /dev/null +++ b/derivations.lock @@ -0,0 +1,54 @@ +{ + "doom-emacs": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "hlissner", + "repo": "doom-emacs", + "rev": "019308a93c639847dccac75149d407b5a06f6c67", + "sha256": "0wqi7m6j1kcjxid651r0p08hswx8yxpshg61358n0jbzl3as1hrk" + }, + "meta": { + "updated": "2019-10-25T22:28:24+00:00", + "rev": "019308a93c639847dccac75149d407b5a06f6c67" + } + }, + "nix-straight.el": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "vlaci", + "repo": "nix-straight.el", + "rev": "6182914aefea06ef514cd3f3f7f9f67db45940db", + "sha256": "038dss49bfvpj15psh5pr9jyavivninl0rzga9cn8qyc4g2cj5i0" + }, + "meta": { + "updated": "2019-10-25T22:28:25+00:00", + "rev": "6182914aefea06ef514cd3f3f7f9f67db45940db" + } + }, + "org-yt": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "TobiasZawada", + "repo": "org-yt", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001", + "sha256": "0jsm3azb7lwikvc53z4p91av8qvda9s15wij153spkgjp83kld3p" + }, + "meta": { + "updated": "2019-10-25T22:28:27+00:00", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001" + } + }, + "emacs-overlay": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "daf9002714e9adfa415a385d939539524482142d", + "sha256": "1w3zyk4847h1avd50cs1r7apw37bsyslv17vjkdk4h0r4gqz9cvs" + }, + "meta": { + "updated": "2019-10-25T22:28:28+00:00", + "rev": "daf9002714e9adfa415a385d939539524482142d" + } + } +}