||4 months ago|
|common||4 months ago|
|external||10 months ago|
|files||1 year ago|
|hosts||4 months ago|
|ops/home||4 months ago|
|.gitignore||1 year ago|
|.gitmodules||10 months ago|
|.ignore||1 year ago|
|README.md||4 months ago|
The evolution of
nora/dotfiles; Nix configs under
home-manager deployed with
On the depoyment host, I use nix channels, and set:
$ nix-channel --list nixos https://nixos.org/channels/nixos-22.05 $ echo $NIX_PATH nixpkgs=nix/var/nix/profiles/per-user/nora/channels/nixos/
These files are "organized" as follows:
common/is the directory where most of the configuration happens. These are the files used in more than one host configuration, now or later.
home_manager/includes all common
fragments/contains package and configuration sets for specific use cases For example,
home_manager/rust.nixincludes packages and options related to Rust development.
common.nixcontains all configurations common across all
home-managerdeployments. For example, GPG agent configurations and Vim settings.
users/contains basic user definitions.
default.nixis the core file defining the default nix configuration for all machines.
common.nixcontains all the common NixOS definitions that all machines will need.
fragments/contains small functions for configuring particular services or system aspects, like Syncthing
files/contains files used by
home-managerto deploy anything not covered by existing
hosts/defines host-specific configurations for NixOS and
felonyspork/is the bastion/external server (Lenovo Tiny)
configuration.nixis the core NixOS configuration file, copied from the installed system
hardware-configuration.nixis the hardware config, imported in
home-managerconfig specifically for
ops/contains all the information needed to deploy using
The import structure goes as follows:
ops/<network>/network.nixfile defining the hosts in a network imports
common/default.nixfor all-machine defaults, which imports
common/common.nixfor common setup, including fonts, nixpkgs setup, and locale, which imports
common/users/*which sets up usernames, shells, SSH keys, and groups for users.
- the host's
hosts/<host>/configuration.nixfile, which configures NixOS on the host and imports
common/fragments/<fragment>.nixfiles, for specific services or use cases.
- the hosts's
hosts/<host>/hardware-configuration.nixfile, which configures partitions and drivers.
- the host's
hosts/<host>/home.nixfile, which configures
home-managerfor that host, by importing
common/home_manager/common.nix, which configures
home-managerfor all machines
common/home_manager/fragments/<fragment>.nix, which configures a specific use case, like graphical programs or Rust development.
Currently, the primary dependencies are:
- DNS that sets the crimespoon and felonyspork names
- Mullvad VPN config on crimespoon, allowing LAN connections
To push to only a single machine, use
ops/home/push --on <machine>.