74 lines
2.2 KiB
Nix
74 lines
2.2 KiB
Nix
{
|
|
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
# as well as the libraries available from your flake's inputs.
|
|
lib,
|
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
|
pkgs,
|
|
# You also have access to your flake's inputs.
|
|
inputs,
|
|
|
|
# Additional metadata is provided by Snowfall Lib.
|
|
system, # The system architecture for this host (eg. `x86_64-linux`).
|
|
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
format, # A normalized name for the system target (eg. `iso`).
|
|
virtual
|
|
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
systems, # An attribute map of your defined hosts.
|
|
|
|
# All other arguments come from the module system.
|
|
config, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.modules.emacs;
|
|
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
|
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
|
in {
|
|
options.modules.emacs = { enable = mkOption { default = false; }; };
|
|
|
|
config = mkIf cfg.enable {
|
|
home.packages = with pkgs; [
|
|
emacs
|
|
binutils # native-comp needs 'as', provided by this
|
|
|
|
## Doom dependencies
|
|
git
|
|
(ripgrep.override { withPCRE2 = true; })
|
|
|
|
## Optional dependencies
|
|
fd # faster projectile indexing
|
|
imagemagick # for image-dired
|
|
zstd # for undo-fu-session/undo-tree compression
|
|
|
|
## Module dependencies
|
|
(aspellWithDicts (ds: with ds; [ en en-computers en-science de ]))
|
|
sqlite
|
|
|
|
# Code formatters for use with doom emacs
|
|
nixfmt # nix
|
|
dockfmt # docker
|
|
google-java-format # java
|
|
black # python
|
|
unstable.rustfmt # rust
|
|
shfmt
|
|
|
|
graphviz
|
|
# Lsps for use with doom emacs
|
|
# neocmakelsp # cmake
|
|
|
|
emacs-all-the-icons-fonts
|
|
];
|
|
|
|
home.activation.installDoomEmacs =
|
|
lib.home-manager.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
if [ ! -d "/home/julian/.config/emacs" ]; then
|
|
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
|
fi
|
|
if [ ! -d "/home/julian/.config/doom" ]; then
|
|
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
|
fi
|
|
'';
|
|
};
|
|
}
|