nixcfg/README.md

73 lines
3.3 KiB
Markdown
Raw Normal View History

2024-07-21 23:33:53 -04:00
# nixos
2024-07-18 22:19:18 -04:00
## Overview
2024-07-18 22:19:18 -04:00
My comprehensive NixOS flake for managing my laptop, desktop, and home lab environments.
2024-07-21 23:33:53 -04:00
![](./_img/hyprland.png)
2024-07-18 22:19:18 -04:00
## Features
2024-07-21 23:33:53 -04:00
- **Hyprland:** Dynamic tiling Wayland compositor and window manager.
2024-07-18 22:19:18 -04:00
- **Home Lab Services:** Media, file sharing, and more.
- **Reverse Proxy:** Efficient traffic routing for my home lab services.
- **Modular Configuration:** Reasonably adaptable for different hardware and use cases.
2024-07-08 11:50:50 -04:00
## Inputs
2024-07-08 11:50:50 -04:00
This flake takes a variety of inputs, first and foremost my other flakes:
2024-07-10 20:29:53 -04:00
- [nixhw](https://github.com/alyraffauf/nixhw): opinionated set of generic (AMD, Intel, Laptop, SSD) and specific (Framework 13, Yoga 9i, Thinkpad T440p) hardware configuration modules for NixOS.
2024-07-08 11:50:50 -04:00
- [raffauflabs](https://github.com/alyraffauf/raffauflabs): everything (containers, services, nginx, etc) that makes my [home lab](https://raffauflabs.com) a home lab.
As well as upstream third-party projects that I use for various tasks:
2024-07-08 11:50:50 -04:00
- [agenix](https://github.com/ryantm/agenix): secrets storage and orchestration.
- [disko](https://github.com/nix-community/disko): declarative partitions and disk configuration.
- [home-manager](https://github.com/nix-community/home-manager): declarative dotfile and user package management.
- [hyprland](https://github.com/hyprwm/Hyprland): great dynamic tiling wayland compositor.
- [iio-hyprland](https://github.com/JeanSchoeller/iio-hyprland): autorotate daemon for Hyprland.
- [nixvim](https://github.com/nix-community/nixvim): helpful neovim modules.
- [nur](https://github.com/nix-community/NUR): extra packages from the nix user repository.
## Outputs
- homeManagerModules.default: app modules + everything you need for a competent Hyprland desktop (and a few others).
- nixosModules.base: opinionated basic system configuration.
- nixosModules.nixos: opinionated desktop, app, and service modules.
2024-07-18 22:19:18 -04:00
- nixosModules.users: basic user configuration..
2024-07-08 11:50:50 -04:00
2024-07-18 22:19:18 -04:00
In addition, this flake outputs NixOS configuration and home-manager configurations for all of my hosts and users, respectively.
2024-03-04 23:13:18 -05:00
## Deploying to NixOS
2024-07-18 22:19:18 -04:00
Each hardware configuration is host-specific. If you fork this repository, add a host configuration for your own hardware. Secrets are encrypted with [agenix](https://github.com/ryantm/agenix) and will not be available without the private decryption keys.
2024-03-04 23:13:18 -05:00
### Enabling Flakes
While widely used and considered stable, [flakes](https://wiki.nixos.org/wiki/Flakes) are still considered experimental. To enable Flakes, add the following lines to your `configuration.nix` and rebuild.
2024-03-04 23:13:18 -05:00
```nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
```
Alternatively, pass `--experimental-features "nix-command flakes"` to `nix` to temporarily use flakes.
2024-03-04 23:13:18 -05:00
### Building Flake
2024-03-04 23:42:20 -05:00
In order to deploy this Flake on your host, run the following command:
2024-04-27 20:11:14 -04:00
```console
sudo nixos-rebuild boot --flake github:alyraffauf/nixcfg#$HOSTNAME
2024-03-04 23:42:20 -05:00
```
Substitute `$HOSTNAME` for whichever hostname you have chosen. Reboot to apply the flake's configuration for the chosen host.
2024-04-27 20:11:14 -04:00
### Installing from Live USB
2024-07-17 11:08:02 -04:00
If you want to install NixOS from this flake, run the following commands, ideally from a NixOS live environment, providing the hostname associated with a NixOS configuration specified in `flake.nix` when prompted.
2024-04-27 20:11:14 -04:00
```console
2024-07-17 11:07:29 -04:00
sudo nix --experimental-features "nix-command flakes" run github:alyraffauf/nixcfg
2024-07-18 22:19:18 -04:00
```