Uses the same idea as the BQN solution, but is very concise.
Change-Id: I876208e5e86f28240f4a3384d16321fd92d077eb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7499
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
It seems to me that there must be some way to improve this further,
but I'm kind of out of time.
Change-Id: Icf3510b6c126345551125543aec70155b6eeff4e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7498
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Allows for the removal of some BTreeMap usage when constructing NixAttrs
by allowing any iterator over 2-tuples to build a NixAttrs. Some
instances of BTreeMap didn't have anything to do with making NixAttrs,
and some were just the best tool for the job, so they are left using the
old `from_map` interface.
Change-Id: I668ea600b0d93eae700a6b1861ac84502c968d78
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7492
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Maybe counter-intuitively the inner elements of a list or the
attribute values of an attribute set will be forced despite
pointer equality (but only one layer deep).
Change-Id: I485d96452fb56f5fb342d39039c9137725b33d3f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7371
Reviewed-by: Adam Joseph <adam@westernsemico.com>
Tested-by: BuildkiteCI
This came up in the Nix Language channel today and I thought it
warranted a test case.
We did actually implement this correctly.
Change-Id: I4b37c92d06eb6e3a7f59ea3d10af38f2b0a93d53
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7493
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This fixes cgit's ability to infer the idle time on the repo overview
properly. While we're at it, use the proper remote URL, so the redirection
warning doesn't clutter the logs.
Change-Id: Ie3a75886bdf9c704c18950290b1f7115d0ca0c02
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7496
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: sterni <sternenseemann@systemli.org>
This might shorten the list of known CVEs ...
Change-Id: Ibe06317f0916f9d889c64e6bf694b737338cf54c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7495
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Autosubmit: tazjin <tazjin@tvl.su>
Rust doesn't do tail-call elimination (still!) so the best we can
hope for here is to inline non-recursive invocations.
Change-Id: I78949967e48b006fcbf31786d8f6281cd122f36f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7360
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Autosubmit: Adam Joseph <adam@westernsemico.com>
Before this, tvix was spending most of its time furiously re-parsing
and re-compiling nixpkgs, each time hoping to get a different result...
Change-Id: I1c0cfbf9af622c276275b1f2fb8d4e976f1b5533
Signed-off-by: Adam Joseph <adam@westernsemico.com>
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7361
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
We can actually use one and the same scan on the sorted list
to solve part 1 and 2 of the assignment.
Change-Id: I657a81bad6151ef4fe13239db88d2dbd2f9c29d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7491
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Bonus solution in k as I got sniped by leah2.
Change-Id: I806f5b2ac1388159a427bb239bfb1bb7aeb329d7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7490
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
I currently plan doing BQN and Nix (where it is not too annoying,
respectively). All solutions can either be executed together in a
derivation using CBQN and Tvix (!!!) or executed individually (I'll do
one file per solution for BQN and an attribute set of solutions for Nix
in a single file).
Change-Id: I7cff2ea60d06ae0f586d07779f14f5edd8f87aae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7489
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
I primarily use GitHub for most of these preexisting repositories,
but they should be properly replicated on edwin in case I want to
stop. Pushing the respective refs manually is cumbersome and error
prone, so let's automate it.
The repositories are basically chowned to git:git currently and
`git fetch <remote> 'refs/*:refs/*' --prune` is execute regularly
to update the repository. In the future I could contemplate doing
it the other way round – using edwin as upstream and using
`git push --mirror` to update the GitHub repositories.
Change-Id: Icb8a11223c0b4d3c8ce9a2da7fb2b4d4df4887f8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7486
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Did a little reverse-engineering to try and figure out how to package GUIs for
OSX, which where I learned about:
- `Info.plist`
- `version.plist`
- `pkgs.lib.generators.toPlist`
I'm sure there is more to do to make idiomatically pkg this, but this is enough
to get started, and I need to move-on.
Change-Id: I5168eada32223c5cc2f20defd3d27bccaceb3775
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7317
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
I don't currently need these for any client work but they're constant
battery drains.
Change-Id: Id45d4dacfd59cb3d18d79311fa29450d14a33e6e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7454
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
With this change, the test introduced by cl/7370 passes.
Change-Id: Ie7d2f02a59d61151f14ebd328e6cfa5892cacfb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7375
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: Adam Joseph <adam@westernsemico.com>
This passes all the function/thunk-pointer-equality tests in
cl/7369.
Change-Id: Ib47535ba2fc77a4f1c2cc2fd23d3a879e21d8b4c
Signed-off-by: Adam Joseph <adam@westernsemico.com>
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7358
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
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
it annoys me and I've been turning it off manually, which is also annoying
Change-Id: Ia3b79d11068757c0bb9ee5543a376effb98506df
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7441
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
I often have to type text in German, but on the German keyboard layout
'Y' and 'Z' are in the wrong place (why? who knows). To avoid this
confusion, this defines an input method with the positions of those
keys corrected.
Change-Id: Ie446329d151cd3ed2bbeae1a34fc82d3c29f1d12
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7440
Autosubmit: tazjin <tazjin@tvl.su>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
The backtrace-on-stack-overflow create provides best-effort stack
traces when a stack overflow happens. Since it's running on the
(usually tiny) signal alternate stack this isn't easy.
This is guarded by a new `backtrace_overflow` feature flag and never
enabled (even if that feature is selected) for release builds. This
is strictly for debugging; there's crazy unsafe voodoo in there.
https://lib.rs/crates/backtrace-on-stack-overflow
Example output:
```
Stack Overflow:
0: backtrace_on_stack_overflow::handle_sigsegv
at /home/amjoseph/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-on-stack-overflow-0.2.0/src/lib.rs:93:40
1: <unknown>
2: __rust_probestack
3: tvix_eval::vm::VM::run_op
at src/vm.rs:399
4: tvix_eval::vm::VM::run
at src/vm.rs:388:23
5: tvix_eval::vm::VM::enter_frame
at src/vm.rs:360:22
6: tvix_eval::value::thunk::Thunk::force
at src/value/thunk.rs:116:25
7: tvix_eval::vm::VM::run_op
at src/vm.rs:801:37
8: tvix_eval::vm::VM::run
at src/vm.rs:388:23
9: tvix_eval::vm::VM::enter_frame
at src/vm.rs:360:22
10: tvix_eval::value::thunk::Thunk::force
at src/value/thunk.rs:116:25
...
```
Signed-off-by: Adam Joseph <adam@westernsemico.com>
Change-Id: I1d8a2017f836be7bf91a2223e7adacb86fa1dbb2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7354
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
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
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
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
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>
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
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
For another project I need a way to fetch JS dependencies, as I couldn't
avoid them there. napalm seems to be the best option for this at the
moment, as the approach of running a local registry system seems to be
more robust than using npm's offline mode (which npmlock2nix) is doing.
If the latter gets better, it may be prudent to switch. napalm is
relatively unproblematic, i.e. no Haskell in IFD.
Change-Id: Icf57d3505a55422681bd90c445bde52fcf5841aa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7289
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
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
With this, we can disambiguate the following `mg run` invocations:
```shell
$ mg run :foo # run the virtual target, foo, with no args
$ mg run -- :foo # run the empty target and pass the arg, :foo, to it
```
Change-Id: Id6395b36a4d8ef3f325937e322e1c27b8630b556
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7408
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: sterni <sternenseemann@systemli.org>