diff --git a/machines/Lilim/options.nix b/machines/Lilim/options.nix index 2ab17b3..b23b076 100644 --- a/machines/Lilim/options.nix +++ b/machines/Lilim/options.nix @@ -30,9 +30,12 @@ with lib; # "emacs::powerline" "emacs::nix-mode" "emacs::magit" + "emacs::mu4e" "emacs::org" "emacs::elpy" + "emacs::transmission" # "emacs::rust" +# "emacs::lsp" "extra" "cpp" "haskell" diff --git a/pkgs/pkgsets/emacs/transmission.nix b/pkgs/pkgsets/emacs/transmission.nix new file mode 100644 index 0000000..5cb7e8e --- /dev/null +++ b/pkgs/pkgsets/emacs/transmission.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +with lib; + +mkIf (elem "emacs::transmission" config.machine.pkgs) { + programs.emacs.init.usePackage = { + transmission = { + enable = true; + defer = true; + command = [ "transmission" ]; + bindLocal = { + transmission-mode-map = { + "A" = ''(lambda () + (interactive) + (transmission-add (read-string "Magnet URI: ")))''; + }; + }; + config = '' + ;; Auto refresh for all transmission buffers + (setq transmission-refresh-modes '(transmission-mode + transmission-files-mode + transmission-info-mode + transmission-peers-mode)) + + (defun transmission () + "Open a `transmission-mode' buffer." + (interactive) + (let* ((name "*transmission*") + (buffer (or (get-buffer name) + (generate-new-buffer name)))) + (transmission-turtle-poll) + (unless (eq buffer (current-buffer)) + (with-current-buffer buffer + (unless (eq major-mode 'transmission-mode) + (condition-case e + (progn + (transmission-mode) + (transmission-draw) + (goto-char (point-min))) + (error + (kill-buffer buffer) + (signal (car e) (cdr e)))))) + (switch-to-buffer buffer)))) + ''; + }; + }; +}