Unstraightened combines the power of Doom Emacs with the efficiency of Nix, providing a tailored environment for developers. By packaging user configurations and dependencies, it simplifies setup on both Linux and macOS, ensuring you have the latest updates. Experience a smoother coding experience without the usual hassle of configuration. Dive into Unstraightened and elevate your Emacs usage.
nix-doom-emacs-unstraightened is a powerful tool that facilitates the building of Doom Emacs using Nix, seamlessly bundling user configuration directories along with their specified dependencies. This repository, affectionately known as "Unstraightened," offers a unique implementation that's similar to nix-doom-emacs, yet differentiates itself with its distinct approach.
Project Status
Currently, Doom Emacs is pinned to a commit from early November due to recent changes in Doom's initialization affecting Unstraightened. For tracking purposes, you can refer to issue #39. It's worth noting that org-roam may not function correctly at this time, and users are encouraged to report any encountered issues.
The tool has been successfully tested on both Linux and macOS platforms. Upon reviewing the CI status badge above, if it indicates a passing state, rest assured that Unstraightened installs an up-to-date version of Doom Emacs along with the majority of its module dependencies.
Key Features
- Efficiency: Updates to Doom and its dependencies are managed along with your Nix packages with no need for separate commands such as
doom sync
. - Reproducible: Unlike standard Doom installations that can pull live versions of some packages, Unstraightened employs Nix’s impeccable pinning system, ensuring your configuration is tamper-proof and reliable.
- Configuration Storage: Your Doom configuration is stored in the Nix store, aligning enabled modules directly with available dependencies for optimal integrity.
Getting Started
Running a Test
To run a test session, simply follow these steps:
- Clone this repository.
- Optionally, update
nixpkgs
using eithernix flake update nixpkgs
for Nix 2.19+ ornix flake lock --update-input nixpkgs
for earlier versions. This allows Unstraightened to make use of dependencies already on your system. - Overwrite the contents of
doomdir
with your personal Doom configuration. - Confirm all files are added using
git add doomdir
. - Execute
nix run .#doom-emacs
.
Flake Input
To add Unstraightened as a flake input, include it in your flake.nix
:
inputs = {
nix-doom-emacs-unstraightened.url = "github:marienz/nix-doom-emacs-unstraightened";
};
For Home Manager users, the necessary modules can be easily incorporated into your configuration.
Frequently Asked Questions
How to Add Additional Packages?
To include more packages, simply add (package! foo)
to your packages.el
.
If you wish to delve deeper into specific configurations, including those not covered here, feel free to explore or propose enhancements by filing an issue.
Performance Optimizations
If you're experiencing slower builds, setting Nix's max-jobs
to be greater than 1 may significantly improve build time. Unstraightened uses Nix and its native compilation, meaning build times may vary depending on other configurations.
Community Support
For any bugs or inquiries, the community encourages users to refrain from reporting issues upstream; instead, replicate outside of Unstraightened first. Our collaborative approach ensures any challenges encountered can be addressed effectively within the project's community.
By enabling seamless integration of Doom Emacs with Nix, nix-doom-emacs-unstraightened paves the way for a cleaner, more reliable, and user-friendly configuration experience. Join us in enhancing your emacs environment with this innovative tool!