⚙️Nix[OS] Configuration
This repository contains configuration for all my unix systems (NixOS, Linux and MacOS) written in nix
.
This repository also contains my dotfiles which are used on all the systems liked above as well as windows. On systems
that support nix
my dotfiles are managed by home-manager.
bin/
- Contains scripts that will be added to the $PATH
variable
windows/
- Scripts that are user to setup my windows machinesconfig/
- Contains .dotfiles
for various applications. You can think of this as my $HOME
directoryhome/
- Configuration for my user. This is where home-manager configurations lives
hosts/
- The definition of a home user. If same name as a nixos/hosts
will be used by itmodules/
- A defined set of home modules that can be enabled in a home/host
profiles/
- A collection of module configurations grouped together to be used by a home/host
secrets/
- A folder of secrets used by the userlib/
- List of helper functionsnix/
- Nix package manager configurations
isos
- Nix configuration that builds iso
as outputoverlays/
- Nix overlayspkgs/
- Self packaged applicationssystem
- Machine configuration for both nixos
and macos
common
- Configuration that is common between nixos
and macos
modules
- Common modules between the two operating systemsprofiles
- Common profiles between the two operating systemsdarwin
- MacOS machine configuration
hosts/
- The definition of a MacOS machinemodules/
- MacOS modulesprofiles/
- A collection of module configurationssecrets/
- Secrets used for a machine hostnixos
- Nixos machine configuration
hosts/
- The definition of a nixos machinemodules/
- Nixos modulesprofiles/
- A collection of module configurationssecrets/
- Secrets used for a machine hostuser
- Configuration values linked to a specific userMy .dotfiles
can be found under config/
. On systems managed by nix and this flake repository
they are managed by home-manager
. I home-manager
to use the config/
folder as the source for
my configurations. This helps when I am on a machine that is not managed by nix (cough windows
cough). On these machines I symlink the files in the config/
folder into their respective
locations. Some configurations of note:
Configuration | Type | Description |
---|---|---|
sloth | System | An old lenovo T530 Laptop |
eden | Home | Generic home config for non nixos machines (wsl) |
pride | System | Asus UX331U notebook laptop |
I have github action workflows setup to continuously build my configurations and deploy the results to a binary cache server (cachix). Every week I have a workflow that creates a pull request with an updated flake lock file. The pr action will diff the changing packages between the current and updated lockfile changes. It will then also run a security issues with vulnix. A report is generated in the pr and I can accept the changes.
I agree with @hlissner. This is needed when nix drives you to drink.