hosts | ||
modules | ||
overlays | ||
variables | ||
.gitattributes | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
local.key.asc | ||
preview.png | ||
README.md |
My Nix files, now organized in a flake.
Thanks for taking a look at my Nix* configs! While this is primarily organized for my use only, you may find each individual service file or user config to be a good starting point, or something to take and adapt into your own config.
Installation
Installing my flake has to be done from an existing system. A minimal install is fastest, but is up to you. After installing NixOS, backup your hardware-config.nix file, so you can adapt it to fit the format of /hosts
, adjusting other referenced files in the flake.nix file to reference your specific system.
An initial install will can be done with nixos-rebuild switch --flake /etc/nixos/.#host
, where host
is a hostname defined in your flake. You may also have to enable "experimental" features with a flag, such as nix-command and flakes.
Home-Manager is handled separately, despite being in the same folder. A rebuild of a user's home is done with home-manager switch --flake /etc/nixos
. This will pull the config as defined in the flake as user@host
, where user
is the user running the home-manager
command.
Usage
My config uses these tools:
Sway
- Window manager / Desktop
ZSH
- Primary shell
Foot
- Terminal emulator
Rofi
- App launcher and menu system
I have made shell aliases in ZSH for rebuilding the system. They are as follows:
flakedate
- Update the flake.lock, which renews the sources of nixpkgs. This is needed to update the system.
sysswitch
- Switch the system profile.
homeswitch
= Switch the user's home-manager profile.
nixswitch
= Switch to new config for both user and system.
nixdate
= Same as before, but updating flake.nix before doing so. This is essentially a full system update.
My config heavily references a gnupg-protected secrets file. These will have to be adapted and rewritten if anyone is to use my config directly.
For my use, unlocking secrets can be done with this command:
gpg --pinentry-mode loopback --decrypt local.key.asc | git-crypt unlock -
Credits
Without the help of heavy inspiration, I would not have been able to learn and get up and running nearly as quickly. My most heavily borrowed configs are as follows:
CloudyChris' nix-starter-configs fork, the very initial base of my conversion to flakes.
WillPower3309's personal flake for being a pleasure in the SwayFX Discord and having a really nice flake.nix file I borrowed from.
Jules Sommer's minimal flake for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process.
Made with love ❤️