2024-10-15 00:40:21 -04:00
# nixcfg
2024-07-18 22:19:18 -04:00
2024-12-06 17:49:33 -05:00
My comprehensive NixOS flake for managing my laptop, desktop, and home lab environments.
2024-07-18 22:19:18 -04:00
2024-12-06 18:06:09 -05:00
NOTE: Some hosts and configuration options have migrated to [alyraffauf/bazznix ](https://github.com/alyraffauf/bazznix ), my project to create a [bazzite-like ](https://bazzite.gg ) experience on NixOS.
2024-12-13 08:49:28 -05:00
![](./_img/catppuccin.png)
2024-07-21 23:33:53 -04:00
2024-07-18 22:19:18 -04:00
## Features
2024-07-20 19:41:51 -04:00
2024-07-21 23:33:53 -04:00
- **Hyprland:** Dynamic tiling Wayland compositor and window manager.
2024-08-15 20:46:05 -04:00
- **Stylix:** Auto-gnerated base16 themes for the whole desktop.
2024-08-24 15:25:41 -04:00
- **Encryption:** Encrypted boot drives with Secure Boot and LUKS with TPM decryption.
2024-10-15 00:40:21 -04:00
- **Home Lab:** Media, file sharing, and more, split between two PCs with efficient routing via reverse proxy.
2024-07-08 11:50:50 -04:00
## Inputs
2024-07-20 19:41:51 -04:00
2024-08-29 21:35:30 -04:00
This flake takes a variety of upstream and third party flakes as inputs:
2024-07-20 19:41:51 -04:00
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.
2024-08-29 22:48:38 -04:00
- [lanzaboote ](https://github.com/nix-community/lanzaboote ): secure boot for NixOS.
2024-07-08 11:50:50 -04:00
- [nur ](https://github.com/nix-community/NUR ): extra packages from the nix user repository.
2024-10-15 00:40:21 -04:00
- [stylix ](https://github.com/danth/stylix ): system-wide color schemes and typography.
2024-07-08 11:50:50 -04:00
## Outputs
2024-08-22 12:12:05 -04:00
- homeManagerModules.aly: my home-manager config.
2024-10-19 15:09:06 -04:00
- homeManagerModules.default: app modules + everything you need for a competent Hyprland desktop (and a few others).
2024-08-22 12:12:05 -04:00
- homeManagerModules.dustin: my husband's home-manager config.
- nixosModules.common: various common modules specific to my hosts.
2024-08-22 11:57:12 -04:00
- nixosModules.nixos: opinionated desktop, app, and service options.
- nixosModules.users: basic user configuration options.
2024-10-19 15:09:06 -04:00
- overlays.default: adds every package output to nixpkgs.
- overlays.tablet: tablet optimizations, mainly for electron apps.
2024-07-08 11:50:50 -04:00
2024-10-16 19:59:28 -04:00
In addition, this flake outputs NixOS configurations, home-manager configurations, and various hardware modules for all of my hosts and users.
2024-03-04 23:13:18 -05:00
## Deploying to NixOS
2024-07-20 19:41:51 -04:00
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
2024-07-20 19:41:51 -04:00
2024-07-13 09:20:12 -04:00
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-07-20 19:41:51 -04:00
2024-03-04 23:13:18 -05:00
```nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
```
2024-06-10 09:44:26 -04:00
Alternatively, pass `--experimental-features "nix-command flakes"` to `nix` to temporarily use flakes.
2024-03-04 23:13:18 -05:00
### Building Flake
2024-07-20 19:41:51 -04:00
2024-03-04 23:42:20 -05:00
In order to deploy this Flake on your host, run the following command:
2024-07-20 19:41:51 -04:00
2024-04-27 20:11:14 -04:00
```console
2024-06-10 09:44:26 -04:00
sudo nixos-rebuild boot --flake github:alyraffauf/nixcfg#$HOSTNAME
2024-03-04 23:42:20 -05:00
```
2024-07-20 19:41:51 -04:00
2024-06-10 09:44:26 -04: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-20 19:41:51 -04:00
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-07-20 19:41:51 -04:00
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
```