feat(wpcarro/emacs): Support marcus.el

Sometimes I need device-specific Elisp. This is similar to what I'm doing in
google-briefcase (my gLinux-specific configuration).

Change-Id: Idc4031e74d31a91fb8d943acfaeb90b8742fbfc4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5084
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
This commit is contained in:
William Carroll 2022-01-27 22:21:37 -08:00 committed by clbot
parent cdc18c025a
commit aa502c3baf
3 changed files with 47 additions and 6 deletions

View file

@ -3,12 +3,11 @@
# TODO(wpcarro): See if it's possible to expose emacsclient on PATH, so that I
# don't need to depend on wpcarros-emacs and emacs in my NixOS configurations.
let
inherit (builtins) path;
inherit (depot.third_party.nixpkgs) emacsPackagesGen emacs27;
inherit (depot.users) wpcarro;
inherit (pkgs) runCommand writeShellScriptBin;
inherit (lib) mapAttrsToList;
inherit (lib.strings) concatStringsSep makeBinPath;
inherit (pkgs) runCommand writeShellScriptBin;
emacsBinPath = makeBinPath (
wpcarro.common.shell-utils ++
@ -129,7 +128,7 @@ let
makeEnvVars = env: concatStringsSep "\n"
(mapAttrsToList (k: v: "export ${k}=\"${v}\"") env);
withEmacsPath = { emacsBin, env ? {} }:
withEmacsPath = { emacsBin, env ? {}, load ? [] }:
writeShellScriptBin "wpcarros-emacs" ''
export XMODIFIERS=emacs
export PATH="${emacsBinPath}:$PATH"
@ -141,12 +140,14 @@ let
--no-site-file \
--no-site-lisp \
--load ${./.emacs.d/init.el} \
${concatStringsSep "\n" (map (el: "--load ${el} \\") load)}
"$@"
'';
in {
inherit withEmacsPath;
nixos = withEmacsPath {
nixos = { load ? [] }: withEmacsPath {
inherit load;
emacsBin = "${wpcarrosEmacs}/bin/emacs";
};
@ -166,5 +167,5 @@ in {
touch $out
'';
meta.targets = [ "nixos" "check" ];
meta.targets = [ "check" ];
}

View file

@ -3,7 +3,10 @@
let
inherit (depot.users) wpcarro;
wpcarrosEmacs = wpcarro.emacs.nixos;
wpcarrosEmacs = wpcarro.emacs.nixos {
load = [ ./marcus.el ];
};
quasselClient = pkgs.quassel.override {
client = true;

View file

@ -0,0 +1,37 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dependencies
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'display)
(require 'window-manager)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Monitor Configuration
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(display-register laptop
:output "eDP-1"
:primary t
:coords (0 0)
:size (1920 1080)
:rate 30.0
:dpi 96
:rotate normal)
(display-arrangement primary :displays (laptop))
(setq window-manager-named-workspaces
(list (make-window-manager-named-workspace
:label "Web Browsing"
:kbd "c"
:display display-laptop)
(make-window-manager-named-workspace
:label "Coding"
:kbd "d"
:display display-laptop)
(make-window-manager-named-workspace
:label "Chatting"
:kbd "h"
:display display-laptop)))
(window-manager-init :init-hook #'display-arrange-primary)