Commit graph

15240 commits

Author SHA1 Message Date
William Carroll
b89d1f0a1f Call make-process instead of call-process in scrot.el
While attempting to debug why pressing `C-s-s` from an X-window screenshots my
entire screen, I switched from `call-process` to `make-process`, which is
async.

I still haven't debugged the original issue, but I think this is an improvement
regardless.
2020-09-04 21:06:18 +01:00
William Carroll
4763c7ca45 Restore KBDs for changing my font size
When I removed the KBD logic from fonts.el, I should have moved it here, but I
did not.
2020-09-04 21:04:56 +01:00
William Carroll
73af825389 Debug broken pulse-audio KBDs
Looks like when I linted my Emacs I forgot to change the prefix from
`pulse-audio/` to `pulse-audio-`.
2020-09-04 21:04:10 +01:00
William Carroll
aae5b4c88c Enable font ligatures for Emacs 27!
Now that Emacs is capable a rendering font ligatures, I defined a function to
enable them in fonts.el. Everything works, and it's beautiful.
2020-09-04 21:03:16 +01:00
Kane York
67e8f477a1 fix(u/riking/dotfiles): source rbenv config correctly
Change-Id: I1cf3dfc2d1edd2cb97ca432de5eb03c434b566e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1929
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
2020-09-03 22:03:16 +00:00
Kane York
68cc9b8224 feat(u/riking/dotfiles): port non-functions of bashrc to fish
Change-Id: I5fff28f67fe721b7662c5931e3b1b2226644598a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1928
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-03 22:03:16 +00:00
Kane York
dd94d3036a feat(u/riking/dotfiles): convert bashrc functions to fish
Change-Id: I8a7d1806a8920d31c0b572a4259eef908339e449
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1927
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-03 22:03:16 +00:00
William Carroll
97c2706821 Prevent warning during Emacs initialization
Now that my `script.el` is behaving as expected (wahoo!), start linting away
anything that shows up in the `*Warnings*` and `*Errors*` buffers.
2020-09-02 15:24:30 +01:00
William Carroll
f089f3c550 Linting Elisp
TL;DR:
- Prefer cl-lib
- Prefer spaces to tabs
- Resolve various checkdoc complaints
2020-09-02 15:23:46 +01:00
William Carroll
ea274f924a Remove KBD installations from more Elisp modules
I originally liked this pattern, but now I'd prefer to put everything in
keybindings.el.
2020-09-02 15:03:04 +01:00
William Carroll
d1ee517461 Require general.el for packages that depend on it
Since I'm calling `(require 'general)` in `wpc-package.el`, which gets called at
the beginning of my `init.el` file, all sub-modules have `general`. I originally
wanted this, but I'm beginning to rethink that preference.

After `script.el` broke my CI because of a missing `general` dependency, I'm
fixing it for `buffer.el` and all other modules that consume `general`.
2020-09-02 15:01:43 +01:00
William Carroll
f9be81b23e Add missing ts.el dependency to buffer.el
Since script.el depends on buffer.el now, buffer.el fails to evaluate because of
a missing dependency on ts.el.

Blindspots like this make me want to eventually support testing individual loads
of each of the libraries in my .emacs.d/wpc directory.
2020-09-02 14:52:17 +01:00
William Carroll
924c7fa419 Debug undefined add-hook-before-save
`use-package` complains that `add-hook-before-save` doesn't exist. This is
because it's now named `macros-add-hook-before-save`.

This fixes that.
2020-09-02 14:49:10 +01:00
William Carroll
71e57700d6 Debug false-negative reports for init-emacs CI step
Problem: `(bufferp "*Warnings*")` always returns `nil` because it expects a
buffer object. Thankfully I wrote a function called `buffer-exists?`, which is a
more DWIM alternative of `bufferp`.

Hopefully now CI should fail!
2020-09-02 14:47:34 +01:00
William Carroll
2200daeea4 Add missing Elisp dependencies
TL;DR:
- Require cl-macs.el for modules using CL-style macros like `cl-defun`
- Require struct.el for call to `struct-set!`
2020-09-02 14:39:41 +01:00
William Carroll
fd16fec666 Delete unused slack-snippets module
I haven't used Slack in awhile -- let alone Slack from Emacs.
2020-09-02 14:38:42 +01:00
William Carroll
8806604d40 Increase assertiveness of init-emacs script.el
TL;DR:
- Assert that the path to the init.el exists
- Check *Errors* buffer in case an error is uncaught but logged
- Log a message when Emacs successfully initializes
2020-09-02 14:18:50 +01:00
William Carroll
4a69371065 General Elisp linting
TL;DR:
- Remove `require` statements from init.el
- Remove unused, auto-install KBDs for bookmark.el
- Remove unused `require` statements from clipboard
- Remove unused, commented-out code

I would like for an Elisp linting stage to test for unused `require` statements,
but I'm unsure how practical that is to support.
2020-09-02 14:09:15 +01:00
William Carroll
dffb224023 Remove circular Elisp dependency
maybe.el -> prelude.el -> maybe.el

I should test for circular-dependencies in CI...
2020-09-02 14:08:14 +01:00
William Carroll
9c71c78abc Pull Emacs 27 from @tazjin's depot
Here's what happened:

My `emacs.glinux` derivation relies on gLinux `/usr/bin/emacs`, and Google
recently published version 27, so all corporate machines (i.e. this laptop)
switched from Emacs 26 to Emacs 27 overnight.

However, my Nix derivation was building all of the packages for Emacs 26, so
some packages were compatible while others weren't.

The Elisp package, `emr`, doesn't build for version 27, so I dropped it
altogether.
2020-09-02 14:07:39 +01:00
William Carroll
c17796a60d Rename alist.el to al.el
After switching my namespace separator from "/" to "-" the function,
`alist-get`, clashed (surprise!) with the pre-existing function, `alist-get`. As
I was struggling to debug my broken Emacs (it broke bc Emacs 27 rolled out), and
I changed the module name, "alist", to "al" attempting to defuse the issue.
2020-09-02 14:00:43 +01:00
William Carroll
1fe5d0373e Delete unused org-clubhouse
Sorry, @grfn! I haven't used Clubhouse is awhile...
2020-09-02 13:58:34 +01:00
Griffin Smith
2f7b688389 feat(gs/emacs): Generate org agenda commands from project tags
Auto-generate org agenda commands from project tags of the form
`project__foo_bar`, prefixed with `p` and named based on the first
letters of the words in the project. there is (obviously) some overlap
here but that can be fixed by just adding extra underscores to things to
disambiguate.

Change-Id: If07b15a21d8bcb6df6245e8c6e4731041930ecc1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1926
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
2020-09-01 23:06:42 +00:00
Griffin Smith
c4136447b3 refactor(tvix): Remove default buildMode arguments from libstore
These were not used anyway, and *may* have been causing a weird series
of problems leading to things sometimes aborting. Or maybe it has
nothing to do with it - the only correlation we've found is from
disassembling the output of a core dump. Regardless, this feels
stylistically like a good idea.

Change-Id: I288b50945e74ea90c118a21767fa4387c9f47f7d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1921
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-01 22:05:21 +00:00
William Carroll
6961948da5 Allow Elisp linting to run concurrently with Emacs init
No reason for init-emacs to block lint-elisp.
2020-09-01 16:50:12 +01:00
William Carroll
baf08416cf Apply checkdoc fixes to set.el
While I don't agree with what checkdoc is advising here, I'd rather not fight
it.
2020-09-01 16:27:42 +01:00
William Carroll
75a9a156a0 Redefine >> macro as >-> in >.el
I created a strangely named Elisp module, >.el, just to appease the CI gods. My
gut tells me that this is a desperate idea and fails the smell test. I'm pretty
eager to pass the linting phase of my Elisp CI, however, and I can always revert
this.
2020-09-01 16:26:39 +01:00
William Carroll
718899c629 More Elisp linting
In order for this to scale, I need to solve two things:
1. Ad-hoc ignore fill-column rules for URLs and other exceptions.
2. Run Elisp flychecker without evaluating my Elisp code and firing its
   side-effects.
2020-09-01 14:00:42 +01:00
William Carroll
3b2fffe954 Consume utils.builder in home.nix
Consuming my newly defined Nix utilities.
2020-09-01 12:17:44 +01:00
William Carroll
3fb9324c82 Delete comment monzo_ynab deployment
I haven't used this since I wrote it months ago...
2020-09-01 12:17:16 +01:00
William Carroll
a076027945 Define {builder,fs}.nix for utils.nix
Re-export everything from utils.nix.
2020-09-01 12:16:34 +01:00
William Carroll
fb5ec068dd More Elisp linting
This should cover most of the remaining linting errors. After this, I expect
fewer than ten linting errors.
2020-09-01 10:17:43 +01:00
Griffin Smith
adebfbbf24 feat(tvix): Print "Tvix" in the version string
Rather than printing "Nix" in the version string, print "Tvix". This is
cosmetically nice, but also is very useful when making sure I actually
have installed tvix on a system successfully.

Change-Id: Idd1a9954bd66509327f52b7457cfba2f090ab30c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1924
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
2020-09-01 03:30:12 +00:00
Eelco Dolstra
785cb3a754 refactor(tvix): getEnv(): Return std::optional
This allows distinguishing between an empty value and no value.

Patch ported from upstream at
ba87b08f85

Change-Id: I061cc8e16b1a7a0341adfc3b0edca1c0c51d5c97
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1884
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-01 02:21:53 +00:00
Griffin Smith
c5f3b12f04 feat(tvix): Support systemd socket activation
When the nix daemon starts up, first check (using sd_listen_fds) whether
we have been systemd socket-activated. If so, instead of passing the nix
daemon socket path to grpc, start a manual accept(2) loop, passing the
client file descriptors to grpc via AddInsecureChannelFromFd. There's an
open grpc issue at https://github.com/grpc/grpc/issues/19133 for
building support into grpc to do this automatically, but as of right now
this appears to be the only way to make this happen.

Making this happen, by the way, was a bit of a journey - at one point I
attempted to ServerBuilder's experimental AddExternalConnectionAcceptor
API, and that didn't work either - it appears that the final missing
piece to getting this working was explicitly fcntl(2)ing the client file
descriptors to set O_NONBLOCK before passing them into gRPC. With that
set, this all works inside of the test vm.

Fixes: b/56
Change-Id: I5d2ab2b5b02eb570249b30a9674e115c61b0ab0e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1882
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2020-09-01 01:07:11 +00:00
Griffin Smith
e472aa016e feat(tvix): Expose depot in the test vm
Expose depot to the test vm via NIX_PATH, so we can test the build of
depot packages from inside the test vm.

Change-Id: I26314634895ab1339f5715c0b0b261028eefdaa3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1923
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-09-01 01:07:11 +00:00
Griffin Smith
912268ed5e feat(gs/system): Add nixbuild.net as remote builder
Change-Id: I3b071cc91af5ee896e88c10d6594333ff4eddf77
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1922
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-09-01 01:07:11 +00:00
Griffin Smith
7a83b8fe40 fix(ops/monorepo-gerrit): Escape escape characters with more escape characters
Escape!

Change-Id: Idec7d17feda13ccf1ec03c41106ec6ed581d9e47
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1901
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-31 23:21:45 +00:00
Vincent Ambo
2afa22e512 feat(whitby): Double the number of Buildkite agents
Allow 16 things to happen in parallel, which is useful now that the
CI granularity is on a per-target level.

Change-Id: Ie65dd119ea0666618fbb249613e70a68276db834
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1902
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
2020-08-31 23:21:16 +00:00
Vincent Ambo
fcb014e43d chore(glittershark/system): Include chupacabraSystem in CI builds
Change-Id: Ic8a63f76a0b19f6b1f9ab836d1418849cce06aa0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1895
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-31 23:14:11 +00:00
Vincent Ambo
77a47fa85c chore(tazjin/nixos): Include camdenSystem and frogSystem in CI
Change-Id: I83c99a853e7a14a41ba87fed9d7988d4a2556920
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1894
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-31 23:14:11 +00:00
Vincent Ambo
9c482d6238 feat(ci): Add subtarget support for builds
We have naturally evolved a distinction between logical and physical
targets.

Physical targets are those which correspond directly to a tree
location on disk and can be built with `-A path.to.files`, while
logical targets are those that are exported from within an expression
but do not have a corresponding file on disk.

This change adds support for exporting logical targets from any tree
location by adding a `meta.targets` attribute containing keys into
itself, which will be consumed by the CI target gathering logic and
included in the generated pipeline.

Note that the labels for subtargets are syntactically different to
emphasise that they do not correspond to a file location. For example,
this change enables 'ops.nixos.whitbySystem' as a subtarget, which is
labeled in CI as `ops/nixos:whitbySystem`.

Change-Id: Ied09647a62c2ba98e3914548e3742ad422c63ecf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1893
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-31 23:14:11 +00:00
Vincent Ambo
61d2d2d503 feat(ops/pipelines): Dynamically generate CI pipeline from targets
Create the pipeline by outputting a file that contains nix-build
invocations for each target's *derivation path*.

Each invocation has a generated Nix expression passed to it with `-E`
which fetches the correct target from the tree while correctly
handling targets with strange characters (such as in Go-packages).

This makes it possible to run target-level granular pipelines. We're
getting somewhere!

Change-Id: Ia6946e389dafd1d4926130bb8891446d6e17133b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1855
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-31 23:14:11 +00:00
Griffin Smith
21690c644b fix(panettone): Automatically reconnect to ldap
Wrap all ldap access in a macro that automatically reconnects and
retries operations that fail due to a connection error, to handle the
case where the ldap server restarts while we still have an open
connection.

Fixes: #44
Change-Id: I4859cf509106e480f97fed17e7f08e0eea909352
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1871
Tested-by: BuildkiteCI
Reviewed-by: eta <eta@theta.eu.org>
2020-08-31 23:03:45 +00:00
Griffin Smith
2bc564bd0d chore(tvix): Add riking to owners
Change-Id: Icefafe6967cb83a43c9e417a29ce8cc97fb3432d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1892
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
2020-08-31 23:01:44 +00:00
William Carroll
a638e15c0d Lint string, macros.el
More of the same type of linting... basically preferring `namespace-` instead of
`namespace/`.
2020-08-31 23:33:25 +01:00
William Carroll
158f810981 Delete bills.el
Another cold, stale Elisp module.
2020-08-31 23:28:22 +01:00
William Carroll
644e01eb21 Fix fill-column errors
- removing stale comments
- dropping stale KBDs
2020-08-31 17:20:04 +01:00
William Carroll
ff8277625f Lint prelude.el
This was a doozey because I use it everywhere. Is there a better way to globally
rename things? Aye aye aye... computers, man!
2020-08-31 17:08:56 +01:00
Griffin Smith
2279419ede refactor(tvix): Drop meson.build files
These are unused, and I'm not sure they ever actually worked.

Change-Id: I6bb6b4257b7815932581ded7929437dba80961c9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1885
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
2020-08-31 15:38:16 +00:00