Previously, we were using `smallestNotIn` for selecting new characters
for menu items with duplicate chatacters - this uses the 'Bounded'
instance for the type, which for Char meant the first character we would
always select was \NUL - making it look like the menu item had no
character, and making it impossible to actually select the menu item.
This introduces an AlphaChar newtype, which is a wrapper around Char
whose Bounded and Enum instances only use alphabetic characters (a-ZA-Z)
and uses that for menu characters instead.
Change-Id: If34ed9e9ce84f2bcb1cb87432cc6273f40b69f72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3229
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
When describing items in the inventory, both in detail and when
producing menus from those items, describe not just the item itself but
also *where* in the inventory the item is (either in the backpack, or
wielded in either or both of the hands). This uses a new
InventoryPosition datatype, and a method to get a list of items in the
inventory associated with their inventory position. When *removing*
items from the inventory (to wield, drop, or eat them), we want to make
sure we remove from the right position, so this also introduces
a `removeItemAtPosition` method to make that happen correctly.
Finally, some of the tests for this stuff was getting really slow - I
narrowed this down to runaway arbitrary generation for message
Templates, so I've tweaked the Arbitrary instance for that type to
generate smaller values.
Change-Id: I24e9948adae24b0ca9bf13955602108ca9079dcc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3228
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a new DescribeInventory command, bound to I, to prompt for an item
in the inventory (anywhere in the inventory, including wielded) and
display a (new) panel describing it in detail. This description includes
the description, the long description, and the item's physical
properties (volume, density, and weight).
Change-Id: Idc1a05ab16b4514728d42aa6b520f93bea807c07
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3227
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Generate random volumes and densities for items based on the ranges for
those two quantities in the raw when building instances of items.
Since this is the first time creating an item is impure, this also lifts
entity generation into a (random) monadic context
Change-Id: I2de4880e8144f7ff9e1304eb32806ed1d7affa18
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3226
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Allow the itemType raw to have density and volume fields, both of which
represent *intervals* of both density and volume (because both can
hypothetically vary a bit). The idea here is that when we're making
an *instance* of one of these items, we pick a random value in the
range.
Lots of stuff in this commit is datatype and typeclass instances to
support things like intervals being fields on datatypes that get
serialized to saved games - including a manual definition of Ord for
Item since Ord isn't well-defined for intervals
Change-Id: Ia088f2f75cdce9d00560297e5c269e3310b85bc3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3225
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
2000 ticks after the character damages their fists by hitting something,
the character now develops calluses on their fists (scaled by *how*
damaged they've become) that reduce the chance of them receiving
additional damage from hitting things - up to a max of 5, which
prevents *all* damage from fistfighting.
This is all tracked in a new "Knuckles" struct in a new "Body" struct on
the character datatype, which manages stepping itself forward as part of
the Brain impl on the character.
Change-Id: Ica269f16fb340fb25900d2c77fbad32f10c00be2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3222
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a command that automatically rests (essentially just stepping the
game forwards) until the character's hitpoints are back to full.
Currently due to the time it takes for the character to heal this takes
a bit too long - my thought there is to make the per-step delay for
autocommands different depending on the specific autocommand.
Change-Id: I40378c29d3d9d19e9787af1f015bde65fd08868c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3221
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Allow configuring the natural attacks (eg, part of their body rather
than an item) of a creature. Each attack has a description and a damage
associated with it.
Change-Id: I69698a8ac4ee2da91e4c88e419593627519522a5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3220
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This required making sayVerb optional, as oozes don't say anything
Change-Id: I2c7f425ca26d92beef1097eda49d84f00c84c482
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3218
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This gets us the zlib-flate command line utility, which is useful for
decompressing our zlib-compressed save files and poking around in the
JSON
Change-Id: Ia0d8259d261c4313322d68cc8409ba13f9fb570c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3217
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
If the game steps forward, entities could be moving around, so we need
to wipe the memoized character vision.
Change-Id: If6ea6a8c4bed7aefef90a0a2ab17eff0af9b9bbe
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3215
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
I'm typesetting a type system! `semantic` is the big winner here, but
also `mathpartir` is nice
Change-Id: I27ee91d30e0fe680377ce48f7539553fd0707684
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3212
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This is how I'm writing test files for xanthous now, and I'm not writing
any other haskell code, so let's update the snippet
Change-Id: Ia513490ee1cfc87b3d58ee1a8e94244f2e862963
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3208
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a new "greetedCharacter" field to the creature hippocampus type,
which tracks whether or not that creature has greeted the character
yet. In the gormlak AI, when the gormlak sees the character and starts
running towards them, if that field is set to False send a message that
says that the gormlak yells a single randomly-generated gormlak word at
the character, then set the field to true
The gormlak yells "gukblom"!
Change-Id: I17a388393693a322c2e09390884ed718911b2fc4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3207
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
I didn't end up using this directly for the thing I was doing, but it
still seems generally useful enough that I'm keeping it around for now
Change-Id: I05c8902d75845f2230ec2373a9677d61cfaafafd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3206
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a new "language" field to the CreatureType raw type, which
references the *name* of the language that creature speaks (this is so
that different creatures can speak the same language without having to
duplicate the language definition in the raws). At some point this
should change to not hardcode the sets of languages and instead define
them in data files like we do for creatures, but this is fine as a
start.
Change-Id: I6708570175e23472cb37e0061a329e54e8eac9c0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3205
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This is generally just good practice for foundational data-types like
these
Change-Id: I88c5b6b73dad6665cf25837b8d6a9e0ea66f2b0b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3204
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Wrap up the Phonotactics type into a Language type including both the
phonotactics and a distribution of the number of syllables per word, so
we can generate arbitrary words in addition to just arbitrary syllables
Change-Id: I8a37ce9c0eec019c9b84d21b0f2b3b9f5fd319eb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3203
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a new "speech" generator module, with the beginnings of the vague
definition of the phonotactics of the language (there's one in here for
English based on the wikipedia article for English phonology, but it's
less than ideal as it has generated words like "sprurlkt") and the
ability to generate random syllables of a language by picking an onset,
nucleus, and coda from the list for that language (within a range of the
number of allowed of each syllable part). This will be used down the
road to automatically generate utterances from various
non-english-speaking creatures (so the accuracy is less important, just
that it "feels real").
Change-Id: I7b81375ec595239c05c5c800cbde1a2a900e38ac
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3202
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
I'm going to start adding generators for things like text soon, so it
makes sense to specifically sequester level generators as their own
thing
Change-Id: I175025375204fab7d75eba67dd06dab9bd2939d3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3201
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Memoize the return value of characterVisiblePositions to a new,
semi-abstracted "memo" field on the GameState, recalcuclated if the
character position ever changes. I'm 90% sure that the perf issues we
were encountering were actually caused by characterVisiblePositions
getting called once for *every tile* on draw, but this slightly larger
change also makes the game perform relatively-usably again.
Since this is only recalculated if the character position changes, if we
ever get non-transparent entities moving around without the characters
influence (maybe something building or knocking down walls?) we'll have
an issue there where the vision won't be updated as a result of those
changes if they happen while the character is taking a non-moving action
- but we can cross that bridge when we come to it.
Change-Id: I3fc745ddf0014d6f164f735ad7e5080da779b92a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3185
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Since 473604f567 (CL/2910), depot hasn't
been directly exposing `pkgs` as an attribute, instead exposing it via
third_party.nixpkgs - the xanthous shell.nix isn't checked in CI, so it
was missed as part of that refactor - this updates it to be in line with
that
Change-Id: I12b081c16d53c6798f51ec6660ffa6d345870580
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3176
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Break out the configuration for the prometheus fail2ban exporter, which
is a simple python script that exports stats from fail2ban as a
prometheus-scrapable textfile, from Mugwump into a reusable nixos module
in //ops/nixos/modules.
Change-Id: I5451c9c5de6c7bc4431150ae596a9c758bf1b693
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3136
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This does not appear to be working
Change-Id: I195e44f799981343a7b9dc60b25eb068d5d42530
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3182
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Includes the following depot changes & fixes:
* stable moves to NixOS 21.05
* stable isn't used anymore (but we'll keep the mechanism)
* haskell overlay's `random` override is removed (YAY!)
* grfn/iso: Switch to regular kernel rather than
latest kernel, as latest kernel is currently marked as broken due to zfs
* grfn/home: Use julia_16-bin temporarily
julia 1.5 (current julia-stable, source built release in nixpkgs)
doesn't pass its own test suite. Julia 1.6 doesn't have a source built
package in nixpkgs yet, so julia_16-bin appears to be the only working
julia derivation currently.
* tazjin/tverskoy: Use zfs unstable, as stable zfs doesn't work with the
latest kernel
Co-Authored-By: Griffin Smith <grfn@gws.fyi>
Co-Authored-By: sterni <sternenseemann@systemli.org>
Change-Id: I6f2e3d9f75077e4755de6bde9104d44b584cbe4c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3174
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: grfn <grfn@gws.fyi>
I don't really like the perspective-specific stuff after all.
Change-Id: I214e481a29ed5734de232d6cbd8fabbc6368359d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3181
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Work is now using JIRA instead of Clubhouse, so I've started writing
org-tracker[0] as a pluggable-backend version of org-clubhouse (I'll
probably add github issue support as well!). This switches my personal
config to use that instead of org-clubhouse, including the
checkout-branch-with-ticket-id stuff I had locally.
[0]: https://github.com/glittershark/org-tracker
Change-Id: I3cf72d6640b155c92ca9ddd1d9d9b5167367951a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3180
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
For some reason some org config was still living in the global config.el
Change-Id: I2145a054ace97b91877a4397a52fd18a5c273434
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3178
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
No longer connecting to freenode - but I *am* now connecting to both
hackint and libera, so add a prompt to the command to decide which one I
connect to
Change-Id: Iae315ddab753cf9c365cbee7abd94213af656d4c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3177
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Use awscli2 rather than awscli to deploy - less because I actually need
any specific functionality from the new version, and more because I
already use awscli2 on my systems and it's nice to always use the same
version of stuff
Change-Id: Id0e5b63dde1857c2e417ac2eeb2f769ebcc0f956
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3175
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
... rather than dragging it in as some transitive dep, which actually
stopped happening.
Change-Id: I2331721839d5e53c38236f64487be0e6f1be352e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3170
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This reverts commit e1c45be3f5. I'm back
in NY now T.T
Change-Id: Iaae2bf778195b9a99ac1a46068703a58e6b69053
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3166
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
* users/grfn/system/home/yeren: remove obsolete awscli2 overrides
* ops: make new isSystemUser || isNormalUser assertion happy
* users/grfn/system/system/mugwump: make buildkite agents system users
* users/tazjin/nixos/camden: set isSystemUser = true for git
* users/tazjin/emacs: Remove missing & broken packages
* third_party/openldap: remove, as the argon2 module is now enabled upstream
* third_party/gerrit_plugins: Pinned new unstable hashes
* third_party/nix, third_party/grpc: Disabled CI as these are broken
* third_party/overlays/emacs: Bumped version to stay in sync with channel
* third_party/buzz: Update LIBCLANG_PATH to reference libclang.lib,
since libclang's default output no longer contains libclang.so
* users/grfn/system/home: Install julia-stable instead of julia (which
aliases to julia-lts), as the latter depends on an insecure version of
libgit
Change-Id: Iff33b0ecb0ef07a82d1de35e23c40d2f4bf0f8ed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3001
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: grfn <grfn@gws.fyi>
Add a script (to PATH, so I can launch it from rofi) to take whatever's
in the clipboard, pass it through `dot -Tpng`, and then open the result
with feh.
Change-Id: I1842fca3585a33d902da20dfa6101d1c6d2f2062
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3160
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
* This was mostly for //third_party/nix and its dependencies which now
have been set to use llvmPackages_11 manually.
* For //users/grfn/achilles we also manually select the newer LLVM version.
* //tools/cheddar doesn't seem to need llvm anymore.
* //third_party/buzz also compiles with clang 7.1.0
* replace clang-tools everywhere with new attribute clang-tools_11
For the future we may want to have something similar again, but it may
not be necessary to invest too much time into it: nixpkgs is set to
upgrade their default llvmPackages to LLVM 11 as well at some point in
the near future.
Co-Authored-By: sterni <sternenseemann@systemli.org>
Change-Id: Id83868dbc476a6c776b59518b856c933f30ea79d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3135
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: grfn <grfn@gws.fyi>
This doesn't replace all of them in the repo, but at least the ones
that are relevant to our move.
Change-Id: I842e7594b4c16af30d880272417874f6b29afd22
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3134
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: grfn <grfn@gws.fyi>
This drops the msmtp requirement from my configuration; there's still
some cleanup to be done but I need to double-check this in a few
environments first.
Change-Id: I298f4ff77b45cb214fbccee84e9bbd861508d11a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3132
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
We have a bunch of crates in `third_party/rust-crates`; it would be
great if we could check them for existing CVEs.
This tool does that, it takes the rust security advisory database,
parses the applicable CVEs, and cross-checks them against the actual
crate versions we list in our package database.
The dumb parser we wrote is tested against all entries in the
database, so we will notice when upstream breaks their shit.
Checking the semver stuff is easy enough with the semver crate.
If an advisory matches, it prints the whole thing and fails the build.
Change-Id: I9e912c43d37a685d9d7a4424defc467a171ea3c4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2818
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: sterni <sternenseemann@systemli.org>
We can be closed world, so let’s restrict the arguments to the subset
we need for now.
The existing override was wrong, in that `// args` would use the
arguments we already added, again. So instead of deliberating about
how to make this work right in all cases, we don’t need it, we trim
it.
Change-Id: I6443a0808b8bfd5e4db939b669c6afc741954db8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3057
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This service performes automatic power tuning and has effectively
replaced powertop's tuning functionality in modern systems.
Change-Id: I63c6999beed64d96c77b8b9287ed0d5fa6ddd9fa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3121
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This might help with the issue of devices being stuck in a slow
power-saving mode after hibernation. Dell enables this on laptops
shipping with Linux by default according to some forum posts.
Change-Id: I3d7fdb5c2ed5e24289a6c20f21d027e11b7826e5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3120
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
next-error and prev-error are weirdly broken in ways I don't entirely
understand, but I only really use flycheck so I can just use the
flycheck ones instead
Change-Id: Icdb25950f6fdcca163c68db30366af0f6fa28d7d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3108
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Owothia graduates, or something.
Mostly I don't want infrastructure to depend on stuff in //users.
Does anyone know where owothia is running anyways?
Change-Id: I198c7ac935736c7aee3ba4fbda1453b82aa10283
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3103
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
`write` returns the written usize; now I wonder why rustc didn’t at
least produce a warning because the result was unused. Do we need to
add any flags to `rustSimple`?
Change-Id: If8d51d95c993dec6c92e46dbc82cd8cdd398f441
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3056
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
I think it’s solid enough to use in a wider context.
Change-Id: If53e8bbb6b90fa88d73fb42730db470e822ea182
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3055
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Moving to toplevel so I can use them with `runExecline`. They should
be pretty atomic, and are proven to work (tests are still in my user
dir, since they test the producers indirectly via the python parser
and I don’t want to pull it out right now).
Change-Id: Id0baa3adcb2ec646458a104c7868c2889b8c64f5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3054
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Like `eprint-stdin`, but reads stdin as netencode and pretty-prints it
to stderr.
Change-Id: I430c010b0cac45f077cde9dadfd79adfa7a53eca
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2533
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Simple pretty printer for netencode values, as a rust library and an
accompanying command line tool which takes netencode on stdin and
prints the pretty version to stdout.
Change-Id: I0a57c644985162bc08a9bf1ee78f7be278400199
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2532
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
It’s the inverse of record-splice-env! It sucks up the environment and
prints it as a netencode dict! Only the utf-8 clean parts at least.
Change-Id: I96c19fc5ea3a67a23e238f15f4d0fa783081859c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2527
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The user expects the editor to remember the positions of fields they
navigated from to a new level, so when they return they get put in the
same spot.
We push the index from one field into every level of the value.
Unfortunately this introduces pointers and all the woes they bring.
Change-Id: I889c28b71fd7082b765e1d6874faeb1b36dade60
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2866
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This will be needed to factor the current cursor position into vals.
Change-Id: I73635b13c29b6b8925c68005c8db1c4dda93f15d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2865
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Since items are aligned per-line, it makes more intuitive sense to use
up/down for previous/next item, and left to go up and right to go
down.
Change-Id: I6bc33bd4e6e8f9fb245d252ca063dfabf972147d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2864
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This makes it possible to pipe json dicts to the program and fully
navigate them.
Change-Id: I18dd8683d6f00c8ea967eb0c8dc89d1e0735fbcb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2863
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
A take at a TUI-based structural editor, which should eventually read
a type definition of a structure and some values, and build a GUI to
edit it.
So far you can only pipe it some restricted json (lists, strings and
floats) and “navigate” through the structure with the arrow keys.
Change-Id: I7c8546459ff86c766fc03723f732c7d9f863ceaa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2862
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
We don't need these in the depot anymore as the Emacs overlay now
provides newer versions of them, or because they are not used anymore.
Change-Id: I393e1580b66450d0bb128213bc79668172dadacc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3005
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This is currently done ad-hoc in a bunch of our systems, but we should
just do it centrally.
The commit message is a bit of a lie, as this doesn't yet update
grfn's systems.
Change-Id: Ic771c1a1da78ec5de9cffbf94c296dce5e11fd84
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3047
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Provide ddcutil and paperlike-go in $PATH. Provide the necessary udev
and kernel module plumbing so they work as non-root.
Icecream-Required-From: Vincent Ambo <mail@tazj.in>
Change-Id: Ic9323a45cdbb75571e8f8b3aca4b9a763c271968
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3029
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Implement tuple expressions, types, and patterns, all the way through
the parser down to the typechecker. In LLVM, these are implemented as
anonymous structs, using an `extract` instruction when they're pattern
matched on to get out the individual fields.
Currently the only limitation here is patterns aren't supported in
function argument position, but you can still do something like
fn xy = let (x, y) = xy in x + y
Change-Id: I357f17e9d4052e741eda8605b6662822f331efde
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3027
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Rather than pinning a nixpkgs in here, just import the relative path to
the depot to load nixpkgs.
Change-Id: I452727d45e4f44ecc99b86d17e88a413c1911c59
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3025
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
I want notmuch to open in a full window, not as a bottom-of-the-screen
popup.
Change-Id: If539ff315fabae94d5a849c526c4322f9bdf8c61
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3024
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This... mostly works! I had to install it from the latest master branch
to get it functioning on my CPU, hopefully once they release a new
version I can remove the override.
Change-Id: I863d2e822b149838c58aa1c1e7dc73a127a0aeb8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3022
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
It is easier to do the inverse of this solution: Filter out the
package on the machines that get it from elsewhere.
Change-Id: I2abe112e4e38822d0fc7a47ea0bcedec1e0a96e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3010
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
... but keep defaulting to standard Emacs27, for $reasons
Change-Id: Ife243ab18a03e6b0270a39c639cc493d71240362
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3007
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Since we need to override random to 1.2.0 globally for xanthous
(otherwise propagation causes two versions of random to be propagated
for xanthous) evaluating haskell related stuff using import from
derivation can be very expensive since utilities like hpack and
cabal2nix need to be built for that. This means that for every channel
bump we potentially need to do a world rebuild of haskellPackages first.
To solve this we check in the cabal2nix-generated nix expressions for
owothia and xanthous.
Change-Id: I8fff70b4b6c303d1920f8bcac53520a09999b206
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2921
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Instead of having two ways of accessing the path to the depot (one of
which was stuttering, depot.depotPath) we settle on only one:
depot.path.
This was mostly used for NixOS module imports.
Co-Authored-By: Florian Klink <flokli@flokli.de>
Change-Id: I2c0db23383fc34f6ca76baaad4cc4af2d9dfae15
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2962
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: sterni <sternenseemann@systemli.org>
As a complementation to builtins.functionArgs this function checks if
the function has a set pattern that contains an ellipsis
(i. e. `{ [arg, [ arg1, [ … ]]] ... }:`). The implementation of this is
pretty cursed however since there is no clean way to do this in vanilla
nix: We need to match on the output of builtins.toXML which does try to
serialize functions by outputting their argument and information about
it (whether it is a normal argument or a attribute set pattern, in the
latter case it also serialize every component of the pattern).
Change-Id: I0f33721811a3180cec205a0c98e6d92e10e92075
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2950
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
I'm not using cloudfront for gws.fyi anymore, so this invalidation step
on deploy is pointless
Change-Id: I153848666dc70acfc456b5dcf276bab2410c4716
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2946
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Looks kinda like rebuild-mugwump, only for home
yes, yes, this could gc halfway through, that's so unlikely that I don't
care
Change-Id: Iab3fdac15796e9f8158a9778b897bc3fe88e536e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2942
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Rename my //users directory and all places that refer to glittershark to
grfn, including nix references and documentation.
This may require some extra attention inside of gerrit's database after
it lands to allow me to actually push things.
Change-Id: I4728b7ec2c60024392c1c1fa6e0d4a59b3e266fa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2933
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: glittershark <grfn@gws.fyi>
Splits //ops/nixos into:
* //ops/nixos.nix - utility functions for building systems
* //ops/machines - shared machine definitions (read by readTree)
* //ops/modules - shared NixOS modules (skipped by readTree)
This simplifies working with the configuration fixpoint in whitby, and
is overall a bit more in line with how NixOS systems in user folders
currently work.
Change-Id: I1322ec5cc76c0207c099c05d44828a3df0b3ffc1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2931
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: glittershark <grfn@gws.fyi>
Fixes included:
* exposed gtest in the package set, required for protobuf
* pinned SBCL to version 2.0.8: The channel moved it to >2.1, and a
bunch of warnings seemed to be killing our builds - we should
investigate this later.
* removed kernel patches from //users/tazjin/frog: this machine is
currently out of service anyways, not worth fixing while it's offline
* removed steam & lutris from frog (they're currently broken)
* removed Haskell overrides for hedgehog-classes & hgeometry-combinatorial
* use gRPC sources from upstream and inject Abseil via Nix instead
* fix for renamed grpc import in //third_party/nix
* use libfprint-tod from upstream nixpkgs in glittershark/yeren and
delete glittershark/pkgs/fprintd entirely, since all of the patches used
there are available and working from upstream now (and stopped working
here after the bump)
Change-Id: Ia90e6f774f7b88bc9e60d28351b900ca43ee2695
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2901
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Tested-by: BuildkiteCI
The random_1_2_0 attribute of haskellPackages currently holds random
1.2.0 which is what we want to have. We need to disable tests because
they cause an infinite recursion as basically all testing libraries
depend on random. This has the nice side effect that we no longer need
import from derivation for random 1.2.0 (but owothia and xanthous still
use it).
Re-enable CI for xanthous.
Additinonally we need to deal with the fallout of the haskellPackages
overlay now also being pulled in for some machines since cl/2910 and
let pandoc compile with random 1.2.0.
Change-Id: I78d220e5bd35f3469d80d69e77e712a529f21d33
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2924
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: glittershark <grfn@gws.fyi>
I have two YubiKeys now, and using the older one is more painful. Add the new
one, so I don't have to faff with gpg-agent in order to submit CLs.
Change-Id: I3fcd82cdb53f88dc00025de97666872802e270e2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2928
Reviewed-by: eta <eta@theta.eu.org>
Tested-by: BuildkiteCI
This wasn't working because yerenSystem wasn't actually accessing the
`system` attribute (like the other systems), which meant it was just
an attribute set full of stuff.
Change-Id: I0abe56f0a1f18e4e542cb458dfcdf81e8a0ddc01
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2923
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Please read b/108 to make sense of this.
This gets rid of the explicit list of exposed packages from nixpkgs,
and instead makes the entire package set available at
`third_party.nixpkgs`.
To accommodate this, a LOT of things have to be very slightly shuffled
around. Some of this was done in already submitted CLs, but this
change is unfortunately still quite noisy.
Pay extra attention to:
* overlay-like functionality that was partially moved to actual
overlays (partially as in, the minimum required to get a green
build)
* modified uses of the package set path, esp. in NixOS systems
Special notes:
* xanthous has been disabled in CI because of issues with the Haskell
overlay
* //third_party/nix has been disabled because of other unclear
dependency issues
Both of these will be tackled in a followup CL.
Change-Id: I2f9c60a4d275fdb5209264be0addfd7e06c53118
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2910
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
adisbladis fixed the tdlib/telega versioning issues in nixpkgs at some
point, so this isn't required anymore.
Change-Id: Ib98e73d0e4394765f08f5f3741f70adab459c22f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2909
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This should ease migrating to a distinction between depot.third_party
and pkgs (as in nixpkgs) in the future.
Ref cl/2910, b/108.
Change-Id: I53a854071fddd7c0d0526cc4c5b16998202082c6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2913
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Add kolide, the endpoint monitoring system / MDM we're using at work, to
the system derivation for my work computer.
I hate MDMs almost universally, and this one is no different, but SOC2
waits for no one.
Change-Id: I99bcb5341182a81512699d50b279efd9e1b2194b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2903
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This way we don’t have to explicitely wrap the rust crate with a
`testRustSimple`, but it will be done automatically, unless `doCheck`
is set to `false`.
Change-Id: I32a81821eeff620e7da57332b0873495bb85a843
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2841
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Instead of ~500 lines, it's about ~50 and you can actually
individually address the lambdas and their colours.
I don't exactly know why I made this rather than going to bed, but it
might come in handy sometime.
Change-Id: I7aa25777ebac4a83fd3febb553fcad773836119b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2815
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Profpatsch and me are basically the only users of
depot.users.Profpatsch.writers.rustSimple*. To pull in the odd
dependency we usually use buildRustCrate which is rather convenient.
However we've picked up the bad habit of inlining these in a let
somewhere instead of managing them in a more central location although
there has been an (unsuccesful) attempt at this in
//users/Profpatsch/rust-crates.nix.
This CL moves all buildRustCrate based derivations into
third_party.rust-crates and deletes any duplicate derivations we have
accumulated in the tree.
Change-Id: I8f68b95ebd546708e9af07dca36d72dba9ca8c77
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2769
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Previously the tvl depot attrset was provided as the config.depot
argument, but to make NixOS modules look more like the rest of the depot
this is being switched to being provided as the "depot" argument
instead.
Change-Id: I7e011fe5c44ac3e4142177afd168f1bbc602d56f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2764
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
The depot.nix module is automatically brought in by systemFor, and
shouldn't be included in user configs, since it's going away.
Change-Id: Ib5b60203978b51dbff1f7bcc287f2ac9eb278823
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2762
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
ops.nixos.nixosFor is intended to provide the "basic" readTree-like
system arguments to NixOS systems; in particular, it provides "depot" as
a module argument, as well as, for the moment, config.depot.
Change-Id: I442c7d79ac0eb2ff8e1bf606f4e083e15eb0a8f4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2761
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This drops the annoying usage of builtins.currenTime, which means that
my website stops constantly rebuilding.
Change-Id: I44294b06588673846f473beb6533a5fa3410a1bd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2767
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Fixes a long-standing todo by adding an additional field for the time
at which a post was updated, and handling this in both site
generation (to note the update date after the publish date) and in
Atom feed generation (by populating both the updated and published
fields).
Change-Id: If80db43459b2a0c77eea4dde7255651b5d6cd64b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2766
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
More or less direct port of https://dotti.me to mdoc(7) with the
following changes:
* Add a RFC3339 column to the EXAMPLES table. RFC3339 is a well
specified subset of ISO8601 whose specification is also more
accessible so this could help someone out.
* Add a SEE ALSO section linking to the web site
* Add an AUTHORS section
Change-Id: I8db00bd402697aa52f6f651f28692617b487f832
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2642
Tested-by: BuildkiteCI
Reviewed-by: edef <edef@edef.eu>
nint (short for nix interpreter) is a tiny wrapper around nix-instantiate
which allows to run nix scripts, i. e. nix expressions that conform to
a certain calling convention. A nix script runnable using nint must
conform to the following constraints:
* It must evaluate to a function which has a set pattern with an
ellipsis as the single argument.
* It must produce a string as a return value or fail.
When invoked, a the expression receives the following arguments:
* `currentDir`: the current working directory as a nix path
* `argv`: a list of strings containing `argv` including `argv[0]`
* extra arguments which are manually specified which allows for
passing along dependencies or libraries, for example:
nint --arg depot '(import /depot {})' my-prog.nix [ argv[1] … ]
would pass along depot to be used in `my-prog.nix`.
Such nix scripts are purely functional in a sense: The way inputs can be
taken is very limited and causing effects is also only possible in a
very limited sense (using builtins.fetchurl if TARBALL_TTL is 0,
adding files and directories to the nix store, realising derivations).
As an approximation, a program executed using nint can be thought of
as a function with the following signature:
λ :: environment → working directory → argv → stdout
where environment includes:
* the time at the start of the program (`builtins.currentTime`)
* other information about the machine (`builtins.currentSystem` …)
* environment variables (`builtins.getEnv`)
* the file system (`builtins.readDir`, `builtins.readFile`, …) which
is the biggest input impurity as it may change during evaluation
Additionally import from derivation and builtin fetchers are available
which introduce further impurities to be utilized.
Future work:
* Streaming I/O via lazy lists. This would allow usage of
stdin and output before the program terminates. However this would
require using libexpr directly or writing a custom nix interpreter.
A description of how this would work can be found on the website of the
esoteric programming language Lazy K: https://tromp.github.io/cl/lazy-k.html
* An effect system beyond stdin / stdout.
* Better error handling, support setting exit codes etc.
These features would require either using an alternative or custom
interpreter for nix (tvix or hnix) or to link against libexpr directly
to have more control over evaluation.
Change-Id: I61528516eb418740df355852f23425acc4d0656a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2745
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
The way this loads the api key is a hack, but also... I don't care!
Change-Id: I4d417b1a824007620661188b60b21a1f73867dca
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2747
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
We use builtins.split directly as it should be a bit more efficient as
lib.splitStrings. Also its returning of a list for every regex match is
useful to update the state while parsing the tokens:
* The tokens are obtained by splitting the string at every '%'
* Everytime we see a boundary (that is a list in the returned
list of builtins.split), we know that the first two chars of
the next string are a percent encoded character.
One implementation flaw is that it will currently crash if it encounters
mal-formed URLs (since int.fromHex chrashes if it encounters any non
hex digit characters) and accepts some malformed urlencoding like
"foo %A".
Change-Id: I90d08d7a71b16b4f4a4879214abd7aeff46c20c8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2744
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
In order to arbitrarily split netencode over multiple reads, we need
to make the parser completely streaming, so that it recognizes all
cases where it needs more input.
Luckily, this is fairly trivial, after working around a bunch of
overeager parsing.
The tricky part was the giant `alt`, where inner parsers would start
consuming input and thus become incomplete when they fail afterwards.
Sinc the format *always* starts the different types with one
discriminator char, we can use that to instantly return the parser and
try the next one instead.
The other tricky part was that lists and records would parse all inner
elements and then choke on the empty string after the last element,
because the inner parser would consume at least the descriminator, and
an empty string is always `Incomplete`. We wrap these into a small
combinator which plays nice with `many0` in that regard.
Change-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2704
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
I'm only connected to my own tethering nets anyways and I can't be
bothered to figure out all the things I need to open for Chromecasts,
maybe later.
Change-Id: Id1715b205191d4494a5a7001e1fb0f41a89d3de6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2705
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Don't apply the left-margin if the viewport is too narrow too handle it
Change-Id: Ia15641a6f0c94f9b0582f4a48af00b935f3e66bc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2703
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Expose website as a top-level attribute, and ignore index.html, both to
make test-deving the site easier
Change-Id: Ic056446e322ec5f69583d316998103883fc8d55b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2700
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Explicitly pass --profile personal to AWS commands, to avoid deploying
this to the wrong aws account on accident
Change-Id: Iff8236967adcfdedfbace8930031db9adf60e3d1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2699
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Also start to put things under headings, since we have CSS to make that
look decent now
Change-Id: I9ad8c5f5bf32360bcae48fb28e390391fcec0a88
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2698
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
web-brutalism is so 3 years ago, bro
but seriously, I'd like to start putting some actual stuff here, so
let's make it look halfway-decent.
Change-Id: Ic78d725b3755c2307c7ea155af8d0f90e287830c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2697
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Chupacabra doesn't even exist anymore, plus I want this installed on all
home systems
Change-Id: Id0e5c89797b1ad52b2a24d60ad3ab5e125f60266
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2696
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add support for a zero-sized Unit type. This requires some special at
the codegen level because LLVM (unsurprisingly) only allows Void types
in function return position - to make that a little easier to handle
there's a new pass that strips any unit-only expressions and pulls
unit-only function arguments up to new `let` bindings, so we never have
to actually pass around unit values.
Change-Id: I0fc18a516821f2d69172c42a6a5d246b23471e38
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2695
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Notifications with images appear to be working now, which is cool, but
they're also *really* large, especially for spotify album art - let's
pull that down a bit.
Change-Id: I825798cccb54ebafd3facc08f3d6f0f4a42cf010
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2666
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
We had a bunch of instances of
https://github.com/NixOS/nix/issues/2176,
where nix would exit with a “killed by signal 9” error.
According to Eelco in that issue, this is perfectly normal behaviour
of course, and appears if the last command in a loop closes `stdout`
or `stdin`, then the builder will SIGKILL it immediately. This is of
course also a perfectly fine error message for that case.
It turns out that mainly GNU coreutils exhibit this behaviour …
Let’s see if using a more sane tool suite fixes that.
Change-Id: If34ab692120e5e299575bf8044aa5802145ab494
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2658
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
`forstdin` iterates over the tests in the test directory, and by
default it does *not* fail if an inner loop returns an error, unless
`-o okcodes` is given, a list of exit codes that indicate success.
Now it fails if a loop returns ≠ 0.
Change-Id: I0b1b2a06cd0a894e5ac4e77ec25019629ce2c077
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2657
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Upstream haskellPackages has a newer haskell-language-server than we had
and it is always in sync with the default GHC version of that package
set which we incidentally use to build all haskell derivations in depot.
I hope this will not cause us more trouble in the future, but I've
gotten the impression that maralorn makes an effort to prevent
haskell-language-server from being broken in haskellPackages, so ideally
we'll never have to worry about hls again. If we do have to, we may need
to switch to easy-hls-nix.
Note that I haven't had the time yet to verify that the shells actually
work since it's kinda late now and the rebuilds are many.
Change-Id: I74c192d57355904cfa45bb76d70346792ba05af5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2662
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
* chatter and its dependencies have been fixed in upstream
haskellPackages, so we can get rid of the packageSet.nix expression:
https://github.com/NixOS/nixpkgs/pull/116803
* Merged default.nix and pkg.nix into one expression and use
callCabal2nix instead of emulating it with nested imports.
* Minor refactor of shell.nix and remove haskell-language-server
until we've redone it or replaced it with the upstream one as now the
GHC versions are out of sync: hls is built with 8.8.4, but
haskellPackages uses 8.10.4
Change-Id: Ie75eaa93ba8bd79e749e2442fb28c855b8a15a1d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2661
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
I'm looking at removing some of these because they can cause
unnecessary build steps during CI pipeline generation.
Change-Id: I84742968918090c050d2eedab8a1b42692632a42
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2655
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Defines a small helper script that resets the keyboard layout (to
avoid getting stuck in Russian layout) and locks the screen via
xsecurelock, and configures home-manager to launch this automatically.
Fascinatingly this actually seems to be capable of locking the
screen *on suspend*, not *after suspend*.
Change-Id: Ib6279a445aba18c2fb5bc073b675e6e2598fa228
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2644
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
A small UCSPI client which connects to an IMAP server, authenticates
with username and password (for Christ’s sake, put it in
`s6-tlsclient`), selects the `INBOX` and proceeds to listen for new
mails.
Later it will generate an event on stdout and to be used for push
messaging and triggering a full `mbsync` run on new message.
Currently I’m testing it via
```
env CAFILE=/run/current-system/etc/ssl/certs/ca-bundle.crt \
IMAP_USERNAME=<username> \
backtick -i IMAP_PASSWORD ' pass' ' <password-entry>' '' \
s6-tlsclient -v <imap-server> 993 ./result
```
Change-Id: I221717d374c0efc8d9e05fe0dfccba31798b3c5c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2636
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
frog is in storage and the key shouldn't have privileges while I'm
guaranteed to not use it.
Change-Id: If2ee8278fcb81f425dcfc151b11d207dfb6f45c7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2631
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This is required for my volume modification keyboard shortcuts.
Change-Id: I95e02be5b08e1f8a14746ace61226e903fbc68a3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2634
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
The latter doesn't work with AMD devices. This will need some changes
on one of my non-NixOS machines, unfortunately ...
Change-Id: Ib9dfdb9beac67501396a06ea74a0a4371f8ad65e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2628
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This group has access to modifying backlight settings (configured by
the udev rules for `light`).
Change-Id: I1593980757c6265f6822d3d3dce9e19a2473acd8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2626
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Just a few more missing things.
Change-Id: I54b633296d91c6f8dce72d900d7d38b8af4ae419
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2625
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
... also nuke that Bluetooth headset daemon, it doesn't work anyways.
Change-Id: Iee884046a2bf2718767442ec62b2f731e14e39e8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2624
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Uses the impermanence module to configure the bind-mounts for the few
applications that are allowed to persist stuff between boots.
For now this setup uses ZFS rollbacks to get /home back into a clean
state, where the `tazjin-clean` snapshot is a partition with only the
`/home/tazjin` folder and the correct partitions on it.
This gives me enough scratch space to e.g. download stuff larger than
my RAM without accumulating state.
Change-Id: I7cdb2276f087ea62201690cb8b36ae074203f87c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2623
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This is getting loaded by use-package now
Change-Id: I591629ed26ffac71a0df04d51c10b9290ebd76ff
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2428
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
I don't know where this went.
Change-Id: I82d27e273e38ffeffe683d6ff2236d383c7b1fcf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2622
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This module is responsible for mounting persistent storage into the
ephemeral root disk of this machine.
Currently only very basic configuration and data are retained, and
hopefully that won't change.
Change-Id: If800cbee60b7b3c5b8c457b9b332a0c05c33f20e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2621
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This is my new X13 AMD Thinkpad, on which many fun things will be done.
Change-Id: I4de114a8c5ebb37d2f4844f407d2dc0e7cc9557e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This package definition is broken for ELPA in nixpkgs, but adisbladis
is working on it.
Change-Id: Ibe140a2daf7a3a294dae4c6340be33db05a47a44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2619
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Implement very basic monomorphization, by recording type variable
instantiations when typechecking Call nodes and then using those in a
new hir Visitor trait to copy the body of any generic decls for each
possible set of instantiation of the type variables.
Change-Id: Iab54030973e5d66e2b8bcd074b4cb6c001a90123
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2617
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
The step of "universalizing" function expressions was conflicting with
top-level ascriptions for polymorphic function declarations:
universalization generates universal type variables, and top-level
polymorphic ascription *also* generates universal type variables, and
the two were conflicting with each other when unifying. Let's just get
rid of this now, and we can bring it back in a more principled manner
once we do actual let-generalization (which there's still an ignored
test case for)
Change-Id: Idc08c8cb5ac92d1e6e1e63c9b8729176cab73f44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2616
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This makes parsing less ambiguous, which is nice (we can continue to not
actually care about indentation!) and aligns nicely with `fn` for the
declaration itself.
Change-Id: Id48f064e2a1e01c5105297be355d0991b312b76d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2615
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Implement extern decls, which codegen to LLVM as forward-declared
functions, and use these as a hook into calling glibc functions.
We can print to the terminal now! The integration tests can test this
now.
Change-Id: I70af4546b417b888ad9fbb18798db240f77f4e71
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2614
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Get achilles building in Nix as part of the depot's build tree. This
involved making it work with stable rust, since the depot only exposes
stable rust to sub-packages, which turned out to be fairly
straightforward.
Also adds libffi as a new top-level expose, since it's required to build achilles
Change-Id: I5f6dedb26c0b81ec258aedde1973e74903c07ece
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2612
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Since xanthous has a checked-in package.yaml and cabal file, the
haskellPackages build infrastructure will use the package.yaml file for
all builds. The resulting problem is that our CI won't actually catch build
failures that would be observable with cabal or when building from the
sdist.
We fix that by filtering out the package.yaml file in pkg.nix
additionally to the filters specified in .gitignore. For this we need
gitignoreFilter from gitignore.nix which we expose as part of a functor
set from third_party.gitignoreSource to maintain interface
compatibility.
Change-Id: I337185f484d2027341f38031dcd78898706904eb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2609
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
The breaking removal of triangulationEdges was not that big of a deal
after all: It was just renamed to edgesAsPoints apparently, so the fix
is easy enough and we can save one override.
hgeometry-combinatorial's doctests seem to trigger some kind of GHC
dynamic linking bug (https://github.com/noinia/hgeometry/issues/132) so
we disable the tests.
Change-Id: Iba2a64cade4d1a55fa4b81846e1116f282d4590a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2608
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
It seems like some of them end up file-local anyways, and the explicit
call to `custom-set-variables` in mail-setup.el had seemingly no effect.
Change-Id: Iad5011b5f8348b1ca5973813995c9644ac85ddf5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2610
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
The following changes in dependencies of xanthous broke the build and
have been fixed in this CL. Thus we can reenable CI for xanthous.
* random 1.2.0 removed the Read instance for StdGen, so we need use
System.Random.Internal to un-newtype StdGen into an SMGen in the
appropriate places as that type still has a Show and Read instance.
Requires a new direct dependency on splitmix as well.
* witherable 4.0 renamed Data.Witherable into Witherable and no longer
exports Filter.
* random 1.2.0 probably also broke the Function instance for GameState
which contains a StdGen. I'm not exactly sure which change exactly
triggered this, but the fix is easy enough: We implement a Function
instance for SMGen using functionShow allowing us to write a Function
instance for StdGen using functionMap. I've put these instances into
Xanthous.Orphans.
* hgeometry 0.12.0.0 removes the triangulationEdges function (which is
also not mentioned in the changelog, so I'm not sure if there's a
replacement yet). Fix by pinning to 0.11.0.0 for now.
* hedgehog-classes: relax bounds on semirings
Change-Id: I3617d8916d753b386c9fa80062be6bcbdfee0131
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2607
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
I actually wanted to check up on regex-tdfa-text in owothia, but
realized it was actually in a dependency. When porting the patch for
chatter to nixpkgs, I wondered if we could get rid of other overrides
or if we need to fix anything else in upstream.
* aeson, attoparsec, cassava, psqueues, hedgehog: jailbreaks are
no longer necessary
* fgl, fgl-arbitrary: upstream has the versions pinned by now
* hgeometry, hgeometry-combinatoral: upstream has moved past the
pinned versions, but we don't need to keep them downgraded as
xanthous's build is not broken by them.
* random-source: the upstream compiler shouldn't crash anymore,
additionally upstream has the version pinned here currently
* semialign: upstream also has 1.1.0.1 by now
* splitmix: splitmix has been fixed upstream and haskellPackages
has moved past 0.1
* hspec-core: test suite passes or upstream has disabled it as well
* QuickCheck: upstream advanced to the same version
* vinyl: upstream moved past the pinned version, causes no build failures
* comonad-extras: has been fixed upstream
Change-Id: I34eff81ceaac005f2ad90dd9c1d3e623b8da91c0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2606
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Making this a monthly service apparently.
Necessary changes:
* 3p: expose emacs27 instead of emacs26 which got removed
users/tazjin/{camden, frog}: switch from emacs26 to emacs27
* 3p/lieer: google_api_python_client got renamed to
google-api-python-client
Change-Id: I1011665d10eebc99990addbef6a8a6b000b93896
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2605
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Setting meta.targets to include all derivations in the different package
sets in Profpatsch's user folder makes them checked by CI until they do
the readTree refactor as promised.
To reduce code duplication we handle this in a simple function which is
exposed from nix.utils which may be a good place for depot specific bits
and bops we accumulate over time.
To get around the issue of too nested sets we perform the following
renames:
* users.Profpatsch.tests gets moved into its own directory
* users.Profpatsch.arglib.netencode now lives in its own file instead of
the default.nix
* users.Profpatsch.netstring.tests gets moved into its own directory
Change-Id: Icd039c29d7760a711c1c53554504d6b0cd19e120
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2603
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
We make use of the -O man=… option of mandoc(1) which allows to convert
cross references via the .Xr macro into actual hyperlinks in the output.
This can be disabled (by passing "none") or done in two modes:
* all: links all .Xr cross references as if they were in
$out/%N.%S.html. This will lead to broken links of course.
* inManDir: only link to files in $out if the man page is found in
manDir, use the template defined in linkXrFallback if not.
all is the default, since we don't require all man pages to be in
manDir, so it would be potentially confusing if the path attribute was
used in the pages list.
linkXrFallback uses the debian online man viewer by default currently,
since it can be decently hyperlinked and debian has a lot of packages.
Other options would be:
* https://manpages.ubuntu.com/manpages/latest/en/man%S/%N.%S.html
* https://man.archlinux.org/man/%N.%S.en
* https://man.openbsd.org/%N.%S
* https://www.man7.org/linux/man-pages/man%S/%N.%S.html
Change-Id: I1363b9dfdda25cb7383c7310b8115c335444bd3d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2597
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
htmlman is a very simple nix based static site generator which is
intended for rendering HTML representations for man pages plus an index
page listing all available pages. For the sake of simplicity (and unlike
previous iterations of this piece of code) other documentation artifacts
and formats are not supported.
Usually web services like GitHub and depot's web interface are pretty
good at displaying "normal" documentation artifacts like markdown files,
but man pages are usually not rendered — with the additional problem
that it's source is virtually unreadable. htmlman should provide a
simple static site generator which can be plugged into GitHub actions or
the like to automatically generate rendered version of man pages tracked
in version control.
Change-Id: Ib53292964b3ff84c32d70c5fde257a2edb8c2122
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2596
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
The default for this seems to have changed in a recent notmuch
release.
Change-Id: I1542b20c2e3edf72a3472c5277bce313c6df12b8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2595
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This also includes a fix for an issue where the identifiers of
variables were pushed onto the stack, which is incorrect.
Change-Id: Id89b388268efad295f29978d767aa4b33c4ded14
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2594
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
identifier_str might look a bit overengineered, but we want to reuse
this bit of code and it needs a reference to the token from which to
pick the identifier.
The problem with this is that the token would be owned by self, but
the function needs to mutate (the interner), so this implementation is
the most straightforward way of acquiring and working with an
immutable reference to the token before interning the identifier.
Change-Id: I618ce8f789cb59b3a9c5b79a13111ea6d00b2424
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2592
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Making this function a macro instead makes it possible to match
arbitrary token kinds, even the ones that carry data, without changing
the syntax too much.
Change-Id: I5cda9e36d6833bd9c259f7d4d8340db6e783b4e8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2593
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
users.sterni.nix.utf8 implements UTF-8 decoding in pure nix. We
implement the decoding as a simple state machine which is fed one byte
at a time. Decoding whole strings is possible by subsequently calling
step. This is done in decode which uses builtins.foldl' to get around
recursion restrictions and a neat trick using builtins.deepSeq puck
showed me limiting the size of the thunks in a foldl' (which can also
cause a stack overflow).
This makes decoding arbitrarily large UTF-8 files into codepoints using
nix theoretically possible, but it is not really practical: Decoding a
36KB LaTeX file I had lying around takes ~160s on my laptop.
Change-Id: Iab8c973dac89074ec280b4880a7408e0b3d19bc7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2590
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
switch would probably otherwise be called match, but has been renamed so
it isn't confused with string.match and the enum matching capabilities
yants has.
It implements the closest to pattern matching nix can come which is
still flexible enough to not be painful: Syntactically it works like
cond, but is given a value. Instead of booleans it checks passed
predicates or equality if simple values are passed. Both types of checks
can be mixed.
Change-Id: I40f000979cfd469316e15fd58d6c3a80312c1cc4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2589
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Since nix ends the substring at the end of the string anyways we can
just statically use the largest nix integer as the length of the string.
According to my testing this it ever so slightly faster as well.
Change-Id: I64566e91c7b223f03dcebe3bc5710696dc4261bc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2587
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
After all it only matches strings.
Change-Id: I3d2e5221ef43f692de69028e78ed98b6b11f82d1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2586
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
These aren't particularly useful without side effects, but one step at
a time.
This diverges slightly from the book, in that OpPop retains the last
value it "forgot" from the stack in a special field on the
interpreter.
This makes it possible to return values from expression statements,
which helps in cases where Lox is embedded as a scripting
language (please don't do this ever) or in tests.
Change-Id: Ided0bc04c6e80ddb23ba4693d61ac9e08b002d58
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2584
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This is again a step closer to the book, but there are some notable
differences:
* Only constants encountered by the compiler are interned, all other
string operations (well, concatenation) happen with heap objects.
* OpReturn will always ensure that a returned string value is newly
heap allocated and does not reference the interner.
Change-Id: If4f04309446e01b8ff2db51094e9710d465dbc50
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2582
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This is based on this matklad post:
https://matklad.github.io/2020/03/22/fast-simple-rust-interner.html
It's modified slightly to provide a safer interface and slightly more
readable implementation:
* interned string IDs are wrapped in a newtype that is not publicly
constructible
* unsafe block is reduced to only the small scope in which it is
needed
* lookup lifetime is pinned explicitly to make the intent clearer when
reading this code
Change-Id: Ia3dae988f33f8e5e7d8dc0c1a9216914a945b036
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2578
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
... including concatenation.
This diverges significantly from the book, as I'm using std::String
instead of implementing the book's whole heap object management
system.
It's possible that Lox in Rust actually doesn't need a GC and the
ownership model works just fine.
Change-Id: I374a0461d627cfafc26b2b54bfefac8b7c574d00
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2577
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
What you see here is mostly the fallout of me implementing a correct
urlencode implementation in nix for Profpatsch's blog implementation
(although they'll probably keep it at arm's length).
Where I want to go from here:
* Extend this library towards general purpose nix™, mainly by
implementing missing interfaces which you'd still have to use
<nixpkgs/lib> for right now. Reexposing parts of <nixpkgs/lib>
with better naming is fine for now, at some point I'd contemplate
making this depend on nothing outside of depot, maybe even itself
(should be easy we only use yants for an easily replaceable check).
* Improve error messages possibly by carefully reintroducing yants. I
originally typed essentially everything using yants, but turns out
this can a) be dangerous when stuff you are handling throws because
type checking means evaluating and b) has a incredible performance
cost in some cases.
* Reexpose builtins with better naming and slightly wrapped so they
don't unrecoverably throw in cases where a null or something would
suffice.
Change-Id: I33ab08ca4e62dbc16b86c66c653935686e6b0e79
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2541
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This makes it possible to specify the input & output types of the
binary_op macro. If only one type is specified, it is assumed that the
input and output types are the same.
Change-Id: Idfcc9ba462db3976b69379b6693d091e1a525a3b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2573
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Adds support for true, false & nil. These each come with a new
separate opcode and are pushed directly on the stack.
Change-Id: I405b5b09496dcf99d514d3411c083e0834377167
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2571
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Introduces a new enum which represents the different types of possible
values, and modifies the rest of the existing code to wrap/unwrap
these enum variants correctly.
Notably in the vm module, a new macro has been introduced that makes
it possible to encode a type expectation and return a runtime error in
case of a type mismatch.
Change-Id: I325b5e31e395c62d8819ab2af6d398e1277333c0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2570
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
If I was adding any dependencies, this might be a good one for a
property-based test thing, but I'm not going to.
Change-Id: Ia801d041479d1a88c59ef9e0fe1460b3640382e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2569
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Without this fix we would keep parsing in the same precedence level
and get weird things like:
10 - -10 + 10
=> 10
Change-Id: If2bed4569fbf566027011037165a9b3c09b7427c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2567
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This should clean up everything in the way of actually running this
end-to-end.
Change-Id: Ie89d82472a458256a251a4fddc1c36d88d21f5f2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2563
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Defines a new precedence levels enum which can be used to restrict the
parser precedence in any given location. As an example, unary
expressions and grouping are implemented, as these have a different
precedence from e.g. expression()
Change-Id: I91f299fc77530f76c3aba717f638985428104ee5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2558
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This lets us suppress reporting of additional errors from the compiler
until a synchronisation point is reached.
Change-Id: Iacf90949f868fbdb4349750065b5e458cf74d32a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2557
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This one necessarily has to diverge more from the book than the
treewalk interpreter did, so some of this is expected to change, but
I'm happy with the rough shape.
Since we're reusing the old scanner, the compiler/parser struct owns
an iterator over all tokens with which the pull-scanner from the
bytecode chapters is simulated.
Change-Id: Icfa0bd4729d9df786e08f7e49a25cba1b9989a91
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2556
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This makes it easier to transition between the single/multi error
functions via ?
Change-Id: Ie027f4700da463a549be6f0d4a0022a9b8dc0d61
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2555
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
hibernate on low battery, and when the power button is pressed
Change-Id: I6560fc770ee5707e59fb2763614de2b8000e156e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2550
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Uses project.el to anchor the ripgrep search. In combination with my
project detection logic, this means that grepping in TVL subprojects
works automatically.
Change-Id: I2705466d1de156c08ff0401a71112864aa24f976
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2542
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Main motivation for this is to get the openldap update that fixes
10 CVEs: CVE-2020-36221 to including CVE-2020-36230. See also this
issue which lists them all: https://github.com/NixOS/nixpkgs/issues/113490
Someone should also redeploy whitby as soon as this lands in canon and
all build failures have been fixed.
Things done to resolve upstream breakages:
* grpc no longer takes abseil-cpp as an input, it has also been removed
in the override.
* Upgrade glittershark's kernel to 5.11 since the linuxPackages_5_9
attribute has been removed by upstream and the patch used by them is
available for 5.11 as well.
* The fixed output hash for third_patry.apereo-cas changed for some reason.
* Remove the pin of haskellPackages.vector from the haskell overlay. It
broke as the most recent version of vector in nixos-unstable no longer
depends on semigroups. This effectively updates vector from 0.12.1.2
to 0.12.2.0.
* Align two comments in tvix/libstore/worker-protocol.hh because the
updated clang-format now demands that.
Change-Id: I2ecf10a98de935e9222acf1feaea447d4c11ed2d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2538
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: sterni <sternenseemann@systemli.org>
Was messing around with serde and trying to build serde_json something,
might as well commit this.
Change-Id: I60f87aa3180f750fa171eca7f9c375ed053f8456
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2537
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This adds a trivial test case on the transitive lib in tests and builds
it by wrapping in with testRustSimple. This should check:
* testRustSimple doesn't change the output and other packages can just
use it as a normal dependency
* tests are built and executed
Change-Id: Ia4ea7425432b8b0da09f63054f51f0c480300aa4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2531
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The rust tests are now automatically built and run if
users.Profpatsch.netencode-rs is built without changing the content of
its output. users.Profpatsch.netencode-rs-tests has been removed in
favor of this, but can still be accessed as
builtins.head users.Profpatsch.netencode.netencode-rs.drvDeps
Change-Id: I25e8191f5b9efa08ace4a584a75978565c79d8d0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2530
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
testRustSimple is intended to wrap rustSimpleLib and rustSimpleBin and
theoretically pkgs.buildRustCrate with { buildTests = false; } while
building and running their tests, making them fail if the tests don't
succeed.
This is implemented using nix.drvSeqL which is a perfect fit here:
* { buildTests = true; } only returns an output with the test binaries
and does not actually run the tests. With drvSeqL we can easily wrap
this derivation.
* { buildTests = true } doesn't contain anything other derivations want
to depend on, so it is an derivation output we don't want to have.
drvSeqL hides the tests derivation away and only requires us to build
it once.
* Usually drvSeqL has the issue that tests (or advantage) are not rebuilt
if the test derivation changes. This is no question in this case as
due to the embedded nature of Rust's test, both the derivation with
and without tests change anyways regardless of which part was changed.
Future work: Allow injecting other tests?
Change-Id: If6ecfb3a360ce059320dbb05642b391b617aede7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2529
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
We forgot the special casing of derivations; if we recurse into a
derivation like we’d recurse into an attrset, it always ends in tears,
so dwim will just print the derivation path instead, which is usually
what you want anyway.
Change-Id: Ieed1b68dfcf8f2925ee3a75ae4f460fa5081da28
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2526
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
eprintenv is a debugging tool, as such the code should probably not
crash when the environment variable we want to look at is missing.
But we can print a warning instead.
Change-Id: I41a24dc0c1cc488587563b85c1adbd089dd364f2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2525
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The headers are not a scalar, so record-splice-env doesn’t know how to
convert them to an envvar; let’s just ignore everything that can’t be
converted to a scalar for now.
Change-Id: I74ed0aa942fcd26beb058705830bc2f2b516e93e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2523
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tries to decode the inner type, turning it into an Option.
Change-Id: I29d1286fe873c28d7c4a4b71f220acaf2d23f8e1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2522
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Small helper that empties out the environment, except for the given
list of variables.
Change-Id: I5e265496aaa5c248136318aa1c6cd91a67d3f028
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2506
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Some programs need an exact amount of arguments, and we want to fail
if they get too many or not enough.
Change-Id: Ic703949f38780718f26118b896e7c7d7aa5553d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2504
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Some programs don’t need any arguments, so fail if they do get them,
because that’s usually a bug.
Change-Id: I28639056d3d9cea0cc0e7fcbfa42120c4f129c8c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2503
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Projecting into one record field of netencode given on stdin.
Change-Id: I975bd5558a06988aa159156ca73a449710db983f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2502
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
arglib should remove its arguments after reading it, to prevent them
from leaking to any child processes.
Change-Id: Ifc107b1620b8e407bad6b3d0ad7f4728856ec2ba
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2501
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Interestingly, the code is not any shorter, but a lot more
declarative, and all parsing footwork and error message generation is
done by the `Decoder` trait. \o/
Change-Id: Idb1064a3b5198e38e06e1860d4d71054ae53bbb9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2499
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
`Text` and `Binary` should be self-explaining, they just match on the
primitive and throw an error otherwise.
OneOf is cool, because it allows the user to match on the
result type of decoding `inner`, and give a list of values that should
be allowed as the result type (the associated type `A` in the
`Decoder` trait).
Change-Id: Ia252e25194610555c17c37640a96953142f0a165
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2498
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Shouldn’t use the netstring function, since that adds the length of
the containing string, which doesn’t make sense for numbers, they just
have their one length number and content.
Change-Id: I5591f6dd59154c5ef38d6e9b7300d19884a2d57b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2497
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This fell out of us moving the `U::List` to a `Vec`.
I noticed that now we have deep recursion for `U`s, which originally
wasn’t intended; reverting to contain `&[u8]` might be a good
experiment, as long as the lists stay a `Vec<&'a [u8]`, which was the
thing preventing us from parsing lists without allocating memory.
Change-Id: I4900c5dea460fa69a78ce0dbed5708495af5d2e1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2495
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
`dec::RecordDot` accesses a specific field of a netencode record.
In order to implement this, either we’d have to introduce a type-level
string, but in all honesty this kind of typelevel circlejerking never
leads anywhere, so let’s change the trait to use `&self` after all.
Usage is pretty much the same, except actually more like you’d expect.
Change-Id: I5a7f1a3f587256c50df1b65c2969e5a7194bba70
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2494
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Since we don’t necessarily need to decode deeply, we can make the
decoders take a `U` instead of a `T`.
Change-Id: I9704a21edb3922d58411e6807d027d684b18d390
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2492
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Also change the toplevel `encode()` to take a `&U` instead of an owned
`U`.
Change-Id: I8e51540cc531e70ae1c94e3676f4dd88da7a924d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2491
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
`U::Record` is required to be a hash map (later keys should be
ignored), so why not do the hash map immediately.
This surfaced a problem with read-http, because duplicate headers in
http are possible, but before they’d be silently ignored.
Now we merge them into a `U::List` in case, to be handled by
consumers of read-http.
Change-Id: Ifd594916f76e5acf9d08e705e0dec2c10a0081c9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2490
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
We expect the users to pass an actual prog, not an argv, so 0 is the
program to exec into.
Also improve the exec error, by including the program we tried to exec
into (the rust IO error doesn’t contain the name).
Change-Id: I664f9f717e4f82bfc1b1da3bd7114124b7582d5f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2489
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Earlier we left the next level of values unencoded, since lists are
just concatenated netencode values. But I noticed that you can’t write
e.g. a `t_to_u` function, because only in the case of lists you need
to allocate memory.
Turns out that if we read the next level of values, everything is
handled the same as in `Record` and things suddenly start working.
We can also throw away some of the strange and ad-hoc parser helpers
we needed before, `skip` and `list_take`, since now those are just
normal `Vec::iter().skip()` and take.
Change-Id: Ibc476e028102944a65c2b64621047086cfc09aa5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2488
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Since `Text` is a scalar, it doesn’t make sense to delay the utf-8
verification to the consumer.
Change-Id: I36e4d228fbf35374d7c1addb4b24828cf6e927e5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2478
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
a044a87084 removed boxes in T::List, but
the tests were not adjusted accordingly.
Seems like netencode fell victim to CI not recursing into attrsets not
generated by readTree in pipeline generation.
Change-Id: I65d58a82881059983f7d6bc7a32263c6671ccbba
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2486
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Seems like 5d44df3af6 forgot to add the
newly split out crate to the dependencies of netencode_mustache.
CI didn't pick up on it since it is hidden away from readTree in an
attrset in a file.
Change-Id: I7df9a636d849de48a99562d1cda8c0e6765f4781
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2485
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
There is this semantic exit code schema championed by execline and
skaware tooling, and we refined and documented it a bit in lorri
d1d673d420/src/ops/mod.rs (L24-L35)
in the past.
This just transcribes the error messages into simple helper functions.
Applies the functions to the places where we would panic or die
`sys::exit()` instead.
Change-Id: I15ca05cd6f99a25a3378518be94110eab416354e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2475
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
`exec_into_args` would just read argv and exec into it, but we want to
be able to write commands which take some positional arguments first.
Thus we split the invocation into `args_for_exec`, which returns the
positional arguments and prog, and then pass prog to `exec_into_args`
when we want to exec eventually (prog is still an iterator at this
point).
Change-Id: I0b180c1a100b96363fe33ba2c42034ed41716b7a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2474
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
There might be exploits since we parsed the headers as utf8 even
though we actually want to interpret them as ASCII.
This fixes it, by using the ascii crate.
Thanks to @sterni for noticing.
Change-Id: I50b6a588d99b34e677cb22968cf0dfd8b331d11c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2457
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Splice a netencode record from stdin into the environment.
Change-Id: I7eac19e18164e070e4463ee431d9b0e955857b9c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2454
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Decoders are implemented not directly on output types, but on trivial
proxy types, so that we can easily combine those into a decoder, and
then the associated type is the actual return value of the decoder.
Change-Id: Ibce98fa09fc944e02ab327112ec7ffbc09815830
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2455
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Most tools end by execing into their argv, so here’s a small rust
function which does the boilerplate.
Change-Id: I9748955cf53828e02f04d7e8d74fbaf10c1158b5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2453
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Headers should always be ASCII, so let’s crash if they are not. The
thing gets a lot easier to use, and clients who fail this restriction
can just fuck off.
Also actually print the results to stdout instead of stderr …
Change-Id: I782c96c537ae11b541175e96453c4114e0a71b05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2451
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
arglib is the simple idea of passing structured data via a
conventional environment variable instead of implementing an optparser
for every little tool.
Pop the envvar, decode the contents, return the contents.
Change-Id: Ie44148293a58aae9a0a613895176227d43b491bb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2449
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
It's not installed because it's broken right now
Change-Id: I1bf198788fb90aabe3ba1a7b65399c3579983704
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2459
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This appears to be getting overridden by a package somewhere now
Change-Id: I4f0776b5ae65e5cfa936e3636ce1bb5e2c85790a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2427
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This gives a permission denied error when I try to log in
Change-Id: Ibb9a66bb0ccec5fdf6839dd38ffd7e0a782687d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2425
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This way ci should pick up on clhs-lookup since only a single derivation
is exposed with the default.nix and it is less cumbersome to type the
attribute path (users.sterni.clhs.clhs-lookup →
users.sterni.clhs-lookup). The exposed CLHS wasn't used for anything
anyways and I can always expose it again using passthru or extra if it's
ever merged.
Change-Id: I6c5aeba1b58ca650700c6efa0913e4b42685ea6b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2461
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
reads a http request or response from stdin, and parses its headers
into a netencoded record.
Darn rust code took way too long to write.
Change-Id: Ie99faa6d4bbd4996fa4e43fb119a11d85b611c99
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2447
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Basically what you expect, strings to text, ints to 64-bit integers,
attrs and lists to nested records and lists.
Change-Id: I9d3d841f32ab32a152cd61522f02ebde4a9b11d3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2444
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Apparently HashMap and Vec already do internal boxing, so the extra
indirection in the value isn’t needed.
Then, in order to make things uniform, move the boxing of `Sum` into
the `Tag` value. No extra boxing in the recursion! \o/
Change-Id: Ic21d2e3e6ac0c6e1f045bf2c9d3e9c5af446fcff
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2443
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Recent channel updates have caused some issues for telega.el, mostly
because the version of tdlib (the C++ library for Telegram) and the
Emacs package are out of sync.
This overrides the version used in the Emacs package to a "known good"
commit. It would be useful to change the tdlib derivation in nixpkgs
to make this version mismatch a hard build error.
Change-Id: I9c994f783e1cc17e933432507cd13b65697efd4a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2445
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
There's a giant laser in the sky which makes it hard to read anything
on a dark theme.
Change-Id: I1dd0631dc8f8f693cceada4e62b25d4bde322e09
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2442
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This commit removes my user directory in the depot, my user account on whitby,
my entry in the LDAP database, and my entry in the website graph. I've had my
fun with TVL, but I want to move on to spending time on some other things.
This additionally removes aranea from the website graph, which they have
requested in private.
Change-Id: I2d098c8fe239f20d9f6c6cbf66a3dfb4a955a4cf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2436
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
Reviewed-by: lukegb <lukegb@tvl.fyi>
There is another extension for this already, but it hooks in after the
page has already started loading - doing it on the URL change handler
is much faster.
Change-Id: I442552cbd8bb040df999a1624cafd436f4a7b875
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2430
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
I managed to lock myself out by having the layout set to Russian while
locking the screen. This prevents that from happening.
Change-Id: I15780d2a626d96abe0af8db3736fad75034e66d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2424
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
In the book, the clox interpreter has its own scanner which uses a
pull-based model for a single pass compiler.
I can't be bothered to write another scanner, or amend this one into
pull-mode to work with the treewalk interpreter, so instead I will
just reuse it and pull from a vector of tokens.
The tokens are shared between both interpreters and the scanner is not
what I'm interested in here.
Change-Id: Ib07e89127fce2b047f9b3e1ff7e9908d798b3b2b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2420
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
It's unclear if the second part of the book can reuse anything from
the first part (I'm guessing probably the scanner, but I'll move that
back if it turns out to be the case).
Change-Id: I9411355929e31ac6e953599e51665406b1f48d55
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2415
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This is significantly simplified from the version in the book, since
I'm using Rust's Vec and not implementing dynamic arrays manually.
We'll see if I run into issues with that ...
Change-Id: Ie3446ac3884b850f3ba73a4b1a6ca14e68054188
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2413
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Right now this introduces a simple mechanism to flip between the
interpreters.
Change-Id: I92ee920c53d76ab6b664ac671993a6d6426af61a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2412
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Probably very similar to M-x sly-hyperspec-lookup: take a list of
common lisp symbols on the command line open the corresponding pages
in a local copy of the hyperspec in $BROWSER. Optionally the paths can
be printed to stdout.
Change-Id: I389e254f14eb0fc8fd8b18a4dbfe7adeeda9ba72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2397
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Uses inotify to watch a file and print when it is modified, so we can
update the parser and display the sexp on the terminal.
Now the setup is good enough to start experiementing with queries on
the syntax tree.
Change-Id: I091587fc495ff627c79a69a52915aaaa8c51fcd2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2411
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This makes the interpreter API a bit cleaner and allows for tighter
integration between the two parts (e.g. for static globals, which are
unhandled in the resolver right now).
Change-Id: I363714dc2e13cefa7731b54326573e0b871295d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2407
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Uses the rust library to set up a simple nix parsing expression, which
reads a nix file and prints the sexp tree.
Change-Id: I32dc9c7b39aa0f7ffa2b99348d6c2269e5fe1a6a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2402
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
I've stopped using it. This makes the header look a bit empty, but
I'll write new copy at some point.
Change-Id: I39bf36ba915c44e3d57905d0036de693b6431071
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2406
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Implements the first part of the resolver from
https://craftinginterpreters.com/resolving-and-binding.html
This is wired up to the execution paths in main, but not yet in the
tests. The resolved depth is also not actually used for variable
lookups (yet).
Change-Id: I3a8615252b7b9b12d5a290c5ddf85988f61b9184
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2403
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This commit rearranges my SSH keys, and adds a public key for accessing whitby
as a remote builder from my laptop.
Change-Id: Ide1a9e296d307d141c1a732d01923e46772180a9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2398
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
In the book this is implemented via exceptions as control flow, and
I'm sticking somewhat closely to that by doing it via an error
variant.
Change-Id: I9c7b84d6bb28265ab94021ea681df84f16a53da2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2395
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This removes the runtime dependency on a borrow into the program
source code.
It's not yet ideal because there are a lot of tokens where we really
don't care about the lexeme, but this is what the book does and I
am not going to change that.
Change-Id: I888e18f98597766d6f725cbf9241e8eb2bd839e2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2394
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... with this, functions now work.
Note that this bubbled up another weird code structure nit: The
parser::Function type should probably not carry its name directly.
However this doesn't matter much and I don't care right now.
Change-Id: If8e3b23f07033260433b9acd45f37c0e61fd2ff8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2393
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This slightly jiggles around interpret_block to let callers pass in an
environment.
Change-Id: I03112a38be0e8696242d8eae8d41da8c2cc66b48
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2392
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
In order to store a function in the interpreter's representation of a
callable, the lifetimes used throughout rlox need to be threaded
through properly.
This is currently not optimal, for two reasons:
* following the design of the book's scanner, the source code slice
needs to still be available at runtime. Rust makes this explicit,
but it seems unnecessary.
* the interpreter's lifetime is now bounded to be smaller than the
source's, which means that the REPL no longer persists state between
evaluations
Both of these can be fixed eventually by diverging the scanner from
the book slightly, but right now that's not my priority.
Change-Id: Id0bf694541ff59795cfdea3c64a965384a49bfe2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2391
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This is much easier to read & write. It's been annoying me all the way
through.
Change-Id: Ia91756d3111a2ce3f74e1c14bccc210118d221dd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2387
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This makes it easier to write interpreter tests, as we don't need to
look at output and such.
Change-Id: I6f8ce0cb0c482b8c00707d09e6be750c8e534176
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2384
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... and adds an example builtin which returns the current epoch.
The types introduced by this, especially in the interpreter module,
are going to be used for user-defined functions, too.
Change-Id: I0364a67241e94642cde08489ac711a340e30ebe8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2381
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This makes it possible to distinguish between literal and other
values, such as functions.
Change-Id: I4d87b96c2988e25a61eecfeeb56188fabfd0dc40
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2367
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This has auth tokens etc.
Change-Id: I0877744de38d31f2dfe402ab009f31a22467c3b4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2365
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
There appears to be an issue where the internal trackpad tries to
register itself as a ps1 mouse rather than a usb one, which causes some
dmesg warnings that may or may not cause actual problems. Regardless,
blacklisting this should be harmless.
Change-Id: I00fb539b8acf4fbf1b9125786ea6dc4f649b08c7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2364
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Necessary for tarsnap (for now), though I'm probably gonna get rid of
that sooner rather than later.
Change-Id: I4614a8e4ea62edd247a0fead6ae38d1f870b36f4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2357
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
- add <> as evil-surround pairs (this isn't working atm)
- Make lsp-ui-doc frames a reasonable size
- Use clippy as the cargo watch command for rust-analyzer
Change-Id: Ieee2633cbb332af6513af6b7484adeef5bdb3e06
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2356
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
None of the flycheck checkers work, really, and even if they did I
ignore them most of the time.
Change-Id: Iebb0b5202207f1fbada197bb5667fa8431ab879c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2355
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This is too deep in my muscle memory, and actually fairly ergonomic on
my keyboard
Change-Id: I2e57c3221a52f00f62e5a7427bdfae6fe37ff850
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2354
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Your regularly scheduled channel update, but slightly more regular
than before.
Included fixes:
* 3p/emacs: Pick telega.el from stable channel, unstable is broken.
* glittershark/fprintd: Compile with gcc9, since build fails with the
new default of gcc10
* glittershark/fprintd: Use a global overlay for the fprintd package
until https://github.com/NixOS/nixpkgs/pull/108962 lands in
nixos-unstable
* glittershark/home: Don't install rr, as it's not building with gcc10
Co-Author: Griffin Smith <grfn@gws.fyi>
Change-Id: Ia715fef64a405a220049fc540017356fa7370e0b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2341
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Tested-by: BuildkiteCI
Running this after a codified refactor acts as a good smoke test,
if a big subset of packages is broken or any central packages are
broken, this should find them quite quickly, thanks to randomness™.
Just let it run for a few minutes and check the errors that pop up.
Change-Id: I1505dd31ca25b29254474a15cd6cb71d9743038a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2346
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: lukegb <lukegb@tvl.fyi>
This is in order to advance the rewriting from stdenv.lib to lib.
https://github.com/NixOS/nixpkgs/issues/108938
The hard part about changing the argument is that a package might not
include lib in its arguments, which is why I use hnix to check whether
lib is included and add it to the import list if it doesn’t already
exist there.
So far, only the really common pattern of
meta = with stdenv.lib;
is rewritten.
Change-Id: I370f0a321b0e5a5bd21ec21fc7cefdd65ec845ed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2345
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
I haven't used this much in the last months and it's causing issues
via some hook now, so bye bye.
Change-Id: If2b321887569b31c0ac7ad3fdd1b9c1d9f7b69f7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2344
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... this isn't finished yet, in particular it lacks:
* better support for attribute sets
* support for defining functions that take attribute sets
Change-Id: Ia897fccd9d2b674b6ed12907ae297bfdcc86db48
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2237
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Changes:
* ops/nixos/tvl-slapd: The NixOS module for OpenLDAP has removed the
ability to configure OpenLDAP directly and now forces users to use
some kind of weird Nix->OLC mapping that is mostly undocumented.
This moves the config we need to the new format in a way that may or
may not work and does the other arbitrary dance steps that someone
decided to impose on us. Note that this now throws lots of warnings,
but I can't be bothered to fix them.
* 3p: Random package removals accomodated
* users/glittershark: Pin grfn's kernel to 5.9, because the CK patch
is not yet updated for 5.10
* users/glittershark: Update vendor hash for pg-dump-upsert, I suspect
this changed because of something in the Go build machinery in
nixpkgs. The deleteVendor flag also has no effect anymore and has been
removed.
* users/glittershark: agda build is broken, commenting out development
home-manager environment until it can be fixed
* third_party/haskell_overlay: updating random needs upper boundarles
of a few dependencies relaxed (curse them)
* third_party/gerrit_plugins: for some cursed reason the fixed-output
hash of the gerrit owners plugin fetchgit changed, updated.
Same for the checks plugin.
Change-Id: Ica37995fe8039d3ba80eab643867f98795c56734
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2295
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
A little executable, combining the netencode and mustache libraries to
make easy templating from the command line possible.
Combined with the nix netencode generators, it’s now trivial to
populate a mustache template with (nearly) arbitrary data.
Yay.
Change-Id: I5b892c38fbc33dd826a26174dd9567f0b72e6322
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2320
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
The netencode standard, a no-nonsense extension of netstrings for
structured data.
Includes a nix generator module and a rust parsing library.
Imported from
e409df3861/pkgs/profpatsch/netencode
Original license GPLv3, but I’m the sole author, so I transfer it to
whatever license depot uses.
Change-Id: I4f6fa97120a0fd861eeef35085a3dd642ab7c407
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2319
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
A bunch of writer functions wrapping the `buildRustCrate`
functionality of nixpkgs. Can be used to write inline rust code, or
rust code read from files with `builtins.readFile`.
Change-Id: I9d74e9381b858b485925e4dc3fbb7fc392877c0a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2318
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Simple helper function to generate a netstring that is a list of
key-value pairs, to serialize a nix dict. Also adds a python lib to
read the serialized form into a dict again.
Change-Id: I306c0cfd51640c0658d32c8d3a4f3d332ba448f0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2315
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Uses the new restrict type to make sure flake errors start with an E.
Change-Id: I30369ade28e1ef612c91a368de2d5b128e6cf2a9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2313
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This is a reexport of nixpkgs.writers.writePython3, but the libraries
are passed the package set, like with other writers.
Change-Id: Ia5a2ed1b6b329700836a8575d2bde768bf64fb31
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2311
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Smol writer to create a python lib directly from a nix string.
The resulting library can be consumed by the writePython3 writer.
Change-Id: Id3d793564d230b38a08f65140bda4287285e1a72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2310
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
If there was no parent, the while loop would try to get the parent of
a `nil`, which crashes and burns.
We now also ignore any non-named parents; this might be unnecessary,
if tree-sitter parent nodes are always named, but I don’t know that at
the moment and it’s not documented very well, so better safe than
sorry.
Change-Id: Ia72ee9241b885ab312f8ecf7a8fbfece7eea8f1b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2263
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Always goes to the first child for now.
Change-Id: I1d00b2f2013ba7e5f88622d1de3c99500e5f1a7a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2261
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
We skip intermediate nodes that do not have any siblings, because they
are irrelevant to navigation and just add extra keypresses without any
highlight changes. This might not be the best choice, we’ll see.
Change-Id: I75fbf79aa7915172e426442a076d57cfbebf5421
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2260
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Resets the cursor to the named node under the cursor.
`-right` does not do it anymore, so it’s possible to navigate on
higher levels of the tree instead of always resetting to a leaf.
Change-Id: Id330854c72ea24da0cc8611f30f5617e0f127c1b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2259
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Has a little setup to get the cursor position and map it onto a tree
sitter node. The current node is saved in a cursor variable, and a
highlight overlay marks the range of the current node in the buffer.
Change-Id: I0af56115f928732e993fbefe978a246ca7c757ee
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2258
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This is currently a bit hacky because of the environment
wrapping/unwrapping, will refactor this to just keep a single Rc
around instead.
Change-Id: Iad1cbbe35112d0329248d4655a09260fc60644c8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2304
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Adds scoped environments using a sophisticated structure known as an
SRPT, which stands for "shitty parent pointer tree".
Change-Id: I62f66aabe6eb32ea01c4cabcca5b03cfefcc28ee
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2301
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
I'm building a database! I have to open all the files!
Change-Id: Ie77ad6fafe837c0ddba6b5d56cdc06d787807d4e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2257
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
* rebases the send scope patch
* removes the API key override patch, lieer now has a configuration
option for this
Change-Id: I198e8b61855f6cdb2b1439a1c8f2d9d69261c1b5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2242
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
These didn't appear to be the source of the flickering after all.
Change-Id: Id3cce3e7905d0af21dc6ec4dc3a11828451378fe
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2254
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Split the 6 channels of input I have from my audio interface into 2
separate channels for inputs 1 and 2, so that I can have only the one
microphone feed into video chat apps.
The way this is done right now is less than ideal as it doesn't support
any sort of hotplugging - at some point, I should figure out the
appropriate udev invocations to make that work.
Change-Id: I53dc363173fa8db591b0e9cb08258d90835c1109
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2249
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
More bindings that existed in the default i3 config but I had never
explicitly specified.
Change-Id: I57de0d3221afac299da9a09224564571037f67fa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2245
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
An ec2 node I'm using as a remote dev box
Change-Id: I7d81371ecdc11d6c1b5bc06d1b4f55de534d25ad
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2244
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
These take precedence over cabal old-style aliases, since those aren't
used anymore
Change-Id: Iad1593bffb35d8f7b9c7df16c7c2da09a6ebb906
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2220
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This is a step towards making the completing-read framework more
easily interchangeable (I'm eyeing selectrum).
Change-Id: I7a066e212a5384136defbba8f11ef9ed57abf22e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2240
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
I'm too tired for part 2.
Change-Id: Ic7058344806466276e3792e9ff9bbf660a18f672
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2239
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Solve time is like 36 hours, that must be a record!
Change-Id: I3713f033d83e6179a5d5fa7513952ee3864a6164
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2238
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This lets the parser collect multiple errors instead of returning
after the first one, with some optimistic synchronisation after
encountering something that looks wonky.
Change-Id: Ie9d0ce8de9dcc7a3d1e7aa2abe15f74cab0ab96b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2236
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... with the exception of parenthesised expressions, because error
threading is not implemented yet.
Change-Id: I8d455d85e647548d5b71cbfd3d078f4970dab7fb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2232
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This changes the structure of the output, too, where all AoC solutions
now end up in a big folder with `bin/day$n` executables.
Change-Id: I77928f4129489d06779b50059835925652688c9c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2231
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... found this in the same place as hanebuschtag.txt
Change-Id: Iff5f4867b6c1d7685edae8a190489f3efb4890bc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2229
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This old, legendary file should never be lost.
Change-Id: I2ae1607da24d684199c4136a880f56528d45a6e8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2228
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Something I changed - perhaps removing lib.mkOptionDefault - caused
the *default* i3 keybindings (things like switching workspaces and
toggling the split layout which I had not added myself) not to get
added. This adds them back.
Change-Id: I301a346eabb4f7fc4499b60a4c26956fb1e08b0d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2218
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This actually appears to be working this time!
Change-Id: I3e10eb7e1621a050e024b8b53313f13d44a999ae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2217
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This is a whole pile of things suggested by the internet to fix the
weird text flickering issues I've been seeing. upon first look it seems
like one of the kernel params (or all of them, or some combination of
them) fixed the issue.
Change-Id: Idc98902b46d4cba3bab367f6e22fb9ad10b26a26
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2216
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Running docker is silly if I can't access it
Change-Id: I476915dacd44fac1ce4c533a84849fa6175d8107
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2215
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
At some point I should just convert this into an option that gets set
per-machine...but whatever.
Change-Id: I745fc5126469e887f8657e990d14a7e8b5085330
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2214
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
... mostly some AST boilerplate and a first top-level rule, plus
boilerplate similar to that set up in the Scanner.
Change-Id: I605d1de23c47a3b3702ab4f62cd3371bc3988c7d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2194
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Accidentally removed this everywhere when I disabled it for Darwin
Change-Id: Ia3480f1fbc6431a27da8c1de03bf0a66808f46b9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2208
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
rustup and rust-analyzer for now, but this will likely also have shell
aliases and the like
Change-Id: I7838e537a72600410205e018a0c86be1493a9ffe
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2207
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
To avoid it clogging up git status in the depot
Change-Id: I102126dedb427d632679ee091aced6971495b8cc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2206
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
My new work laptop, a dell XPS 13.
Change-Id: Ieab06622c9b280182025edfa63adf649e5fc70d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2205
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: lukegb <lukegb@tvl.fyi>
I want to use this as a prefix key instead
Change-Id: Idc865eb2edd1cbeff0b8a849232d98272c21ca8d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2204
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
... and show them to users, very crudely.
Change-Id: If4491b14db1124313f6ab7e5fbfdce9fea501d11
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2193
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Note that Lox does not support escapes, and I don't care about that.
Change-Id: Ie848cbc1164c4b005b15e29aad8fe723aaa68d1b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2190
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
The "swap-window" command swaps two windows, the 'source' and
'destination' window, exchanging the indices they occupy in the window
list. In at least tmux 2.8 (which is what's in Debian Stable), if the
window under focus is the source window, then focus follows that window
(i.e. the focus changes to the current window's new index atomically
with it being moved to that index).
In more recent tmux versions, this is not the case, and the focus
remains on the old index, so that the replacement window comes under
focus. The former behaviour is still possible, but must be explicitly
requested.
Change-Id: Ieff606dfc2624b869d3bb6e1344dd4d0c6301857
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2169
Reviewed-by: multi <depot@in-addr.xyz>
Tested-by: BuildkiteCI
... they're just noisy at the moment. This isn't complete because it
doesn't thread through scanner errors.
Change-Id: I0f75d2b20fa3f57be1af5d1d8aa8059856855825
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2162
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This makes it easier to work with the Unicode issue. The original
string representation can be discarded.
Change-Id: I740be4cb9654679ea7950f3899c5c709b1e7a739
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2160
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This was locked away in the urbint-specific module, but I use it
elsewhere.
Change-Id: Ifced2196dc22a9dbed74a18d4e1fed9488eb0e26
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2152
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Update everything in home-manager to properly work on darwin (including
adding dobharchu as a top-level attribute from
//users/glittershark/home) and also fix font faces and sizes in emacs
config
Change-Id: Ica889dd212876030d5c2a916a71d8b614e6964f1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2147
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This adds my standard inputrc to my home-manager configuration, via the
latter's readline module, and adds nix-shell detection to my bash prompt
string.
Additionally, nix-shell is wrapped in a shell function, so that entering
a nix-shell environment automatically runs bash as a subprocess where
appropriate, as the default environment spawned by nix-shell is not to
my liking.
Change-Id: Id5b1b9415a185ad9920f268c66de32d6ccc0b452
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2146
Reviewed-by: multi <depot@in-addr.xyz>
Tested-by: BuildkiteCI
This was only done to get an upgraded version, which is no longer
necessary with the nixpkgs bump but was also causing incompatibilities
with opengl
Change-Id: Ic398b4ac6caf24a1d40b7a4917b5053fba12d97a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2145
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
... still not that interesting, but at this point slightly divergent
from the book:
The book embraces mutability for interpreter state, initially for
tracking whether an error condition has occured.
I avoid this by instead defining an error type and collecting the
error values, to be handled later on.
Notes: So far nothing special, but this is just the beginning of the
book. I like the style it is written in and it has pointed to some
interesting resources, such as a 1965 paper titled "The Next 700
Languages".
Change-Id: I030b38438fec9eb55372bf547af225138908230a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2144
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... as well as a Nix derivation, because why not.
Change-Id: Iaf2591ab72676fe0732c3f807b3aa0cff13fb4ef
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2143
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This is going to be the first of two interpreters from "Crafting
Interpreters".
Change-Id: I354ddd2357444648d0245f35d92176dd176525d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2142
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Mugwump is too unstable for such an important internet service
Change-Id: Ic714200ce5ce51f366777f538b4a6f443f010960
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2124
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
I previously removed my local package set from my HM config while the
latter was being made readTree compatible. Now that both the HM config
and the local package set can be built with readTree, I can re-enable
the locally-overridden htop package.
Change-Id: I77e20248c010bc7027e0b0a3164ec48d6ec29f31
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2132
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
This adds readTree configuration for accessing my local package set,
and also adds these packages to the CI configuration.
Change-Id: Icd2d16e85859343902e73a466f3c6ba8d781537f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2131
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
This reverts 1478317d149539d74fa4bad8414658fb7119ea07.
Using depot.depotPath in my home-manager configuration results in my
NIX_PATH and home-manager config file path being pointed at a copy of
the depot in the nix store, which makes building from my local depot
checkout a bit cumbersome.
Change-Id: Ib687d3e8147cb32df071d3c19a5300294ea62c0c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2130
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
Add a new home-manager-compatible configuration file which loads the
common config attrset used by the readTree machinery into a structure
which the home-manager command line tool understands.
Garbage-collect the old home-manager configuration file used on whitby,
and update the HOME_MANAGER_CONFIG path to point at the new shim config.
Instead of having a per-environment HM configuration (not that I have
more than one environment), there's now a single configuration which
evaluates to an attrset of configurations, which can be loaded and built
using "home-manager build -A $attr".
Change-Id: Id8b35dc89aabffedf1a4dadfa0d3d4b914e4e2e7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2129
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
My home-manager config is not currently readTree compatible, which means
that it's not built by CI. This constructs a house of cards around
home-manager to make this buildable in CI.
Change-Id: I80480f24ff47347f46d708edbbf34d59fa76adac
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2123
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
The depot knows where it is, not because it knows where it isn't, but
because it does an "import ./." at the top level and then makes this
path value available in the attrset passed to the rest of the tree.
My home-manager config on whitby previously involved manual
specification of the depot checkout location on whitby, however this
isn't necessary when the depot can already magically tell us where it
is.
Change-Id: I68577c8ef2cda6ba5bc46cf8f4821aac021c8066
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2122
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
"let pkgs = import <nixpkgs> {}; in pkgs.home-manager.src" evaluates to
the source derivation for home-manager, however home-manager's configuration
machinery expects to be passed the store path of this derivation instead of the
derivation object itself.
Change-Id: I6b0ba3efaff9d080900349529576443192b058e9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2121
Reviewed-by: multi <depot@in-addr.xyz>
Tested-by: BuildkiteCI
Included fixes for random breakage:
* 3p/awscli: pick from the stable channel; it is broken on unstable
* 3p/googletest: bumped version & removed patches that nixpkgs applies
* 3p/lisp/cffi: bumped library version for SBCL compat
* 3p/nix: fix libsystemd attribute
* 3p/nix: reformatted (clang-format handling of ternaries changed)
* glittershark/home: Use home-manager from nixkpgs
* glittershark/kernel: bumped linux-ck patch hash
* glittershark/kernel: removed "patch patch"
* multi/whitby: Use home-manager from nixpkgs
* tazjin/frog: drop Sourcetrail (it doesn't build currently)
Note that in addition to these changes, some previous CLs updated the
versions of git and cgit which was necessary for this channel bump,
but which could not be done in the same commit due to the nature of
the subtree merges.
Change-Id: If2563e8a68e2750c4b913a976ff7b93b42e8b7f3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2110
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
Reviewed-by: glittershark <grfn@gws.fyi>
Previously changed kernel versions would not cachebust the patch
download, because it would still be using the same SHA hash.
Forcing a different store path (by adding the version to the name)
also forces a redownload of the patch (and in turn cause the hash to
mismatch), avoiding this as a silent cause of failures in channel
updates.
Change-Id: I81a136ee2401126795cf042b0aadf2a1e7a707b4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2114
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
- htop has moved upstreams, which has been producing new releases, so
update the derivation to pull from the new repository on GitHub.
- All of the patches I have locally have been merged upstream, so drop
them from the depot.
- Pull from a reasonably recent git commit instead of from a numbered
release, as the ZFS ARC stats and CPU meter columnation patches
haven't made it into a release yet.
Change-Id: I66ad4c035df07709abf4f75a9d4e1486920091d0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2105
Reviewed-by: multi <depot@in-addr.xyz>
Tested-by: BuildkiteCI
for some reason installing it directly via nix doesn't work atm, so I
have this hack here
Change-Id: I45093633c35e756988078eb136c6e7bc3c532eea
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2078
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This machine is significantly faster. Also, drop nixbuild, since the
transfer speed is too slow to make it worth it.
Change-Id: Ic14ef96e03a81dc429e4b4fec961c891dbb4b2b9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2066
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
My old macbook, which I still use sometimes
Change-Id: I3ad080083b67b6cfab4cd31a4dce0a80a7227bd5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2065
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
When posting a link to a PR created during an org headline, include the
name of the repository the PR was opened to in the link text.
Change-Id: I6c564aee3b098d3c6f96c7d7d609aa2638bc98e1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2063
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
There's just not enough juice in this machine to run more than one.
Change-Id: I6e6afc86337ca023e718023e4789fc29b6d8e175
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2059
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Don't enable whitby+nixbuild as remote builders on every machine (eg not
mugwump), only chupacabra
Change-Id: I8aa8f20d76da4ec0d8caa64ef04697b7e76cbc03
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2058
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Eventually this should be generalized, but for now this is good enough +
nice to have
Change-Id: Icca815b651cfb6f8f0cd2d6a1f64e56c63d2fef5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2057
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Install some packages and enable the necessary services + udev stuff to
make yubikeys usable
Change-Id: I8aee8a8b06895880c8195f02fb57b1216a5fdffc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2049
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
In this case mostly so I can have it on mugwump
Change-Id: Ifa24caf607b30c1d034f4a9e7044ece88fcee38e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2048
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Since buildkite is running on there, it'll be nice to be able to
download things. Obviously if this laptop ever becomes a laptop again
this'll have to go away (or just become the external domain)
Change-Id: I5fc49c061dbf79f8d523244bcf822e8d96fa6d42
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2047
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
I accidentally dropped this when reconfiguring things around to get
mugwump working, and when I rebuilt my x session turned off!
Change-Id: I252c90b6f4d796fef1f8183739fcc8dbfdd0fbf4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2046
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Having SSL on all the vhosts in nginx breaks the prometheus scraper with
the default config, since because it's targeting a different domain the
cert validation fails. It's pointing at localhost, so it's fine to just
have it not validate.
Change-Id: I1cbddc73335d4fa060115c253d69e27059a3113f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2045
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a couple of buildkite agents, based off of the config we're using
for whitby (thanks!) for building my own projects that are closed
source.
Change-Id: I2c73538595002fdf4116f534dc9a5806f17e0558
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2044
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
The default size is a little bit large
Change-Id: I9f7096cdf9f9ba8433e6ead6124bdc04fc88877b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2043
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
The one I had downloaded before was empty, accidentally
Change-Id: I37c2ce8c556aa3f728ee675ccf14ace8416dcca4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2042
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add config for prometheus+grafana to mugwump, served at metrics.gws.fyi
with an Acme SSL cert.
Change-Id: Icc22b5079a24edbc4469233e938f926d92f63eb3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2024
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
The new one is causing breakage for me, but I have no time to debug
this, so I'm backporting the old one.
AFAICT the simp_le included in this channel should be new enough to
have ACMEv2 compat, we'll see if it works.
Change-Id: Ib8b869a5af8a0418a66017a0cf3b9336df5f2d05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2017
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Init the config for mugwump, a NUC that I bought from ncl and which I'm
going to use as a simple home server and ssh bastion box. Since this is
the first time I've set up a server using my nixos config, this also
moves a bunch of desktop (xserver, audio, etc.) related config out of
modules/common.nix and into a new modules/desktop.nix.
Coming soon: nixos-rebuild switch --target, but in the depot!
Change-Id: I67bd5ba6e3c26f80f77058af186fd41cc245d5d2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2016
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add configuration for a live install iso based on the depot's nixpkgs
pin and with a couple of networking-based options tweaked a bit.
Change-Id: I208bd0f7815fe54fc805e8995a8288d7a0d36f84
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2014
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Adds a function `songwhip-lookup-url` which looks up the supplied URL
on Songwhip and copies the Songwhip link if a result was found.
This is bound to `s-s w` for convenience.
Change-Id: I3b529a058ee56f992942760910822490e6324259
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2002
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
It's a little easier to use this for Swedish than to compose the ä and
ö in the Norwegian layout.
Additionally - to avoid problems when switching to keyboards that have
no hardware remapping - re-applies the caps:super flip on every layout
switch.
Change-Id: I1b2c55761514745291d0eeb1502fa503f84f8aa1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2001
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
magit-read-org-clubhouse-branch-name returns the branch with the prefix
in it already, so we don't need to add it again here.
Change-Id: I0e753173bc366a8458ccd38a936ae078bbac79f8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1999
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
For some reason having these in a with-eval-after-load isn't working, so
let's try this out.
Change-Id: Ia419962626c7bd26776ed6fde977698998a18155
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1998
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This fixes a typo in f43dfd4b8e.
Change-Id: Ifc3050adc4c25a146a5d8c72e964d9aefb3bc580
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1994
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
Previously this used git checkouts of home-manager.git and nixpkgs.git on
whitby, which is self-evidently non-reproducible, so instead use pinned
tarballs of those repositories as data sources.
Change-Id: I3bd01e44d746c62e6bfbeab2e7698ae9954c8a94
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1993
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
'url is the API url of the PR, we want html_url to link to the web UI
Change-Id: I058592cde8c01e0feb5f7d51b577f1c41137a717
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1989
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
After creating a pull request link it to the currently clocked in
org-mode headline if any.
Change-Id: I75d7e70316494e355e11864496fdfc8b9e3009e1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1979
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
the oauth2 emacs lib *claims* it does this for us, but it demonstrably
doesn't.
Change-Id: I6495ac30799bb3d3fd7406cec5139602c311d22a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1977
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Some Quassel dialogues (e.g. popups, or clients that aren't connected
yet) don't match the expression and cause errors. This falls back to
the raw title for the window if no match is found.
Change-Id: I67b9cd7f6e2cb8e3e118d7fb7eeb615380be09d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1976
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Bind a key, which I've located at the top-left of my right keyboard, to
a momentary push-to-talk by muting and unmuting my pulseaudio source
using xbindkeys. I had been putting this off for a while because i3
doesn't support binding different commands to keyup than to keydown
events, but the xbindkeys support appears to have solved that reasonably
well, plus it's got Scheme in it so that's cool.
If there's demand for it I'll gladly expose this as a reusable,
configurable home-manager module outside my users dir in the depot.
Change-Id: Ie591c93037dbdac364d5d8a718d99edb70780789
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1975
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Similar to the b C command to create a *new* branch named after a
clubhouse ticket, add a new b M command to *rename* a branch after the
currently clocked-in clubhouse ticket.
Change-Id: I750106f5d417517fd8114536d9dc0905380d616a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1970
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Also move fcitx to system, since it's a nixos thing not a home-manager
thing.
Change-Id: I3e047494a478520e939d48fc72cc91a2d797bf74
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1969
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
These depend on graalvm which is gonna be a big ol build
Change-Id: I3b67e22677390921e408b9fea12191718b27cd7f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1967
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Use a block cursor in normal mode, and a beam cursor in insert mode.
Change-Id: I1cf5eebeaadf41cd006b324de62eb7f6804e149a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1965
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This gives Quassel buffers sensible titles containing the name of the
network the buffer is currently displaying.
Ideally it would show me the name of the Quassel Core connection, but
this isn't exported from Quassel into the X window title.
The regex captures both the channel and the network, but only the
network is currently used for display - I may revisit that at some
point.
Change-Id: Ife4c06919d9e9c0114ff298e1443b2b27ce2f146
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1964
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This has somehow stopped being a thing in newer vterm versions,
causing the weird behaviour with my term switcher - buffers with the
correct name were sticking around, but no longer in the right mode.
Change-Id: Ie641eb3db91808d7d1016de1e8ef3ad271c8995e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1931
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
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
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>
This reverts commit 475d41f698. I'd like
my derivations back, please.
Changes necessary to get this working:
- Don't depend on `nixpkgs` being in the NIX_PATH for my website - it's
not necessary anyway since emacs 27 is mainline now
- .skip-subtrees on things that shouldn't be evaluated anyway
- Get rid of system/pkgs, and move the one thing in there that *wasn't*
already in third_party (alsi) to third_party
- Drop notifymuch for now - it's not working, and I'll probably get it
landed in nixpkgs before I manage to get it working
- Add __readTree = true to my systems so they get built.
- explicitly disable ci for xanthous, which is failing to build and had
been omitted previously
Change-Id: I20f5e81d6eb7ffe040091a08d75d0cb15304f707
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1864
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This is a temporary state (TODO added) to be picked up by the new CI
logic.
Change-Id: Id4702740ffd18325088e2a8a0c6157a8cee7ccf7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1852
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This file is not a readTree-compatible Nix file, but rather a NixOS
module. At some point it should be moved elsewhere and .skip-subtree'd
to avoid this issue.
Change-Id: If1b3f7cc80084af1f44036b8b9272f7b76438c2c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1849
Tested-by: BuildkiteCI
Reviewed-by: multi <depot@in-addr.xyz>
This used to be part of the public interface, but was removed and
replaced with a (less useful) format string.
Change-Id: I387557c20c2eddde16974c3fcad1712569db5325
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1841
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This will look up a file in the current worktree of the git repository
enclosing `default-directory'.
In combination with project-find-file this lets me toggle between
switching to a file within a project, and within the whole depot.
Change-Id: Ie1011f10051fc2c4bd4279b0944a79c7edf92f3b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1838
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
If this ends up working well I'll extract it to tvl.el
Change-Id: I83722abf33a3346ccc7957c8d64d6381b15c6ee9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1837
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
Only having a third has left me feeling like I need a little more space.
Change-Id: I9424ec8bf2eeb55a62f21dd72b5ee6251670b0b4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1800
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Disable the prompt for sending thread replies to the channel, tweak the
slack popup buffer settings, add some bindings, and move all the slack
config to its own file.
Change-Id: I670394942bd9b7e4cfc22953227c21d50a315c22
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1798
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
The font weight rendering issue on frog is, for now, undefeatable and
I'm resorting to just using a lighter font base weight which makes it
possible to actually see bold things.
Change-Id: Ida10f2e8d728039c9ab76bfab1fd0d36340fbac7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1785
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This bumps the channel to a commit that includes fixes for an nginx
issue we have been seeing:
https://github.com/NixOS/nixpkgs/pull/95264
Includes the following compatibility fixes:
- tests disabled in third_party.bufbuild: These were enabled
unexpectedly by the update, but don't run in the sandbox because
they want to download things from github
Change-Id: I98a3b5de57f62f1fd3a37701fa1896eddeedff85
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1759
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
This is kind of difficult to read otherwise because the boot
configuration is scattered throughout the file.
Change-Id: I8977b1bd2b9162c898c96aa249c40749b3d46180
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1762
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
vc-mode is somehow broken in this newer version of Emacs and, since it
is part of the default find-file-hook, breaks pretty much everything.
This disables all vc backends until I figure out what's going on.
Change-Id: I104cd30d6c56f3d6423ac079b1427127bf5a1038
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1752
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This removes the need for supplying a locally built telega-server
binary, as the new upstream derivation includes this.
It also ensures that the frontend/backend are synchronised, which I
think has been causing some issues on vauxhall.
Change-Id: If504624e607a24fa12d68516cde65fef25ed2838
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1749
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
the %l capture template field already has square brackets around it.
Change-Id: I1229dd3f4c9b0f414da2bdee9964d3c9837af818
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1742
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
I have an encrypted drive, so this extra layer of security is pointless
Change-Id: Ifa523ee5ea545b5ee17536d34f60d7235e47f25c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1741
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Adds the same entries that are also listed on the homepage itself to
the feed.
Change-Id: I6586dcb899d40536777ac5a5dfcac4bb1cc8cee5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1715
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
This allows for adding feed entries which only have an alternate
representation (i.e. URL that points somewhere else).
These entries will still have a summary, in my use-case.
Change-Id: I149838c5f59c66e8169b97f35b378aefe9763a84
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1714
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
To use cheddar for both the feed & web views, the rendering function
is extracted a level up - this prevents duplicate renderer calls.
Change-Id: I31812c5c3f905f2f84914c6a8ab7c14602227be1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1710
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This only adds the feed generation functions, but does not yet wire it
up to the blog content.
This was implemented against
https://validator.w3.org/feed/docs/atom.html and I've validated some
generated example feeds with the W3 validator.
Change-Id: Ide3ea90d3fa935047506aa87169100c2ead21284
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1709
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Bumps both nixos-unstable and nixos-20.03 to today's versions, as per
status.nixos.org
Contains minor fixes to things that broke because of the update:
* tazjin/frog: hardware.u2f is a deprecated setting
* glittershark/system: modSha256 in Go modules is now vendorSha256
* glittershark/owothia: removed version constraint on relude
Change-Id: Ib3e9612b1b06ed547b90e4f8b0ffe5ed7fe0a5c4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1642
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
A small script that parses `nix-instantiate -vv` output to track the
files read while instantiating a depot build.
Change-Id: I5acf31d55f39c1d1acf9cdead03d33e2c8abab6a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1646
Reviewed-by: edef <edef@edef.eu>
Tested-by: BuildkiteCI
Bump to alacritty 0.5.0 (which is happening by fetching YANNPP (Yet
Another Nixpkgs Pin) because overriding versions of rust packages is not
very well supported) and update the relevant home-manager version and
pin to get it installed and configured with vi-mode.
Change-Id: I4fd96bd0c0611ce76500c33bf0b2c680ee7f44c3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1583
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
rather than using nix-shell each time ...
Change-Id: If84a84bca4ed892d0d38c5dcfc23a073cbb89e64
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1512
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
... also bootstraps her user directory to store the key in.
Change-Id: Iecd341c655adc7d81be5ce9eb765c531b7512e80
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1361
Tested-by: BuildkiteCI
Reviewed-by: Alyssa Ross <hi@alyssa.is>
This is inline with how other user keys are managed.
Change-Id: Ica0b3b30336aee02a78e019b13e1cf576e4e1943
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1360
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
I switched the physical connectors of these to avoid having the boot &
disk unlocking process happen on the vertical screen.
Change-Id: Iaf0be5edd145aa763437e2352438ee11c8d64c3d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1335
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
I will likely want to rip this out of doom at some point, and there are
definitely more bindings to be had, but this is a start
Change-Id: Ic166edb1f8af142cef57a9402999669dfaea35ba
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1330
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
I've been using this in some literate org scripts lately
Change-Id: I42830fb30dd77c9b04fcc9373cafcef05fa8b837
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1322
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This has to be disabled per-buffer
Change-Id: I56bcf25d78c56d531b361f64f26bff9e9a986c39
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1257
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
how *this* got classified as a verb I will never understand.
Change-Id: I1ae0c5092b0f4371fb191e19f576dac89fb941ab
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1250
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
The link here doesn't work, which is frustrating.
Change-Id: I70f5770226b1c39a5401d09037cce31a52f5cada
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1225
Reviewed-by: lukegb <lukegb@tvl.fyi>
Tested-by: BuildkiteCI
For when I'm building stuff I don't want to build on whitby.
Change-Id: Ic377fe0d68436a81ee479ff4aa029a51e0a5babf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1215
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
If I try to send a message containing :q to ERC, just drop it.
Change-Id: I563044f0b837e2dbf4d5db94f9e906196ca91b49
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1211
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
This allows access to profiling events by (almost?) all users.
Change-Id: I10e31ea9978f0b552a3973c29e98b43a6db45d1d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1183
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This uses the notifymuch package pulled from
https://github.com/NixOS/nixpkgs/pull/92797 right now, but eventually I
would like to pull from a vendored version since there are some changes
I would like to make to how the notifications are rendered and it looks
like upstream is unmaintained.
Change-Id: I3d1d355a09171a33677f095aa068f2499d50b37b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1177
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
This was done originally to make the snippet shareable, but is nice
regardless.
Change-Id: Ie51302a020cbb262b1e802e94786ebb8a9f843c8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1170
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Vendor the google-c-style module, and configure lsp-mode to run the
clangd wrapper script for hacking on tvlnix
Change-Id: I8d1ac2f30c9708501e0840ef3d53fe479bc39fa7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1166
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
- You can now configure server, port, password, nickserv password, and
nick.
- eta doing haskell: https://theta.eu.org/lx/selif/8pu34rll.jpg
- (props to grfn for basically writing half this CL)
Change-Id: I128ae01f5879df730a6404402ef16bf1f3429f98
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1164
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Essentially the same as for nixos, so I can get whitby to compile stuff
for me. Eventually I'll generalize this so things aren't as hardcoded to
my particular setup, but for now I'm the only one in the depot who's
using home-manager so this should be fine.
Change-Id: I1cb0344f5a11eea68bddc98976999c0928dfa84e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/937
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Remove a (currently rather brief) list of stopwords from the verbs
considered for owo'ing. The specific case I wanted to remove here is the
verb "'s" from a contraction (there have been a fair number of "'s me
owo") but I've added a few more just for good measure.
Change-Id: I53994663db1f8767ec5dc3ddc58dd35fb6cd6d70
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1134
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Frog has a ThreadRipper, and rr won't run at all without this patch.
Change-Id: Ie7e7c3567fb395ef8e7cd23061f099f91c7882ed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1130
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Make the chance of an owo configurable via an _OWO_CHANCE env var.
Change-Id: Ia4d0e426b2825c6a7becc073ff99ae8037637032
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1132
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Add owothia, an irc bot that picks a random verb out of a random subset
of messages and replies with a message of the form "<verb> me owo".
it's incredibly messy, full of warnings, includes a *number* of harcoded
things, but also is hilarious.
Change-Id: I73cacd533bbbff9e753d1e542308da25247a7034
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1063
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
These are now on whitby.
Change-Id: I25b1cdedf4ce9cdb377a40edbbbce123938b6828
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1068
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
There is only one minor configuration change: CLBot now connects to
cl.tvl.fyi, instead of localhost, because Gerrit is still on camden.
Change-Id: Ibd8d46ec2c18312a270471a2f0be3e58eaf0cbab
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1062
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
I send a lot of accidental newlines after messages because my muscle
memory is very intent on hitting "o" to get into insert mode.
Change-Id: Iecd469d1d8d2053e68837b3b65399cb272d7fc29
Reviewed-on: https://cl.tvl.fyi/c/depot/+/958
Reviewed-by: glittershark <grfn@gws.fyi>
I'm not actually sure if this will apply cleanly, because the new
NixOS ACME module is kind of broken.
Change-Id: I39584333dbea0a5f7b72e68d5e9f752a4c31bfe6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/957
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Apparently just putting the directory in there only sees top-level
files, rather than descending a directory.
Change-Id: If9febb37f59754bcfe442fb413df475d83e0193f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/949
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Not having space on my left hand is definitely not great for FPSes
Change-Id: Ie69201c5a3a2696a7d606be3979e1bfa11eb261a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/948
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Integrate the keyboard layout for my Ergodox EZ, which is a layout for
QMK, with the depot, including exposing several cross-compilation
packages necessary to compile qmk for avr in third_party.
Change-Id: Idd43169a0a3cf0be2bd1a578fdaff70388a58bfc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/947
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Don't want this getting GCed in between execution, so remove
--no-out-link from the nix-build invocation.
Change-Id: Ib786d46f84938f45f51823781eecb88338120526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/943
Reviewed-by: glittershark <grfn@gws.fyi>
This adds a first crack at one idea for a generic, non-user-specific
rebuild-system script to ops.nixos.rebuild-system. The idea here is that
we enumerate all the nixos systems stored in the monorepo (similarly to
what we do for ci-builds right now) then search through them by hostname
to find the one matching the hostname of the current system, which is an
attempt at a more generic version of tazjin's rebuilder script which
does the same thing but with an explicit case block.
As a caveat, it feels like there's a slight possibility that this way of
finding systems is going to get slow to evaluate - on my system it feels
fine but if it grows out of hand it's probably feasible to just bake
this into the built script as a dynamically generated case statement.
Change-Id: I2e4c5401913b6f4d936ab48ba2f95f96e0e78eb4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/894
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
These are generally rather nicer to work due to some typeclass instances,
and integrate better with other ecosystems for things like linear
algebra etc.
Change-Id: I546c8da7b17234648f3d612b28741c1fded25447
Reviewed-on: https://cl.tvl.fyi/c/depot/+/910
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Xanthous specifically breaks pretty majestically if it's built from
anything but a source dir, due to the TH splices we're doing to embed
messages.yaml files - this does some extra shuffling to make sure we
always cd to the project directory when running haskell-language-server
Change-Id: I6daee712f04b96d5755dcbc3dbad4c7b78a46f61
Reviewed-on: https://cl.tvl.fyi/c/depot/+/905
Reviewed-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Extract the conditional we're using to decide whether or not to render a
given entity at a position, and use that when getting the list of
entities to describe as a result of the "Look" command.
Change-Id: I1ec86211c2fcbd984dd52338fb5631667c22c723
Reviewed-on: https://cl.tvl.fyi/c/depot/+/903
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
for cabal 3 commands that are runnable without new- or old-
Change-Id: Ib00c8654c40c47482e06aec9dd1454dacce42971
Reviewed-on: https://cl.tvl.fyi/c/depot/+/901
Reviewed-by: glittershark <grfn@gws.fyi>
This is needed as well to use it as a substituter it seems
Change-Id: I6cefbccef2a61d665209131084bc58d7b56645f9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/899
Reviewed-by: glittershark <grfn@gws.fyi>
Right now it looks like the time to copy data between local and whitby
essentially eliminates any benefit to using it as a remote builder.
Which is a shame, but ah well.
Change-Id: I71dc4782992a28b196e262d40acc1bbc0b883529
Reviewed-on: https://cl.tvl.fyi/c/depot/+/898
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
Update the invocation of the hie.sh script as part of
+grfn/haskell-mode-setup to be compatible with the new depot-integrated
xanthous.
Change-Id: Ia3ef50fb08464a533efdfed4da66e2be00446ea6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/891
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Simplify the build infrastructure for creating shells etc. for xanthous,
including relying more heavily on stuff exposed in Depot anyway, using
shellFor in the shell.nix, and using the haskell.nix branch of all-hies
for a significantly simpler build. At some point the all-hies stuff will
likely want to be promoted up to //third_party, but for now it's
experimental enough that I don't want to bother other people with it.
Change-Id: I43830de73830fdc07d48af9b87d7930f59599532
Reviewed-on: https://cl.tvl.fyi/c/depot/+/890
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
GHC 8.8 is better at detecting unused imports, it seems - all of these
are new warnings that fail under -Werror
Change-Id: I1357094d715483612deb0db4a75b3e4f8f27d2e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/889
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
A couple of changes necessary to get things working with both ghc 8.8.3
and the new base:
- Explicitly import fail from Control.Monad.Fail in the prelude, since
it's there instead of the base prelude now
- GHC no longer allows type family equality constraints in quantified
constraints - which is a bummer - but is avoidable in the one case
where it was happening
- Explicitly import a constructor from Data.List.NonEmpty
Change-Id: Ia06fc724ddc2d6a3f9024c047ed55eea40bcf408
Reviewed-on: https://cl.tvl.fyi/c/depot/+/744
Tested-by: BuildkiteCI
Reviewed-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
I'm using this dir to store save files that are particularly
interesting, eg bug reproductions etc.
Change-Id: Id6a805d85b3ea2e1171ea3af96303f05c2468070
Reviewed-on: https://cl.tvl.fyi/c/depot/+/893
Reviewed-by: glittershark <grfn@gws.fyi>
Only want to map in normal mode
Change-Id: I5034af2a4828c61cd46f68451485a8a90cba7085
Reviewed-on: https://cl.tvl.fyi/c/depot/+/892
Reviewed-by: glittershark <grfn@gws.fyi>
This appears to be working! which is nice.
Change-Id: I06f8d2ff4e9b313073cb76c77a8a9bed0cb52516
Reviewed-on: https://cl.tvl.fyi/c/depot/+/887
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
gonna use this instead of nixos-rebuild switch, in part to get away from
global nixpkgs pins.
Change-Id: I46e2951660465790adfdf75e6e3413b5c2dfd7c7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/886
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
Tested-by: BuildkiteCI
My laptop, so I can recompile linux-ck not on my machine
Change-Id: Ib42e0440628be6a4d03999220ab2c69b19d6e391
Reviewed-on: https://cl.tvl.fyi/c/depot/+/884
Reviewed-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Tested-by: BuildkiteCI
If I want to build this on TVL's CI I can't reference ~/code/urb/urbos,
obviously, so I'll just vendor it here which is fine
Change-Id: I40feb4b29fafae1d3bb0119b7cca1613a4582fdc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/885
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: BuildkiteCI
As tazjin pointed out, this is little enough code that pulling it from a
global channel is a little silly, so I've just inlined everything.
Change-Id: I8750f139a3124135a72737c381215a6e812ce0c3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/882
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: BuildkiteCI
I previously had some stuff jammed into a hardware-configuration.nix not
committed anywhere, which is silly but also prevented building this
config as a top-level derivation, so this vendors them all in there
Change-Id: Ia76f1d75dcd44aa3e9d86a66c45176afc0946d12
Reviewed-on: https://cl.tvl.fyi/c/depot/+/881
Reviewed-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
I generated a new one for whitby, so it's called whitby because that's
the only thing I'm going to be using it for.
Change-Id: Ie8ebdb1e58c76e447ee3a3ea0b1b244fe000e3e4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/849
Reviewed-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
When visiting buffers that represent home-manager or nixos modules, set
compile-command to the relevant switch command.
Change-Id: I565e092d1e6b97eb7fee9d88211c0ee6ebb30b53
Reviewed-on: https://cl.tvl.fyi/c/depot/+/846
Reviewed-by: glittershark <grfn@gws.fyi>
I don't know why-- but I don't want it breaking this command.
Change-Id: I90c28cd21f3a5bc9f0155a88b50b13434fda4c5d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/838
Reviewed-by: glittershark <grfn@gws.fyi>
Adds a Naersk-based build to check that this compiles, with a Lockfile
based on the ~2018 crate versions.
Change-Id: I0460a476d3b983fcf71e35e6b480f4a526118b58
Reviewed-on: https://cl.tvl.fyi/c/depot/+/803
Reviewed-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
I dug through my archives for this and found a version that, while
unfortunately not the latest implementation, is close enough to the
real thing to show off what Finito did.
This is a Postgres-backed state-machine library for complex
application logic. I wrote this originally for a work purpose in a
previous life, but have always wanted to apply it elsewhere, too.
git-subtree-dir: users/tazjin/finito
git-subtree-mainline: 0380841eb1
git-subtree-split: b748117225
Change-Id: I0de02d6258568447a14870f1a533812a67127763
This removes almost all of the GCP-infrastructure leftovers from my
previous setup.
The DNS configuration is retained, but moves to my user folder
instead.
Change-Id: I1867acd379443882f11a3c645846c9902eadd5b0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/782
Tested-by: BuildkiteCI
Reviewed-by: eta <eta@theta.eu.org>
Reviewed-by: isomer <isomer@tvl.fyi>
This hook is invoked by Buildkite (on the runner) after every build
stage. This change adds support in Besadii to run as this hook and
update the build status on a Gerrit CL.
Change-Id: Ie07a94d9b41645a77681cf42f6969d218abf93c1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/761
Tested-by: BuildkiteCI
Reviewed-by: Kane York <rikingcoding@gmail.com>
Add a few relatively uncontroversial patches to fix some broken packages
that I had developed for xanthous to the top-level third_party tree, so
they can be reused by other people in the monorepo
Change-Id: I68740477bda278c5dcc123080029ee4bd2cae37a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/740
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: tazjin <mail@tazj.in>
Turns out we don't actually need this, and the patch for it doesn't
cleanly apply anymore
Change-Id: Ifc95496211c7c1c779fd2544f4ff5a51aa3857ab
Reviewed-on: https://cl.tvl.fyi/c/depot/+/736
Reviewed-by: glittershark <grfn@gws.fyi>
CI doesn't have a nixpkgs channel (obvs), and we want to be able to
build from the depot tree, so reorder some stuff so we never depend on
nixpkgs
Change-Id: I99b513a3d7bcd64b6d167335856651e0ca66e33b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/734
This is quite straightforward - any time the user presses a key that
resolves to a command, cancel any active autocommands.
Change-Id: Ibb48b0281b0dc6536d75c8957f8c8e5533ff6630
Reviewed-on: https://cl.tvl.fyi/c/depot/+/731
Reviewed-by: glittershark <grfn@gws.fyi>
To go along with git checkout master
Change-Id: I2a0d09e50cf82368e324e1dfbbd3dc868d30b9f2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/728
Reviewed-by: glittershark <grfn@gws.fyi>
This algorithm is a little rough around the edges right now, but
generally the idea is we find a relatively closed-off region of the map,
and place rooms randomly on it, expanding them until they run into each
other, then we put doors in the walls of the rooms and a single door
opening into the region. Later on, we'll generate friendly (or
unfriendly!) NPCs to put in those rooms.
Change-Id: Ic989b9905f55ad92a01fdf6db11aa57afb4ce383
Reviewed-on: https://cl.tvl.fyi/c/depot/+/726
Reviewed-by: glittershark <grfn@gws.fyi>
Install the witherable library, expose it in the prelude, and update all
call sites that are broken by that change.
This is a really nice library, and basically the ideal abstraction layer
for what it does.
Change-Id: I640e099318c1ecce0ad483bc336c379698bdab88
Reviewed-on: https://cl.tvl.fyi/c/depot/+/725
Reviewed-by: glittershark <grfn@gws.fyi>
It's useful, when developing new level gen techniques, to be able to
specially mark certain areas of the map during devlopment. This adds a
Marker entity type, which renders as a red X on the map and provides a
programmable description when examined. In the future it'll probably be
nice to toggle markers on/off just like we do with revealAll, but for
now it'll be fine to just remove the code to render them like we do with
debug traces.
Change-Id: Ief5d090809a0a4cbcc28f90e4902a5e38d42eeb5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/724
Reviewed-by: glittershark <grfn@gws.fyi>
While we get our actual CI system up-and-running (i.e. while we're
waiting for Hetzner to provision a machine), Frog can serve as a build
host (whenever it's online, anyways).
Change-Id: I917a8dbe92c499c607ead179a58bc59c105abd3d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/626
Reviewed-by: tazjin <mail@tazj.in>
My personal pages have moved out of //web, and various changes were
necessary to keep everything working.
Change-Id: I2f81fdd8ba2ce2ce6fea7e329bbdcda6092cc8a6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/604
Reviewed-by: tazjin <mail@tazj.in>
This program can be used for noise-cancelling in arbitrary audio
streams. See CL/576 and CL/577 for more details.
This moves the script out of my users folder and to //tools, and adds
two changes:
* Existing sinks will be removed & reinitialised
* The sink is changed from stereo->mono (which seems to make little
difference but is more reliable)
* The parameter has changed from 50 to 42 because I felt like it
Change-Id: Id9ff285fefd682ccc4d9f18e46b5fde9cd056aa7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/578
Reviewed-by: glittershark <grfn@gws.fyi>
This script creates a pulseaudio sink that will cancel noise in audio
streams sent to it, and then move it on to the default sink.
This means that other people's crackling, static background, gulping,
keyboard sounds, fan whirring, construction noise etc. are removed.
Some preliminary tests on TVL suggest that this actually works. The
parameter might need some tweaking ("50" is just the default value),
as there is some occasional crackling at the beginning/end of a speech
segment, but this is already *much* better than before.
Change-Id: I9d4e2b39cfc2b878b4b7c5458788b8d46fb801af
Reviewed-on: https://cl.tvl.fyi/c/depot/+/577
Reviewed-by: nyanotech <nyanotechnology@gmail.com>
This ends up using the same driver, but generates saner display names
somehow. Who knows what's going on there.
FWIW, it didn't help with the font weight issue.
Change-Id: Ib6161088b23109f4f0e24b8a87c478ad274df4d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/566
Reviewed-by: tazjin <mail@tazj.in>
Add jsonnet-mode to emacs, and install jsonnet in the development.nix
module in home-manager.
Change-Id: I11d6417b6a059de151dbb5407682059e0d5a7d3c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/564
Reviewed-by: glittershark <grfn@gws.fyi>
This includes an attempt at making this work with auto-insert, but that
didn't seem to have any effect - can just call it manually now
Change-Id: I0eac267b7d3387efd84a2dd0d32b1364fa06f328
Reviewed-on: https://cl.tvl.fyi/c/depot/+/563
Reviewed-by: glittershark <grfn@gws.fyi>
These are all things I constantly nix-shell into my environment. Maybe
they should just be part of it.
Change-Id: Ic0b738d12fae70900629c79764c7d8c323e71bb1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/560
Reviewed-by: tazjin <mail@tazj.in>
Since these are defined in tvl.el now
Change-Id: I34c249dceef33dac46ffe5db8b42f057d2c12a4c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/556
Reviewed-by: glittershark <grfn@gws.fyi>
Speed up the floodFill algorithm by sprinkling in some strictness and
specializing it to the only type it's currently called at anyway.
Change-Id: I4557fc51b1c1036c127bfd5bee50748d8692ae74
Reviewed-on: https://cl.tvl.fyi/c/depot/+/555
Reviewed-by: glittershark <grfn@gws.fyi>
Some things are slow, and it's time to profile them
Change-Id: I6a915db8bcc85adc7c3902a407cebb5a6f52d514
Reviewed-on: https://cl.tvl.fyi/c/depot/+/553
Reviewed-by: glittershark <grfn@gws.fyi>
Without this patch, this board is not included in the pin map
overrides and audio basically doesn't work.
With this patch, the audio still doesn't work, but it can at least
correctly detect what is and isn't plugged in - so that's progress.
Change-Id: I66ca7d7a1e0e25a0212b9659381875ad4c590ffc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/542
Reviewed-by: lukegb <lukegb@tvl.fyi>
This function opens the depot in magit. By default the depot path is
assumed to be `/depot`, but that is made available as a customise
option that users can override.
Change-Id: Iefc127cad515dbae330d7af3aa69a0c53aa02015
Reviewed-on: https://cl.tvl.fyi/c/depot/+/504
Reviewed-by: glittershark <grfn@gws.fyi>
To test out emacs package installs from depot
Change-Id: Ia8bb370d671c566c6ce8de08b47925ec3a1653e4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/493
Reviewed-by: glittershark <grfn@gws.fyi>
Gerrit supports pushing, reviewing and submitting in one go, which will
make pushing to my own emacs/system/etc. config way simpler
Change-Id: Ie1eec7c1e56a9549e63fb81de6b6791647da6c4e
We can always revert this if we want it back.
Change-Id: I1332b6dd541199584b7b5b94a8651172d79e53a9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/442
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: lukegb <lukegb@tvl.fyi>
don't know how *this* got in there
Change-Id: I73102136d90127a40697ae5c39382c6739a76091
Reviewed-on: https://cl.tvl.fyi/c/depot/+/430
Reviewed-by: glittershark <grfn@gws.fyi>
If my work is going here anyway, might as well link to it alongside
github
Change-Id: Ib686f14c16180d24fe9b8647b2297f6a1a569760
Reviewed-on: https://cl.tvl.fyi/c/depot/+/427
Reviewed-by: glittershark <grfn@gws.fyi>
This module spins up the Sourcegraph container.
Builds:
Note that this is contrary to how our other deployments work, but
packaging Sourcegraph is quite difficult (it's a Gitlab style
deployment with a lot of moving parts and third-party things that it
bundles).
If we decide to keep it around, we will want to look at packaging it
in Nix in the future.
Deployment:
The deployment is a hack. Sourcegraph does not support public
instances, but we want it to be public. To work around this we have
configured HTTP-proxy based authentication (i.e. auth via a header)
and hardcoded a static header.
This works, but lets anonymous users change the "Anonymous" user's
settings. We can expect this to get defaced (profile picture, name
etc), until we figure out how to write some nginx configuration to
drop those requests. See git-bug for details.
The Sourcegraph configuration is also not checked in to the
repository. It's unclear where in the data directory it is stored.
Change-Id: I414ff11c3b49989b6792d697bffc8a0edf96c9cb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/425
Reviewed-by: lukegb <lukegb@tvl.fyi>
This is remarkably silly, but it gets the job done
Change-Id: Ifbc57988a59c4f51a3bba0ed8ad397cb9855d8ab
Reviewed-on: https://cl.tvl.fyi/c/depot/+/423
Reviewed-by: glittershark <grfn@gws.fyi>
This change creates a ericvolp12 user directory and an OWNERS file
because I am new to the monorepo and need a home.
Change-Id: Ie800ec8d9c405fbabbc7c488b6a3c2884a28f34c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/421
Reviewed-by: tazjin <mail@tazj.in>
Build from org via emacs --batch, and update all the top-level
definitions to make things work nicely with readTree.
Change-Id: If0ac49c1d264856392e29b9e7b155641d865525b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/400
Reviewed-by: glittershark <grfn@gws.fyi>
This configures a timer that will push hourly, incremental backups of
Gerrit's state (including repositories) to GCS.
The GCS bucket tvl-fyi-backups is an Archive-class bucket in the
tazjins-infrastructure project.
Change-Id: I3bb5b084d8dd929bc4c3e51ddfb524b78d9445cb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/397
Reviewed-by: glittershark <grfn@gws.fyi>
This will soon be replaced with a pile of org, but for now- HTML!
Change-Id: I54c15d5734fd3662ea4916553e0cd1b32cc0681f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/395
Reviewed-by: glittershark <grfn@gws.fyi>
readTree passes in some extra args that we can generally just ignore
Change-Id: I2607421da086cfef0502695bcf5658f6d4dbb44d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/394
Reviewed-by: glittershark <grfn@gws.fyi>
This is needed for running a git-bug web UI on camden.
The important thing is that this gives us a stable URL to the image.
Change-Id: If0e069c3d11376a1fb17411e52bb14a8481edb7d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/347
Reviewed-by: tazjin <mail@tazj.in>
I use lieer these days.
Change-Id: I76ec4654c9d18abbbb28e51d53fca549afde056d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/258
Reviewed-by: tazjin <mail@tazj.in>
NixOS modules move one level up because it's unlikely that //ops/nixos
will contain actual systems at this point (they're user-specific).
This is the first users folder, so it is also added to the root
readTree invocation for the repository.
Change-Id: I546c701145fa204b7ba7518a8a56a783588629e0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/244
Reviewed-by: tazjin <mail@tazj.in>