Commit graph

259 commits

Author SHA1 Message Date
sterni
ed9aa0c32a feat(sterni/machines/edwin): categorize by project state in cgit
This should make it a bit clearer where not a lot is to be expected –
either yet or anymore.

Change-Id: I8139213814f2645f376ef2175aa2bc3721ee1e51
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7442
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-27 14:56:12 +00:00
sterni
f93944a799 feat(sterni/machines/edwin): activate headcounter binary cache
Occasionally I debug i686-linux builds on this machine, the
headcounter.org binary cache (despite being slow due to Hydra serving
it) speeds this up with significant cache available.

Change-Id: Ic8bc6139cf31f412676ef2925ceb726740987ff0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7295
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:51:31 +00:00
sterni
b4c0c40f63 feat(sterni/machines/edwin): enable btrfs autoscrub
Small module that regularly runs btrfs scrub on all btrfs filesystems.
Eventually the module should also do SMART value monitoring, as edwin is
a server from Hetzner's server auction, so a disk failure may not be too
far away.

Change-Id: I11e423a5d91c99ad455c2bb29b632efb79ef908e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7294
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:51:31 +00:00
sterni
2490ce968c feat(sterni/machines): add edwin
This adds edwin, the machine running sterni.lv, as well as my
idiosyncratic deployment solution. It is based on instantiating the
system configuration locally (where you'd work on the configuration),
copying the derivation files to the remote machine where the system
derivation is realised and deployed. Unfortunately, the first step tends
to be quite slow (despite gzip compression), so this may not be the
definite way despite its advantages.

Change-Id: I30f597692338df3981e01a1b7eee9cdad48f94cb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7293
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:51:31 +00:00
sterni
7b4a545699 feat(sterni/lv): interim gopher page
This adds an interim placeholder page for gopher://sterni.lv and
additionally my preexisting Nix-based static site generator for
gophermap supporting servers. It is based on building a nested Nix data
structure representing the directory structure of the resulting site
which then resolves to a bunch of fine grained derivations.

Change-Id: Id6c0b60cfe8d9d4df6a3700d96ed48b7df02ce58
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7292
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-11-26 15:38:28 +00:00
sterni
6ef6e9c97f feat(sterni/modules): module for fabric minecraft servers
This adds the module I've been using for running my minecraft servers.
It is inspired by the declarative minecraft server module in nixpkgs,
but

* does not support a non-declarative mode.

* supports more than one server on the same machine.

* patches the fabric mod loader into the server.jar on startup.

* its stopping mechanism is more robust: It issues a `save-all` and
  `stop` command over RCON and uses flock(1) for waiting on the
  server's shutdown instead of relying on checking for the PID
  via kill(1) in a loop.

It has some gaps in terms of features that I personally don't need, but
can be filled in over time.

Change-Id: I31b9139cab41a6398e5a08ecc72be33cd021ed2e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7291
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:38:28 +00:00
sterni
3b6bdc8c72 feat(sterni/external): add likely-music
This is an old project of mine, I have still deployed because a friend
was interested in using it (I think they never did though). The
repository can't be subtree-ed at the moment since it is AGPL and also
contains some personal information I would prefer not to check into such
a long-lived repository. Relicensing and subtree-ing it using a
semi-elaborate josh filter would be possible in the future, but I'm not
sure if it is worth it yet. This is probably good enough for now, the
project also very rarely breaks on channel updates.

Change-Id: I8948961406f345731d5e075e47c15901c16ca27f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7290
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:38:28 +00:00
sterni
7b7a8919b1 feat(sterni/external): add flipdot-gschichtler
We'll need this in depot in order to import my infra, as I run
flipdot-gschichtler for the OpenLab at the moment. Importing the
repository into the tree is not really an option, as it should stay in
the GitHub organization. Additionally, it doesn't currently really have
a license, but it is very possible it'll end up being AGPL.

The whole thing is quite tame and has (anecdotically) never broken on a
nixpkgs channel update. A new niv sources area is created to avoid
cluttering the global one and having these sources in a gc root
permanently.

Change-Id: If49c6c0bf59bda9a90ca5cc405423affe52d0665
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7288
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-26 15:38:28 +00:00
sterni
dfa4c4847c refactor(sterni/nix/fun): key can also be an int
Change-Id: Ia27be70ef07d9aa7d13821a2808ded9cf16506c8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7073
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-10-23 21:08:52 +00:00
sterni
0025a6fd64 feat(sterni/nix/int): add sum function
Change-Id: I7c3109b27ba91c848fd8b64d979d5e3c5c4583aa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6944
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-10-11 18:35:50 +00:00
sterni
4a06f5d3b1 chore(sterni/keys): add ludwig ssh key
ancient thinkpad experiment 2

Change-Id: Id8a1e9d70642289235dcdac75a07e35c78689d0b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6888
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-10-07 16:17:15 +00:00
sterni
880ea8a8fe fix(sterni/emacs): fix build on i686-linux by avoiding CBQN
Skip setting bqn-interpreter-path on 32bit – contrary to the
LanguageTool integration, bqn-mode is still useful without the binary
which doesn't compile on i686-linux.

Change-Id: If4493e3e72307ca14984c660f376952cbdcc201c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6887
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-10-07 00:51:16 +00:00
sterni
8b880b4a50 fix(sterni/emacs): fix eval on i686-linux by disabling languagetool
Given that the laptop I need this for is really slow, I may want to
disable even more stuff, but I'll take it step by step. This should at
least make it possible to build its system closure.

Change-Id: I50c55fa3426252e7f23f419bb2009d58a9312a98
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6876
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-10-06 21:41:58 +00:00
sterni
0c178a0ef6 chore(3p/sources): Bump channels & overlays
Upstream nixpkgs removed a lot of aliases this time, so we needed to do
the following transformations. It's a real shame that aliases only
really become discoverable easily when they are removed.

* runCommandNoCC -> runCommand
* gmailieer -> lieer
  We also need to work around the fact that home-manager hasn't catched
  on to this rename.
* mysql -> mariadb
* pkgconfig -> pkg-config
  This also affects our Nix fork which needs to be bumped.
* prometheus_client -> prometheus-client
* rxvt_unicode -> rxvt-unicode-unwrapped
* nix-review -> nixpkgs-review
* oauth2_proxy -> oauth2-proxy

Additionally, some Go-related builders decided to drop support for
passing the sha256 hash in directly, so we need to use the generic hash
arguments.

Change-Id: I84aaa225ef18962937f8616a9ff064822f0d5dc3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6792
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: wpcarro <wpcarro@gmail.com>
2022-09-28 08:02:31 +00:00
Luke Granger-Brown
f190712b7f chore(gerrit): migrate OWNERS files to code-owners style
Change-Id: Iacc521dfdd4b4a2d5cef3920cf8189bcce35a488
2022-09-19 11:13:28 +00:00
sterni
3410b8979e chore(3p/sources): Bump channels & overlays
* //users/sterni/emacs: fix for the bqn-mode issue is in channels now.

* //third_party/buzz: pin openssl to 1.1, as nixpkgs now defaults to 3.0

Change-Id: I4b8410cbeb2d6ac210789b0b5687209d50e6572e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6628
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: grfn <grfn@gws.fyi>
2022-09-17 20:00:41 +00:00
sterni
dd0d624919 refactor(sterni/emacs): switch to pure gtk emacs
This means it'll no longer run under Xwayland. Requires applying small
fix to bqn-mode which stopped compiling with emacs HEAD.

Change-Id: I998a303a0b98bcd45c1de430462b1069bef8718e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6203
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-08-30 13:31:00 +00:00
sterni
68f81e843f chore(sterni/emacs): weed out subscriptions
Change-Id: Ie5f57300c380874a83d1cbd25a61eb595760bbf4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6113
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-08-16 14:27:33 +00:00
sterni
83d3042209 chore(3p/sources): Bump channels & overlays
* //users/grfn/system/home: build rain with Go 1.17, as it fails to
  build with Go 1.18 which introduces new compile-time errors

* //3p/nixpkgs: pick ntfy from stable channel as it does not build on
  unstable

* //users/sterni/emacs: make sure use-package is available before
  org-tracker can be loaded dynamically from $HOME/src. Interestingly
  this only became a problem with this channel bump.

Change-Id: Id7d23b66bc3ba0202a01b4f8d670854e1f31175e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5988
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-08-02 22:39:44 +00:00
sterni
11738fc232 chore(sterni/mblog): relicense to GPL-3.0-only
This is possible since all the commits have been made by me. The code
taken from  SCLF (which is licensed LGPL-2.1-or-later) can also be
included since the LGPL 2.1 is [compatible] with the GPL 3.0.

compatible: https://www.gnu.org/licenses/license-list.en.html#LGPLv2.1
Change-Id: I2d274c29378679c489dc667a53b234642c3da817
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5928
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-07-09 17:10:46 +00:00
sterni
49aee7a8f2 chore: remove sclf from the tree
SCLF is quite a big utility library (almost 3€ LOC) with limited
portability (CMUCL, SBCL and CLISP to an extent). Continuing to maintain
it is an unnecessary burden, as depot only uses a fraction of it which
is now inlined into the respective users (mime4cl and mblog).

In the future trimming down ex-sclf.lisp may make sense either by
refactoring the code that uses it or by moving interesting utilities
into e.g. klatre.

Change-Id: I2e73825b6bfa372e97847f25c30731a5aad4a1b5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5922
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-07-05 15:01:17 +00:00
sterni
ae422c1353 feat(sterni/nix/misc): predicate to check if isRestrictedEval
This is merely a little demonstration of nix#6579:
`users.sterni.nix.misc.isRestrictEval` returns whether the restrict-eval
setting is true or false by exploiting the aforementioned Nix bug.

Change-Id: Icca354d1cd6571cdf0804abae27aac91a18cda1e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5692
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2022-06-01 10:30:37 +00:00
sterni
e86d0101d5 feat(sterni/emacs): function to display texcount for current file
Change-Id: Iae09dd79494d65e4025e1e34ab1d848ef2b9cd47
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5722
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-27 23:24:28 +00:00
sterni
1ad9b249f4 feat(sterni/emacs): configure lsp-ui-sideline for code actions
Change-Id: Idd0d09c47466f77cc04a628c95152d306af563d5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5680
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 12:13:16 +00:00
sterni
80a80a0706 feat(sterni/emacs): configure lsp-ui add proper lsp bindings
Change-Id: I1a81feca1bde663d1fbea1e2520f25f0bb57453c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5679
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:51:13 +00:00
sterni
3a2ad8ed3b feat(sterni/emacs): fill background of languagetool issues
This used to be the behavior of languagetool.el which we now restore
finally. The yellow underline was really easy to miss on a white
background.

Change-Id: I8b34ed64f9f7a82c39de84575877910335024ffe
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5678
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:51:13 +00:00
sterni
66d2ea3dfd feat(sterni/emacs): add binding for switch-to-buffer-other-window
Change-Id: Idbc6a9a080dc606d653b7fcf683182698836da43
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5677
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:50:12 +00:00
sterni
e4d87b1fd2 feat(sterni/emacs): load org-tracker from mutable path in home dir
Packaging this seemed a little tricky due to some quirks of the code,
but it's best to solve that whenever it's actually in depot. For now I
break it often enough that it's useful to be able to edit its source
quickly.

Still missing some necessary configuration which I'll probably steal
from grfn next week or so.

Change-Id: I1300807f7b1bc39ddb9f792c2ee500f4dd72d002
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5676
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:50:11 +00:00
sterni
462c85e2d8 refactor(sterni/emacs): banish elfeed and languagetool to ,m
I'll probably want to use <leader>f and <leader>l for different things
in the near future.

Change-Id: Iaf3de2dac90c018db8ca8797673bd1bf21df9c74
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5675
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:47:09 +00:00
sterni
72f0c3b6c1 fix(sterni/emacs): reflect changed command name in languagetool.el
Also delete duplicate java-arguments while we're at it.

Change-Id: I6e129f3aaefaa06e812d4dec36bd754fab4ab4e6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5674
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:47:08 +00:00
sterni
4bef7ef946 feat(sterni/emacs): default to ormolu as Haskell formatter
Change-Id: I4ce9c190e812cae56c00745e703fe3cc17755223
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5673
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:47:07 +00:00
sterni
71407ab2a6 feat(sterni/emacs): allow launching magit from project-switch
I always found myself starting a shell or dired to do ,gr right after…

Change-Id: I609bbe13c74a9360608939aca79748a8e59343fd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5672
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-26 11:47:07 +00:00
sterni
98dbd715fa feat(sterni/emacs): enable which-key mode
Change-Id: Ibfb1b729ad8dc1de72e4da5833077ea4cd764638
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5668
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-05-25 18:30:39 +00:00
sterni
c93527d8a1 refactor(sterni/emacs): use use-package for elfeed
When I first added elfeed, for some reason I couldn't set it up with
use-package. Now the situation has reversed itself and elfeed started to
crash with cryptic elisp error messages. Copying tazjin's approach to
configuring elfeed has solved this issue luckily.

Change-Id: I57ec8f8d8ace6aa6545483f7b2559065a56792f1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5649
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-23 17:12:55 +00:00
sterni
d60feb21e8 feat(sterni/emacs): add binding for find-file-at-point
Change-Id: I5b44df45d97e69b1a83c3e84039f55a3fced509f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5645
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-22 21:55:36 +00:00
sterni
5a1a18f58e chore(3p/sources): Bump channels & overlays
* //users/sterni: disable ada-mode, as GNAT bootstrap is broken in
  channels currently

Change-Id: I430f77baba2bcf306121e80aba61684c229c3981
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5641
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
2022-05-22 13:08:37 +00:00
sterni
1f3804b9cd feat(sterni/emacs): enable editorconfig-mode
Change-Id: I5d0a5302321b768c7d23530d559115e3d8019223
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5581
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-12 16:36:22 +00:00
sterni
6c46ee03af feat(users/sterni/emacs): make org-clock-csv available
Change-Id: I3731803882992a7a852c24d03d50afea74d885fc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5576
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-11 17:38:51 +00:00
sterni
47fdd8c954 feat(sterni/emacs): add keybind for browse-url-at-point
Change-Id: I537fed6292ed99791ec0d2ef90f7f40523e72dda
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5573
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-05-10 18:22:16 +00:00
sterni
ac0fefdb3e feat(sterni/emacs): add keybind for M-x man
Change-Id: Ia3ddc393300150712276fc8b3d3bdbcd95a5361c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5572
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-05-10 18:22:16 +00:00
sterni
5cccb0c573 feat(sterni/emacs): add key bindings for project-* commands
Change-Id: I482b629747adebe049e1e145c13efec17a0d2b7d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5571
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-05-10 18:18:14 +00:00
sterni
1e3306ab57 feat(sterni/emacs): use bash login shell for M-x shell
bash (unlike fish) doesn't break down if TERM=dumb which is the only one
I'll be using in emacs (I want to reduce my usage of things depending on
ANSI escape sequence to a minimum, for stuff that needs it I still have
foot). bash is started in login shell mode so /etc/profile is sourced
which will a) enable direnv support and b) setup some tweaks (relating
to PAGER etc.) if TERM=dumb.

Since I use a semicolon for a prompt in (ba)sh, shell-prompt-pattern
needs to be adjusted.

Change-Id: If58b6d1edf1d9ab1883cb51c27729e23d889b16c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5570
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-05-10 18:18:14 +00:00
sterni
d41ac7be60 feat(sterni/emacs): add keybind for revert-buffer
Change-Id: I34a3b7c66854061b57dcd8d6181e62fe44156cb1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5544
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:53:16 +00:00
sterni
333786db49 feat(sterni/emacs): open man pages in same buffer
Change-Id: I84d1b4677329c24f403d23d47ff48c1666a48536
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5543
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:53:15 +00:00
sterni
3027c3ef64 fix(sterni/emacs): prevent ediff from creating a new window
This is really annoying since the window is not recognized as a popup /
dialog window by sway.

Change-Id: Icacf7f673e6d96915711950185a704fccd95aed3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5542
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:53:15 +00:00
sterni
952922a0a9 feat(sterni/emacs): use evil C-w bindings, but with arrow keys
hjkl are a huge pain to use with neo layout.

Change-Id: Ic3969c00aa920c4cfea25f5ea16bf38b6bbd5e07
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5541
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:53:15 +00:00
sterni
6128f0262e feat(sterni/emacs): enable so-long-mode
Change-Id: Iee0023b5f6f3dbe59b685081b61bf8ef5075e6db
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5540
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:52:13 +00:00
sterni
ebba8105bc feat(sterni/emacs): install CMake mode
Change-Id: Ia48809cd0a8de9b2d7f93b83976d97df08081cb9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5539
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:52:13 +00:00
sterni
fe8b7b4ccd refactor(sterni/emacs): M-x sort-lines the dependencies
I'm never able to keep up such a category-based sorting.

Change-Id: I1fd1ee064df9b1c5f8c7932f0cfee7c817be3767
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5538
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-09 13:52:13 +00:00
sterni
1dd67af10e chore(users): reflect emacsGcc -> emacsNativeComp rename
Change-Id: I0217b1e316767b48b79f23e9d644b00b7fcc2df2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5518
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-04 15:59:47 +00:00
sterni
419dd2a7aa feat(sterni/emacs): install meson-mode
Change-Id: I8d0f741a478c00fd0592f7ed5f9640d5019ce08d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5515
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-05-02 21:14:54 +00:00
sterni
8e85079012 feat(sterni/emacs): enable server and include emacsclient
Change-Id: Icaf22595c774bdceb7e79f5302cde8d039aa3b09
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5401
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-03-27 10:14:10 +00:00
sterni
9cba0624d6 feat(sterni/emacs): setup direnv and lsp(-haskell)
The LSP setup is very basic at the moment, I'll probably want lsp-ui as
well and other bits and pieces.

Change-Id: Ic0360bbfde98e99990aa3ccb68ea045b522e67ce
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5386
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-03-12 12:38:41 +00:00
sterni
5cabe369ed chore(sterni/emacs): adjust to languagetool configuration changes
Change-Id: Ieaa49bebbe05d7298158839a59cd53ff1402da24
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5355
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-03-09 10:19:31 +00:00
sterni
69956d9a0b fix(sterni/emacs): make css mode respect tab-width
Change-Id: I72aa96f329cee2befbd7d3b9959ab5ffad1e0953
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5343
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-03-01 18:15:35 +00:00
sterni
7d0b38b7da feat(sterni/emacs): set up org-capture
Change-Id: If98dbae0683fda40e47f5d5701fdf85580a831a8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5342
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-03-01 18:13:34 +00:00
sterni
09553a52d1 feat(sterni/emacs): add keybind for org-agenda
Change-Id: Ic1610aa98f07848531565b4b4edd14675ac18961
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5341
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-03-01 18:13:34 +00:00
sterni
4d5459ef93 feat(sterni/emacs): set up org-agenda
Change-Id: Ic8373938cc9343e2fe0d561edf6c7b5f03c26358
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5331
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-02-26 22:33:17 +00:00
sterni
36f6322d16 feat(sterni/nix/fun): implement tail call “optimization” for Nix
I've had the notion that builtins.genericClosure can be used to express
any recursive algorithm, but a proof is much better than a notion of
course! In this case we can easily show this by implementing a function
that converts a tail recursive function into an application of
builtins.genericClosure.

This is possible if the function resolves its self reference using a
fixed point which allows us to pass a function that encodes the call to
self in a returned attribute set, leaving the actual call to
genericClosure's operator. Additionally, some tools for collecting meta
data about functions (argCount) and calling arbitrary functions (apply,
unapply) are necessary.

Change-Id: I7d455db66d0a55e8639856ccc207639d371a5eb8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5292
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-02-15 12:52:19 +00:00
sterni
de62043a74 refactor(rust-crates-advisory): move report generation into script
This script is somewhat usable by humans (it even has a help screen!)
and can be reused in //users/sterni/nixpkgs-crate-holes. We are using
bash since that allows us to exit with the actual exit code of
cargo-audit - something that's not possible in execline.

Change-Id: I3331ae8222a20e23b8e30dc920ab48af78f0247c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5228
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
2022-02-13 18:42:44 +00:00
Vincent Ambo
3318982f81 chore: move some meta.targets definitions to meta.ci.targets
Change-Id: Icdec1dec89158fb596c5185ac7105892081947f5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5252
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: tazjin <tazjin@tvl.su>
2022-02-08 12:06:10 +00:00
sterni
a2ecd53f58 chore: clean up some obsolete TODOs
* //3p/nix: probably not worth investing time into this anymore

* //users/sterni/emacs: The emoji problem disappeared by itself with a
  newer emacs version, however a different one remains…

* //web/panettone: If we ever want to change the behavior, we should
  just decide the behavior statically instead of using conditions and
  restarts, as we only call it in one place, so making different
  decisions depending on call sites is not really a use case we have.

Change-Id: Iff9d439ce356db41ce34d690fb7b6a01822022fa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5223
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-02-04 15:55:19 +00:00
sterni
66055161fb feat(tools/rust-crates-advisory): omit GHFM checklist in buildkite
Buildkite doesn't understand GitHub Flavored Markdown and having a read
only checklist in there is probably not much use.

Change-Id: I41538487087e8c817b1a5e653f077bb0fbe6eb47
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5201
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-02-04 11:22:43 +00:00
sterni
5d06425655 chore: move format-audit-result.jq out of //users/sterni
In the spirit of the readTree filter we should also not include files in
user directories from the outside.

Change-Id: I1abe36a721048900d2758b5986063b68b8d1af93
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5200
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-02-04 11:20:41 +00:00
sterni
5bc73de59d feat: move mblog header handling into mime4cl
Accessing the headers of a MIME message feels like something mime4cl
should handle. We implemented this ad hoc in mblog before in order to
not need to worry about doing it in a sensible way. Now we introduce a
decent-ish interface for getting a header from a MIME message,
mime-message-header-values:

* It returns a list because MIME message headers may appear multiple
  times.

* It decodes RFC2047 only upon request, as you may want to be stricter
  about parsing certain fields.

* It checks header name equality case insensitively.

The code for decoding the RFC2047 string is retained and still uses
babel for doing the actual decoding.

Change-Id: I58bbbe4b46dbded04160b481a28a40d14775673d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5150
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 20:47:45 +00:00
sterni
81c47da91c refactor(sterni/mblog/note): don't escape streams char by char
Depending on the stream backing this, read-sequence should be more
efficient.

Change-Id: I5d0461f76f4b132ac6e6c3a2e503f0173d5f4114
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5194
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 20:47:45 +00:00
sterni
98e4cd032f feat(users/sterni/mblog): implement mblog executable
This change finally sort of puts the parts together: We take a maildir,
render all its note messages as standalone HTML, extract the attachments
alongside and finally generate a global index page linking all notes.

The new executable and mnote-html are both contained in the same image
and we dispatch the right functionality based on argv[0].

Change-Id: I5a5bdbfaca79199f92e73ea4a2f070fa900d2bc4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5113
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 20:47:45 +00:00
sterni
6cd1f6f183 refactor(sterni/mblog/note): only get escape-char-minimal from WHO
This is the only thing we need from that package and it avoids having
to solve the annoying conflict between closure-html and who.

Change-Id: Iacfb8d4948d1987e767ffc456b8e141b468ef6d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5111
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 20:47:45 +00:00
sterni
5789814dec fix(users/sterni/mblog): handle RFC2047 in subjects
Non ASCII Subjects will use RFC2047 to encode their content. Using
mime4cl's parse-RFC2047-text we obtain a list of ASCII strings and byte
vectors tagged with their encoding. Using babel we can then decode the
byte sequence, assuming the encoding is named the same in babel and
RFC2047 (which it is for UTF-8 at least…).

Change-Id: I2840672409452bd194fb1635721e338364d9b484
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5078
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-02-02 20:47:45 +00:00
sterni
56ec3b1803 refactor(sterni/mblog): add (sub)class for apple note messages
* Upon creation of an apple-note object we can check if certain fields
  we are interested in are present and of the right type etc.

  These currently are:

  - UUID (for links later)
  - Subject (title)
  - Time
  - Text part with supported MIME type

  These are then put into their own shortcut fields in the apple-note
  subclass which allows for easier access and forces us to make sure
  they are present.

* Split out everything note related into its own package. Using the new
  type, we can expose an interface which sort of makes sense.

Change-Id: Ic9d67518354e61a3cc8388bb0e566fce661e90d0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5072
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 20:47:45 +00:00
sterni
41faf1cf91 feat(users/sterni/emacs): setup org-clock
Change-Id: Ic3d1b8a38c5f552f7bd6b155e87e8b437ebe11b4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5190
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 18:21:34 +00:00
Vincent Ambo
aa122cbae7 style: format entire depot with nixpkgs-fmt
This CL can be used to compare the style of nixpkgs-fmt against other
formatters (nixpkgs, alejandra).

Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: cynthia <cynthia@tvl.fyi>
Reviewed-by: edef <edef@edef.eu>
Reviewed-by: eta <tvl@eta.st>
Reviewed-by: grfn <grfn@gws.fyi>
2022-01-31 16:11:53 +00:00
sterni
f7d7da6ace fix(users/sterni/mblog): use string-equal where casing is irrelevant
Change-Id: Ic1303a04de005977a552eba38aa13d512d2c20e2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5071
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-30 09:39:13 +00:00
sterni
7577a89284 feat(sterni/mblog): add package to read maildirs
Change-Id: I7be8d8b7d12bb194712aa26f3ddad74340357779
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5070
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-30 09:38:40 +00:00
sterni
4803776491 chore(sterni/mblog): add gitignore
Change-Id: I0bfc22fae158886df894a1d2c90787f0836d8bd9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5069
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-30 09:38:40 +00:00
sterni
5b579c2a32 feat(users/sterni/emacs): open inbox.org on startup
Change-Id: Ic73455e25b0d98501dfccbf414fff322e7f44b14
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5061
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-26 11:42:11 +00:00
sterni
a22bd77859 refactor(users/sterni/emacs): use more persistent tmp dir
Change-Id: I703b7678405f29bc4f0f04e1b42fd35025a80971
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4982
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-17 13:11:25 +00:00
sterni
1164f138a6 feat(users/sterni/emacs): save command and search history
Change-Id: Ied633801d4dd2b41f46ec702a345732f553142d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4959
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 13:11:25 +00:00
sterni
7c391344f7 feat(users/sterni/emacs): save undo history
Change-Id: I75ca7b2011f14244cac8af7762b6d2f6ce284055
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4958
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 13:09:00 +00:00
sterni
ce2ae0f8b1 feat(users/sterni/emacs): set sentence bounds
Change-Id: Ic6d01e8d9b28a884eceeda4d9888e611f0d5abb8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4956
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 13:09:00 +00:00
sterni
1ec9d27e9e feat(users/sterni/emacs): enable buffer size indicators
Change-Id: Ibd3ad27017c69eff65ee37678b6bbad264dcdadc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4955
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 13:09:00 +00:00
sterni
11a359a4c7 feat(users/sterni/emacs): add bind for listing buffers
Change-Id: I2ccc9e3277eb871cf5064fe242934e46a6a49583
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4954
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:54 +00:00
sterni
e89d76e811 feat(users/sterni/emacs): enable fido-mode
Change-Id: Iaa8b3fe3d9485a2bff0a0227e7fa5af64f4b320b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4953
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:54 +00:00
sterni
456ddb9272 refactor(users/sterni/emacs): set-default → setq-default
Change-Id: I0f9339bfabeace66cab0ea7402b181113048a568
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4952
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:54 +00:00
sterni
f3cc32bef8 feat(users/sterni/emacs): enable paredit
Change-Id: I318ccf75fa470f442c05df6ae6f8df8772a7c1d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4951
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:53 +00:00
sterni
24881e39c9 fix(users/sterni/emacs): reverse search in insert mode for sly
Change-Id: Id324c98912ba5ce08f06d8db260cd7ee129dd27d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4950
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:53 +00:00
sterni
4b46e6cd37 fix(users/sterni/emacs): make save files even less annoying
Change-Id: I765fee99d2c37ee64d7858f69ed52ce126451640
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4949
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:53 +00:00
sterni
46bf91f086 fix(users/sterni/emacs): set tvl-depot-path correctly
Change-Id: I5f9928816c86495addab31ca33e51141b415d42a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4948
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-01-17 12:19:53 +00:00
sterni
e118994873 feat(users/sterni/emacs): set up LanguageTool
Consequently, my emacs config now depends on Java…

Change-Id: I26c63558494fd9a9a7ad5beb4442e50c6a5d89f5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4863
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-10 23:24:45 +00:00
sterni
2b6e8f0277 feat(users/sterni/emacs): subscribe to Andreas Zwinkau's en blog
Change-Id: I83545e2501d94799fa831bd773268b2c856f654c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4862
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-10 23:24:45 +00:00
sterni
666a944c59 feat(sterni/aoc/2021): day 10 solution
Change-Id: I5feb7187bd9aee45478aa5759e94df49e92565bf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4734
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-28 16:42:41 +00:00
sterni
dea67c9d78 feat(sterni/aoc/2021): day 11 solution
Change-Id: I59087cd855953d0ebdcaaea2374788e9e015e1ea
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4733
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-28 16:42:41 +00:00
sterni
d052bc5953 feat(sterni/aoc/2021): day 4 solution
Change-Id: Ib8b4206b40acad32e10ebd9103e54074ba3452fc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4681
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-12-26 19:51:25 +00:00
sterni
675f97e535 feat(sterni/aoc/2021): don't split on consecutive occurrences of 𝕨
Change-Id: I2ab17e0238df297f580c45bc28914c6dfd0ce848
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4680
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-12-26 19:51:24 +00:00
sterni
798b439c4b feat(sterni/aoc/25): day 25 part 1 solution
Change-Id: I8ffefd2b85e595bdae2cfb2bf7b34ea63b82c457
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4627
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-12-25 23:21:04 +00:00
sterni
d44b57b641 feat(sterni/aoc/2021): day 20 solution
Change-Id: Id864d6e6f0722c2da5d3487bd38da80e6bff2161
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4566
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-25 11:18:11 +00:00
sterni
4fbb2a1658 feat(sterni/aoc/2021): day 6 solution
Change-Id: Icd21b0f0c92b596fbb369d6f08715a6554259572
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4558
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-25 10:46:51 +00:00
sterni
3f523bdf4c chore(users/sterni): remove feeds I don't read or find the time for
Change-Id: Id9d6582de2a95f770c7d734ec5d7baad2293e522
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4518
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2021-12-21 13:01:38 +00:00
sterni
01f4212ca1 feat(sterni/aoc/2021): day 15 solution
Change-Id: Idca2ae2829a7ee9e856aa7fcdc716c3055051062
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4363
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-12-16 12:43:46 +00:00
sterni
0357dd973b chore(sterni/aoc/2021): add shell for running solutions.bqn
Change-Id: I2e192dec9eb863a1b2386d40d26eeeeb57e1ed28
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4350
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-16 09:19:01 +00:00
sterni
b5678cbd5f feat(sterni/aoc/2021): day 14 solution
Change-Id: I8b6c0c5d1ced89eadaeea3fb619d37e77a439965
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4349
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-15 23:58:17 +00:00
sterni
3f8c99f5c3 refactor(sterni/aoc/2021): fold over 2d array instead of nested list
Seems to save some allocations and thus recover some performance
compared to the two separate folds we had before.

Change-Id: Ie3d283103e6a9b8aa702db633d9c988fda1b2903
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4348
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-12-15 23:58:17 +00:00
sterni
0220fb319a feat(users/sterni/emacs): provide BQN interpreter via Nix
For this we create a directory containing a nix-inject.el file using
writeTextFile where we can string interpolate as much as we please and
merge that into a single emacs.d directory with the config *.el files
tracked in the normal tree using symlinkJoin.

Change-Id: I0e39591587a54527214783d4380456d2763da091
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4324
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2021-12-14 17:07:29 +00:00
sterni
c7ebb34f8f refactor(sterni/aoc/2021): use a fold instead of last scan element
We can use the reverse swap trick to get a forward fold.

Change-Id: I88185e2ff0b41ec1454f414db2d24b1c8173ac2d
2021-12-14 13:41:01 +00:00
sterni
b5eb90196e refactor(sterni/aoc/2021): determine width/height in the same fold
Change-Id: I39410171402cedc3ee8d9ac972557656ed12de53
2021-12-14 00:56:31 +01:00
sterni
1303f3fc71 feat(sterni/aoc/2021): day 13 solution
Change-Id: I9cfa8a28854cbee7e8e1b457faf9c572353e803f
2021-12-13 23:39:50 +00:00
sterni
7a1a8aa3aa refactor(sterni/aoc/2021): name input data more consistently
Change-Id: Ibcea43d2e51f14d8b1b021050310f88d44d970d3
2021-12-13 23:39:49 +00:00
sterni
464bbcb15c feat(sterni/aoc/2021): day 9 solution
Change-Id: I90e7a47d5418abeff1ae7cc5757b6a8b3b0d1086
2021-12-13 22:13:29 +01:00
sterni
343b811bbc feat(sterni/aoc/2021): day 7 solution
Change-Id: I8c8b535defb42f15eafc816ebe953e51b11ea702
2021-12-13 21:58:15 +01:00
sterni
f78a7467f1 feat(sterni/aoc/2021): day 3 solution
Change-Id: Id14281f7b18ddaf6875e5dd8398249a10a9474af
2021-12-13 21:58:15 +01:00
sterni
b3d4305700 refactor(sterni/aoc/2021): allow variable bases ≤ 10 for ReadInt
Change-Id: Ie035134a4b3d478ce836aa00016122e0f49a5a28
2021-12-13 21:58:15 +01:00
sterni
4b38ba2d0a feat(sterni/aoc/2021): day 2 "solution"
Change-Id: Ifbd50274f0b09305991a49e7453ac1f13089e57e
2021-12-13 21:58:15 +01:00
sterni
ca159626dd feat(sterni/emacs): subscribe to the TVL feed
Change-Id: Iac08e992a4c610a6f152c1dc5e681b17298b8834
2021-12-01 18:17:29 +00:00
sterni
9472bb6b04 feat(sterni/aoc/2021): day 1 solution
Change-Id: I0781b2aa3624df9a3158296edcbbbf2ee845102b
2021-12-01 18:17:29 +00:00
sterni
750ef6c693 feat(sterni/nix/utf8): check if codepoint valid/encodeable
* Enforce the U+0000 to U+10FFFF range in `count` and throw an error if
  the given codepoint exceeds the range (encoding U+0000 won't work of
  course, but this is Nix's fault…).

* Check if the produced bytes are well formed and output an error if
  not. This indicates that the codepoint can't be encoded as UTF-8, like
  U+D800 which is reserved for UTF-16.

Change-Id: I18336e527484580f28cbfe784d51718ee15c5477
2021-11-25 12:15:35 +01:00
sterni
0e9c770972 refactor(sterni/nix/utf8): let wellFormedByte check first byte
Previously we would check the first byte only when trying to figure out
the predicate for the second byte. If the first byte was invalid, we'd
then throw with a helpful error message. However this made
wellFormedByte a very weird function.

At the expense of doing the same check twice, we now check the first
byte, when it is first passed, and always return a boolean.

Change-Id: I32ab6051c844711849e5b4a115e2511b53682baa
2021-11-25 12:15:35 +01:00
sterni
87a0aaa77d feat(sterni/nix/utf8): implement UTF-8 encoding
This implementation is still a bit rough as it doesn't check if the
produced string is valid UTF-8 which may happen if an invalid Unicode
codepoint is passed.

Change-Id: Ibaa91dafa8937142ef704a175efe967b62e3ee7b
2021-11-25 12:15:35 +01:00
sterni
9370ea5e33 chore(sterni/nix/utf8): remove decodeSafe
This is not really used anywhere and kind of useless. A better
decodeSafe would never return null and instead make use of replacement
characters to represent invalid bytes in the input.

Change-Id: Ib4111529bf0e472dbfa720a5d0b939c2d2511de5
2021-11-25 12:15:35 +01:00
sterni
ab92c42f59 feat(sterni/nix/utf8): allow decoding the empty string
Change-Id: I8de9cd28c822ac5befbcd16e118440cd13cd86e9
2021-11-23 14:23:41 +01:00
sterni
8615322bc8 refactor(sterni/nix/utf8): use genericClosure for decoding iteration
builtins.genericClosure is a quite powerful (and undocumented) Nix
primop: It repeatedly applies a function to values it produces and
collects them into a list. Additionally individual results can be
identified via a key attribute.

Since genericClosure only ever creates a single list value internally,
we can eliminate a huge performance bottleneck when building a list in a
recursive algorithm: list concatenation. Because Nix needs to copy the
entire chunk of memory used internally to represent the list, building
big lists one element at a time grinds Nix to a halt.

After rewriting decode using genericClosure decoding the LaTeX source
of my 20 page term paper now takes 2s instead of 14min.

Change-Id: I33847e4e7dd95d7f4d78ac83eb0d74a9867bfe80
2021-11-23 14:22:24 +01:00
sterni
12eed85374 chore(nixpkgs-crate-holes): whitelist more maintainers
Change-Id: I6ed03ff8cbc590087cfa58264c0c28a7b1496740
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3825
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-11-16 10:37:43 +00:00
sterni
9239868daa feat(nixpkgs-crate-holes): cc maintainers allowed by a whitelist
Change-Id: Iffbe173a48b466c52669efc70f9b5e5d4a6aff9a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3730
Tested-by: BuildkiteCI
Reviewed-by: Alyssa Ross <hi@alyssa.is>
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-11-10 20:15:42 +00:00
sterni
3a2fd6e275 feat(nixpkgs-crate-holes): report vulnerable crates in cargoDeps
nixpkgs-crate-holes can build a markdown report detailing all vulnerable
crates pinned in cargoDeps vendors in nixpkgs according to RustSec's
advisory db. This report is intended to be pasted into a GitHub issue.

The report is produced by a derivation and can be obtained like this:

    nix-build -A users.sterni.nixpkgs-crate-holes.full \
      --argstr nixpkgsPath /path/to/nixpkgs

Example output: https://gist.github.com/sternenseemann/27509eece93d6eff35cd4b8ce75423b5

Additionally, you can obtain a more verbose report for a single
attribute of nixpkgs, in HTML format since we just reuse the command
line output of cargo-audit and convert it to HTML using ansi2html:

    nix-build -A users.sterni.nixpkgs-crate-holes.single \
      --argstr nixpkgsPath /path/to/nixpkgs --argstr attr ripgrep

Change-Id: Ic1c029ab67770fc41ba521b2acb798628357f9b2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3715
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-10-12 14:15:28 +00:00
sterni
c01b9a2935 feat(users/sterni/emacs): enable jq-mode
Change-Id: I943343af92665897e2ebc556f3984a2f8ede9a23
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3723
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-10-11 13:25:56 +00:00
sterni
e856321c73 feat(users/sterni/emacs): tag noisy feeds for filtering out
Change-Id: I45cc10aaa7bfc7561ef25978c71248659ce6579d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3652
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-09-30 12:33:05 +00:00
sterni
14a33c1069 chore(users/sterni/emacs): dnkl sends out release emails nowadays
Change-Id: Ib2d7c0c8db8a6a579985b8c84739c72b8e8e395b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3651
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-09-30 12:33:05 +00:00
sterni
eb65d13f5a feat(users/sterni/emacs): enable rust mode
Change-Id: I49c8f5c0c18ac7664f5f120ad23a55c3bc19bd5b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3545
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-15 10:25:57 +00:00
sterni
8e156e6b86 feat(sterni/mblog): convert apple note mime msgs to html
For now mblog only contains the mnote-html executable which takes a mime
message from a maildir and prints the equivalent HTML fragment to
stdout. It is intended to work with the mblaze(7) utilities,
i. e. mnote-html resolves all `object` tags to proper `img` inclusions
with the correct filename, so mshow(1)'s -x version can supply the
needed image files. A note created using Apple's Notes app (tested with
the iOS version) can be converted in a viewable HTML file like this:

    $ mnote-html path/to/msg > fragment.html
    $ mshow -x path/to/msg
    $ cat <(echo "<!DOCTYPE html>") fragment.html > document.html
    $ xdg-open document.html

Note that only the limited feature set of Apple Notes when using the
IMAP backend is supported. The iCloud-based one has more (quite neat)
features, but its notes can only accessed via an internal API as far as
I know.

This CLI is a bit impractical due to the big startup overhead of loading
the lisp image. mblog should be become a fully fletched static site
generator in the future, but this is a good starting point and providing
the mnote-html tool is certainly useful.

Change-Id: Iee6d1558e939b932da1e70ca2d2ae75638d855df
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3271
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-12 21:39:49 +00:00
sterni
e507b84291 feat(users/sterni/nix/string): very simple printf implementation
This is mostly to yet another silly idea which turns out to be
possible. This may be actually useful should I implement more
sophisticated format specifiers like "%xd" or "%f".

Change-Id: Ia56cd6f5793a09fe5e19c91a8e8f9098f3244d57
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3537
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-12 09:25:30 +00:00
sterni
318d10e608 chore(nint): move from //users/sterni to //nix
Since //web/bubblegum depends on nint, we need to move it to a non user
directory to conform with the policy established via cl/3434.
Note that this likely doesn't mean greater stability (which isn't
really implied in depot anyways), since I still would like to use a more
elaborate calling convention to allow for additional useful features.

Change-Id: I616f905d8df13e3363674aab69a797b0d39fdd79
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3506
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2021-09-10 11:08:03 +00:00
sterni
5d5fb4e6a1 refactor(sterni/emacs): read extra feeds from ~/.config/emacs-extra
This allows me to add stuff without doing a commit for every feed. I can
always import them in bunches if I want to later.

Change-Id: I080f40b3627940a1f68cf13598c102953f4994b1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3505
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-09 15:57:58 +00:00
sterni
fab7dd62f4 feat(users/sterni/emacs): install bqn-mode
Change-Id: I8429f09525e7ca78893b62f6efb8037687ac36a3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3494
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-09 12:52:16 +00:00
sterni
e4a8b57d51 feat(users/sterni/emacs): subscribe to eta's honking
https: //www.youtube.com/watch?v=nH4Gr2U50i8
Change-Id: Iaf998cee07325900272f1fef29478f724b19fe34
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3501
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-09 12:52:16 +00:00
sterni
4932177ed4 feat(users/sterni/emacs): add (mostly) lisp related feeds
Change-Id: I79d30e4e5cbe41fcd0f4a751ed08d12541b453eb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3487
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2021-09-01 23:49:20 +00:00
sterni
83c8716afd chore(3p): update NixOS channels to 2021-08-30
This lets us benefit from the recent OpenSSL security-related
update [1]. Since nixos-unstable is still stuck, we temporarily
use nixos-unstable-small as our unstable channel.

Fixes necessary:

* //users/sterni/nix/char:
  Someone has decided to drop writers.writeC upstream [2],
  so we reimplement it ad-hoc using runCommandCC

[1]: https://www.openssl.org/news/secadv/20210824.txt
[2]: 982f46985e

Change-Id: Id84756e2e370296b7a27e1a3f1744f58f8fe3c47
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3463
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2021-08-30 17:06:40 +00:00
sterni
094dfa2ed3 feat(users/sterni/emacs): add ariadne conill's blog to subscriptions
Change-Id: I6d5935279069c8af7e7a5f21f9d221c93a533d8e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3428
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-08-26 15:34:58 +00:00
sterni
9ed439bfbd feat(users/sterni/nix): cursed nix html DSL
Couldn't sleep, so I made a surprisingly neat way to render HTML
documents in Nix using our favorite feature __findFile:

  let
    inherit (depot.users.sterni.nix.html) __findFile esc;

  in

  <html> {} [
    (<head> {} [
      (<meta> { charset = "utf-8"; } null)
      (<title> {} (esc "hello"))
    ])
    (<body> {} [
      (<h1> {} (esc "hello world"))
    ])
  ]

=> "<html><head><meta charset=\"utf-8\"/><title>hello</title></head><body><h1>hello world</h1></body></html>"

Change-Id: Id36808a56ae3da3b5263c06f29342fc22d105c21
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3410
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2021-08-26 15:34:58 +00:00
sterni
02566cdcfb feat(nix/buildLisp): add ecl
Adds ECL as a second supported implementation, specifically a statically
linked ECL. This is interesting because we can create statically linked
binaries, but has a few drawbacks which doesn't make it generally
useful:

* Loading things is very slow: The statically linked ECL only has byte
  compilation available, so when we do load things or use the REPL it is
  significantly worse than with e. g. SBCL.

* We can't load shared objects via the FFI since ECL's dffi is not
  available when linked statically. This means that as it stands, we
  can't build a statically linked //web/panettone for example.

Since ECL is quite slow anyways, I think these drawbacks are worth it
since the biggest reason for using ECL would be to get a statically
linked binary. If we change our minds, it shouldn't be too hard to
provide ecl-static and ecl-dynamic as separate implementations.

ECL is LGPL and some libraries it uses as part of its runtime are as
well. I've outlined in the ecl-static overlay why this should be of no
concern in the context of depot even though we are statically linking.

Currently everything is building except projects that are using cffi to
load shared libaries which have gotten an appropriate
`badImplementations` entry. To get the rest building the following
changes were made:

* Anywhere a dependency on UIOP is expressed as `bundled "uiop"` we now
  use `bundled "asdf"` for all implementations except SBCL. From my
  testing, SBCL seems to be the only implementation to support using
  `(require 'uiop)` to only load the UIOP package. Where both a
  dependency on ASDF and UIOP exists, we just delete the UIOP one.
  `(require 'asdf)` always causes UIOP to be available.

* Where appropriate only conditionally compile SBCL-specific code and
  if any build the corresponding files for ECL.

* //lisp/klatre: Use the standard condition parse-error for all
  implementations except SBCL in try-parse-integer.

* //3p/lisp/ironclad: disable SBCL assembly optimization hack for all
  other platforms as it may interfere with compilation.

* //3p/lisp/trivial-mimes: prevent call to asdf function by substituting
  it out of the source since it always errors out in ECL and we hardcode
  the correct path elsewhere anyways.

As it stands ECL still suffers from a very weird problem which happens
when compiling postmodern and moptilities:
https://gitlab.com/embeddable-common-lisp/ecl/-/issues/651

Change-Id: I0285924f92ac154126b4c42145073c3fb33702ed
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3297
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: eta <tvl@eta.st>
2021-08-24 22:00:15 +00:00
sterni
77be4dfe37 chore(users/sterni/emacs): fix typo
Thanks tazjin!

Change-Id: I3c742e832bbc98fbf4112a7bea367d013a2ef722
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3401
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2021-08-24 12:33:23 +00:00
sterni
58b9a53d5c feat(users/sterni): add emacs configuration
Change-Id: Icbdb52ba5ea51e8594eb46c5f0740e4f7c353be4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3381
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-08-24 12:13:06 +00:00
Profpatsch
eb41eef612 chore(nix): move rustSimple from users.Profpatsch.writers
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>
2021-04-24 10:23:55 +00:00
sterni
f59ab9aba5 feat(sterni/nix/fun): add hasEllipsis
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>
2021-04-12 17:47:53 +00:00
sterni
8d4b2f3d54 refactor(sterni): use pkgs over third_party to import from nixpkgs
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>
2021-04-10 11:40:18 +00:00
sterni
0133fdc737 chore: move all 3p buildRustCrate derivations to //third_party
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>
2021-04-03 22:16:35 +00:00
sterni
108e19c906 feat(sterni/dot-time-man-pages): mdoc port of dotti.me
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>
2021-04-02 09:14:28 +00:00
sterni
68f3ac64c4 feat(sterni/nint): shebang interpreter for nix scripts
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
2021-04-01 18:50:36 +00:00
sterni
a5f2b446aa feat(sterni/nix/url): implement urldecoding
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>
2021-04-01 13:09:46 +00:00
sterni
b3f686995f feat(users/sterni/htmlman): hyperlink .Xr macro in output
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>
2021-03-11 14:31:19 +00:00
sterni
2cd2b58a04 feat(users/sterni/htmlman): static site generator for manual pages
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>
2021-03-11 13:12:31 +00:00
sterni
b810c46a45 feat(users/sterni/nix/utf8): pure nix utf-8 decoder
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>
2021-03-05 11:07:41 +00:00