about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* fix(modules/navidrome): configure nginx to bind to tailscale IPFranck Cuny2022-06-231-0/+12
| | | | | | | | | | | | Only serve a response if the request is coming from tailscale. To ensure this is the case, let's configure nginx to only listen on the tailscale IP of the host for that server. Note: the IP for tailscale is hard coded, there has to be a better way. Change-Id: I8b497507b2c8548d824c2e2bb693b38768b355b9 Reviewed-on: https://cl.fcuny.net/c/world/+/484 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(modules/transmission): configure nginx to bind on tailscale IPFranck Cuny2022-06-231-0/+12
| | | | | | | | | | | | Only serve a response if the request is coming from tailscale. To ensure this is the case, let's configure nginx to only listen on the tailscale IP of the host for that server. Note: the IP is currently hard coded, there has to be a better way. Change-Id: I21b6db5e94070024c1ff8d6cea852aafd6952b55 Reviewed-on: https://cl.fcuny.net/c/world/+/483 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(modules/cgit): make cgit the default server for nginxFranck Cuny2022-06-231-0/+4
| | | | | | | | | | | | | | If a request goes through nginx without a Host header set, the default site we serve is cgit. Without this option, nginx will pick the first site defined in the configuration, which is not what I want. I want to be specific about what is the default. Change-Id: If131b80c1488510e79d60ef6de5bb9db4fa18d58 Reviewed-on: https://cl.fcuny.net/c/world/+/482 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(hosts/home): use fish as my default shell everywhereFranck Cuny2022-06-232-2/+2
| | | | | | | Change-Id: I75df9d3ba133e3f7380a518e1b8c70a564f60482 Reviewed-on: https://cl.fcuny.net/c/world/+/481 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(modules/unifi): only backup the backup directoryFranck Cuny2022-06-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | `/var/lib/unifi` is almost 1GB. The data directory contains a lot of files that are changing constantly, which creates a significant amount of data to backup everyday. Overall if I need to restore a backup for unifi, I don't care about metrics and other application data, I only need to restore a backup, which contains the network configuration. `/var/lib/unifi/data/backup` is smaller: ``` fcuny@tahoe ~> sudo du -sh /var/lib/unifi/data/backup 332M /var/lib/unifi/data/backup ``` and each backup is about 12MB: ``` fcuny@tahoe ~> sudo ls -ltrh /var/lib/unifi/data/backup/autobackup|tail -2 -rw------- 1 unifi unifi 12M Jun 22 18:15 autobackup_6.5.55_20220623_0115_1655946900001.unf -rw------- 1 unifi unifi 5.0K Jun 22 18:15 autobackup_meta.json ``` This will reduce the churn in our daily backup significantly. Change-Id: Ie39ffa9055605298a82ba6731acc34fd4e29309c Reviewed-on: https://cl.fcuny.net/c/world/+/471 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/shell): add alias to search nix packagesFranck Cuny2022-06-231-0/+1
| | | | | | | Change-Id: I394d4cd05ff763aed28e91d86e2905f6ad414336 Reviewed-on: https://cl.fcuny.net/c/world/+/470 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(tools/gerrit-hook): more idiomatic codeFranck Cuny2022-06-231-3/+4
| | | | | | | | | 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>
* feat(home/go): install go-tools packageFranck Cuny2022-06-231-1/+1
| | | | | | | | | This package contains a number of go tools, like staticcheck. Change-Id: I4c923137a430b782ef3ed090bc252586e2ed36ef Reviewed-on: https://cl.fcuny.net/c/world/+/468 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* fix(tools/ipconverter): add missing new lines to print statementsFranck Cuny2022-06-201-4/+4
| | | | | | | Change-Id: I2dffe70dae5ef287c49d3504f9db438661adc16b Reviewed-on: https://cl.fcuny.net/c/world/+/465 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(tools/ipconverter): fail if number of arguments is insufficientFranck Cuny2022-06-201-0/+5
| | | | | | | Change-Id: Ifa382713e3f7cf2360b58d6c05a8a200258921f2 Reviewed-on: https://cl.fcuny.net/c/world/+/464 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/shell): add aliases for ip2int and int2ipFranck Cuny2022-06-201-0/+2
| | | | | | | Change-Id: I309e378a9cd1871fc84b395a6e077757106d2628 Reviewed-on: https://cl.fcuny.net/c/world/+/463 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(home/emacs): don't create frame for emacsclientFranck Cuny2022-06-201-2/+2
| | | | | | | | | Use the existing one. Change-Id: I3983aa234528a97ebab87982c8af88472a5a2933 Reviewed-on: https://cl.fcuny.net/c/world/+/462 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* doc(home/git): comment some of the optionsFranck Cuny2022-06-201-0/+4
| | | | | | | Change-Id: I7c898923c423a30cbc5ba8ba79fb8b9e8e4d2d21 Reviewed-on: https://cl.fcuny.net/c/world/+/461 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* feat(home/git): add a few more options in the default configurationFranck Cuny2022-06-201-0/+5
| | | | | | | Change-Id: I14c7b3349973db99c01c102c57f453840f284612 Reviewed-on: https://cl.fcuny.net/c/world/+/460 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(home/emacs): install the package nixpkgs-fmtFranck Cuny2022-06-201-0/+1
| | | | | | | | | | | | | | | nixpkgs-fmt is a tool to format nix code. This is the one the nix community seems to recommend (https://github.com/nix-community/nixpkgs-fmt) so I should use it. I'm installing this with Emacs because that's how I interact with this code, and I'll configure Emacs to use it for formatting the code. Change-Id: I4364a898c54c75ace12d07636085faa7e9c050c7 Reviewed-on: https://cl.fcuny.net/c/world/+/459 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/shell): manage fish's functions directoryFranck Cuny2022-06-203-0/+14
| | | | | | | Change-Id: I03a35a211c7563e65770b39b140099291efafab9 Reviewed-on: https://cl.fcuny.net/c/world/+/458 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* ref(home/shell): switch default shell to fishFranck Cuny2022-06-202-2/+2
| | | | | | | Change-Id: I905ce6eddc35e4c51a0ab27c8984e0da0fdee7a7 Reviewed-on: https://cl.fcuny.net/c/world/+/457 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* ref(home/shell): move all shell aliases to a shared configurationFranck Cuny2022-06-204-6/+20
| | | | | | | | | | By moving the aliases to a shared module, they can be used between zsh and fish. Change-Id: Ifcfe0af3b90825fe3a67bc1796d4cf65a58d3ff2 Reviewed-on: https://cl.fcuny.net/c/world/+/456 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* ref(home/shell): make it easier to share common things between shellsFranck Cuny2022-06-2015-43/+53
| | | | | | | | | | | | | | | | | | | | I'm considering trying again fish, and there are a number of things that should be common between zsh and fish (aliases, environment variables, ...). Instead of duplicating these settings multiple time, I'm consolidating the shell configurations under `home/shell`, and I can set the shell I want to use with `my.home.shell.name`. The first step is to move the modules for fish and zsh under `home/shell`, add an interface to pick which one I want to use, and modify the `host/home.nix` configuration to keep using zsh with the new interface. Change-Id: Idb66b1a6fcc11a6eeaf5fd2d32dd3698d2d85bdf Reviewed-on: https://cl.fcuny.net/c/world/+/455 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(tools/seqstat): add a tool to report stats about a sequenceFranck Cuny2022-06-194-0/+194
| | | | | | | | | | | | | | | | | | | | | 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>
* feat(tools/numap): add a tool to report NUMA topology of a hostFranck Cuny2022-06-197-0/+512
| | | | | | | | | | | | 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>
* feat(tools/schedlatency): add a tool to report scheduler latencyFranck Cuny2022-06-192-0/+258
| | | | | | | | | 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>
* feat(tools/scheddomain): add a tool to report on scheduler domainsFranck Cuny2022-06-192-0/+156
| | | | | | | Change-Id: Ia4e1aa1e7fc48b8bfb619aba9ba71037ffcc69f8 Reviewed-on: https://cl.fcuny.net/c/world/+/451 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(tools/git-bootstrap): initialize a git repository with my defaultsFranck Cuny2022-06-184-0/+250
| | | | | | | | | | 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>
* feat(tools/ssh-key-to-forge): import a SSH key to a forgeFranck Cuny2022-06-184-0/+591
| | | | | | | | | | 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>
* feat(tools/music-organizer): add a CLI to organize my musicFranck Cuny2022-06-185-0/+318
| | | | | | | | | | 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>
* feat(tools/git-blame-stats): add the CLI with default git configurationFranck Cuny2022-06-181-1/+2
| | | | | | | Change-Id: I59fed38dca010d6aeac48b5066021ca61ba69db9 Reviewed-on: https://cl.fcuny.net/c/world/+/447 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(tools/git-blame-stats): add the tool to nix configurationFranck Cuny2022-06-182-0/+2
| | | | | | | Change-Id: Iea045c74a32dc26b9a39da79f49308a85ec237cc Reviewed-on: https://cl.fcuny.net/c/world/+/446 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(tools/git-blame-stats): add a CLI to report git blame statisticsFranck Cuny2022-06-183-0/+104
| | | | | | | | | | | 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>
* ref(gerrit): add the plugin to delete projectsFranck Cuny2022-06-181-0/+2
| | | | | | | | | | I need to remove some repositories I created by mistake, this will make it easier than messing up with the database. Change-Id: Ia9357226532fe943d15eaec43413502849e39d3d Reviewed-on: https://cl.fcuny.net/c/world/+/444 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(ipconverter): install the tool with my other packagesFranck Cuny2022-06-181-1/+2
| | | | | | | Change-Id: I8a7e0aa493f26bec11772f48ed481781df72cbe1 Reviewed-on: https://cl.fcuny.net/c/world/+/443 Reviewed-by: Franck Cuny <franck@fcuny.net> Tested-by: CI
* feat(ipconverter): add the tool to nixFranck Cuny2022-06-182-1/+5
| | | | | | | Change-Id: Ie98ad07ac4de61fc25f9a9821fb5617d12ea5f70 Reviewed-on: https://cl.fcuny.net/c/world/+/442 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(ipconverter): add a tool to convert IPv4 to int and vice-versaFranck Cuny2022-06-184-0/+120
| | | | | | | | | | | | | | | | | 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>
* ref(scripts): remove the module for scriptsFranck Cuny2022-06-166-46/+31
| | | | | | | | | | The scripts should be part of other modules. If there's no good place for them, they should be part of the packages module. Change-Id: Ic6c678fbe981444848a0ac7015c6c2e450f3b1c1 Reviewed-on: https://cl.fcuny.net/c/world/+/424 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* docs(tools/govanity): update instructionsFranck Cuny2022-06-151-5/+1
| | | | | | | Change-Id: I212635346d2244d9aa1648d02391d192f33c8a1f Reviewed-on: https://cl.fcuny.net/c/world/+/423 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(tools/govanity): simplify the deployment scriptFranck Cuny2022-06-152-13/+11
| | | | | | | | | | 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>
* ref(home/go): update to go version 1.18, ensure goplsFranck Cuny2022-06-151-1/+3
| | | | | | | Change-Id: I7b8a48c8cfdab1bc6e9a95a999f4add1fc07ebc1 Reviewed-on: https://cl.fcuny.net/c/world/+/420 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(tools/govanity): add a function to load the configurationFranck Cuny2022-06-152-18/+22
| | | | | | | Change-Id: I36c6da7eba64e6f877d1a17c700c56a70434625a Reviewed-on: https://cl.fcuny.net/c/world/+/422 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(tools/govanity): add a test for the repo URLFranck Cuny2022-06-151-0/+40
| | | | | | | | | | | | | | | | | 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>
* fix(tools/govanity): remove one repo and fix URL for the other twoFranck Cuny2022-06-151-4/+2
| | | | | | | Change-Id: Id8ad45afc710e1bc5fef5704deb9d8b4c7559b4b Reviewed-on: https://cl.fcuny.net/c/world/+/418 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/beet): import albums on the NASFranck Cuny2022-06-143-30/+60
| | | | | | | | | | | | Two new scripts are created. The first one is to copy an album (usually in zip format) from my desktop to the NAS. Once the file is copied, the script calls the second script, which extract the album and call beet to get it imported in my music collection. Change-Id: I93509e0cc213ba884a9282e1f474a0f9298a1fb7 Reviewed-on: https://cl.fcuny.net/c/world/+/417 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* delete reference to namespacesFranck Cuny2022-06-136-27/+21
| | | | | | We don't need namespaces, a better abstraction is to use different buckets, as this provides a better abstraction to manage quotas and permissions.
* github: don't install libpcapFranck Cuny2022-06-131-3/+0
| | | | There's no need to install the libpcap-dev package for this repo.
* github: fix workflow configurationFranck Cuny2022-06-131-1/+1
| | | | There's no `cmd` directory in this repo.
* github: add workflow configurationFranck Cuny2022-06-131-0/+38
| | | | | Let's ensure we test and build a binary when pushing to main and when we create a pull-request.
* add stub commands for buckitFranck Cuny2022-06-138-0/+130
| | | | | | | | | Add the stub commands for the binary. Each command will be in its own file (with the exception of delete/un-delete). This will make it easier to navigate the code. We use `github/urfave/cli` for generating the sub commands, as the module is well documented and easy to use.
* git: ignore the generated binary buckitFranck Cuny2022-06-131-0/+1
|
* initial documentationFranck Cuny2022-06-132-1/+63
| | | | This is a high level description of what buckit is and how it works.
* Add README.md, LICENSE.txtFranck Cuny2022-06-132-0/+21
|
* Initial commitFranck Cuny2022-06-130-0/+0
| | | | This commit is empty on purpose.
* ref(sourcegraph): exclude more directories from backupFranck Cuny2022-06-131-2/+6
| | | | | | | | | | | | | | I don't need to backup the observability data for sourcegraph. I also don't need to backup the cache. These files change a lot and are about ~300M of data every day, which creates a lot of churn for our backup. All I need if I restore a backup is the content of the database and the indexes. Change-Id: Ifaddda7626ecae32162503bc14aa8d1ffa716622 Reviewed-on: https://cl.fcuny.net/c/world/+/416 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(nginx): delete unused moduleFranck Cuny2022-06-121-81/+0
| | | | | | | Change-Id: Ie69e250c7a63e2f5bea360b5ac62fcd748f48735 Reviewed-on: https://cl.fcuny.net/c/world/+/415 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* mpd: we only want events from the player subsystemFranck Cuny2022-06-112-2/+8
| | | | | Store the name of the subsystem in a constant, add some comments on where to find the list.
* doc: update README with instruction for installingFranck Cuny2022-06-111-0/+8
|
* build: install the binary and systemd unitFranck Cuny2022-06-111-0/+12
| | | | | | 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.
* scrobbler: add a systemd unit fileFranck Cuny2022-06-111-0/+43
| | | | | | | | | | | | 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.
* scrobbler: read mpd status before processing songFranck Cuny2022-06-111-4/+21
| | | | | | | | 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.
* scrobbler: record how long a song was playedFranck Cuny2022-06-112-1/+16
| | | | | | | | 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.
* mpd-scrobbler: proper default argumentsFranck Cuny2022-06-111-2/+31
| | | | | | | | 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.
* scrobbler: use helper function EqualAttrsFranck Cuny2022-06-111-3/+1
| | | | | | 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.
* record: add some basic testingFranck Cuny2022-06-112-0/+59
|
* mpd-stats: pass database path to the scrobblerFranck Cuny2022-06-112-5/+31
| | | | | | | | 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.
* scrobbler: add timestamp to the recordFranck Cuny2022-06-111-9/+11
| | | | When we create a new record, let's capture when this was created.
* scrobbler: add interface to the sqlite3 databaseFranck Cuny2022-06-113-0/+57
| | | | | | | | | 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).
* mpd-stats: create and run the scrobblerFranck Cuny2022-06-111-39/+4
|
* scrobbler: add functions to create and run itFranck Cuny2022-06-111-0/+66
| | | | | | | | | | | | 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.
* mpd: export the type PlayerFranck Cuny2022-06-111-4/+4
|
* mpd: add function `Close` to the playerFranck Cuny2022-06-112-2/+15
| | | | | Let's close both the watcher and the client, instead of leaking this interface to the user.
* mpd: rename function to create the playerFranck Cuny2022-06-112-2/+2
|
* scrobbler: create a record on new songFranck Cuny2022-06-111-5/+27
| | | | | | 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.
* scrobbler: initial log record typeFranck Cuny2022-06-113-1/+40
| | | | | Define the type for a log record and add an helper function to create a new record.
* scrobbler: watch for events and print song detailsFranck Cuny2022-06-114-0/+77
| | | | | | | | | | 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.
* README: add some information about loggingFranck Cuny2022-06-111-1/+14
| | | | Describe what is being collected.
* add initial go.modFranck Cuny2022-06-111-0/+3
|
* Add README.org, LICENSE.txtFranck Cuny2022-06-112-0/+21
|
* Initial commitFranck Cuny2022-06-110-0/+0
| | | | This commit is empty on purpose.
* fix(cgit): update title and descriptionFranck Cuny2022-06-111-1/+2
| | | | | | | Change-Id: I0a8bbe976687a8408e1a931ecf2a90cbaa4926e2 Reviewed-on: https://cl.fcuny.net/c/world/+/414 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(notes): correct the URL to containerd-to-vm codeFranck Cuny2022-06-111-1/+1
| | | | | | | Change-Id: Ifcd265c515b0fc5e1999eed0d7594475e84a346a Reviewed-on: https://cl.fcuny.net/c/world/+/413 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* repo(containerd-to-vm): remove unneeded filesFranck Cuny2022-06-112-40/+0
| | | | | | | Change-Id: I4d229d0f4a9142e3bd427a8e63733426f5ca5bd9 Reviewed-on: https://cl.fcuny.net/c/world/+/412 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* publish firecracker metrics in a FIFOFranck Cuny2022-06-111-2/+4
| | | | | We add a new argument to the CLI to collect the path where we want to publish the firecracker metrics.
* Makefile: install binaries and configsFranck Cuny2022-06-111-6/+23
| | | | | | | To help working on this project in the future, let's try to install dependencies and configurations with `make`. For now we know that we need the firecracker binary, the CNI configuration and the CNI plugin for TAP.
* rename the variable for the linux kernelFranck Cuny2022-06-111-7/+7
|
* c2vm: fix kernel boot optionsFranck Cuny2022-06-111-1/+1
| | | | | | | By specifying these options we can speed up the boot process from 0.9 second to 0.15 seconds. Without these options, the linux kernel spends a few milliseconds probing the device, which is useless in our context (see https://github.com/firecracker-microvm/firecracker/blob/main/docs/api_requests/actions.md#intel-and-amd-only-sendctrlaltdel)
* readme: update instructionsFranck Cuny2022-06-111-0/+16
|
* boot the VMFranck Cuny2022-06-113-4/+256
| | | | | | | | | The binary needs a few more arguments: the path to the firecracker binary, the path to a linux kernel. Using the image that was generated, we can now boot the VM with firecracker. This will rely on a CNI configuration to create the network, and will use the provided kernel to boot.
* hack: firecracker binary and CNI configurationFranck Cuny2022-06-113-0/+35
| | | | | | | | | Add a target to the Makefile to download a version of firecracker and extract it under the repository hack/firecracker. We will then use this binary for running the VM. Add a CNI configuration under hack/cni. This configuration will need to be copied to `/etc/cni/conf.d`.
* git: ignore binaryFranck Cuny2022-06-111-0/+1
|
* add MakefileFranck Cuny2022-06-111-0/+3
|
* check for errorFranck Cuny2022-06-111-0/+3
| | | | | When reading the configuration for the container, if there's an error we return the error to the caller.
* github: add workflowsFranck Cuny2022-06-111-0/+35
| | | | Add a workflows to perform some validation when pushing new commits.
* inject a script for initFranck Cuny2022-06-111-0/+43
| | | | | | | | | Once we will be ready to boot our VM, we will need an init script in place. For this, we create a simple shell script which we populate using the environment variables and command extracted from the container. The init script is stored in /init.sh within the new image, and we will configure the boot parameter to find it there.
* extract layers to a mounted loop deviceFranck Cuny2022-06-113-1/+128
| | | | | | | | | | | | | We create a loop device by pre-allocating space to a file on disk. This file is then converted to an ext4 partition, which we mount to a temporary path on the host. Once this is done, we extract all the layers from the given container on that mounted path. We also add a few extra files to the image (`/etc/hosts` and `/etc/resolv.conf`). When we're done extracting and writing, we run resize2fs in order to resize the image to a more reasonable size.
* add a lease to the Go contextFranck Cuny2022-06-111-0/+6
| | | | | | | | | | | | This will ensure that our container will not be deleted while we work on it. In addition, a default expiry of 24 hours will be set on it once the lease is released (once the program is completed). See [1] for more details. [1] https://github.com/containerd/containerd/blob/261c107ffc4ff681bc73988f64e3f60c32233b37/docs/garbage-collection.md Signed-off-by: Franck Cuny <franck@fcuny.net>
* pull a container into a namespaceFranck Cuny2022-06-114-0/+975
| | | | | | | | | | | | | | | | | | | | Pull an image provided as an argument to the program. We're only interested in images for Linux/amd64 at the moment. We setup a default namespace for containerd named `c2vm`. Images that will be pulled by containerd will be stored inside that namespace. Once the program is build it can be run like this: ``` ; sudo ./c2vm -container docker.io/library/redis:latest pulled docker.io/library/redis:latest (38667897 bytes) ``` And the image is indeed in the namespace: ``` ; sudo ctr -n c2vm images ls -q docker.io/library/redis:latest ```
* doc: update READMEFranck Cuny2022-06-112-1/+15
|
* Add README.md, LICENSE.txtFranck Cuny2022-06-112-0/+21
|
* Initial commitFranck Cuny2022-06-110-0/+0
| | | | This commit is empty on purpose.
* ref(drone): remove all modules and configurationsFranck Cuny2022-06-1110-207/+0
| | | | | | | | | 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>
* ref(gitea): remove all modules for giteaFranck Cuny2022-06-113-1241/+0
| | | | | | | | | I do not use it anymore, I don't need to keep this around. Change-Id: I42af32eec4ee8ab4c2a8c60b5a8306a4eb418f51 Reviewed-on: https://cl.fcuny.net/c/world/+/410 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ci(default): add `apps.ci.shellcheck` to flake.nixFranck Cuny2022-06-102-2/+11
| | | | | | | | | | | | I can now run `nix run .#ci.shellcheck` to validate the shell scripts with shellcheck in the repository. The pipeline in buildKite will need to be updated. Change-Id: Ia52ede86adfa58c9615b0f9e290ef5d5b8adb303 Reviewed-on: https://cl.fcuny.net/c/world/+/409 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(scripts): no need to create tags when deploying to fly.ioFranck Cuny2022-06-103-23/+5
| | | | | | | | | | | | | 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>
* ci(shellcheck): add a script to check shell scriptsFranck Cuny2022-06-101-0/+24
| | | | | | | | | | | | The script uses shellcheck to validates that the shell scripts are correct. This is not used by anything yet. Change-Id: Ia96b132143fa0824eaf23420a72e5b518d618250 Reviewed-on: https://cl.fcuny.net/c/world/+/407 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(flake): install nixpkgs-fmt by defaultFranck Cuny2022-06-101-0/+1
| | | | | | | Change-Id: Ifc199c19e80f0c4f6beb5d04d981580c8edaadf6 Reviewed-on: https://cl.fcuny.net/c/world/+/405 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* ci(fmt): add a script to check the formattingFranck Cuny2022-06-102-2/+34
| | | | | | | | | | | | | | | | Add a script for CI to check that all the files are formatted correctly. This is done by using `treefmt' with a configuration for go and nix files (for now). Running `nix run .#ci.fmt' in the repository will check all the files, and fail if there's any problems. It will not modify any files. The pipeline in builKite needs to be updated to run that command. Change-Id: Iec91163f1ab56ceb0cfff6db8f8ce93367ebeefe Reviewed-on: https://cl.fcuny.net/c/world/+/403 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(fmt): correct formatting for all nix filesFranck Cuny2022-06-1089-156/+256
| | | | | | | | | This was done by running `nixpkgs-fmt .'. Change-Id: I4ea6c1e759bf468d08074be2111cbc7af72df295 Reviewed-on: https://cl.fcuny.net/c/world/+/404 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* docs(gerrit): document various thingsFranck Cuny2022-06-101-0/+59
| | | | | | | Change-Id: I79075be119258eb8ee28bf99f404480a646d2583 Reviewed-on: https://cl.fcuny.net/c/world/+/402 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(bluetooth): write proper configuration for wireplumberFranck Cuny2022-06-101-1/+1
| | | | | | | | | | | | | | | The missing comma resulted in the following error: ``` Jun 10 08:57:09 aptos wireplumber[2303]: Failed to compile: [string "50-bluez-config.lua"]:4: '}' expected (to close '{' at line 1) near '[' ``` As a result, the service would not start, which prevented the sound to work (and overall videos were extremely slow). Change-Id: If6ff7a29a9cf294f9e8d3f6a44abf2423ecfb6e9 Reviewed-on: https://cl.fcuny.net/c/world/+/401 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(backups): exclude more files from the backupsFranck Cuny2022-06-102-1/+11
| | | | | | | | | We don't need to backup log files for grafana and sourcegraph. Change-Id: I8ed6f6ce1270a12233cad268bcd12e28ac2785cf Reviewed-on: https://cl.fcuny.net/c/world/+/383 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(unifi): configure correctly services.unifi for nixos 22.05Franck Cuny2022-06-101-1/+1
| | | | | | | Change-Id: Ide8e479bc88689e052a372825bc90b23b426a89a Reviewed-on: https://cl.fcuny.net/c/world/+/382 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(nginx): configure correctly security.acme for nixos 22.05Franck Cuny2022-06-101-1/+1
| | | | | | | Change-Id: I94cb29510cbb85c769947dc26c33f9d767e2f0c8 Reviewed-on: https://cl.fcuny.net/c/world/+/381 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): adjust configurationFranck Cuny2022-06-091-0/+9
| | | | | | | | | | | - list up to 150 repositories per page - limit stats to a year - snapshots are in tar.gz format Change-Id: Ifc52d47893737862d89d24b797ec28f32e5076e9 Reviewed-on: https://cl.fcuny.net/c/world/+/366 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(nix): update nix to version 22.05Franck Cuny2022-06-096-39/+36
| | | | | | | | | | | | | NixOS 22.05 was released last month. Bump the versions for both nixos and home-manager. I also need to make a few changes for this update work (packages were renamed, options were addded to tailscale, ...) Change-Id: I84ed9f21915b769c9f7b8e21988b2b021715c982 Reviewed-on: https://cl.fcuny.net/c/world/+/365 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(blog): set the correct URL to my git serverFranck Cuny2022-06-091-1/+1
| | | | | | | Change-Id: I0911c07d5ab0e17a09e587ba4507d0202f6c7ff3 Reviewed-on: https://cl.fcuny.net/c/world/+/364 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(navidrome): don't backup the cache directoryFranck Cuny2022-06-091-1/+4
| | | | | | | Change-Id: I45a42543d7fb5071022a77382e925b55568e2c2d Reviewed-on: https://cl.fcuny.net/c/world/+/363 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(restic): actually exclude files from the backupFranck Cuny2022-06-091-2/+8
| | | | | | | | | | | The option `exclude' was defined but unused. Add a function to generate a text file containing all the paths that we want to exclude, and provide that file as an option when we call `restic'. Change-Id: I647db892a8a77c589cec1fc975808c5c9ad0b757 Reviewed-on: https://cl.fcuny.net/c/world/+/362 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(gerrit): don't backup tmp,logs,cache directoriesFranck Cuny2022-06-091-1/+8
| | | | | | | Change-Id: I73087942ed86fd2ad3575a4776dba97fac693468 Reviewed-on: https://cl.fcuny.net/c/world/+/361 Tested-by: CI Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(GTK): delete commented codeFranck Cuny2022-06-091-6/+0
| | | | | | Change-Id: Ia942b32b9eef3d5205a7845ef4945d42af8a0862 Reviewed-on: https://cl.fcuny.net/c/world/+/321 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(secrets): buildKite agents can read gerrit secretsFranck Cuny2022-06-091-0/+4
| | | | | | | | | We need to ensure the agents can read the secrets / tokens to vote after a build. Change-Id: I066c2482a795b21badaa9cc3c525373d7945b084 Reviewed-on: https://cl.fcuny.net/c/world/+/341 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit-hook): propagate gerrit information in the environmentFranck Cuny2022-06-091-3/+17
| | | | | | | | | 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>
* feat(buildkite): configure the post-command hookFranck Cuny2022-06-091-0/+12
| | | | | | Change-Id: I7b00987382ef05e032d88cf00e916cdc27511eb1 Reviewed-on: https://cl.fcuny.net/c/world/+/306 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): update CL when buildKite build is finishedFranck Cuny2022-06-092-0/+46
| | | | | | | | | | | | | | | 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>
* feat(gtk): add bookmarksFranck Cuny2022-06-091-0/+2
| | | | | | Change-Id: Icb3bd8cf01850aa9d35fd574cc18543df5b71fca Reviewed-on: https://cl.fcuny.net/c/world/+/304 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(zsh): ensure home-manager variables are set before starting swayFranck Cuny2022-06-092-6/+10
| | | | | | Change-Id: I820a636bcdeb6abf7ff8a25ec409c08916e94c42 Reviewed-on: https://cl.fcuny.net/c/world/+/303 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(git): remove git.fcuny.net from configurationFranck Cuny2022-06-091-1/+0
| | | | | | | | | I don't have credentials for that URL anymore, everything goes through cl.fcuny.net. Change-Id: I2361444c2ea42679ab4f28758f708e53eb9c8c06 Reviewed-on: https://cl.fcuny.net/c/world/+/302 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(pass-git-helper): remove mapping for git.fcuny.netFranck Cuny2022-06-091-4/+1
| | | | | | Change-Id: I5211647802a08e9984dffb6247249ec608688d8c Reviewed-on: https://cl.fcuny.net/c/world/+/301 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): add plugin 'reviewnotes'Franck Cuny2022-06-091-1/+9
| | | | | | | | | This plugin stores review information for Gerrit changes in the `refs/notes/review' branch. Change-Id: I51c7fe1f8764617e0bff5455d3fe713b0e2f446e Reviewed-on: https://cl.fcuny.net/c/world/+/300 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(nix): move the mkSystem function to its own fileFranck Cuny2022-06-093-47/+31
| | | | | | | | Make the default system be x86-linux. Change-Id: I13e00e4d4cb8b7c49cc549509e37a6d0f022a051 Reviewed-on: https://cl.fcuny.net/c/world/+/299 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(nix): rename lib/ to nix/Franck Cuny2022-06-093-1/+1
| | | | | | Change-Id: If1e608b89b39bd5a53a37b873833a7ea881cb418 Reviewed-on: https://cl.fcuny.net/c/world/+/298 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(profiles): get rid of all the profilesFranck Cuny2022-06-0910-50/+30
| | | | | | | | | | | | | | All the modules that are setup by the profiles are now managed at the host level. This simplify some configuration, and will make it easier to adjust things at the host instead of trying to squeeze everything into profiles. This will also help the refactoring later, when I'll split nixos and home-manager configuration. Change-Id: I17ffda8b0b5d15bf1915c6fae5030380523d74b5 Reviewed-on: https://cl.fcuny.net/c/world/+/297 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(GTK): remove the profile for GTKFranck Cuny2022-06-097-18/+10
| | | | | | | | All the configuration is done at the host level. Change-Id: Ib5ef71ea7955f6872fb08f576e48b24a70600693 Reviewed-on: https://cl.fcuny.net/c/world/+/296 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(home): structure and add commentsFranck Cuny2022-06-093-36/+75
| | | | | | Change-Id: I9abd49136df79a9ed040c9ec0e12eea30736c9ff Reviewed-on: https://cl.fcuny.net/c/world/+/295 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(desktop): move all the modules for home-manager to host levelFranck Cuny2022-06-093-11/+18
| | | | | | Change-Id: I92abe7d6c9a1f7c5ef3f157137c59cde751d50f0 Reviewed-on: https://cl.fcuny.net/c/world/+/294 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(trusted): consume modules within host's configurationFranck Cuny2022-06-096-27/+24
| | | | | | | | | Remove the trusted profiles, the modules are installed directly within the host configuration. Change-Id: I0566fb359803da16bdd3a38e2901deac477fb078 Reviewed-on: https://cl.fcuny.net/c/world/+/293 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(multimedia): move multimedia modules to hostsFranck Cuny2022-06-095-17/+10
| | | | | | | | | Consume the modules related to multimedia applications at the host level, instead of having a level of indirection with a profile. Change-Id: I567f0e01cbfe591beaa2e9086e33434402a4a002 Reviewed-on: https://cl.fcuny.net/c/world/+/292 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(sane): move sane's configuration to correct placeFranck Cuny2022-06-092-3/+3
| | | | | | Change-Id: Ibb55ee455423c101fb6d3e62a2e9e4593682cf16 Reviewed-on: https://cl.fcuny.net/c/world/+/291 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(laptop): move services related to laptop to host's configurationFranck Cuny2022-06-094-18/+7
| | | | | | | | | | As for the bluetooth configuration, we don't need that level of indirection. The laptop can consume these services directly, and we can drop the profile for laptop. Change-Id: Ia434d336ae581bd040fbc4963e5856806183d55e Reviewed-on: https://cl.fcuny.net/c/world/+/290 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(bluetooth): remove the profileFranck Cuny2022-06-094-14/+3
| | | | | | | | | | | I don't need a profile for this, the module can be consumed directly from the host's hardware configuration. It removes one level of indirection and helps us toward the goal of completely removing all the profiles. Change-Id: I95a6fdc985420e7fe0ad737e7576d10d5c7eb114 Reviewed-on: https://cl.fcuny.net/c/world/+/289 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(gerrit-hook): update the configuration with correct URLFranck Cuny2022-06-041-10/+12
| | | | | | Change-Id: Iae8860631a9d313d5b4f78d171d0dfebc6ef6ff9 Reviewed-on: https://cl.fcuny.net/c/world/+/283 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(secrets): pass group and mode to agenixFranck Cuny2022-06-041-2/+8
| | | | | | | | | | | | | | | | | It took me a while to understand why the group and mode were not set correctly for the buildkite agent secrets. This module is an abstraction on top of agenix to modify the filename and ensure that the owner of the file is actually defined in the configuration. This was not passing the group and mode to agenix, which is why these values were never set. This change modify the library to check that the group exists (as we do for the user), and pass the mode down. Change-Id: I7f8545868986110ad92fa63ef8efe4cd3bbd9b0f Reviewed-on: https://cl.fcuny.net/c/world/+/282 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(secrets): set the owner for buildkite agent secretsFranck Cuny2022-06-041-0/+1
| | | | | | | | | There's one user per agent. If we don't set an owner for that file, it will be owned by root. Let's set the ownership to the first builder. Change-Id: I1270e6858c0bf2797bd12c2557d84a494cef5081 Reviewed-on: https://cl.fcuny.net/c/world/+/281 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(drone): remove secret and CLI for droneFranck Cuny2022-06-042-6/+0
| | | | | | | | | I'm not using drone anymore. I don't need the CLI and the secret to be installed. Change-Id: I9c8ecfe5f051fd70d78f0e2e9aaa705e48627714 Reviewed-on: https://cl.fcuny.net/c/world/+/261 Reviewed-by: Franck Cuny <franck@fcuny.net>
* doc(gerrit-hook): add initial documentationFranck Cuny2022-06-041-0/+12
| | | | | | Change-Id: Id9da12e3a42d42d67cb9962b1ad0b7d27e860663 Reviewed-on: https://cl.fcuny.net/c/world/+/201 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): install the gerrit hookFranck Cuny2022-06-041-0/+12
| | | | | | | | | Create a few scripts that are used to trigger the hook when a patchset is created. Change-Id: Ibcfdb76b3e0ca29b9adc4c2719a8f81170818788 Reviewed-on: https://cl.fcuny.net/c/world/+/172 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): add secret for gerrit-hookFranck Cuny2022-06-042-0/+16
| | | | | | | | | | | The secret is the configuration for the gerrit-hook tool. It contains the URL to our gerrit instance, the username/password for the gerrit user used by the tool, the API token for buildKite and the name of the organization in buildKite. Change-Id: I58233e085c92d4c5db5635eb9942a5e87ee9e55d Reviewed-on: https://cl.fcuny.net/c/world/+/204 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit-hook): add gerrit-hook to the overlaysFranck Cuny2022-06-041-0/+5
| | | | | | | | So that we can build and install it. Change-Id: I1f732ceb7be2e9cca625819562f5baed5e131f85 Reviewed-on: https://cl.fcuny.net/c/world/+/181 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit-hook): a small tool to act as a dispatcher for gerritFranck Cuny2022-06-046-0/+309
| | | | | | | | | | | | | | | | 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>
* meta: remove pre-commit checksFranck Cuny2022-05-302-59/+0
| | | | | | | | This is not working as I want. Change-Id: I5c2a96c77585b84fb68bcd661773a3056a0288f4 Reviewed-on: https://cl.fcuny.net/c/world/+/170 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(hosts/tahoe): enable buildkite agentFranck Cuny2022-05-301-0/+1
| | | | | | Change-Id: I12cc741bdfb074f7d2a006547860362176afe372 Reviewed-on: https://cl.fcuny.net/c/world/+/169 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(buildkite): configure the buildkite agentFranck Cuny2022-05-302-0/+47
| | | | | | Change-Id: Icee60f2372e17f6477a91e7f562c04507788c713 Reviewed-on: https://cl.fcuny.net/c/world/+/168 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(buildkite): add the auth tokenFranck Cuny2022-05-302-0/+7
| | | | | | Change-Id: I652a3326caf8f949e9734849d1492f7b9764a766 Reviewed-on: https://cl.fcuny.net/c/world/+/167 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(home/zsh): don't start tmux when in an ssh sessionFranck Cuny2022-05-291-2/+8
| | | | | | Change-Id: I4a30d787bddbe16026fd8d24378f532696256002 Reviewed-on: https://cl.fcuny.net/c/world/+/166 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/git): add an empty line in the templateFranck Cuny2022-05-291-0/+1
| | | | | | Change-Id: Icdbc6af9a75834f0e6b11fa2f15d952deb6191dd Reviewed-on: https://cl.fcuny.net/c/world/+/165 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/git): add alias to review with gerritFranck Cuny2022-05-291-0/+1
| | | | | | Change-Id: Ie3244add8420632017132c20c804fd6ecab3a4e0 Reviewed-on: https://cl.fcuny.net/c/world/+/164 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(home/zsh): add helper function for gerritFranck Cuny2022-05-292-1/+6
| | | | | | | | Add a function `rgerrit' to run gerrit commands on the server. Change-Id: I2beb77e7817e2be03ffbd008cf3545091a9d4c41 Reviewed-on: https://cl.fcuny.net/c/world/+/163 Reviewed-by: Franck Cuny <franck@fcuny.net>
* ref(tahoe): remove droneFranck Cuny2022-05-291-9/+1
| | | | | | | | | I will not be using drone anymore, and will likely replace it with buildkite. Change-Id: I45d91c43090aaba119855158e071dae377c1897f Reviewed-on: https://cl.fcuny.net/c/world/+/162 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(fcuny/monkey): remove unneeded filesFranck Cuny2022-05-292-21/+0
| | | | Change-Id: If26166f29f9b519b87e288b514d2c603ca9b4413
* Merge remote-tracking branch 'monkey/master'Franck Cuny2022-05-2910-0/+421
|\ | | | | | | Change-Id: I790690b0877ae309d1d5feb5150f136085e78206
| * readme: convert to org-modeFranck Cuny2021-05-102-1/+3
| |
| * lint: fix a few issuesFranck Cuny2021-05-103-1/+4
| |
| * git: ignore binary for the REPLFranck Cuny2021-05-101-0/+1
| |
| * repl: support a simple REPL for some early testingfranck cuny2020-01-112-0/+41
| | | | | | | | | | | | The REPL reads the input, send it to the lexer, and prints the token to STDOUT. For now nothing else is done since we still don't parse the tokens.
| * lexer: support tokens for equal and not equal.franck cuny2020-01-112-2/+39
| | | | | | | | | | | | | | | | | | The tokens for equal (`==`) and not equal (`!=`) are composed of two characters. We introduce a new helper (`peekChar`) that we use when we encounter the token `=` or `!` to see if this is a token composed of two characters. Add some tests to ensure they are parsed correctly.
| * token: add tokens for equal and not equal.franck cuny2020-01-111-0/+3
| |
| * lexer: test the new keywords are parsed correctly.franck cuny2020-01-111-3/+25
| | | | | | | | | | Ensure that the new keywords added (`if`, `else`, `true`, `false`, `return`) are parsed correctly.
| * token: support more keywordsfranck cuny2020-01-111-2/+13
| | | | | | | | | | | | | | Add support for a few more keywords (`true`, `false`, `if`, `else`, `return`). All keywords are grouped together in the constant declaration.
| * token: rewrite documentation for `LookupIdent`.franck cuny2020-01-111-3/+4
| |
| * lexer: delete redundant test.franck cuny2020-01-111-32/+1
| | | | | | | | | | | | | | The test `TestNextTokenBasic` was not testing anything that `TestNextTokenMonkey` was not already testing. Rename `TestNextTokenMonkey` to `TestNextToken` for clarity.
| * Makefile: add a Makefilefranck cuny2020-01-111-0/+4
| | | | | | | | For now, automate running the tests.
| * lexer: support more operator tokens.franck cuny2020-01-112-1/+31
| | | | | | | | | | Support the operator tokens that were added to our tokenizer. This also add a few more tests to ensure we handle them correctly.
| * token: support more operator tokensfranck cuny2020-01-111-3/+10
| | | | | | | | | | | | Support additional tokens for operators (`-`, `*`, etc). This change only adds the tokens to the list of constants, and group all the tokens related to operators together.
| * lexer: initial lexerfranck cuny2020-01-112-0/+218
| | | | | | | | | | | | | | | | | | The initial lexer for the monkey language. We only support a small subset at this stage. We have some simple tests to ensure that we can parse some small snippet, and that the minimum number of tokens we need are also all supported correctly.
| * token: initial tokenizer.franck cuny2020-01-111-0/+48
| | | | | | | | | | | | | | | | | | | | | | This is the initial tokenizer for the monkey language. For now we recognize a limited number of tokens. We only have two keywords at this stage: `fn` and `let`. `fn` is used to create function, while `let` is used for assigning variables. The other tokens are mostly to parse the source code, and recognize things like brackets, parentheses, etc.
| * go.mod: create the module 'monkey'franck cuny2020-01-111-0/+3
| | | | | | | | | | | | The project is named monkey, we add a mod file to ensure that the tooling / dependencies are set up correctly when we import various modules in this project.
| * Add README.md, LICENSE.txtfranck cuny2019-12-292-0/+21
| |
| * Initial commitfranck cuny2019-12-290-0/+0
| | | | This commit is empty on purpose.
* tools(govanity): add the tool to flake.nixFranck Cuny2022-05-292-1/+28
| | | | Change-Id: Ib2792fa8c3f861d290f2495a10672cdfd11c48d9
* tools(govanity): remove unneeded filesFranck Cuny2022-05-295-147/+0
| | | | | | These files are not needed in the monorepo. Change-Id: I742316d7a6fae817bedbcd2e1f91963bc24c91b7
* Merge remote-tracking branch 'govanity/main'Franck Cuny2022-05-2915-0/+404
|\ | | | | | | Change-Id: I4fd7c748648415db1fa9baaa048ba51e186ec268
| * remove unused MakefileFranck Cuny2022-05-131-27/+0
| |
| * drone: add a configurationFranck Cuny2022-05-111-0/+18
| |
| * scripts: add a script to deployFranck Cuny2022-05-113-6/+25
| | | | | | | | | | Remove the target from the Makefile, add a target to the flake configuration.
| * Dockerfile: update stepsFranck Cuny2022-05-111-2/+2
| |
| * README: update documentationFranck Cuny2022-05-111-0/+4
| |
| * add a flake.nix to the repositoryFranck Cuny2022-05-114-0/+119
| |
| * config: add mpd-statsFranck Cuny2021-10-101-0/+2
| |
| * build: tag correctly the releaseFranck Cuny2021-09-091-4/+8
| | | | | | | | | | | | | | | | | | 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.
| * build: create user before setting workdirFranck Cuny2021-08-141-2/+2
| |
| * build: build the image before deployingFranck Cuny2021-08-141-1/+1
| |
| * build: trim the size of the Docker containerFranck Cuny2021-08-141-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * config: add vanityFranck Cuny2021-08-121-0/+2
| |
| * build: deploy to flyFranck Cuny2021-08-126-17/+83
| | | | | | | | | | | | | | 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.
| * config: replace homelab with toolsFranck Cuny2021-08-121-2/+2
| | | | | | | | The repository for `homelab` is not ready yet.
| * vanity: rewrite with templates and external configFranck Cuny2021-08-126-22/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
| * build: convert to go moduleFranck Cuny2021-08-121-0/+3
| |
| * Add a new target to the Makefile.Franck Cuny2018-04-081-0/+3
| | | | | | | | Add a target to open the console.
| * Redirect go code to github.comFranck Cuny2018-03-304-0/+52
| |
| * Initial commitFranck Cuny2018-03-300-0/+0
|
* fix(cgit): write the test correctlyFranck Cuny2022-05-291-1/+1
| | | | | | Change-Id: I1c57da26d315c847fc5cef134e75a34395764ac9 Reviewed-on: https://cl.fcuny.net/c/world/+/161 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(gerrit): remove git suffix from project URLFranck Cuny2022-05-291-1/+1
| | | | | | | | This has been dropped in cgit. Change-Id: I255ea20b4f81d080207ac8eac6f6727cac2d54f5 Reviewed-on: https://cl.fcuny.net/c/world/+/126 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): update cgit configurationFranck Cuny2022-05-291-0/+9
| | | | | | | | | | - enable git configuration to read the section out of it - don't display the owner (it's git by default) - sort branches and repositories by age Change-Id: I3f21ec6eb25747d21c23a68b6f24f7cb8345fb02 Reviewed-on: https://cl.fcuny.net/c/world/+/125 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): exclude some repositoriesFranck Cuny2022-05-291-1/+8
| | | | | | | | | There are a few repositories that I want to have active in gerrit but I don't want to list in cgit. Change-Id: I341801cddba0909d5c32d2653c8cc5eb8aae94ed Reviewed-on: https://cl.fcuny.net/c/world/+/124 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(cgit): ensure permissions are set correctlyFranck Cuny2022-05-281-0/+2
| | | | | | Change-Id: I65efa49a904ab1885bd72566e450b6678be6aa21 Reviewed-on: https://cl.fcuny.net/c/world/+/123 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(cgit): define the list of repos prior to scan pathFranck Cuny2022-05-281-2/+2
| | | | | | | | | | | | From the documentation for `project-list`: A list of subdirectories inside of scan-path, relative to it, that should loaded as git repositories. This must be defined prior to scan-path Change-Id: Iab176a800e8ff0abd515a525d89ef524ba6ab097 Reviewed-on: https://cl.fcuny.net/c/world/+/122 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(cgit): generate a proper list of repositoriesFranck Cuny2022-05-281-1/+3
| | | | | | | | | | | The logic was previously incorrect. If a repository becomes hidden in gerrit, it will not be removed from the list. Instead, we create a temporary file which we use to dump the new list and then move it over the current list. Change-Id: I990588ac98ad4024ba144c4c76ad7e4ae27202bc Reviewed-on: https://cl.fcuny.net/c/world/+/121 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): link to cgitFranck Cuny2022-05-281-0/+14
| | | | | | | | Configure gitweb to link to our cgit instance Change-Id: I55cb96e7199bf2636a30689b277978008d6605eb Reviewed-on: https://cl.fcuny.net/c/world/+/88 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): generate the list of projects from gerritFranck Cuny2022-05-281-4/+35
| | | | | | | | | | Query the gerrit API to get the list of active projects, and generate the list of repositories from it. This run every 10 minutes as a systemd timer. Change-Id: I016a6d748597ff4d03af893e0a95b96830bdb3f7 Reviewed-on: https://cl.fcuny.net/c/world/+/87 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): set the clone URL to gerritFranck Cuny2022-05-281-0/+1
| | | | | | Change-Id: I2328abdbd369358e59747a220fe1e57edd8c5126 Reviewed-on: https://cl.fcuny.net/c/world/+/86 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(cgit): support org mode files for READMEFranck Cuny2022-05-281-0/+2
| | | | | | Change-Id: Ia0b3c7e5c2b1f399f7eaf5db2e926dc3a0859790 Reviewed-on: https://cl.fcuny.net/c/world/+/85 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): backup all relevant directoriesFranck Cuny2022-05-281-0/+2
| | | | | | Change-Id: I7d70a25f95cddedaba5e5186b6e7f83ddf9e7eb9 Reviewed-on: https://cl.fcuny.net/c/world/+/84 Reviewed-by: Franck Cuny <franck@fcuny.net>
* docs: start documenting gerritFranck Cuny2022-05-281-0/+18
| | | | | | Change-Id: I8d00bfd71248e1403e8966d74e93941d90462b47 Reviewed-on: https://cl.fcuny.net/c/world/+/83 Reviewed-by: Franck Cuny <franck@fcuny.net>
* feat(gerrit): enable sending emailsFranck Cuny2022-05-271-1/+10
| | | | | | | | Configure gerrit to send emails using fastmail's SMTP servers. Change-Id: I658373a2c1e9b3c5dcbe214a02ebe8ca1be69580 Reviewed-on: https://cl.fcuny.net/c/world/+/81 Reviewed-by: Franck Cuny <franck@fcuny.net>
* fix(gerrit): set the OAUTH client IDFranck Cuny2022-05-271-0/+5
| | | | | | Change-Id: I2a5b554be29af9184ad504bcb8beca30c605e6c4 Reviewed-on: https://cl.fcuny.net/c/world/+/63 Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
* feat(hosts/tahoe): replace gitea by cgitFranck Cuny2022-05-271-2/+1
| | | | | | Change-Id: I3b00408d7550d7660fb33940ae2cd0806076f4d2 Reviewed-on: https://cl.fcuny.net/c/world/+/62 Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
* fix(gerrit): set the home directory for gitFranck Cuny2022-05-271-1/+1
| | | | | | Change-Id: Idba41215b58e8cd77d8d4efa354a3acf52c6bc6d Reviewed-on: https://cl.fcuny.net/c/world/+/61 Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
* feat(cgit): add a module for cgitFranck Cuny2022-05-272-0/+52
| | | | | | | | | cgit is a git web viewer, it will be hosted at git.fcuny.net to replace gitea. Change-Id: I16561776fa90a3561d6a13f8545bd2e8f67f409a Reviewed-on: https://cl.fcuny.net/c/world/+/46 Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
* ref(gerrit): ensure the git user is presentFranck Cuny2022-05-261-0/+9
| | | | Change-Id: Ie217a14a20474b626a2c66116663b785193978c2
* feat(home/git): add credential configuration for cl.fcuny.netFranck Cuny2022-05-262-0/+4
| | | | Change-Id: I94e28dc52d69c3c2ee4d59a0109c9ae32402fb2c
* fix(gerrit): use a compatible JDKFranck Cuny2022-05-261-0/+3
| | | | Change-Id: I3fadf8a3a9a81c7966b4c048ace1ae259f0e3668
* fix(gerrit): install the plugin for oauthFranck Cuny2022-05-261-2/+8
| | | | Change-Id: I3e4a215b47a5a368210b268fa170aa2dddab721f
* fix(gerrit): settings where in wrong placeFranck Cuny2022-05-261-8/+8
| | | | Change-Id: I449f9032e32911fa33c26ec41faadb4f8acc8b1f
* feat(gerrit): use OAUTH for authenticationFranck Cuny2022-05-261-0/+10
|
* fix(gerrit): force gerrit to run as the git userFranck Cuny2022-05-261-0/+11
| | | | | | | The default configuration wants to run gerrit with a DynamicUser. However, this prevent the server to generate the ssh keys needed by gerrit. Instead, we can force the server to run with the 'git' user, which already exists.
* fix(gerrit): use localhost for the proxyFranck Cuny2022-05-261-1/+1
|
* fix(gerrit): remove extra '}' from stringFranck Cuny2022-05-261-1/+1
|
* fix(sourcegraph): remove extra '}' from stringFranck Cuny2022-05-261-1/+1
|
* fix(gerrit): apply a serverIdFranck Cuny2022-05-261-0/+1
| | | | | This identify the server (see https://github.com/NixOS/nixpkgs/blob/634141959076a8ab69ca2cca0f266852256d79ee/nixos/modules/services/web-apps/gerrit.nix#L141).
* feat(tahoe): enable gerritFranck Cuny2022-05-261-0/+4
|
* feat(gerrit): add the gerrit serverFranck Cuny2022-05-262-0/+51
| | | | | | Gerrit is a tool for doing code review for git. It will be running at cl.fcuny.net and will be the main way to interact with my git repositories.
* ref(dnsupdate): move under toolsFranck Cuny2022-05-257-9/+25
| | | | | | | | | 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.
* ref(notes): drop flake.nixFranck Cuny2022-05-257-88/+48
| | | | | | | There's no need to have a flake.nix for the notes, we can use the same mechanism as for the blog and resume. Add a README so I remember how to use this in the future.
* ref(notes): don't rely on git for modified dateFranck Cuny2022-05-251-1/+0
| | | | | This is needed in order to replace the flake.nix with a default.nix, like I did for the blog earlier.
* ref(resume): remove flake.nixFranck Cuny2022-05-255-72/+39
| | | | | | | Integrate the resume with the rest of the repository, as I did for the blog in the previous commit. Added a script to copy the resume in the static directory of the blog.
* ref(blog): drop the flake configurationFranck Cuny2022-05-257-89/+43
| | | | | | There's no need to have multiple `flake.nix` in the repository. Make the blog part of the flake configuration at the root level of the repository, delete the one in the blog, and update the documentation.
* ref(blog): drop the `enableGitInfo` optionFranck Cuny2022-05-251-1/+0
| | | | | This is not going to work with the next change, so I'm just going to drop it.
* feat(resume): rename readme.org to resume.orgFranck Cuny2022-05-233-40/+44
| | | | | I can now have a readme.org with instructions on how to generate the resume (because I'll obviously forget again).
* feat(resume): set the version using the dateFranck Cuny2022-05-232-1/+3
|
* ref(resume): remove unneeded files for my resumeFranck Cuny2022-05-233-12/+0
| | | | | In a monorepo setup, the CI configuration is not used at this level of the tree, and the gitignore/envrc are not relevant.
* Merge remote-tracking branch 'resume/main'Franck Cuny2022-05-237-0/+193
|\
| * remove unused tex styleFranck Cuny2022-05-131-106/+0
| |
| * simplify the buildFranck Cuny2022-05-084-16/+41
| | | | | | | | | | | | | | Running `nix build` is enough to generate the file `resume.html`. It will be created in the `result` directory automatically. The configuration for the build is also updated to run `nix build`
| * drone: add configurationFranck Cuny2022-05-072-0/+9
| |
| * initial commitFranck Cuny2022-05-017-0/+265
|
* ref(notes): remove unneeded files for my notesFranck Cuny2022-05-234-21/+1
| | | | | In a monorepo setup, the CI configuration is not used at this level of the tree, and the gitignore/envrc are not relevant.
* Merge remote-tracking branch 'notes/main'Franck Cuny2022-05-2326-0/+1677
|\
| * delete MakefileFranck Cuny2022-05-111-27/+0
| | | | | | | | This is not needed anymore.
| * nix: add more contentFranck Cuny2022-05-111-0/+4
| |
| * add drone configurationFranck Cuny2022-05-111-0/+18
| |
| * add flake supportFranck Cuny2022-05-113-0/+89
| |
| * add a script to deploy the siteFranck Cuny2022-05-112-8/+15
| | | | | | | | | | Instead of using the Makefile, move the content to a script. This will be executed by drone later.
| * remove GitHub action workflowFranck Cuny2022-05-111-18/+0
| |