| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Get a list of failed systemd units (both user and systems), and
generate an output compatible to what waybar expects.
Refer to https://github.com/Alexays/Waybar/wiki/Module:-Custom for
more details about the format.
|
|
|
|
|
|
|
| |
Parse the file that contains all the leases assigned by dnsmasq, and
create a static HTML page from it. This can be served by nginx to make
it easy to see what IP is assigned to a machine, and which machines are
currently on the network.
|
|
|
|
| |
The code has moved to https://git.fcuny.net/dns-updater/
|
|
|
|
|
| |
Delete repositories that are marked as private in GitHub and already
exists in my gitea instance.
|
|
|
|
| |
https://git.fcuny.net/fcuny/sendsms
|
| |
|
| |
|
| |
|
|
|
|
| |
This reverts commit 614fc2fcce0e9ae0bcfdc6e08d3c4bac846d02a8.
|
|
|
|
|
| |
I'm going to move (again) from GH to my own instance of gitea. This
script does the migration for me.
|
| |
|
|
|
|
|
|
|
| |
For the python tools, we need the python runtime to be available. For
this we need to specify the dependencies in `propagatedBuildInputs`.
The same is true for flamegraph and perf.
|
|
|
|
|
|
|
|
| |
I don't want to inline shell scripts inside nix configuration, as it
prevents me to use `shellcheck` to validate them for example.
The script is now moved into the tool directory, and is a tiny bit more
flexible, so that I can run it as my own user.
|
|
|
|
|
|
|
| |
It's been moved to its own repository at
https://github.com/fcuny/mpd-stats
Update the list of repositories managed by terraform.
|
|
|
|
|
|
| |
This tool helps to keep only the branches that are relevant: the ones
that have not been merged yet into the main branch on the principal
remote repository.
|
| |
|
| |
|
|
|
|
|
|
| |
The tool can calculate some stats about authors in a git repository. It
computes the number of lines that are authored by authors at a given
revision (HEAD by default), and the number of commits.
|
|
|
|
|
|
| |
This is a simple script, there's no benefit in having this in go. Having
it Python makes it easier to extend with panda or other libraries in the
future if I need more statistics too.
|
|
|
|
| |
It's back at https://github.com/fcuny/govanity
|
|
|
|
|
|
|
| |
No need to do this with Go, a python script is fine.
We also don't need to set shell aliases for this: when we install the
tool, we can create symbolic links to `ip2int` and `int2ip`.
|
|
|
|
| |
See https://github.com/fcuny/gh-ssh-keys
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
naersk makes it simple to build rust project in nix.
For this to work, `mkSystem` and `mkHomeManagerConfiguration` needs to
pass naersk to my overlays.
I dropped the support to run the tools with `nix run .#tools...`: I
don't use this in practice and it's not making things simpler.
I dropped `nix-linter` from the check, it's reporting many errors
without helping me to fix them.
|
|
|
|
|
| |
I'll go and refactor correctly and properly the support for rust
packages, this is not working and I'm doing something stupid.
|
|
|
|
|
|
|
| |
I can now run `nix build .#tools.sendsms` to build the tool, or get it
deployed on a machine.
Change-Id: I82c733be466adb229d98414fd1229e05f355dd7d
|
|
|
|
|
|
|
|
|
|
|
| |
This is a new tool to send SMS via Twilio's API. For now it supports a
single subcommand: reboot. Using that subcommand, a SMS will be send
with the name of the host and the IP address for the defined network
interface. This is useful to be notified when one of my machine reboot,
and what's the IP for the main interface (this is useful since my ISP
does not provide a static IP).
Change-Id: I5886a2c77ebd344ab3befa51a6bdd3d65bcc85d4
|
|
|
|
|
|
|
| |
Change-Id: I9d1ff1b7de5cb89ffcf40bc91e794f7ff420c1e8
Reviewed-on: https://cl.fcuny.net/c/world/+/717
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I9bf0524ec12c4d554fc4c7ded458aab8a9cf5ef6
Reviewed-on: https://cl.fcuny.net/c/world/+/702
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
| |
In the `mkSystem` function, instead of defining each tools, let's import
all of them at once. This works both with installing a tool from a
module or running them from the CLI.
Change-Id: Ia44ff9a45b54a1ecea6f6b02b4cad2956799f627
Reviewed-on: https://cl.fcuny.net/c/world/+/682
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
| |
The pre-commit hook for new lines reported and correct a number of
issues, so let's commit them now and after that we ca enable the hook
for the repository.
Change-Id: I5bb882d3c2cca870ef94301303f029acfb308740
Reviewed-on: https://cl.fcuny.net/c/world/+/592
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
Don't make it harder to maintain the flake.nix, just add the tools to
this module and import it in the flake configuration.
Change-Id: I62237b996b1c8319c48b9ca4a80e7a3062ef92ec
Reviewed-on: https://cl.fcuny.net/c/world/+/588
Reviewed-by: Franck Cuny <franck@fcuny.net>
Tested-by: CI
|
|
|
|
|
|
|
| |
Change-Id: Ia09983533b3527e50eb4c0828d675e72a782c146
Reviewed-on: https://cl.fcuny.net/c/world/+/581
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the name of the project has a `.' in it's name (for example
`Emacs.d'), buildKite automatically replace it with `-dot'. Which means
that we also have to do this conversion here otherwise we're trying to
build against a pipeline that does not exists.
Change-Id: I54a7dce40da854f125ff43bfbd252b0cd5bfcb29
Reviewed-on: https://cl.fcuny.net/c/world/+/561
Reviewed-by: Franck Cuny <franck@fcuny.net>
Tested-by: CI
|
|
|
|
|
|
|
| |
Change-Id: Ib0e376366ea684a254b7993a746e082e38849daa
Reviewed-on: https://cl.fcuny.net/c/world/+/521
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
As reported by the linter.
Change-Id: I649fc3d90387bda28efe025dd7ccb54d4296d1bd
Reviewed-on: https://cl.fcuny.net/c/world/+/469
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I2dffe70dae5ef287c49d3504f9db438661adc16b
Reviewed-on: https://cl.fcuny.net/c/world/+/465
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: Ifa382713e3f7cf2360b58d6c05a8a200258921f2
Reviewed-on: https://cl.fcuny.net/c/world/+/464
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For example:
```
% echo 1 20 12 32 19 2 | ./seqstat -S
▁▅▃█▅▁
min: 1.000000
max: 32.000000
avg: 14.333333
p50: 19.000000
p90: 32.000000
p99: 32.000000
p999: 32.000000
ordered sequence: [1 2 12 19 20 32]
```
Change-Id: I9303bd7d0e964948143e77c868de8777cd7a9951
Reviewed-on: https://cl.fcuny.net/c/world/+/454
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The tool maps the various PCI devices to the NUMA node they are attached
to and print the result to STDOUT in JSON.
Only ethernet, NVMe and GPU devices are accounted for at the moment.
Change-Id: If32c805e61211f0ef4838a82eabc70d7fc1985fe
Reviewed-on: https://cl.fcuny.net/c/world/+/453
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
Given a PID, the tool reports the scheduler latency for it.
Change-Id: I52e1de81a91f53ac74734dfd808fd4d7ac00c685
Reviewed-on: https://cl.fcuny.net/c/world/+/452
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: Ia4e1aa1e7fc48b8bfb619aba9ba71037ffcc69f8
Reviewed-on: https://cl.fcuny.net/c/world/+/451
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
This tool can be used to create a new git repository. It will create a
README, add the license file, and a few other things I expect.
Change-Id: I14123c8f5b7e2d23373a505a146d2c9f6c08615e
Reviewed-on: https://cl.fcuny.net/c/world/+/450
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
This can be useful if I need to import a SSH key to one of the
forge (only GitHub is supported for now).
Change-Id: Ieb5143a670cd75f1fbe51c0f3ae763dd1d667bef
Reviewed-on: https://cl.fcuny.net/c/world/+/449
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
This CLI can be used on the NAS to import an album in my music
collection.
Change-Id: I5749e34b55bead846e9341fca29e648d3859fc8f
Reviewed-on: https://cl.fcuny.net/c/world/+/448
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
| |
Running this command in a repository will report how many lines in the
current paths were created by different author, for a given revision. If
no revision is specific, HEAD is assumed.
Change-Id: I3fbed4f35a05e12fef22a72d7231727c05c50c96
Reviewed-on: https://cl.fcuny.net/c/world/+/445
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's sometimes useful to store IPv4 addresses as an integer. This tool
helps with the conversion, and also does the reverse conversion.
```
% go run . int2ip 3232235521
3232235521 192.168.0.1
% go run . ip2int 192.168.0.1
192.168.0.1 3232235521
```
Change-Id: Ic1e44057bca3539b4c183d387c635f69f5bf3f36
Reviewed-on: https://cl.fcuny.net/c/world/+/441
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I212635346d2244d9aa1648d02391d192f33c8a1f
Reviewed-on: https://cl.fcuny.net/c/world/+/423
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
No need for an external script, there's only a need to run the tests and
deploy with `flyctl`.
Change-Id: I05400f6b813573b26af884d784fe407d4435429f
Reviewed-on: https://cl.fcuny.net/c/world/+/421
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I36c6da7eba64e6f877d1a17c700c56a70434625a
Reviewed-on: https://cl.fcuny.net/c/world/+/422
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This test does an HTTP request to ensure the URL for the repository does
not return an error.
The test tries first to do a DNS resolution to see if we have network
access. When we build the binary in the nix sandbox we don't have
network access, so we don't want to fail in this situation, we only want
to skip.
The test is going to be run before we do a deployment.
Change-Id: I184f9208210432a5394158d728e556c949e63a24
Reviewed-on: https://cl.fcuny.net/c/world/+/419
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: Id8ad45afc710e1bc5fef5704deb9d8b4c7559b4b
Reviewed-on: https://cl.fcuny.net/c/world/+/418
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
| |
Store the name of the subsystem in a constant, add some comments on
where to find the list.
|
| |
|
|
|
|
|
|
| |
Add a Makefile to install the binary in GOPATH and the unit file for the
service. When the binary is installed, systemd is reloaded and the
service is also started.
|
|
|
|
|
|
|
|
|
|
|
|
| |
As I want the scrobbler to be started automatically when I log into my
session, the easiest way to do this is by having a systemd unit file
that I run for my own user.
The unit expects that the binary for the scrobbler is under my $GOPATH,
which is hard coded for now. We also ensure that the binary exists
before starting the unit.
We harness the service with a number of directives.
|
|
|
|
|
|
|
|
| |
If the status of the player is "stop", we don't have a new song to
handle. In this case, if there's a current song, let's update the status
and clear our state.
Closes #1.
|
|
|
|
|
|
|
|
| |
Add a column `playtime` to the records table to keep track of how long a
song was played.
With this information, in the future, we will be able to sum up how long
we listen to music, but also which songs were skipped.
|
|
|
|
|
|
|
|
| |
The program needs two arguments: the mpd host and port, which can be
passed as flags (default is to use the local instance of mpd).
We store the database in `XDG_CONFIG_HOME/mpd-scrobbler`, and we create
the path if needed.
|
|
|
|
|
|
| |
To compare the current attributes with the current record, we can use
the helper `EqualAttrs` which will tell us if we need to create a new
record or not.
|
| |
|
|
|
|
|
|
|
|
| |
When creating a scrobbler, we provide the path to the database. The
scrobbler then get a handler to the database.
When a new record is created, we persist it to the database using the
`save` function.
|
|
|
|
| |
When we create a new record, let's capture when this was created.
|
|
|
|
|
|
|
|
|
| |
We want to persist the records in a database, so we can extract
statistics and an history.
The module for the database is straightforward: it opens the database if
it exists and return an handler to it. If the database does not exists,
we create it and we create the only table we need (records).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new function to create a scrobbler. The function takes care of
creating the mpd client.
Add a function to run the scrobbler, which takes care of creating a new
record when needed.
This will simplify the interface for the caller, as all they really care
about is: create the scrobbler, close it when we're done, and collect
songs information while we listen to our music.
|
| |
|
|
|
|
|
| |
Let's close both the watcher and the client, instead of leaking this
interface to the user.
|
| |
|
|
|
|
|
|
| |
When we receive an event from the player, we look if the song is
different from the previous one, and we create a new record if that's
the case. If the song is similar, there's nothing to do.
|
|
|
|
|
| |
Define the type for a log record and add an helper function to create a
new record.
|
|
|
|
|
|
|
|
|
|
| |
We create a module "mpd" to interact with our MPD instance. For now we
only have a single function to create a new client, which creates an
actual client for mpd (and we ping the instance every 30 seconds), and
a watcher to receive new events.
The tool "scrobbler" then wait for new events and display songs
information.
|
|
|
|
| |
Describe what is being collected.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
I do not use drone anymore, no need to keep this around.
Change-Id: I8f9564747939a6d1a2b95bcfe8e2c70e46d8bc1e
Reviewed-on: https://cl.fcuny.net/c/world/+/411
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I don't need tags in this repository. There's no need to create them
after a deploy.
Before stopping the fly.io agent, checks that we're in the CI
environment.
Change-Id: I6208b70023c6ae74d58e535e24b44221956dbe63
Reviewed-on: https://cl.fcuny.net/c/world/+/408
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
The buildKite agents need this information in order to vote after a
build.
Change-Id: If03ba51d55f4d1155c6b7fdadace3b4643480258
Reviewed-on: https://cl.fcuny.net/c/world/+/342
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
buildKite can call specific hooks at various stages ([1]). We add a hook
to run after each command. For now we only care if the label of the
command is `:hammer:', since this is what we've defined for our pipeline.
After a successful build, the agent will post a review with +1 if it's a
success, or -1 if the build results in failure.
[1] https://buildkite.com/docs/agent/v3/hooks#job-lifecycle-hooks
Change-Id: I6b2b886c13e6f23ddbc96fd3e865f0d50d625446
Reviewed-on: https://cl.fcuny.net/c/world/+/305
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Id9da12e3a42d42d67cb9962b1ad0b7d27e860663
Reviewed-on: https://cl.fcuny.net/c/world/+/201
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a patchset is created, gerrit will call this tool with a number of
arguments.
This hook triggers a build with buildKite for the given patchset, and
add a comment to gerrit with a link to the build.
We do not wait for the build to be successful to update gerrit. This
will be done by another hook which the buildKite agents will call once
they are done with the build.
Change-Id: Iaa221765f3c52875ec37c5d282ba0557291eb5a4
Reviewed-on: https://cl.fcuny.net/c/world/+/171
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
| |
Change-Id: Ib2792fa8c3f861d290f2495a10672cdfd11c48d9
|
|
|
|
|
|
| |
These files are not needed in the monorepo.
Change-Id: I742316d7a6fae817bedbcd2e1f91963bc24c91b7
|
|\
| |
| |
| | |
Change-Id: I4fd7c748648415db1fa9baaa048ba51e186ec268
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Remove the target from the Makefile, add a target to the flake
configuration.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The version was evaluated before the deploy was done, we need to get
that information after running `flyctl deploy`.
Annotate the tag since we're doing a release.
Remove the argument `IMAGE_REF` since it's being ignored.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to this change, the size of the image was about 300MB:
```
; docker images|grep fcuny/golang|grep days
fcuny/golang.fcuny.net d07add42f21a69e2c057eae8492bbd599dc50082 9fd284c5d8ee 2 days ago 313MB
fcuny/golang.fcuny.net ca3dd083f8d6642821781ce03829713524322bbe 8104afadfd1f 2 days ago 313MB
```
With this change, we're reducing the image to less than 10MB:
```
fcuny/golang.fcuny.net 19b3dccc1ff31534df3636d4d7d6a28c0ae1e189 c9ae35574f8e 24 seconds ago 9.09MB
```
Since there's storage and bandwidth involved in this process, there's no
point in not going for a smaller image.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Don't deploy to Google App anymore, but use fly.io instead.
Add steps to the Makefile to build a docker image, and to deploy the
application to fly.io.
|
| |
| |
| |
| | |
The repository for `homelab` is not ready yet.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Rewrite the program to use external templates and load the configuration
from an external source.
We don't want to blindly send all the requests to some SCM since we want
to support only some modules / program that way.
There's two templates, one for requests coming from a browser, which
list all the supported modules, and one for the `go get` command.
For requests coming from `go get`, we generate a template that indicates
where the repository is.
The external configuration is in YAML, and list all the supported
repositories, and the URL of the repository. It assumes a default VCS
for all the modules (git in our case).
|
| | |
|
| |
| |
| |
| | |
Add a target to open the console.
|
| |
|
|
Integrate properly the tool `dnsupdate` with flake.nix, by adding a
default.nix inside its directory.
Having all the tools under a directory named `tools` is easier to reason
about. I don't need a go.mod at the top level directory either, each
tool will have its own.
|