nanuqsaurus/docs/adopt.md

76 lines
2.7 KiB
Markdown
Raw Normal View History

# Adopt Nanuqsaurus on an existing NixOS install (no repartitioning)
This repo intentionally does **not** ship a “one size fits all” `nixosConfiguration` for installed systems.
Disk layouts, filesystems, initrd modules, and bootloader details are machine-specific and live in your
local `hardware-configuration.nix`.
The recommended workflow is to create a **small local wrapper flake** that:
- keeps your machines `hardware-configuration.nix` as the source of truth for mounts/boot,
- imports `nanuqsaurus` as a feature/profile module from its URL,
- keeps your personal changes in your own repo (or `/etc/nixos`).
## 1) Create a wrapper flake in `/etc/nixos`
On the target machine:
1. Ensure you have a `hardware-configuration.nix` (generated by `nixos-generate-config`).
2. Create `/etc/nixos/flake.nix` like this (adjust `hostName` and `stateVersion`):
```nix
{
description = "Local wrapper for the nanuqsaurus profile";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nanuqsaurus = {
url = "git+https://codeberg.org/randogoth/nanuqsaurus.git";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware = {
url = "github:NixOS/nixos-hardware";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ nixpkgs, nanuqsaurus, nixos-hardware, ... }: {
nixosConfigurations.nanuqsaurus = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
# Optional: only needed if your local modules require access to flake inputs.
specialArgs = { inherit inputs; };
modules = [
./hardware-configuration.nix
# Optional: pick the right hardware module for your machine.
# Find your model at https://github.com/NixOS/nixos-hardware or use one of these generic profiles:
#nixos-hardware.nixosModules.common-cpu-intel
#nixos-hardware.nixosModules.common-cpu-amd
#nixos-hardware.nixosModules.common-gpu-intel
#nixos-hardware.nixosModules.common-gpu-amd
#nixos-hardware.nixosModules.common-gpu-nvidia
nanuqsaurus.nixosModules.nanuqsaurus
{
# Optional: change the default admin username ("admin")
nanuqsaurus.admin.username = "admin";
networking.hostName = "nanuqsaurus";
system.stateVersion = "25.11";
}
];
};
};
}
```
## 2) Switch to it
```bash
sudo nixos-rebuild switch --flake /etc/nixos#nanuqsaurus
```
## Updating later
- If you keep `nanuqsaurus.url` pointing at the repo, you can update with:
- `nix flake update` (in `/etc/nixos`), then
- `sudo nixos-rebuild switch --flake /etc/nixos#nanuqsaurus`
- Keep all your machine-specific changes in the wrapper flake (additional modules, packages, services, etc.).