Add NixOS integration documentation for updating cm-dashboard

Include step-by-step instructions for updating commit hash and
rebuilding NixOS configuration when new cm-dashboard code is available.
This commit is contained in:
Christoffer Martinsson 2025-10-13 12:20:36 +02:00
parent f786d054f2
commit 9b6a504e48

View File

@ -446,3 +446,92 @@ MIT License - see LICENSE file for details.
5. Open Pull Request 5. Open Pull Request
For bugs and feature requests, please use GitHub Issues. For bugs and feature requests, please use GitHub Issues.
## NixOS Integration
### Updating cm-dashboard in NixOS Configuration
When new code is pushed to the cm-dashboard repository, follow these steps to update the NixOS configuration:
#### 1. Get the Latest Commit Hash
```bash
# Get the latest commit from the API
curl -s "https://gitea.cmtec.se/api/v1/repos/cm/cm-dashboard/commits?sha=main&limit=1" | head -20
# Or use git
git log --oneline -1
```
#### 2. Update the NixOS Configuration
Edit `hosts/common/cm-dashboard.nix` and update the `rev` field:
```nix
src = pkgs.fetchFromGitea {
domain = "gitea.cmtec.se";
owner = "cm";
repo = "cm-dashboard";
rev = "f786d054f2ece80823f85e46933857af96e241b2"; # Update this
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # Reset temporarily
};
```
#### 3. Get the Correct Hash
Build with placeholder hash to get the actual hash:
```bash
nix-build --no-out-link -E 'with import <nixpkgs> {}; fetchFromGitea {
domain = "gitea.cmtec.se";
owner = "cm";
repo = "cm-dashboard";
rev = "YOUR_COMMIT_HASH";
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
}' 2>&1 | grep "got:"
```
#### 4. Update the Hash
Replace the placeholder with the correct hash:
```nix
hash = "sha256-vjy+j91iDCHUf0RE43anK4WZ+rKcyohP/3SykwZGof8="; # Use actual hash
```
#### 5. Update Cargo Dependencies (if needed)
If Cargo.lock has changed, you may need to update `cargoHash`:
```bash
# Build to get cargo hash error
nix-build --no-out-link --expr 'with import <nixpkgs> {}; rustPlatform.buildRustPackage rec {
pname = "cm-dashboard";
version = "0.1.0";
src = fetchFromGitea {
domain = "gitea.cmtec.se";
owner = "cm";
repo = "cm-dashboard";
rev = "YOUR_COMMIT_HASH";
hash = "YOUR_SOURCE_HASH";
};
cargoHash = "";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
buildAndTestSubdir = ".";
cargoBuildFlags = [ "--workspace" ];
}' 2>&1 | grep "got:"
```
Then update `cargoHash` in the configuration.
#### 6. Commit the Changes
```bash
git add hosts/common/cm-dashboard.nix
git commit -m "Update cm-dashboard to latest version"
git push
```
### Example Update Process
```bash
# 1. Get latest commit
LATEST_COMMIT=$(curl -s "https://gitea.cmtec.se/api/v1/repos/cm/cm-dashboard/commits?sha=main&limit=1" | grep '"sha"' | head -1 | cut -d'"' -f4)
# 2. Get source hash
SOURCE_HASH=$(nix-build --no-out-link -E "with import <nixpkgs> {}; fetchFromGitea { domain = \"gitea.cmtec.se\"; owner = \"cm\"; repo = \"cm-dashboard\"; rev = \"$LATEST_COMMIT\"; hash = \"sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"; }" 2>&1 | grep "got:" | cut -d' ' -f12)
# 3. Update configuration and commit
echo "Latest commit: $LATEST_COMMIT"
echo "Source hash: $SOURCE_HASH"
```