# 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 .webm video, 720p, 124MB](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--08-building-reproducible-emacs--andrew-tropin.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: . 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. - 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: ## using Org-roam to demo how to config a Nix layer(?) custom.el conflicts with Nix(?)