docs: add nix-darwin

This commit is contained in:
Jörg Thalheim 2024-06-30 09:43:46 +02:00
parent 3ec2350421
commit 6a1cd68c79
4 changed files with 103 additions and 48 deletions

View File

@ -0,0 +1,47 @@
# Using SrvOS with nix-darwin
## Finding your way around
This project exports four big categories of NixOS modules which are useful to define a server configuration:
* Machine type - these are high-level settings that define the machine type (Eg: common, server or desktop). Only one of those would be included.
* Configuration mixins - these define addons to be added to the machine configuration. One or more can be added.
## Example
Combining all of those together, here is how your `flake.nix` might look like, to deploy a GitHub Actions runner on Hetzner:
```nix
{
description = "My machines flakes";
inputs = {
srvos.url = "github:nix-community/srvos/darwin-support";
# Use the version of nixpkgs that has been tested to work with SrvOS
# Alternatively we also support the latest nixos release and unstable
nixpkgs.follows = "srvos/nixpkgs";
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "srvos/nixpkgs";
};
outputs = { srvos, nix-darwin, ... }: {
darwinConfigurations.myHost = nix-darwin.lib.darwinSystem {
modules = [
# This machine is a server (i.e. CI runner)
srvos.darwinModules.server
# If a machine is a workstation or laptop, use this instead
# srvos.darwinModules.desktop
# Configured with extra terminfos
srvos.darwinModules.mixins-terminfo
# Finally add your configuration here
./myHost.nix
];
};
};
}
```
## Continue
Now that we have gone over the high-level details, you should have an idea of how to use this project.
To dig further, take a look at the [User guide](../user_guide.md).

View File

@ -1,53 +1,9 @@
# Getting Started with SrvOS # Getting Started with SrvOS
This project is designed to work in combination with [NixOS](https://nixos.org). This project is designed to work in combination with the Linux distribution [NixOS](https://nixos.org) or [nix-darwin](https://github.com/LnL7/nix-darwin) on macOS.
In this documentation, we expect the reader to be already familiar with the base operating system, and introduce how to compose it with our own extensions. In this documentation, we expect the reader to be already familiar with the base operating system, and introduce how to compose it with our own extensions.
## Finding your way around For NixOS continue reading [here](nixos/getting_started.md),
for nix-darwin/macOS read [this](darwin/getting_started.md).
This project exports four big categories of NixOS modules which are useful to define a server configuration:
* Machine type - these are high-level settings that define the machine type (Eg: common, server or desktop). Only one of those would be included.
* Machine hardware - these define hardware-related settings for well known hardware. Only one of those would be included. (eg: AWS EC2 instances).
* Machine role - theses take over a machine for a specific role. Only one of those would be included. (eg: GitHub Actions runner)
* Configuration mixins - these define addons to be added to the machine configuration. One or more can be added.
## Example
Combining all of those together, here is how your `flake.nix` might look like, to deploy a GitHub Actions runner on Hetzner:
```nix
{
description = "My machines flakes";
inputs = {
srvos.url = "github:nix-community/srvos";
# Use the version of nixpkgs that has been tested to work with SrvOS
# Alternatively we also support the latest nixos release and unstable
nixpkgs.follows = "srvos/nixpkgs";
};
outputs = { self, nixpkgs, srvos }: {
nixosConfigurations.myHost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# This machine is a server
srvos.nixosModules.server
# Deployed on the AMD Hetzner hardware
srvos.nixosModules.hardware-hetzner-amd
# Configured with extra terminfos
srvos.nixosModules.mixins-terminfo
# And designed to run the GitHub Actions runners
srvos.nixosModules.roles-github-actions-runner
# Finally add your configuration here
./myHost.nix
];
};
};
}
```
## Continue
Now that we have gone over the high-level details, you should have an idea of how to use this project.
To dig further, take a look at the [User guide](user_guide.md).

View File

@ -0,0 +1,49 @@
# Using SrvOS on NixOS
## Finding your way around
This project exports four big categories of NixOS modules which are useful to define a server configuration:
* Machine type - these are high-level settings that define the machine type (Eg: common, server or desktop). Only one of those would be included.
* Machine hardware - these define hardware-related settings for well known hardware. Only one of those would be included. (eg: AWS EC2 instances).
* Machine role - theses take over a machine for a specific role. Only one of those would be included. (eg: GitHub Actions runner)
* Configuration mixins - these define addons to be added to the machine configuration. One or more can be added.
## Example
Combining all of those together, here is how your `flake.nix` might look like, to deploy a GitHub Actions runner on Hetzner:
```nix
{
description = "My machines flakes";
inputs = {
srvos.url = "github:nix-community/srvos";
# Use the version of nixpkgs that has been tested to work with SrvOS
# Alternatively we also support the latest nixos release and unstable
nixpkgs.follows = "srvos/nixpkgs";
};
outputs = { self, nixpkgs, srvos }: {
nixosConfigurations.myHost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# This machine is a server
srvos.nixosModules.server
# Deployed on the AMD Hetzner hardware
srvos.nixosModules.hardware-hetzner-amd
# Configured with extra terminfos
srvos.nixosModules.mixins-terminfo
# And designed to run the GitHub Actions runners
srvos.nixosModules.roles-github-actions-runner
# Finally add your configuration here
./myHost.nix
];
};
};
}
```
## Continue
Now that we have gone over the high-level details, you should have an idea of how to use this project.
To dig further, take a look at the [User guide](../user_guide.md).

View File

@ -14,7 +14,10 @@ edit_uri: edit/main/docs
nav: nav:
- Home: index.md - Home: index.md
- Getting started: getting_started.md - Getting started:
- Intro: getting_started.md
- NixOS: nixos/getting_started.md
- Darwin: darwin/getting_started.md
- User guide: - User guide:
- Intro: user_guide.md - Intro: user_guide.md
- NixOS modules: - NixOS modules: