summaryrefslogtreecommitdiffstats
path: root/2020/info/08.md
blob: 17769bd388244195d4ce437c5933cfca76f1046c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Building reproducible Emacs
Andrew Tropin

[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--08-building-reproducible-emacs--andrew-tropin.webm"]]  
[Download compressed .webm video (18.4M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--08-building-reproducible-emacs--andrew-tropin--vp9-q56-video-original-audio.webm)

It's not always easy to take part of someone's configuration and make
it work, it's almost never easy to move your configuration to fresh OS
installation or hardware.  Not sure that this snippet is enough to
make package work?  Forgot to install ripgrep in your system for
rg.el?  Got a broken version of package on package-install?

There is a way to make an Emacs configuration reliable, composable and
self-contained.  It's possible to freeze package versions, create
systemd unit for emacs daemon, maintain system dependencies and
package subconfigurations in one place with one tool.

The talk explains how to leverage the power of nix package manager and
use-package to make pretty good emacs configuration.

There is a stream record on the same topic:
<https://youtu.be/2_e3kPJQ93s>.  It lacks few interesting points about
composability of such configuration approach, but already have enough
interesting information.  The talk will be a little more structured
and more Emacs-users oriented.

<!-- from the pad --->

- Actual start and end time (EST): Start: 2020-11-28T11.26.34; Q&A:
  2020-11-28T11.40.48; End 2020-11-28T11.43.33

# Questions

## Do you deal with config files such as emacs-custom.el, some which have sensitive data?
Sensitive data is in other directories that aren't shared, and
emacs-custom.el is completely avoided, as it prevents
reproducible/system independent behaviour.

## How did you learn Nix language basics? Just from the the manual?
He referred to the Nix IRC channel.

## What are the main advantages besides switching computers (which most people rarely do)?
Make parts of config available for projects - sharing with other
people.

## Have you tried Guix in place of Nix? (more parens! :) :)
Currently trying it, and also in-process of switching from Nix to Guix.

# Notes
- Emacs configuration is entangled with the system configuration
  (dired uses ls, grep.el uses grep).
  - Reproducible behaviour is therefore not only dependent of Emacs
    compilation/configuration, but also system configuration.
  - "config.el" files configure Emacs, and accompanying "default.nix"
    files make sure that the correct packages/fonts/libraries/etc are
    installed.
- Reproducible development environment: <https://github.com/abcdw/rde>
- Using Org-roam to demo how to config a Nix layer(?)
  - custom.el conflicts with Nix(?)