When looking up stuff on the tracker, cache the results in our
database and display the best torrent matches in a simple web UI.
Change-Id: Iba8417fbdd3ea812765ab0289a1d5b03b7c2be81
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8857
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This is intended to convert the XML dump from
https://jbovlaste.lojban.org/ to an sqlite database at one point.
So far only XML parsing and some pretty printing
Change-Id: I48c989a3109c8d513c812703fa7a8f2689a157ee
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8687
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
I’m playing around with htmx (server-side html snippet rendering),
this is a simple registration form and some form validation that
happens in-place.
Change-Id: I29602a7881e66c3e4d1cc0ba8027f98e0bd3461c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8660
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
We upstreamed some of these modules to hackage, so I can get rid of it
here.
Change-Id: I70e1e864a81029cadbbd96cc019a768728431cff
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8659
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Add a cabal file and move into subdir.
Use MyPrelude & fix a few linter warnings.
Change-Id: I19d5ba47be789fc24f8e02ee8721f73c706ae3e9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8465
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
I didn’t ever get aerc to work, so let’s get rid of this.
Change-Id: Ie59b23fe7d5af70ca82c1c624c1e11d21da735f4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8189
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Adds a simple json quasiquoter thingy.
Json can be sent to the `/mailfilter?action=update` endpoint.
Change-Id: Iba80c2ab69178e431519933c4a01cd68aaa9f637
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7839
Tested-by: BuildkiteCI
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Move the tool parsers down. Get `pass` from the tools. Add some
helpers for running tools.
Change-Id: Id2c47be58417faf434966eaae81e4944372f1bd5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7838
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Implement a parser for tools, and instantiate once for
arglib-netencode arguments (parsed by the new netencode parser) and
one just from the PATH for testing from the repl.
Change-Id: Id0cf264100123a87700880c7230d68426224fd0d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7798
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
A simple categorical parser that does not implement Monad, and does
not contain an `m` and some rudementary error message handling.
In the future I’d probably want to wrap everything in an additional
`m`, so that subparsers can somehow use `Selective` to throw errors
from within `m` that contain the parsing context if at all possible.
Hard to do without Monad, I have to say. Not even stuff like `StateT`
works without the inner `m` implementing `Monad`.
Change-Id: I1366eda606ddfb019637b09c82d8b0e30bd4e318
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7797
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Wraps a command in some arguments via arglib.
Also refactor the module to be a `let`.
Change-Id: Ie9b64f7d40c57a4e57bd4d6c411bef5ef57a2b59
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7796
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
For my tooling, I want to be able to use vscode language servers for
all subprojects, and the best ways to do that I’ve found so far is to
add a global shell.nix which contains the transitive closure of all
dependencies I need.
This is not /nice/ per se, but it does the job with minimal effort
right now and gives me a good development environment for all these
crazy & dumb experiments in here.
Change-Id: I717a72f490e9d58d45e4e15e9ba604c36b299814
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7794
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This is so we can use the rust language server for the file.
Change-Id: I8a2fe15ea67fd0e26814fda57bf0cace0d264cae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7792
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Instead of compiling the module, run it in interpreted mode. Saves on
linking times and can probably be driven to do cooler things in the
future, like calling functions directly via an environment variable or
something.
Change-Id: I9c835005462cdd86055fb7702630a44f78c36107
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7781
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
In the end, it should be possible to write a single config which is
pushed to the service to steer which emails arrive.
This implements some helper functions and some more endpoints.
We implement Semigroup/Monoid for labelled tuples.
Change-Id: I48bfd311e4a7bba5bc08a9681d823a6a7d5175a8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7727
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
One step closer towards a declarative description of filters.
In the end, the filters should be updated by their `rulename` field.
This implements a simple scheme where we list all filters, parse some
of their fields, use those fields to determine whether we want to
change the filters, and then only update the filters where we changed
something.
Unfortunately, we can only update the filters one-by-one (a common
mistake in APIs).
Pulls in some modules for Json parsing that I like to use, and an
`ErrorTree` abstraction over `Error` and `Data.Tree`.
Change-Id: Iea45d5aa0a3fee7ec570f06d3e77009769091274
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7720
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The function & error message said it was searching upwards for
shell.nix, but it didn’t actually search upwards.
Change-Id: I7b81d20a1cc19fdccdc7828427cf17b42e57f414
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7718
Tested-by: BuildkiteCI
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
A smol little tool to talk to the mailbox.org backend. This is handy
for eventually setting stuff like email filters. Their API is absolute
crap, but we’ll deal with it.
Updates the prelude & adds some pretty printing helpers.
Change-Id: Ie3688f8ee1d7f23c65bcf4bfecc00c8269dae788
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7717
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
The use of superrecord here can be replaced by simple labelled tuples.
Change-Id: I23690cd0b88896440521fe81e83347ef4773d4a0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7713
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
The main change is that nixpkgs updated to GHC 9.2 and Stackage LTS-20,
so we suffer from a bit of churn.
* //3p/overlays/haskell:
- use updated dhall-nix patch for hnix 0.16
- use superrecord fork with fixes for GHC 9.2
- use graphmod-1.4.5.1 which has support for GHC 9.2
* //users/Profpatsch: relax constraints on base in Haskell pkgs
* //users/Profpatsch/cas-serve: inherit superrecord from 3p
* //users/grfn/xanthous:
- //3p/overlays/haskell for 8.10.7:
* Provide missing dependency of binary-orphans. Fix already commited
upstream as e238c3fdaab710a2ce0135e5a77cd7e6bb023a22, can be
dropped when channel advances.
* Downgrade to brick 0.71.1, the latest version xanthous supports.
- Adjust to generic-arbitrary >= 1.0, providing Arg constraints where
necessary.
- Increase constraint-solver-iterations to 6 (default 4), so
Xanthous.Command and Xanthous.Data can be typechecked.
- Drop NFData instances for Key and Modifier which have been added to
vty upstream.
Change-Id: I2170438c2ce8130b65f1a9fe07c4fecab5683d66
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7654
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Three small helper functions that can display module graphs of haskell
projects.
Change-Id: I7395ffc8b025f4322efc6c1e494e6a6a0145342c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7675
Tested-by: BuildkiteCI
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Apparently I had forgotten that these already exist on the toplevel.
At one point I should unify the two namespaces, but for now at least
acknowledge that they are the same functions.
Change-Id: Ie7d14de0b65f6c750d97630798c65f777b3eda8c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7673
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Profpatsch originally implemented an advisory checker from scratch in
Rust. We now ended up just using cargo-audit for the global checks
exposed via CI and the custom implementation is unused. To clean up
//tools/rust-crates-advisory a bit, we can move the unused parts to his
user directory.
Change-Id: Iacbd27c163edd07c804220fd1b3569c23aebd3e7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7171
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Adds support for parsing multiple netencode values from stdin.
This is overly complicated for my tastes, but I don’t see a better way
of writing this logic that does not read all of stdin before starting
to parse the first value.
A kingdom for a conduit.
Change-Id: Ia4f849d4096c43e887756b756d2a85d7f9cd380a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6631
Autosubmit: Profpatsch <mail@profpatsch.de>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
ical, but smol
to fit in qr
Change-Id: I37f99a20cfc96b85778a097b7c4f70923f026cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6617
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
* //users/Profpatsch/writers: adjust for API change in
makePythonWriter: Since it has become cross-aware, we also
need to provide the buildPackages python set we want to use.
Change-Id: I4a201647281827ad983eb2dda6f6305f1ed824e7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6196
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: Profpatsch <mail@profpatsch.de>
A dumb little daemon that stores arbitrary files by content-hash, and
exposes a randomly generated URL by which the file can be fetched
again.
If the same file is uploaded twice, it will only be stored once.
CAS hashes are not exposed to the user, so they can’t figure out
whether a file they know is in the database.
Change-Id: Ie57bc09d429a9f31c8f0fc5f63f78d6a84d650f7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5952
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
A small exec wrapper which will query the lorri daemon for the last
few events, and if it sees a build running for the current
project (searching upwards for shell.nix), it will wait for the build
to finish before executing the command (in the new direnv
environment).
TODO: should patch lorri so that it can provide this information in a
better digestive format; right now it might have a later evaluation
running, so it’s hard to know which completion to wait for …
Change-Id: I8fa4a10484830a731fe3ec58f2694498f46a496c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5903
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
A small script that fetches calendar files for our local trash
provider. First step towards integrating ics files into my calendar
setup.
Change-Id: I0e8915a00c19349104cb6256e9dc87c17620fcae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5883
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
Uses the list-based toINI, which removes a lot of the complications
caused by the INI DSL (it was fun to write but really not necessary).
Change-Id: Ia6c30a726662416c99ed74f9eb33537573543383
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5530
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This is a morph of the `pkgs.lib.generators.toINIWithGlobalSection`
function, which is simplified, inlined, and takes lists instead of
attrsets. This makes the key ordering stable and is easy to generate
from dhall.
Ideally I’d upstream it at one point (in the sense that
`generators.toINI` can also take lists), but that will be a lot more
work that is not necessary atm.
Change-Id: I7d6c129cfee9faedb62f69d479e59a6e05bb7ac6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5529
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
It’s often not obvious what dhall command to run to (type)-check the
dhall files directly without the nix roundtrip.
Now we just print the command, easy to copy.
Change-Id: I704a647bff13f73d5a1b1d33b00a46bcb1a9de4e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5528
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
aerc is a mail client. It needs some ini files to work.
This is an initial attempt at generating them.
Change-Id: I087955f19d2c4527275500a1e13eeb071c98a7b9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5526
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
If no type annotation is given, debugging errors gets a lot harder
because there is nothing to compare it against.
But we can tell dhall to print the type first (this means double
evaluation, but that’s an optimization problem to be solved later).
Change-Id: Icf793828070cd6bb8daeb4c07de3162a5e064653
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5525
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
I figured out that the problem came from me installing alacritty in my
home profile, which was out of sync with my system closure’s opengl.
Updating the home profile “fixed” it.
Change-Id: I1e2b3a91da9a3ab8c47182e0e0a8e69b9285c75b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5522
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This is an ad-hoc way of adding “well known” executables to my
user directory for now. It’s not pretty, it is what it is.
Change-Id: I93ee1d75b48536692da86485f0ac517aa1935ec4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5335
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Makes it possible to import a dhall file as a nix expression (at IfD
time), embedding dhall into nix.
There’s some setup for adding dhall dependencies as well, but it
hasn’t been really battle-tested yet.
Change-Id: I3e5670f93c612f2eb530d7c65d6bb4b1bf7bd8bd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5333
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This is a little helper that Graham cobbled together at one point, it
will filter an exact list of files.
Change-Id: Iab786abcd4a7a3cce45a20b2950f103defa91998
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5332
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
It turns out that the netencode spec requiring to ignore *later*
entries meant that every parser has to do an extra check for each
element, instead of just overriding the key in the hash map.
This leads to a situation where the simple implementation is the wrong
one, which would lead to very subtle problems in parsers (see also the
infamous “json duplicate record entry” problem which has been used for
various exploits in the past).
To be fair, exploits are still possible, but at least a `Map.fromList`
will be the right implementation (provided it folds from the left) now
instead of the wrong one.
Examples of the trivial implementation being now right:
Python:
> dict([("foo", 1), ("foo", 2)])
{'foo': 2}
Rust:
> println!("{:?}", HashMap::from([
("foo", 1),
("foo", 2)
]));
{"foo": 2}
Haskell:
> Data.Map.fromList [ ("foo", 1), ("foo", 2) ]
fromList [("foo",2)]
Change-Id: Ife9593956f4718e5e720f4f348c227e4f3a71e2d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5108
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: Profpatsch <mail@profpatsch.de>
It would left-associate in some nix version, this way it’s clear that
you want to join a path segment.
Change-Id: I82a00de720187d1faf908c842e396301ea435a97
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4886
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Now baba can start using it to populate config files from depot.
It’s not entirely working as expected, if stow finds a symlink dir
coming from a different stow, it won’t know how to split it up, so
some manual intervention is required in the beginning.
Change-Id: Ia2271308bf7994ea42e6d7c81c2f3fd94ddf63f3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4838
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
nix-home is (hopefully) gonna be a home-manager alternative for my
home directory.
Files are symlinked into the home directory via GNU stow (since that
is a tried and tested tool), so first step is to set up the base code
for that.
Implements a small tool that reads a single environment variable and
prints it to stdout.
Change-Id: Ifa3fd9f9e1cedc52c3002196d3971b02cb840e80
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4832
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Autosubmit: Profpatsch <mail@profpatsch.de>
WIP: currently just a simple setup that creates an empty git repo if
it doesn’t exist yet, and writes a commit to it.
A simple database backed by a bare git repository.
WIP: Will speak a simple interactive protocol to query files and
update them atomically.
It could be made atomic on the git repo level, if a lock is taken
between reading the current commit ref and creating the commit.
Change-Id: I1fd30a046ac977063c3e08c36d96e835b35ff07d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3046
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The code in //users/wpcarro/tools/monzo_ynab/ynab/client.go was not
valid Go and has been commented out.
Change-Id: Icb4003607f30294dcbf60132eb7722702c7f0d84
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4400
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: Profpatsch <mail@profpatsch.de>
This function is also generally useful for readTree consumers that
have the concept of subtargets.
Change-Id: Ic7fc03380dec6953fb288763a28e50ab3624d233
A new section for my awesome website.
Migrates an old blogpost from the github repository.
Change-Id: I5fd0c2b2679a1367015fa098e3e787bbc0cdd973
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3293
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
A new section for my awesome website.
Change-Id: I6c624aa0bfaf82aff943431da7499bec1d842c67
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3291
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
… and clean up the import list a little.
Change-Id: I7a116e9bbf01731267795b5327fecf98f0c7c3e4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3286
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
It’s a small tool that I’ve used before but not anymore, but since it
has a few helpers for dealing with cdb stuff, I’m gonna keep it around
for now I guess.
Change-Id: I83c62fa2194113d021414708b0906350b3f2a222
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3283
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
The rendering of the notes/ template was done in a very roundabout way
through the routing table before. Now it’s constructed directly.
Change-Id: Iaa6157cc3f9a7e5e0ad81ab843efa988995666b2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3282
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>