| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: I59fed38dca010d6aeac48b5066021ca61ba69db9
Reviewed-on: https://cl.fcuny.net/c/world/+/447
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: Iea045c74a32dc26b9a39da79f49308a85ec237cc
Reviewed-on: https://cl.fcuny.net/c/world/+/446
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: I8a7e0aa493f26bec11772f48ed481781df72cbe1
Reviewed-on: https://cl.fcuny.net/c/world/+/443
Reviewed-by: Franck Cuny <franck@fcuny.net>
Tested-by: CI
|
|
|
|
|
|
|
| |
Change-Id: Ie98ad07ac4de61fc25f9a9821fb5617d12ea5f70
Reviewed-on: https://cl.fcuny.net/c/world/+/442
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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: I7b8a48c8cfdab1bc6e9a95a999f4add1fc07ebc1
Reviewed-on: https://cl.fcuny.net/c/world/+/420
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
We don't need namespaces, a better abstraction is to use different
buckets, as this provides a better abstraction to manage quotas and
permissions.
|
|
|
|
| |
There's no need to install the libpcap-dev package for this repo.
|
|
|
|
| |
There's no `cmd` directory in this repo.
|
|
|
|
|
| |
Let's ensure we test and build a binary when pushing to main and when we
create a pull-request.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
This is a high level description of what buckit is and how it works.
|
| |
|
|
|
|
| |
This commit is empty on purpose.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: Ie69e250c7a63e2f5bea360b5ac62fcd748f48735
Reviewed-on: https://cl.fcuny.net/c/world/+/415
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.
|
| |
|
| |
|
|
|
|
| |
This commit is empty on purpose.
|
|
|
|
|
|
|
| |
Change-Id: I0a8bbe976687a8408e1a931ecf2a90cbaa4926e2
Reviewed-on: https://cl.fcuny.net/c/world/+/414
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: Ifcd265c515b0fc5e1999eed0d7594475e84a346a
Reviewed-on: https://cl.fcuny.net/c/world/+/413
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I4d229d0f4a9142e3bd427a8e63733426f5ca5bd9
Reviewed-on: https://cl.fcuny.net/c/world/+/412
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
| |
We add a new argument to the CLI to collect the path where we want to
publish the firecracker metrics.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
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)
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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`.
|
| |
|
| |
|
|
|
|
|
| |
When reading the configuration for the container, if there's an error we
return the error to the caller.
|
|
|
|
| |
Add a workflows to perform some validation when pushing new commits.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 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
```
|
| |
|
| |
|
|
|
|
| |
This commit is empty on purpose.
|
|
|
|
|
|
|
|
|
| |
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 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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 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>
|
|
|
|
|
|
|
| |
Change-Id: Ifc199c19e80f0c4f6beb5d04d981580c8edaadf6
Reviewed-on: https://cl.fcuny.net/c/world/+/405
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: I79075be119258eb8ee28bf99f404480a646d2583
Reviewed-on: https://cl.fcuny.net/c/world/+/402
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: Ide8e479bc88689e052a372825bc90b23b426a89a
Reviewed-on: https://cl.fcuny.net/c/world/+/382
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I94cb29510cbb85c769947dc26c33f9d767e2f0c8
Reviewed-on: https://cl.fcuny.net/c/world/+/381
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: I0911c07d5ab0e17a09e587ba4507d0202f6c7ff3
Reviewed-on: https://cl.fcuny.net/c/world/+/364
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
| |
Change-Id: I45a42543d7fb5071022a77382e925b55568e2c2d
Reviewed-on: https://cl.fcuny.net/c/world/+/363
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Change-Id: I73087942ed86fd2ad3575a4776dba97fac693468
Reviewed-on: https://cl.fcuny.net/c/world/+/361
Tested-by: CI
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Ia942b32b9eef3d5205a7845ef4945d42af8a0862
Reviewed-on: https://cl.fcuny.net/c/world/+/321
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I7b00987382ef05e032d88cf00e916cdc27511eb1
Reviewed-on: https://cl.fcuny.net/c/world/+/306
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: Icb3bd8cf01850aa9d35fd574cc18543df5b71fca
Reviewed-on: https://cl.fcuny.net/c/world/+/304
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I820a636bcdeb6abf7ff8a25ec409c08916e94c42
Reviewed-on: https://cl.fcuny.net/c/world/+/303
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I5211647802a08e9984dffb6247249ec608688d8c
Reviewed-on: https://cl.fcuny.net/c/world/+/301
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: If1e608b89b39bd5a53a37b873833a7ea881cb418
Reviewed-on: https://cl.fcuny.net/c/world/+/298
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I9abd49136df79a9ed040c9ec0e12eea30736c9ff
Reviewed-on: https://cl.fcuny.net/c/world/+/295
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I92abe7d6c9a1f7c5ef3f157137c59cde751d50f0
Reviewed-on: https://cl.fcuny.net/c/world/+/294
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Ibb55ee455423c101fb6d3e62a2e9e4593682cf16
Reviewed-on: https://cl.fcuny.net/c/world/+/291
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Iae8860631a9d313d5b4f78d171d0dfebc6ef6ff9
Reviewed-on: https://cl.fcuny.net/c/world/+/283
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Id9da12e3a42d42d67cb9962b1ad0b7d27e860663
Reviewed-on: https://cl.fcuny.net/c/world/+/201
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I12cc741bdfb074f7d2a006547860362176afe372
Reviewed-on: https://cl.fcuny.net/c/world/+/169
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Icee60f2372e17f6477a91e7f562c04507788c713
Reviewed-on: https://cl.fcuny.net/c/world/+/168
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I652a3326caf8f949e9734849d1492f7b9764a766
Reviewed-on: https://cl.fcuny.net/c/world/+/167
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I4a30d787bddbe16026fd8d24378f532696256002
Reviewed-on: https://cl.fcuny.net/c/world/+/166
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Icdbc6af9a75834f0e6b11fa2f15d952deb6191dd
Reviewed-on: https://cl.fcuny.net/c/world/+/165
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Ie3244add8420632017132c20c804fd6ecab3a4e0
Reviewed-on: https://cl.fcuny.net/c/world/+/164
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Change-Id: If26166f29f9b519b87e288b514d2c603ca9b4413
|
|\
| |
| |
| | |
Change-Id: I790690b0877ae309d1d5feb5150f136085e78206
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| | |
Ensure that the new keywords added (`if`, `else`, `true`, `false`,
`return`) are parsed correctly.
|
| |
| |
| |
| |
| |
| |
| | |
Add support for a few more keywords (`true`, `false`, `if`, `else`,
`return`).
All keywords are grouped together in the constant declaration.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The test `TestNextTokenBasic` was not testing anything that
`TestNextTokenMonkey` was not already testing.
Rename `TestNextTokenMonkey` to `TestNextToken` for clarity.
|
| |
| |
| |
| | |
For now, automate running the tests.
|
| |
| |
| |
| |
| | |
Support the operator tokens that were added to our tokenizer. This also
add a few more tests to ensure we handle them correctly.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
|
|
|
| |
This commit is empty on purpose.
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
| |
Change-Id: I1c57da26d315c847fc5cef134e75a34395764ac9
Reviewed-on: https://cl.fcuny.net/c/world/+/161
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I65efa49a904ab1885bd72566e450b6678be6aa21
Reviewed-on: https://cl.fcuny.net/c/world/+/123
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I2328abdbd369358e59747a220fe1e57edd8c5126
Reviewed-on: https://cl.fcuny.net/c/world/+/86
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: Ia0b3c7e5c2b1f399f7eaf5db2e926dc3a0859790
Reviewed-on: https://cl.fcuny.net/c/world/+/85
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I7d70a25f95cddedaba5e5186b6e7f83ddf9e7eb9
Reviewed-on: https://cl.fcuny.net/c/world/+/84
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
| |
Change-Id: I8d00bfd71248e1403e8966d74e93941d90462b47
Reviewed-on: https://cl.fcuny.net/c/world/+/83
Reviewed-by: Franck Cuny <franck@fcuny.net>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I2a5b554be29af9184ad504bcb8beca30c605e6c4
Reviewed-on: https://cl.fcuny.net/c/world/+/63
Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
|
|
|
|
|
|
| |
Change-Id: I3b00408d7550d7660fb33940ae2cd0806076f4d2
Reviewed-on: https://cl.fcuny.net/c/world/+/62
Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
|
|
|
|
|
|
| |
Change-Id: Idba41215b58e8cd77d8d4efa354a3acf52c6bc6d
Reviewed-on: https://cl.fcuny.net/c/world/+/61
Reviewed-by: Franck Cuny <franck.cuny@gmail.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Change-Id: Ie217a14a20474b626a2c66116663b785193978c2
|
|
|
|
| |
Change-Id: I94e28dc52d69c3c2ee4d59a0109c9ae32402fb2c
|
|
|
|
| |
Change-Id: I3fadf8a3a9a81c7966b4c048ace1ae259f0e3668
|
|
|
|
| |
Change-Id: I3e4a215b47a5a368210b268fa170aa2dddab721f
|
|
|
|
| |
Change-Id: I449f9032e32911fa33c26ec41faadb4f8acc8b1f
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This identify the server (see
https://github.com/NixOS/nixpkgs/blob/634141959076a8ab69ca2cca0f266852256d79ee/nixos/modules/services/web-apps/gerrit.nix#L141).
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This is needed in order to replace the flake.nix with a default.nix,
like I did for the blog earlier.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This is not going to work with the next change, so I'm just going to
drop it.
|
|
|
|
|
| |
I can now have a readme.org with instructions on how to generate the
resume (because I'll obviously forget again).
|
| |
|
|
|
|
|
| |
In a monorepo setup, the CI configuration is not used at this level of
the tree, and the gitignore/envrc are not relevant.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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`
|
| | |
|
| |
|
|
|
|
|
| |
In a monorepo setup, the CI configuration is not used at this level of
the tree, and the gitignore/envrc are not relevant.
|
|\ |
|
| |
| |
| |
| | |
This is not needed anymore.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Instead of using the Makefile, move the content to a script. This will
be executed by drone later.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Separating the two sites so I can customize them differently.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Using Firefox' accessibility tool as a guide.
|
| | |
|
| |
| |
| |
| | |
These elements are unique on each page.
|
| | |
|
| |
| |
| |
| |
| | |
Depending on the size of the display, display the TOC either before the
article or on the right of the article and let's make it sticky.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There's a need for two TOCs in the layout: one for when the page is on
mobile; one for non mobile.
When we are on mobile, we display the first TOC, before the article.
When we're not on mobile, we hide that TOC and display one after the
document.
We restructure a bit the layout so that's it's a bit more readable too,
and close tags properly.
|
| | |
|
| |
| |
| |
| |
| | |
The div 'main' is not needed, we are creating an element named 'named'
in the main block.
|
| | |
|
| |
| |
| |
| | |
Use a light blue.
|
| |
| |
| |
| |
| | |
Otherwise it's the name of the site, which is not what I'm looking for
here.
|