From 2e0e58b8438da655fd042898962d07b8fdc29b13 Mon Sep 17 00:00:00 2001 From: kalipso Date: Thu, 20 Feb 2025 15:15:53 +0100 Subject: [PATCH] [readme] update --- README.md | 75 ++++++------------------------------------------ doc/src/Index.md | 59 +++++++------------------------------ 2 files changed, 19 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index de73651..0adc90a 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,20 @@ # malobeo infrastructure -this repository nxios configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner. - -the file structure is based on this [blog post](https://samleathers.com/posts/2022-02-03-my-new-network-and-deploy-rs.html) - -## hosts - -#### durruti -- nixos-container running on dedicated hetzner server -- login via ```ssh -p 222 malobeo@dynamicdiscord.de``` -- if rebuild switch fails due to biglock do ```mount -o remount,rw /nix/var/nix/db``` -- currently is running tasklist in detached tmux session - - [x] make module with systemd service out of that - -## creating a new host - -### setting up filesystem -currently nixos offers no declarative way of setting up filesystems and partitions. that means this has to be done manually for every new host. [to make it as easy as possible we can use this guide to setup an encrypted zfs filesystem](https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/Root%20on%20ZFS.html) - -*we could create a shell script out of that* +this repository contains nixos configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner. ### deploying configuration -#### local deployment -``` shell -nixos-rebuild switch --use-remote-sudo -``` +hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes. +Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master. -#### remote deployment +### deploy fresh host +if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html) -you need the hostname and ip address of the host: -``` shell - nixos-rebuild switch --flake .# --target-host root@ --build-host localhost -``` - -in this case 'localhost' is used as buildhost which can be usefull if the target host is low systemresources +### testing configuration +refer to https://docs.malobeo.org/anleitung/microvm.html#testing-microvms-locally ## development - ### requirements we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf* ``` nix @@ -55,46 +31,13 @@ a development shell with the correct environment can be created by running ```ni If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration) ### build a configuration - to build a configuration run the following command (replace `````` with the actual hostname): ``` shell nix build .#nixosConfigurations..config.system.build.toplevel ``` -### building raspberry image - -for the raspberry it is possible to build the whole configuration as an sd-card image which then can be flashed directly. more information about building arm on nixos can be found [here](https://nixos.wiki/wiki/NixOS_on_ARM). - -to be able to build the image you need to enable qemu emulation on the machine you are building with. therefore it is necessary to add the following to your configuration.nix: - -``` nix -boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; -``` - -then you can build the image with: - -``` shell -nix build .#nixosConfigurations.rpi1_base_image.config.system.build.sdImage -``` - -### run a configuration as vm - -to run a vm we have to build it first using the following command (replace `````` with the actual hostname): - -``` shell -nix build .#nixosConfigurations..config.system.build.vm -``` - -afterwards run the following command to start the vm: - -``` shell -./result/bin/run--vm -``` - ### documentation -for documentation we currently just use README.md files. - -the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser. -the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```. +documentation is automatically build from master and can be found here: docs.malobeo.org +locally you can run documentation using ```nix run .#docs``` or ```nix run .#docsDev``` diff --git a/doc/src/Index.md b/doc/src/Index.md index 104fd5b..0adc90a 100644 --- a/doc/src/Index.md +++ b/doc/src/Index.md @@ -1,26 +1,20 @@ # malobeo infrastructure -this repository nxios configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner. - -the file structure is based on this [blog post](https://samleathers.com/posts/2022-02-03-my-new-network-and-deploy-rs.html) +this repository contains nixos configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner. ### deploying configuration -#### local deployment -``` shell -nixos-rebuild switch --use-remote-sudo -``` -#### remote deployment -you need the hostname and ip address of the host: -``` shell - nixos-rebuild switch --flake .# --target-host root@ --build-host localhost -``` +hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes. +Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master. -in this case 'localhost' is used as buildhost which can be usefull if the target host is low systemresources +### deploy fresh host +if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html) +### testing configuration + +refer to https://docs.malobeo.org/anleitung/microvm.html#testing-microvms-locally ## development - ### requirements we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf* ``` nix @@ -37,46 +31,13 @@ a development shell with the correct environment can be created by running ```ni If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration) ### build a configuration - to build a configuration run the following command (replace `````` with the actual hostname): ``` shell nix build .#nixosConfigurations..config.system.build.toplevel ``` -### building raspberry image - -for the raspberry it is possible to build the whole configuration as an sd-card image which then can be flashed directly. more information about building arm on nixos can be found [here](https://nixos.wiki/wiki/NixOS_on_ARM). - -to be able to build the image you need to enable qemu emulation on the machine you are building with. therefore it is necessary to add the following to your configuration.nix: - -``` nix -boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; -``` - -then you can build the image with: - -``` shell -nix build .#nixosConfigurations.rpi1_base_image.config.system.build.sdImage -``` - -### run a configuration as vm - -to run a vm we have to build it first using the following command (replace `````` with the actual hostname): - -``` shell -nix build .#nixosConfigurations..config.system.build.vm -``` - -afterwards run the following command to start the vm: - -``` shell -./result/bin/run--vm -``` - ### documentation -for documentation we currently just use README.md files. - -the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser. -the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```. +documentation is automatically build from master and can be found here: docs.malobeo.org +locally you can run documentation using ```nix run .#docs``` or ```nix run .#docsDev```