From aa502c3bafe089cde5ebe0a964d1bf435435fabe Mon Sep 17 00:00:00 2001 From: William Carroll Date: Thu, 27 Jan 2022 22:21:37 -0800 Subject: [PATCH] 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 Autosubmit: wpcarro Tested-by: BuildkiteCI --- users/wpcarro/emacs/default.nix | 11 ++++---- users/wpcarro/nixos/marcus/default.nix | 5 +++- users/wpcarro/nixos/marcus/marcus.el | 37 ++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 users/wpcarro/nixos/marcus/marcus.el diff --git a/users/wpcarro/emacs/default.nix b/users/wpcarro/emacs/default.nix index 40e6f8d65..c2669f694 100644 --- a/users/wpcarro/emacs/default.nix +++ b/users/wpcarro/emacs/default.nix @@ -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" ]; } diff --git a/users/wpcarro/nixos/marcus/default.nix b/users/wpcarro/nixos/marcus/default.nix index fb4442c6c..1de320f10 100644 --- a/users/wpcarro/nixos/marcus/default.nix +++ b/users/wpcarro/nixos/marcus/default.nix @@ -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; diff --git a/users/wpcarro/nixos/marcus/marcus.el b/users/wpcarro/nixos/marcus/marcus.el new file mode 100644 index 000000000..94dd164a1 --- /dev/null +++ b/users/wpcarro/nixos/marcus/marcus.el @@ -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)