Age | Commit message (Collapse) | Author |
|
This patch does a few things:
1. Switches from nixpkgs-unstable to nixos-unstable{,-small}, simply because
nixpkgs-unstable is not in cache.nixos.org, but nixos-unstable is, and -small
is the same but requires all tests to pass. So we should prefer
nixos-unstable-small, whenever possible.
2. Reorganizes the nixpkgs import code such that Nixpkgs.nix returns an attrset
of all the nixpkgs that I want to use, rather than putting other nixpkgs
branches into the main one as an overlay. This is much simpler and explicit,
but it meant I had to change a lot of usages throughtout the nix codebase.
3. As a consequence of 2, moves the overlays into separate files so they can be
re-used across nixpkgs branches.
|
|
I tried to add it to Lint.hs but I can't because mypy needs the target's
external libraries in its environment to load and check the types for that
dependency. So instead, I just added a function to the REPL environment that
runs the type checker. I already had mypy in the REPL environment so I must have
started down this path before and just didn't add the REPL tooling.
The automatic typechecking on load feels like Haskell. A previous version of
this patch had just provided a `typecheck()` function to the REPL, but it felt
awkward to type all that out just to check my code after loading it.
I would like to bind a key like ctrl-r or alt-r to the `reload()` function, but
I'm not sure how to do that. I think Python uses GNU readline so there should be
some docs, but a first pass search didn't find what I needed.
|
|
Ruff is faster and if it supports everything that black supports than why not? I
did have to pull in a more recent version from unstable, but that's easy to do
now. And I decided to just go ahead and configure ruff by turning on almost all
checks, which meant I had to fix a whole bunch of things, but I did that and
everything is okay now.
|
|
I always want to push notes on a successful code push, so using the pre-push
hook to do so is perfect. This also expands the pre-push hook to handle
new/deleted branches, configures notes automatically, and finally checks that
commit messages are decent with gitlint, since `git amend` can bypass the git
commit-msg hook.
|
|
I realized that tidy was doing the same thing as git clean, but git clean can do
it more robust and exactly. So switch to that and add it to the git test config
aliases so I don't accidentally test with old artifacts.
|
|
Uses git test to run CI on every commit before push.
|
|
It got out of sync with the code even within commit
7597d51ed4c866f596fb690d4d53d70bc01181b4, I dunno how I let that happen.
|
|
Apparently git hooks don't get called if they have a file extention, so these
weren't getting called at all since commit
904de577261e7024373e7a42fd763184764238f9. So this renames them back to the
extension-less versions, and adds an exception in bild for files in the
core.hooksPath directory.
Unfortunately this means Lint.hs will silently ignore these files, but I guess
that's okay for now.
|
|
I just like these UI settings better is all.
|
|
I was already using .sh to refer to shell scripts. When I added .bash, I didn't
realize that the linter was set to act on .sh files and not .bash files, so all
of these bash scripts escaped the linter.
This commit renames them to .sh, removes the .bash extension support from
Biz.Namespace, and fixes all the reported shellcheck errors.
|
|
By default, nix will use the maximum amount of cores available to the machine.
On my machine it was maxxing out the CPUs and then actually running out of RAM
when compiling JavaScriptCore and literally shutting down my machine. So, I need
to be able to control the concurrency and parallelism.
The default settings I chose should reserve 4 cores for the user.
I also changed --json to --plan because -j makes more sense for --jobs, as its
used this way in other tools like make and nix-build.
|
|
Added BILD_ARGS and removed the unused 'while read' so you can just call it
directly without having to supply arguments.
|
|
BIZ_ROOT was too specific. CODEROOT allows for other (non-biz) projects to live
in the root of the repo. I didn't want to call it GIT_ROOT because maybe someday
I won't want to use git. But I'll never not use code.
|
|
After using this for a while, I've decided that git-branchless will be the
default tool for doing trunk-based development in the omnirepo.
|
|
Getting beryllium setup with the omnirepo showed that a few things
needed fixed.
|
|
Previously, if there was a problem with the inputs and bild failed to
determine the namespace, 'fromPath' would return 'Nothing' and then
'catMaybes' would drop the error-causing input altogether. In the one
time that I had a bad input, this made debugging incredibly difficult.
It's always a bad idea to swallow errors silently, so instead lets just
kill the program if we have bad inputs.
|
|
This allows me to specify runtime dependencies, not just system or
language deps.
|
|
BIZ_ROOT was too specific. CODEROOT allows for other (non-biz) projects to live
in the root of the repo. I didn't want to call it GIT_ROOT because maybe someday
I won't want to use git. But I'll never not use code.
|
|
This implements a prototype Mynion, my chatbot which will eventually
help me write code here. In fact he's already helping me, and works
pretty well over xmpp.
The prompt is currently not checked in because I'm experimenting with it
a lot, and it should probably be a runtime parameter anyways.
In the course of writing this I added some helper libraries to get me
going, configured black (didn't even know that was possible), and added
'outlines' and its dependencies even though I didn't end up using it.
I'll keep outlines around for now, but I'm not sure how useful it really
is because afaict its just pre-defining some stop conditions. But it
took a while to get it working so I'll just keep it in for now.
|
|
This is one of those things that's hard to get right because it depends
on the state of the git repo to exercise all code paths.
|
|
Previously I would lint every file individually, in serial. This took
forever. Now I group the files by extension (by first getting the Namespace) and
run each linter on all relevant files at once. This is so much faster its
stupid.
Also I added formatters back into the dev env because my editor needs them to
autoformat.
|
|
Ruff is like a million times faster, and I mostly ignored pylint's suggestions
anyway.
I also took this opportunity to move lint tools into a runtime dependency on
Lint.hs, which meant adding a wrapper to the Haskell builder, which was easy
enough. This paves the way for proper rundeps in bild.
|
|
Turns out that gitlint by default enforces the exact commit-msg format that I
like to use. I'm enabling this because even I write poor commit messages
sometimes, and looking back on my commits from even a few days ago is sometimes
not very helpful.
I also made some minor comment and nix changes that I noticed while reviewing my
work from the last few days.
|
|
|
|
|
|
|
|
|
|
|
|
I added 'black' to Biz/Lint.hs, but not the others because they rely on
dependencies being in the PYTHONPATH to work, so they are only relevant
in nix builds and repls.
I also made some other tweaks to the python checkPhase and linted all
the files. Everything should be building and linting correctly now.
|
|
This is necessary because otherwise I have no record of when I had a
successful build.
|
|
This represents quite a few evenings of hacking. It doesn't build all of my
Python code, because my Python code is not up to snuff, but it builds the
examples and pulls in third party dependencies.
Some design points:
- I'm using buildPythonApplication in Builder.nix because it was getting way too
annoying to wrap the Python script and set PYTHONPATH myself. Easier and more
robust to just use the upstream nix builder
- Because of this, I had to generate a setup.py. Maybe switch to pyproject.toml
in the future, whatever.
- Also because of this, Target.wrapper is becoming redundant. I'll just remove
it when I get Guile built in nix.
- Biz/Bild.nix is getting messy and could use a refactor.
- In Builder.nix, I worked around the empty directories bug by just finding and
deleting empty directories after unpacking. If its stupid but works it ain't
stupid!
- I had to touch __init__.py files in all directories before building. Annoying!
- `repl` just works, which is awesome
- To ensure good Python code, I moved lints and added type checking to the
build. So I can't build anything unless it passes those checks. This seems
restrictive, but if I want to run some non-passing code, I can still use
`repl`, so it's actually not inhibitory.
|
|
|
|
|
|
Without this, Guile libraries like SDL2 will use Guile 2.0 instead.
|
|
|
|
|
|
|
|
|
|
I don't like TODOs in my codebase, I'd rather keep them in org files. Eventually
I need a linter that prevents all TODOs from getting into code.
|
|
|
|
|
|
|
|
In order to write Guile code against C, I need to distiguish between libs and
bins, so I did that, then I got the flags that gcc needs from `guile-config` and
put them in the args for any C lib build. I tested this with Bessel.c and
Bessel.scm (not in this patch, because I don't really want that code in my
tree, I'll come up with another way to test it later).
|
|
- added --bash in case you just really want a shell
- added support for C programs
|
|
|
|
The motivation for this was to prevent `lint` from rebuilding every time I ran
it. That was really annoying.
|
|
|
|
Rust seems to not be supported in my ctags version :(
Also rename some Ide scripts because these are commands, not really scripts.
|
|
|
|
|