mirror of
https://github.com/willemml/dotfiles.nix.git
synced 2025-04-12 19:27:17 +00:00
135 lines
4.1 KiB
Nix
135 lines
4.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
aspellPackage = pkgs.aspellWithDicts (d: [d.en d.en-science d.en-computers d.fr]);
|
|
emacsPackage =
|
|
(pkgs.emacsPackagesFor pkgs.emacsGit).emacsWithPackages
|
|
(epkgs:
|
|
(with epkgs; let
|
|
company-mode = epkgs.trivialBuild {
|
|
pname = "company-mode";
|
|
version = "4203cfb";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "company-mode";
|
|
repo = "company-mode";
|
|
rev = "4203cfbe1303ca86e61ffa31cb88d75782dbb893";
|
|
sha256 = "sha256-wj0vXlVkNEA1gD1oT3phzK5Dr/LNkiE2oRzzRmLE+20=";
|
|
};
|
|
};
|
|
mu4e = epkgs.trivialBuild {
|
|
pname = "mu4e";
|
|
version = pkgs.mu.version;
|
|
|
|
src = "${pkgs.mu}/share/emacs/site-lisp/mu4e";
|
|
};
|
|
mu4e-accounts = epkgs.trivialBuild {
|
|
pname = "mu4e-accounts";
|
|
version = "0.1";
|
|
buildInputs = [pkgs.mu];
|
|
src = let
|
|
smtpConfig = name: (
|
|
let
|
|
account = config.accounts.email.accounts.${name};
|
|
port = builtins.toString account.smtp.port;
|
|
host = account.smtp.host;
|
|
in ''
|
|
("${name}"
|
|
(mu4e-drafts-folder "/${name}/${account.folders.drafts}")
|
|
(mu4e-sent-folder "/${name}/${account.folders.sent}")
|
|
(mu4e-trash-folder "/${name}/${account.folders.trash}")
|
|
; (mu4e-maildir-shortcuts
|
|
; '( (:maildir "/${name}/${account.folders.inbox}" :key ?i)
|
|
; (:maildir "/${name}/${account.folders.sent}" :key ?s)
|
|
; (:maildir "/${name}/${account.folders.drafts}" :key ?d)
|
|
; (:maildir "/${name}/${account.folders.trash}" :key ?t)))
|
|
(smtpmail-default-smtp-server "${host}")
|
|
(smtpmail-smtp-server "${host}")
|
|
(smtpmail-smtp-service ${port} )
|
|
(smtpmail-smtp-user "${account.userName}")
|
|
(user-mail-address "${account.address}"))
|
|
''
|
|
);
|
|
smtpAccountStrings = pkgs.lib.forEach (builtins.attrNames config.accounts.email.accounts) (account: " ${(smtpConfig account)} ");
|
|
smtpAccounts = "'( ${pkgs.lib.concatStrings smtpAccountStrings} )";
|
|
in
|
|
pkgs.writeText "mu4e-accounts.el" ''
|
|
(defvar my-mu4e-account-alist ${smtpAccounts} )
|
|
(provide 'mu4e-accounts)
|
|
'';
|
|
};
|
|
org-auctex = epkgs.trivialBuild {
|
|
pname = "org-auctex";
|
|
version = "e1271557b9f36ca94cabcbac816748e7d0dc989c";
|
|
|
|
buildInputs = [epkgs.auctex];
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "karthink";
|
|
repo = "org-auctex";
|
|
rev = "e1271557b9f36ca94cabcbac816748e7d0dc989c";
|
|
sha256 = "sha256-cMAhwybnq5HA1wOaUqDPML3nnh5m1iwEETTPWqPbAvw=";
|
|
};
|
|
};
|
|
in [
|
|
all-the-icons
|
|
all-the-icons-dired
|
|
arduino-mode
|
|
async
|
|
auctex
|
|
calibredb
|
|
cdlatex
|
|
citeproc
|
|
company-mode
|
|
counsel
|
|
editorconfig
|
|
edit-indirect
|
|
format-all
|
|
gnuplot
|
|
graphviz-dot-mode
|
|
htmlize
|
|
ivy
|
|
ivy-bibtex
|
|
magit
|
|
meow
|
|
mu4e
|
|
mu4e-accounts
|
|
nix-mode
|
|
nix-update
|
|
org
|
|
org-auctex
|
|
org-contrib
|
|
org-download
|
|
org-modern
|
|
pdf-tools
|
|
plantuml-mode
|
|
polymode
|
|
poly-org
|
|
rustic
|
|
separedit
|
|
solarized-theme
|
|
swiper
|
|
yasnippet
|
|
])
|
|
++ (with pkgs; [
|
|
aspellPackage
|
|
gnuplot
|
|
plantuml
|
|
sqlite
|
|
]));
|
|
in {
|
|
home.file.".emacs.d/early-init.el".source = ./early-init.el;
|
|
home.file.".emacs.d/init.el".source = ./init.el;
|
|
|
|
programs.emacs.enable = true;
|
|
|
|
programs.emacs.package = emacsPackage;
|
|
|
|
services.emacs = pkgs.lib.mkIf pkgs.stdenv.isLinux {
|
|
enable = true;
|
|
client.enable = true;
|
|
startWithUserSession = true;
|
|
};
|
|
}
|