diff options
| author | Quentin Aristote <quentin@aristote.fr> | 2023-02-22 22:39:56 +0100 |
|---|---|---|
| committer | Quentin Aristote <quentin@aristote.fr> | 2023-02-28 17:47:49 +0100 |
| commit | 70d60e5ee6d1092f765807b8483c9c16d2afa678 (patch) | |
| tree | edeb7a91de348d6fc5dd0e43b9ca7bef794b322c /modules/home-manager/personal/programs/emacs.nix | |
| parent | bbb2f5e7cefb970b3e4994ee51bb2c3a18a073c2 (diff) | |
add home-manager modules
Diffstat (limited to 'modules/home-manager/personal/programs/emacs.nix')
| -rw-r--r-- | modules/home-manager/personal/programs/emacs.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/modules/home-manager/personal/programs/emacs.nix b/modules/home-manager/personal/programs/emacs.nix new file mode 100644 index 0000000..2189541 --- /dev/null +++ b/modules/home-manager/personal/programs/emacs.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.programs.emacs; + spacemacs-update-script = pkgs.callPackage ({ emacs, git }: + pkgs.writeShellApplication { + name = "spacemacs-update"; + + runtimeInputs = [ emacs git ]; + + text = '' + git checkout develop + git pull + git checkout local + git merge develop + emacs --fg-daemon=update-daemon \ + --eval '(progn + (configuration-layer/update-packages "no-confirmation") + (spacemacs/kill-emacs))' + ''; + }) { emacs = cfg.package; }; +in { + config = lib.mkIf cfg.enable { + services.emacs = { + enable = lib.mkDefault true; + client.enable = lib.mkDefault true; + startWithUserSession = lib.mkDefault true; + }; + home.sessionVariables.EDITOR = "emacsclient --create-frame"; + + # add some packages necessary in spacemacs + programs.emacs.extraPackages = + lib.mkDefault (ep: with ep; [ emacsql-sqlite emacsql-sqlite3 ]); + home.packages = with pkgs; [ gnutar source-code-pro ]; + + # spacemacs dotfile + home.file.".spacemacs.d/init.el".source = + lib.mkDefault config.personal.home.dotfiles.spacemacs; + + # service to update spacemacs + systemd.user = + (pkgs.personal.lib.homeManager.serviceWithTimer "spacemacs-update" { + Unit = { + Description = "Update Spacemacs by pulling the develop branch"; + After = [ "network-online.target" "emacs.service" ]; + }; + Service = { + Type = "oneshot"; + WorkingDirectory = "${config.home.homeDirectory}/.emacs.d/"; + ExecStart = "${spacemacs-update-script}"; + }; + Timer = { + Persistent = true; + OnCalendar = "daily"; + }; + Install = { WantedBy = [ "default.target" ]; }; + }); + }; +} |
