about summary refs log tree commit diff
path: root/users
AgeCommit message (Collapse)AuthorFilesLines
2021-03-25 r/2329 refactor: Replace some uses of builtins.toFile with pkgs.writeTextVincent Ambo1-5/+5
I'm looking at removing some of these because they can cause unnecessary build steps during CI pipeline generation. Change-Id: I84742968918090c050d2eedab8a1b42692632a42 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2655 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2021-03-23 r/2324 chore(tazjin/tverskoy): Set git.init.defaultBranch = "canon"Vincent Ambo1-0/+1
Change-Id: Ic03668c152e6d306a47ccc222d2c98901e12dfda Reviewed-on: https://cl.tvl.fyi/c/depot/+/2648 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-23 r/2322 feat(tazjin/emacs): Configurable screen lock & brightness adjustmentVincent Ambo1-10/+15
Change-Id: I749ce827c7d53ecf8dec66c1f62481e6ef44791d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2645 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-23 r/2321 feat(tazjin/tverskoy): Enable automatic screen lockingVincent Ambo1-0/+19
Defines a small helper script that resets the keyboard layout (to avoid getting stuck in Russian layout) and locks the screen via xsecurelock, and configures home-manager to launch this automatically. Fascinatingly this actually seems to be capable of locking the screen *on suspend*, not *after suspend*. Change-Id: Ib6279a445aba18c2fb5bc073b675e6e2598fa228 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2644 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-23 r/2320 fix(tazjin/tverskoy): Forcefully set nix.nixPathVincent Ambo1-0/+6
The out-of-sync channel was previously causing OpenGL applications in nix-shells to fail. Change-Id: Ie527ef70b49468dfb62091abfa878ba1b361fc6d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2643 Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: lukegb <lukegb@tvl.fyi> Tested-by: BuildkiteCI
2021-03-22 r/2319 feat(users/Profpatsch): add imap-idleProfpatsch3-0/+235
A small UCSPI client which connects to an IMAP server, authenticates with username and password (for Christ’s sake, put it in `s6-tlsclient`), selects the `INBOX` and proceeds to listen for new mails. Later it will generate an event on stdout and to be used for push messaging and triggering a full `mbsync` run on new message. Currently I’m testing it via ``` env CAFILE=/run/current-system/etc/ssl/certs/ca-bundle.crt \ IMAP_USERNAME=<username> \ backtick -i IMAP_PASSWORD ' pass' ' <password-entry>' '' \ s6-tlsclient -v <imap-server> 993 ./result ``` Change-Id: I221717d374c0efc8d9e05fe0dfccba31798b3c5c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2636 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-03-22 r/2317 chore(tazjin/tverskoy): Install dnsutils and moshVincent Ambo1-0/+2
Change-Id: I3d3a7543dbd09f68890d9daa6ac38c9afa49d35d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2639 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2315 chore(tazjin/keys): Add tverskoy, comment out frogVincent Ambo1-4/+4
frog is in storage and the key shouldn't have privileges while I'm guaranteed to not use it. Change-Id: If2ee8278fcb81f425dcfc151b11d207dfb6f45c7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2631 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2313 fix(tazjin/tverskoy): Persist Mullvad settings & rustup downloadsVincent Ambo1-2/+4
Change-Id: I6ce75bff1d2e6ed318af9edc878cc59604b7a597 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2635 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-21 r/2312 fix(tazjin/tverskoy): Ensure 'pactl' command is availableVincent Ambo1-0/+1
This is required for my volume modification keyboard shortcuts. Change-Id: I95e02be5b08e1f8a14746ace61226e903fbc68a3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2634 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-21 r/2311 fix(tazjin/tverskoy): Persist ~/.config/mimeapps.listVincent Ambo1-0/+1
Change-Id: Ifd14d4eb0bdfaee6713219f46bac4257d3d72f51 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2633 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-21 r/2310 chore(tazjin/emacs): Use `light` instead of `xbacklight`Vincent Ambo1-2/+2
The latter doesn't work with AMD devices. This will need some changes on one of my non-NixOS machines, unfortunately ... Change-Id: Ib9dfdb9beac67501396a06ea74a0a4371f8ad65e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2628 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2309 fix(tazjin/tverskoy): Configure git to always rebaseVincent Ambo1-0/+3
Change-Id: I2682e350c74a830682ebca12102d00b7e85093f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2627 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2308 fix(tazjin/tverskoy): Add myself to the 'video' groupVincent Ambo1-1/+1
This group has access to modifying backlight settings (configured by the udev rules for `light`). Change-Id: I1593980757c6265f6822d3d3dce9e19a2473acd8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2626 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2307 chore(tazjin/tverskoy): Enable SSH agent, Spotify, mullvad, ...Vincent Ambo1-0/+6
Just a few more missing things. Change-Id: I54b633296d91c6f8dce72d900d7d38b8af4ae419 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2625 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2306 feat(tazjin/tverskoy): Enable redshift & geoclue2Vincent Ambo1-3/+4
... also nuke that Bluetooth headset daemon, it doesn't work anyways. Change-Id: Iee884046a2bf2718767442ec62b2f731e14e39e8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2624 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2305 feat(tazjin/tverskoy): Configure ephemeral home bind-mountsVincent Ambo1-1/+44
Uses the impermanence module to configure the bind-mounts for the few applications that are allowed to persist stuff between boots. For now this setup uses ZFS rollbacks to get /home back into a clean state, where the `tazjin-clean` snapshot is a partition with only the `/home/tazjin` folder and the correct partitions on it. This gives me enough scratch space to e.g. download stuff larger than my RAM without accumulating state. Change-Id: I7cdb2276f087ea62201690cb8b36ae074203f87c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2623 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2302 fix(gs/emacs): Drop explicit load of slackGriffin Smith1-2/+0
This is getting loaded by use-package now Change-Id: I591629ed26ffac71a0df04d51c10b9290ebd76ff Reviewed-on: https://cl.tvl.fyi/c/depot/+/2428 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-03-21 r/2301 fix(tazjin/emacs): Ensure company is installedVincent Ambo1-0/+1
I don't know where this went. Change-Id: I82d27e273e38ffeffe683d6ff2236d383c7b1fcf Reviewed-on: https://cl.tvl.fyi/c/depot/+/2622 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2300 feat(tazjin/tverskoy): Configure impermanence moduleVincent Ambo1-0/+17
This module is responsible for mounting persistent storage into the ephemeral root disk of this machine. Currently only very basic configuration and data are retained, and hopefully that won't change. Change-Id: If800cbee60b7b3c5b8c457b9b332a0c05c33f20e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2621 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2299 feat(tazjin/nixos): Initial check in of new host (tverskoy)Vincent Ambo2-1/+205
This is my new X13 AMD Thinkpad, on which many fun things will be done. Change-Id: I4de114a8c5ebb37d2f4844f407d2dc0e7cc9557e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2620 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 r/2298 fix(tazjin/emacs): Use ace-window from MELPA instead of ELPAVincent Ambo1-1/+1
This package definition is broken for ELPA in nixpkgs, but adisbladis is working on it. Change-Id: Ibe140a2daf7a3a294dae4c6340be33db05a47a44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2619 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-20 r/2296 feat(gs/achilles): Implement very basic monomorphizationGriffin Smith12-19/+430
Implement very basic monomorphization, by recording type variable instantiations when typechecking Call nodes and then using those in a new hir Visitor trait to copy the body of any generic decls for each possible set of instantiation of the type variables. Change-Id: Iab54030973e5d66e2b8bcd074b4cb6c001a90123 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2617 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-03-20 r/2295 fix(gs/achilles): Get rid of universalization stepGriffin Smith2-30/+67
The step of "universalizing" function expressions was conflicting with top-level ascriptions for polymorphic function declarations: universalization generates universal type variables, and top-level polymorphic ascription *also* generates universal type variables, and the two were conflicting with each other when unifying. Let's just get rid of this now, and we can bring it back in a more principled manner once we do actual let-generalization (which there's still an ignored test case for) Change-Id: Idc08c8cb5ac92d1e6e1e63c9b8729176cab73f44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2616 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-20 r/2294 feat(gs/achilles): Prefix top-level ascriptions with `ty`Griffin Smith2-2/+11
This makes parsing less ambiguous, which is nice (we can continue to not actually care about indentation!) and aligns nicely with `fn` for the declaration itself. Change-Id: Id48f064e2a1e01c5105297be355d0991b312b76d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2615 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-20 r/2293 feat(gs/achilles): Implement extern decls, for glibc functionsGriffin Smith9-28/+147
Implement extern decls, which codegen to LLVM as forward-declared functions, and use these as a hook into calling glibc functions. We can print to the terminal now! The integration tests can test this now. Change-Id: I70af4546b417b888ad9fbb18798db240f77f4e71 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2614 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-20 r/2292 feat(gs/achilles): Codegen string literalsGriffin Smith1-1/+5
Codegen string literals to LLVM as (for now) global C string pointers Change-Id: I6dcd7fa25a7806a2f708a8e9275c9a01174fd0cf Reviewed-on: https://cl.tvl.fyi/c/depot/+/2613 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-20 r/2291 chore(gs/achilles): Integrate with the depot buildGriffin Smith4-10/+31
Get achilles building in Nix as part of the depot's build tree. This involved making it work with stable rust, since the depot only exposes stable rust to sub-packages, which turned out to be fairly straightforward. Also adds libffi as a new top-level expose, since it's required to build achilles Change-Id: I5f6dedb26c0b81ec258aedde1973e74903c07ece Reviewed-on: https://cl.tvl.fyi/c/depot/+/2612 Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-19 r/2289 fix(gs/xanthous): update xanthous.cabal, make CI catch such errorssterni2-7/+124
Since xanthous has a checked-in package.yaml and cabal file, the haskellPackages build infrastructure will use the package.yaml file for all builds. The resulting problem is that our CI won't actually catch build failures that would be observable with cabal or when building from the sdist. We fix that by filtering out the package.yaml file in pkg.nix additionally to the filters specified in .gitignore. For this we need gitignoreFilter from gitignore.nix which we expose as part of a functor set from third_party.gitignoreSource to maintain interface compatibility. Change-Id: I337185f484d2027341f38031dcd78898706904eb Reviewed-on: https://cl.tvl.fyi/c/depot/+/2609 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: tazjin <mail@tazj.in>
2021-03-19 r/2288 chore(gs/xanthous): fix for hgeometry 0.12.0.1sterni1-1/+1
The breaking removal of triangulationEdges was not that big of a deal after all: It was just renamed to edgesAsPoints apparently, so the fix is easy enough and we can save one override. hgeometry-combinatorial's doctests seem to trigger some kind of GHC dynamic linking bug (https://github.com/noinia/hgeometry/issues/132) so we disable the tests. Change-Id: Iba2a64cade4d1a55fa4b81846e1116f282d4590a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2608 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-19 r/2287 fix(tazjin/emacs): Set notmuch custom variables through :customVincent Ambo2-5/+4
It seems like some of them end up file-local anyways, and the explicit call to `custom-set-variables` in mail-setup.el had seemingly no effect. Change-Id: Iad5011b5f8348b1ca5973813995c9644ac85ddf5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2610 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-19 r/2286 fix(gs/xanthous): fix build failures caused by dependency updatessterni6-11/+24
The following changes in dependencies of xanthous broke the build and have been fixed in this CL. Thus we can reenable CI for xanthous. * random 1.2.0 removed the Read instance for StdGen, so we need use System.Random.Internal to un-newtype StdGen into an SMGen in the appropriate places as that type still has a Show and Read instance. Requires a new direct dependency on splitmix as well. * witherable 4.0 renamed Data.Witherable into Witherable and no longer exports Filter. * random 1.2.0 probably also broke the Function instance for GameState which contains a StdGen. I'm not exactly sure which change exactly triggered this, but the fix is easy enough: We implement a Function instance for SMGen using functionShow allowing us to write a Function instance for StdGen using functionMap. I've put these instances into Xanthous.Orphans. * hgeometry 0.12.0.0 removes the triangulationEdges function (which is also not mentioned in the changelog, so I'm not sure if there's a replacement yet). Fix by pinning to 0.11.0.0 for now. * hedgehog-classes: relax bounds on semirings Change-Id: I3617d8916d753b386c9fa80062be6bcbdfee0131 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2607 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-19 r/2285 chore(3p/haskell_overlay): remove obsolete overridessterni1-0/+2
I actually wanted to check up on regex-tdfa-text in owothia, but realized it was actually in a dependency. When porting the patch for chatter to nixpkgs, I wondered if we could get rid of other overrides or if we need to fix anything else in upstream. * aeson, attoparsec, cassava, psqueues, hedgehog: jailbreaks are no longer necessary * fgl, fgl-arbitrary: upstream has the versions pinned by now * hgeometry, hgeometry-combinatoral: upstream has moved past the pinned versions, but we don't need to keep them downgraded as xanthous's build is not broken by them. * random-source: the upstream compiler shouldn't crash anymore, additionally upstream has the version pinned here currently * semialign: upstream also has 1.1.0.1 by now * splitmix: splitmix has been fixed upstream and haskellPackages has moved past 0.1 * hspec-core: test suite passes or upstream has disabled it as well * QuickCheck: upstream advanced to the same version * vinyl: upstream moved past the pinned version, causes no build failures * comonad-extras: has been fixed upstream Change-Id: I34eff81ceaac005f2ad90dd9c1d3e623b8da91c0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2606 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2021-03-19 r/2284 chore(3p): bump NixOS channels to 2021-03-18sterni2-2/+2
Making this a monthly service apparently. Necessary changes: * 3p: expose emacs27 instead of emacs26 which got removed users/tazjin/{camden, frog}: switch from emacs26 to emacs27 * 3p/lieer: google_api_python_client got renamed to google-api-python-client Change-Id: I1011665d10eebc99990addbef6a8a6b000b93896 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2605 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: tazjin <mail@tazj.in>
2021-03-15 r/2282 feat(users/Profpatsch): build attrset members on CIsterni9-43/+31
Setting meta.targets to include all derivations in the different package sets in Profpatsch's user folder makes them checked by CI until they do the readTree refactor as promised. To reduce code duplication we handle this in a simple function which is exposed from nix.utils which may be a good place for depot specific bits and bops we accumulate over time. To get around the issue of too nested sets we perform the following renames: * users.Profpatsch.tests gets moved into its own directory * users.Profpatsch.arglib.netencode now lives in its own file instead of the default.nix * users.Profpatsch.netstring.tests gets moved into its own directory Change-Id: Icd039c29d7760a711c1c53554504d6b0cd19e120 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2603 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-03-15 r/2279 merge(glittershark/achilles): Subtree import at 'b93268085a'Vincent Ambo33-0/+4508
Imported from https://github.com/glittershark/achilles/ git-subtree-dir: users/glittershark/achilles git-subtree-mainline: 4d193f239525954631ba9d789ca3aea9a2f4e14d git-subtree-split: b93268085aab14c80a400c299da5d04d2781098e Change-Id: I64a583b454bbe03e20358ad7808939a4cbc212ba
2021-03-11 r/2277 feat(users/sterni/htmlman): hyperlink .Xr macro in outputsterni1-2/+32
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 r/2276 feat(users/sterni/htmlman): static site generator for manual pagessterni3-0/+289
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-06 r/2275 fix(tazjin/emacs): Always show newest emails firstVincent Ambo1-0/+1
The default for this seems to have changed in a recent notmuch release. Change-Id: I1542b20c2e3edf72a3472c5277bce313c6df12b8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2595 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-06 r/2274 feat(tazjin/rlox): Implement global variable accessVincent Ambo4-6/+48
This also includes a fix for an issue where the identifiers of variables were pushed onto the stack, which is incorrect. Change-Id: Id89b388268efad295f29978d767aa4b33c4ded14 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2594 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-06 r/2273 feat(tazjin/rlox): Implement global variable definitionVincent Ambo5-15/+80
identifier_str might look a bit overengineered, but we want to reuse this bit of code and it needs a reference to the token from which to pick the identifier. The problem with this is that the token would be owned by self, but the function needs to mutate (the interner), so this implementation is the most straightforward way of acquiring and working with an immutable reference to the token before interning the identifier. Change-Id: I618ce8f789cb59b3a9c5b79a13111ea6d00b2424 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2592 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-06 r/2272 refactor(tazjin/rlox): Refactor Compiler::consume into a macroVincent Ambo1-18/+21
Making this function a macro instead makes it possible to match arbitrary token kinds, even the ones that carry data, without changing the syntax too much. Change-Id: I5cda9e36d6833bd9c259f7d4d8340db6e783b4e8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2593 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-06 r/2271 fix(tazjin/rlox): Resynchronise after panickingVincent Ambo1-1/+32
Change-Id: I60939f7a2c523b6ca1e9782e58c97959da38cfff Reviewed-on: https://cl.tvl.fyi/c/depot/+/2591 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-05 r/2270 feat(users/sterni/nix/utf8): pure nix utf-8 decodersterni3-0/+332
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 r/2269 feat(users/sterni/nix/flow): add switch conditionalsterni1-23/+53
switch would probably otherwise be called match, but has been renamed so it isn't confused with string.match and the enum matching capabilities yants has. It implements the closest to pattern matching nix can come which is still flexible enough to not be painful: Syntactically it works like cond, but is given a value. Instead of booleans it checks passed predicates or equality if simple values are passed. Both types of checks can be mixed. Change-Id: I40f000979cfd469316e15fd58d6c3a80312c1cc4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2589 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-05 r/2268 feat(users/sterni/nix/fun): make lrs read left to right completelysterni1-1/+1
Change-Id: I57d290f770bc1d6bd88a46924889b919d68201e3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2588 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-05 r/2267 refactor(users/sterni/nix/string): don't calculate length for dropsterni1-4/+5
Since nix ends the substring at the end of the string anyways we can just statically use the largest nix integer as the length of the string. According to my testing this it ever so slightly faster as well. Change-Id: I64566e91c7b223f03dcebe3bc5710696dc4261bc Reviewed-on: https://cl.tvl.fyi/c/depot/+/2587 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-05 r/2266 feat(users/sterni/nix): move flow.match to string.matchsterni5-14/+17
After all it only matches strings. Change-Id: I3d2e5221ef43f692de69028e78ed98b6b11f82d1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2586 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-03 r/2265 feat(tazjin/rlox): Implement expression statementsVincent Ambo4-53/+78
These aren't particularly useful without side effects, but one step at a time. This diverges slightly from the book, in that OpPop retains the last value it "forgot" from the stack in a special field on the interpreter. This makes it possible to return values from expression statements, which helps in cases where Lox is embedded as a scripting language (please don't do this ever) or in tests. Change-Id: Ided0bc04c6e80ddb23ba4693d61ac9e08b002d58 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2584 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-03 r/2264 feat(tazjin/rlox): Add support for print statementVincent Ambo3-5/+61
Change-Id: Ic3e7e722325c8784b848c0bcd573c2e51e123c40 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2583 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI