Improve documentation
This commit is contained in:
@@ -2,37 +2,6 @@
|
|||||||
|
|
||||||
Begin your journey in machine management by introducing a new machine into your Clan environment. Follow these streamlined steps to get started:
|
Begin your journey in machine management by introducing a new machine into your Clan environment. Follow these streamlined steps to get started:
|
||||||
|
|
||||||
## Adding Your First Machine
|
|
||||||
|
|
||||||
Begin your journey in machine management by introducing a new machine into your Clan environment. Follow these streamlined steps to get started:
|
|
||||||
|
|
||||||
1. **Create Your Machine**: Generate a new machine configuration using the Clan CLI with the command below:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
clan machines create my-machine
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **List Available Machines**: Verify the successful addition of your new machine and view any existing machines in your configuration:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
clan machines list
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_Note: The `$(mkpasswd)` command generates a hashed password. Ensure you have the `mkpasswd` utility installed or use an alternative method to generate a secure hashed password._
|
|
||||||
|
|
||||||
## Test Your Machine Configuration Inside a VM
|
|
||||||
|
|
||||||
Before deploying your configuration to a live environment, you can run a virtual machine (VM) to test the settings:
|
|
||||||
|
|
||||||
```shellSession
|
|
||||||
$ clan vms run my-machine
|
|
||||||
```
|
|
||||||
|
|
||||||
This command run a VM based on the configuration of `my-machine`, allowing you to verify changes in a controlled environment.
|
|
||||||
|
|
||||||
## Installing a New Machine
|
## Installing a New Machine
|
||||||
|
|
||||||
|
|||||||
@@ -31,35 +31,51 @@ Transitioning your existing setup to Clan Core is straightforward with these det
|
|||||||
git add .
|
git add .
|
||||||
```
|
```
|
||||||
|
|
||||||
1. **Update Flake Inputs**: Introduce a new input in your `flake.nix` for the Clan Core dependency:
|
|
||||||
|
3. **Create Machines Directory**: Create a machines directory where you put all machine specific nix configs like the configuration.nix
|
||||||
|
1. Create the machines directory in your git root example: `/etc/nixos/machines/`
|
||||||
|
```bash
|
||||||
|
mkdir machines
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Inside the machines directory create a directory named after the hostname of the machine you want to manage with clan.
|
||||||
|
```bash
|
||||||
|
mkdir machines/jons-desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Move your `configuration.nix` and included files into `machines/jons-desktop`
|
||||||
|
```bash
|
||||||
|
mv configuration.nix machines/jons-desktop/configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Git add your new machines folder
|
||||||
|
```bash
|
||||||
|
git add machines
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Update Flake Inputs**: Introduce a new input in your `flake.nix` for the Clan Core dependency:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
inputs.clan-core = {
|
inputs.clan-core = {
|
||||||
url = "git+https://git.clan.lol/clan/clan-core";
|
url = "git+https://git.clan.lol/clan/clan-core";
|
||||||
inputs.nixpkgs.follows = "nixpkgs"; # Only if your configuration uses nixpkgs stable.
|
inputs.nixpkgs.follows = "nixpkgs"; # Only if your configuration uses nixpkgs unstable.
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
Ensure to replace the placeholder URL with the actual Git repository URL for Clan Core. The `inputs.nixpkgs.follows` line indicates that your flake should use the same `nixpkgs` input as your main flake configuration.
|
Ensure to replace the placeholder URL with the actual Git repository URL for Clan Core. The `inputs.nixpkgs.follows` line indicates that your flake should use the same `nixpkgs` input as your main flake configuration.
|
||||||
|
|
||||||
2. **Update Outputs**: Modify the `outputs` section of your `flake.nix` to accommodate Clan Core's provisioning method:
|
|
||||||
|
|
||||||
```diff
|
5. **Revise System Build Function**: Transition from using `lib.nixosSystem` to `clan-core.lib.buildClan` for building your machine derivations:
|
||||||
- outputs = { self, nixpkgs }: {
|
|
||||||
+ outputs = { self, nixpkgs, clan-core }:
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Revise System Build Function**: Transition from using `lib.nixosSystem` to `clan-core.lib.buildClan` for building your machine derivations:
|
|
||||||
|
|
||||||
- Previously:
|
- Previously:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
outputs = { self, nixpkgs }: {
|
outputs = { self, nixpkgs }: {
|
||||||
nixosConfigurations.example-desktop = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.jons-desktop = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [ ./configuration.nix ];
|
modules = [ ./configuration.nix ];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
- With Clan Core:
|
- With Clan Core:
|
||||||
@@ -70,37 +86,48 @@ Transitioning your existing setup to Clan Core is straightforward with these det
|
|||||||
directory = self; # Point this to the repository root.
|
directory = self; # Point this to the repository root.
|
||||||
clanName = "__CHANGE_ME__"; # Ensure this is internet wide unique.
|
clanName = "__CHANGE_ME__"; # Ensure this is internet wide unique.
|
||||||
machines = {
|
machines = {
|
||||||
example-desktop = {
|
jons-desktop = {
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
imports = [ ./configuration.nix ];
|
imports = [
|
||||||
|
clan-core.clanModules.sshd ## Add openssh server for clan management
|
||||||
|
./machines/jons-desktop/configuration.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in { inherit (clan) nixosConfigurations clanInternals; };
|
in { inherit (clan) nixosConfigurations clanInternals; };
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Rebuild and Switch**: Apply your updated configuration:
|
|
||||||
|
|
||||||
|
6. **Rebuild and Switch**: Apply your updated configuration:
|
||||||
|
|
||||||
```shellSession
|
```shellSession
|
||||||
sudo nixos-rebuild switch --flake /etc/nixos
|
sudo nixos-rebuild switch --flake /etc/nixos
|
||||||
```
|
```
|
||||||
|
|
||||||
This rebuilds your system configuration and switches to it. The `--flake .` argument specifies that the current directory's flake should be used.
|
This rebuilds your system configuration and switches to it. The `--flake /etc/nixos` argument specifies that the `/etc/nixos` directory's flake should be used.
|
||||||
|
|
||||||
5. **Test Configuration**: Ensure your new configuration builds correctly without any errors or warnings before proceeding.
|
7. **Test Configuration**: Ensure your new configuration builds correctly without any errors or warnings before proceeding.
|
||||||
|
|
||||||
6. **Reboot**: If the build is successful and no issues are detected, reboot your system:
|
8. **Reboot**: If the build is successful and no issues are detected, reboot your system:
|
||||||
|
|
||||||
```shellSession
|
```shellSession
|
||||||
sudo reboot
|
sudo reboot
|
||||||
```
|
```
|
||||||
|
|
||||||
7. **Verify**: After rebooting, verify that your system operates with the new configuration and that all services and applications are functioning as expected.
|
9. **Verify**: After rebooting, verify that your system operates with the new configuration and that all services and applications are functioning as expected.
|
||||||
|
|
||||||
|
|
||||||
|
# TODO:
|
||||||
|
* How do I use clan machines install to setup my current machine?
|
||||||
|
* I probably need the clan-core sshd module for that?
|
||||||
|
* We need to tell them that configuration.nix of a machine NEEDS to be under the directory CLAN_ROOT/machines/<machine-name> I think?
|
||||||
|
|
||||||
|
|
||||||
## What's next
|
## What's next
|
||||||
|
|
||||||
After creating your flake, you can check out how to add [new machines](./machines.md)
|
After creating your clan checkout [managing machines](./machines.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -159,10 +186,10 @@ such as the platform and specific Nix configurations. Update your `flake.nix` li
|
|||||||
inputs.clan-core.flakeModules.default
|
inputs.clan-core.flakeModules.default
|
||||||
];
|
];
|
||||||
clan = {
|
clan = {
|
||||||
clanName = "NEEDS_TO_BE_UNIQUE"; # Please replace this with a unique name for your clan.
|
clanName = "__CHANGE_ME__"; # Ensure this is internet wide unique.
|
||||||
directory = inputs.self;
|
directory = inputs.self;
|
||||||
machines = {
|
machines = {
|
||||||
example-desktop = {
|
jons-desktop = {
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
imports = [ ./configuration.nix ];
|
imports = [ ./configuration.nix ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from ..cmd import CmdOut, run
|
|||||||
from ..errors import ClanError
|
from ..errors import ClanError
|
||||||
from ..nix import nix_command, nix_shell
|
from ..nix import nix_command, nix_shell
|
||||||
|
|
||||||
DEFAULT_URL: str = "git+https://git.clan.lol/clan/clan-core?new-clan"
|
DEFAULT_URL: str = "git+https://git.clan.lol/clan/clan-core"
|
||||||
|
|
||||||
|
|
||||||
def create_flake(directory: Path, url: str) -> dict[str, CmdOut]:
|
def create_flake(directory: Path, url: str) -> dict[str, CmdOut]:
|
||||||
|
|||||||
@@ -10,9 +10,9 @@
|
|||||||
pkgs = clan-core.inputs.nixpkgs.legacyPackages.${system};
|
pkgs = clan-core.inputs.nixpkgs.legacyPackages.${system};
|
||||||
clan = clan-core.lib.buildClan {
|
clan = clan-core.lib.buildClan {
|
||||||
directory = self;
|
directory = self;
|
||||||
clanName = "__CHANGE_ME__";
|
clanName = "__CHANGE_ME__"; # Ensure this is internet wide unique.
|
||||||
machines = {
|
machines = {
|
||||||
machine1 = {
|
jon = {
|
||||||
nixpkgs.hostPlatform = system;
|
nixpkgs.hostPlatform = system;
|
||||||
imports = [
|
imports = [
|
||||||
# TODO: boot into the installer
|
# TODO: boot into the installer
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
# local> scp -r root@machine1:/tmp/config ./machines/machine1
|
# local> scp -r root@machine1:/tmp/config ./machines/machine1
|
||||||
# local> Edit ./machines/machine1/configuration.nix to your liking
|
# local> Edit ./machines/machine1/configuration.nix to your liking
|
||||||
./modules/disko.nix
|
./modules/disko.nix
|
||||||
|
./machines/jon/configuration.nix
|
||||||
clan-core.clanModules.sshd
|
clan-core.clanModules.sshd
|
||||||
{
|
{
|
||||||
# Set this for clan commands use ssh i.e. `clan machines update`
|
# Set this for clan commands use ssh i.e. `clan machines update`
|
||||||
@@ -33,11 +34,12 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
machine2 = {
|
sara = {
|
||||||
nixpkgs.hostPlatform = system;
|
nixpkgs.hostPlatform = system;
|
||||||
imports = [
|
imports = [
|
||||||
# ./machines/machine2/configuration.nix
|
# ./machines/machine2/configuration.nix
|
||||||
./modules/disko.nix
|
./modules/disko.nix
|
||||||
|
./machines/sara/configuration.nix
|
||||||
clan-core.clanModules.sshd
|
clan-core.clanModules.sshd
|
||||||
{
|
{
|
||||||
# Set this for clan commands use ssh i.e. `clan machines update`
|
# Set this for clan commands use ssh i.e. `clan machines update`
|
||||||
|
|||||||
4
templates/new-clan/machines/jon/configuration.nix
Normal file
4
templates/new-clan/machines/jon/configuration.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{config, clan, lib, pkgs, ...}:
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
4
templates/new-clan/machines/sara/configuration.nix
Normal file
4
templates/new-clan/machines/sara/configuration.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{config, clan, lib, pkgs, ...}:
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user