Files
TheaninovOS/README.md
2025-11-20 11:06:28 +01:00

118 lines
2.4 KiB
Markdown

# TheaninovOS
A NixOS based OS you can configure.
Rebuild the configuration
```sh
home-manager switch --flake ~/.config/home-manager
```
**Make sure new files are added to git**
## Initial Setup on a new machine
Enable flakes
`configuration.nix`
```nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
```
```sh
sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs
git clone git@github.com:Theaninova/home-manager-config.git ~/.config/home-manager
cd ~/.config/home-manager
sudo nixos-rebuild switch --flake .#MONSTER
```
After that reload the shell
## Updating the system
```sh
# in your config folder
nix flake update
sudo nixos-rebuild switch --flake .#
```
## Cleaning your system
### Cachix is down
By default nix will just crash if cachix is down even if you don't have to fetch anything from it.
Use `--option build-use-substitutes false` to temporarily disable it.
```sh
sudo nixos-rebuild switch --option build-use-substitutes false --flake .#
```
### Find (accidental) folders holding your gc back
```sh
sudo nix-store --gc --print-roots | grep /home
```
### Remove old generations
```sh
sudo nix-collect-garbage -d
```
### Cleanup store
```sh
nix-store --gc
```
## Usage in your NixOS config
`flake.nix`
```nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
theaninovos = {
url = "github:Theaninova/TheaninovOS";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, theaninovos, ... }@inputs:
let
inherit (nixpkgs.lib) genAttrs listToAttrs;
eachSystem = genAttrs [ "x86_64-linux" ];
legacyPackages = eachSystem (system:
import nixpkgs {
inherit system;
config = {
allowUnfree = true;
allowUnsupportedSystem = true;
experimental-features = "nix-command flakes";
};
});
mkHost = { hostname, username, system }:
nixpkgs.lib.nixosSystem {
pkgs = legacyPackages.${system};
modules = [
theaninovos.nixosModules.theaninovos
# ... your stuff
];
specialArgs = inputs;
};
in {
nixosConfigurations.MONSTER = mkHost {
hostname = "MONSTER";
username = "theaninova";
system = "x86_64-linux";
};
};
}
```