about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
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/2318 chore(ops/nixos): Update Sourcegraph to 3.26.0Vincent Ambo1-1/+1
Reading through the changelogs, this includes the following two changes that may require us to do something: * For users of single-image Sourcegraph instance, please delete the secret key file /var/lib/sourcegraph/token inside the container before attempting to upgrade to 3.21.x. * A campaigns.restrictToAdmins site configuration option has been added to prevent non site-admin users from using campaigns. Change-Id: Ieacf85a9059ad5222800f8d7d4a43435f489a39f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2638 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
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-22 r/2316 feat(ops/dns): Add status subdomainVincent Ambo2-16/+18
I want to host something like Vigil[0] on this to show the status of Gerrit, SourceGraph and maybe other components. (Yes, the status page will be on the same infrastructure ... but this is mostly for service failure cases). [0]: https://github.com/valeriansaliou/vigil Change-Id: If71496300b94035976a685d9bf166d525d89fc5e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2637 Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
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/2314 chore(whitby): Remove SSH key from rootVincent Ambo1-4/+0
This was a leftover from the time we were installing. Change-Id: Id875b907d7f76081a45e7f8f2666b7fba6aefc86 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2632 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
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/2304 chore(3p/gerrit_plugins): Build plugins separately in CIVincent Ambo1-2/+1
Change-Id: I76aeaa879e43b1fd08440f60a4f320bb7b48c6ab Reviewed-on: https://cl.tvl.fyi/c/depot/+/2630 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2021-03-21 r/2303 chore(3p/gerrit): Update pinned dependency hashVincent Ambo2-3/+3
Change-Id: I1807ac1771d23b00e3a78cc36fb2f82a12900993 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2629 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
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 Ambo3-1/+206
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-21 r/2297 feat(3p): Import nix-community/impermanence moduleVincent Ambo1-0/+12
Change-Id: I5b9386b1db74dafe921d7957bc726cfba403c155 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2618 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
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 Smith5-10/+32
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-20 r/2290 chore(3p/exposed): Add glittershark to OWNERSGriffin Smith1-0/+1
Change-Id: I17474fbee75666d825b4c4db1af37fff1e214818 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2611 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-19 r/2289 fix(gs/xanthous): update xanthous.cabal, make CI catch such errorssterni3-13/+140
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.1sterni2-16/+2
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 updatessterni7-11/+50
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 overridessterni4-253/+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-18sterni5-11/+11
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/2283 refactor(ops/dns): use drvTargets for meta.targets populationsterni1-7/+8
Since we have a dedicated util for this, we may as well use it to reduce code duplication. Change-Id: Ie52647be8c786d0b6a4dceb2fa6778b94625fafc Reviewed-on: https://cl.tvl.fyi/c/depot/+/2604 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-15 r/2282 feat(users/Profpatsch): build attrset members on CIsterni11-43/+58
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/2281 feat(ops/dns): Configure tvl.su zoneVincent Ambo2-0/+30
Change-Id: I6016d92e9c231a257e06644dfcf44a4aaa12ac4d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2601 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi>
2021-03-15 r/2280 feat(ops/dns): Import tvl.fyi DNS zone into depotVincent Ambo4-0/+59
Imports the current state of the tvl.fyi zone and configures simple CI checks on the file format. No deployment automation exists for this (yet?). Change-Id: Ia7d72e02b9f6d3adef994c5dc1898cc0df9dfcfb Reviewed-on: https://cl.tvl.fyi/c/depot/+/2600 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
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-14 Implement top-level ascription of declarationsGriffin Smith5-15/+73
2021-03-14 Universally quantified type variablesGriffin Smith17-112/+635
Implement universally quantified type variables, both explicitly given by the user and inferred by the type inference algorithm.
2021-03-14 Make string and bool parsing completeGriffin Smith2-5/+10
2021-03-14 Add string support to the frontendGriffin Smith10-11/+95
2021-03-13 Add the start of a hindley-milner typecheckerGriffin Smith20-78/+980
The beginning of a parse-don't-validate-based hindley-milner typechecker, which returns on success an IR where every AST node trivially knows its own type, and using those types to determine LLVM types in codegen.
2021-03-13 r/2278 feat(users/adisbladis): Add to usersAdam H1-0/+5
Change-Id: I2a3532605c602dd6ba44a6c723333db219a55907 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2599 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-03-13 Allow exprs+bindings to optionally be ascriptedGriffin Smith6-38/+264