mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-11 02:56:27 +00:00
118 lines
2.4 KiB
Markdown
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";
|
|
};
|
|
};
|
|
}
|
|
```
|