Commit graph

21 commits

Author SHA1 Message Date
June 744bbdb245
docs: add basic documentation to the infra-rebuild root command
All checks were successful
/ ruff (push) Successful in 25s
/ black (push) Successful in 25s
This way, by only looking at the help page, users should get a good
enough idea on how to use infra-rebuild to start using it.
2024-06-10 02:35:59 +02:00
June a7772aa154
feature!: introduce --flake option for setting the flake to use
All checks were successful
/ ruff (push) Successful in 25s
/ black (push) Successful in 25s
Having this option available allows for using a flake which isn't in (or
upwards of) the directory the command gets executed in and allows for
using remote flakes.

Also archive the flake to use first and then operate on the archive.
This allows for easily getting the deployment_configuration.json from
the archive and also ensures that once the archiving suceeds, there
shouldn't be issues with the flakes source anymore.
Since now the deployment_configuration.json will always be taken from
the root of the flakes archive and therefore from the root of the flakes
repo, this is a breaking change, since previously it was taken from the
current working directory.
The idea of archiving the flake first and operating on the archive comes
from bij:
221052d846

Moreover introduce helper functions for facilitating recursive options
(i.e. options one can set on root and sub-commands).
2024-06-10 02:08:23 +02:00
June d164f502a1
docs: add help text doc. that reboot is a conv. alias for boot --reboot
All checks were successful
/ ruff (push) Successful in 26s
/ black (push) Successful in 26s
2024-06-09 00:33:24 +02:00
June fd9ad17d79
feature: add --reboot flag for remote operations (except for "reboot")
All checks were successful
/ ruff (push) Successful in 25s
/ black (push) Successful in 26s
Also make the "reboot" operation basically an alias for "boot --reboot"
then and simplify the code of the operations.run function, since it
doesn't need to convert between operation and actual_operation anymore.
2024-06-09 00:26:04 +02:00
June 4afbebcf4a
ci: add a black job to the style.yaml workflow running black --check
All checks were successful
/ black (push) Successful in 25s
/ ruff (push) Successful in 25s
2024-06-08 23:43:51 +02:00
June 22c23ba3d6
ci: add a style.yaml workflow with a ruff job running ruff check
All checks were successful
/ ruff (push) Successful in 25s
2024-06-08 23:41:32 +02:00
June db3e05e6da
docs: introduce new "ci" tag for changes to the CI and its configuration 2024-06-08 23:14:54 +02:00
June 8845a6b408
docs: document configuration 2024-06-08 21:34:12 +02:00
June 9e96034997
docs: document basic usage of infra-rebuild 2024-06-08 21:14:53 +02:00
June 3cdd4ba8b5
update!: switch from one comma-sep. argument to variadic args. for hosts
Since the hosts are what nixos-rebuild acts on it makes to have them
represented by unlimited variadic arguments similar to how "git add",
"cat", "nix build", etc. work.
2024-06-06 21:08:38 +02:00
June 11a2b74aee
docs: redefine commit message "update" tag to be for tagging non-feat.
Redefine the commit message "update" tag to be for tagging an
enhancement or update, which doesn't qualify as a feature, and also have
it not be restricted from tagging a breaking change.
2024-06-06 21:04:48 +02:00
June 89cb3586c2
build: set version statically in pyproject.toml 2024-06-06 20:23:48 +02:00
June 5c55bd3e97
build: Add Nix flake for building x86_64- and aarch64-linux Nix packages 2024-06-06 20:18:52 +02:00
June 3410f647f5
other: Put ruff linter settings in lint section as recommended by ruff 2024-06-06 01:07:43 +02:00
June 7cfa2726d3
other: Use more recent min. vers. for the lint, fmt and typing tooling 2024-06-06 01:07:43 +02:00
June c7f7771e26
other: Use "ruff check" instead of just "ruff" as recommended by ruff
This is as of ruff 0.3.0. See here:
https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md#030
2024-06-06 01:07:39 +02:00
June cb9f2e3a11
docs: specify a commit message format to use 2024-06-06 00:37:51 +02:00
June 05c45fe5e3
Port infra-rebuild to Python
Do this for a nicer developer experience in a safer language, which has
nice libraries available to e.g. build command line interfaces (e.g.
click).

Set minimum Python version to 3.10 to support match statements.
2024-06-06 00:05:55 +02:00
June 500438636a
Create a skeleton python project and modify it to fit this project
Create a skeleton python project using "hatch new -i --cli
infra-rebuild" with Hatch version 1.7.0 and modify it to fit this
project. This is the first step of porting infra-rebuild to Python.

Also provide a first .gitignore ignoring relevant build directories.
2024-06-05 15:24:47 +02:00
June d085cfd3b9
License this program under GPL-3.0-or-later 2024-06-04 23:25:10 +02:00
June 946ab46275
Add initial scripts, which make up the infra-rebuild tool
infra-rebuild is a simple NixOS deployment tool, which simply uses
nixos-rebuild internally, but tries to make it more convenient to deploy
infrastructure.

It supports most of the nixos-rebuild operations - build, build-vm,
build-vm-with-bootloader, switch, boot, test - but also provides a
reboot operation, which runs nixos-rebuild boot followed by initiating a
reboot.

The tool doesn't need any configuration for a standard use case. It
tries to get the hosts FQDN from its NixOS configuration and tries to
deploy to it. However for special cases, where a custom target hostname,
user or port is needed, it allows one to define those in a
deployment_configuration.json.

infra-rebuild also allows for multiple hosts to be specified at once.
The tool then simply runs the specified operation for each host
sequentially.

Much inspiration was taken from bij.
See here: https://git.clerie.de/clerie/bij
And inspiration was also taken from Colmena.
See here: https://github.com/zhaofengli/colmena
2024-05-28 00:14:29 +02:00