You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
9 months ago | |
---|---|---|
common | 9 months ago | |
files | 2 years ago | |
hosts | 9 months ago | |
ops/home | 9 months ago | |
.gitignore | 2 years ago | |
.gitmodules | 2 years ago | |
.ignore | 2 years ago | |
README.md | 9 months ago |
README.md
Nora's Configs
The evolution of nora/dotfiles
; Nix configs under home-manager
deployed with morph
.
Deployment Host
On the depoyment host, I use nix channels, and set:
$ nix-channel --list
home-manager https://github.com/nix-community/home-manager/archive/release-22.11.tar.gz
nixpkgs https://nixos.org/channels/nixos-22.11
Layout
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 commonhome-manager
configs.fragments/
contains package and configuration sets for specific use cases For example,home_manager/rust.nix
includes packages and options related to Rust development.common.nix
contains all configurations common across allhome-manager
deployments. For example, GPG agent configurations and Vim settings.
users/
contains basic user definitions.default.nix
is the core file defining the default nix configuration for all machines.common.nix
contains 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 byhome-manager
to deploy anything not covered by existinghome-manager
options.hosts/
defines host-specific configurations for NixOS andhome-manager
.felonyspork/
is the bastion/external server (Lenovo Tiny)configuration.nix
is the core NixOS configuration file, copied from the installed systemhardware-configuration.nix
is the hardware config, imported inconfiguration.nix
.home.nix
is thehome-manager
config specifically forfelonyspork
.
ops/
contains all the information needed to deploy usingmorph
.
The import structure goes as follows:
- The
ops/<network>/network.nix
file defining the hosts in a network importscommon/default.nix
for all-machine defaults, which importscommon/common.nix
for common setup, including fonts, nixpkgs setup, and locale, which importscommon/users/*
which sets up usernames, shells, SSH keys, and groups for users.
- the host's
hosts/<host>/configuration.nix
file, which configures NixOS on the host and imports- appropriate
common/fragments/<fragment>.nix
files, for specific services or use cases. - the hosts's
hosts/<host>/hardware-configuration.nix
file, which configures partitions and drivers.
- appropriate
- the host's
hosts/<host>/home.nix
file, which configureshome-manager
for that host, by importingcommon/home_manager/common.nix
, which configureshome-manager
for all machines- various
common/home_manager/fragments/<fragment>.nix
, which configures a specific use case, like graphical programs or Rust development.
Unconfigured
Currently, the primary dependencies are:
- DNS that sets the crimespoon and felonyspork names
- Mullvad VPN config on crimespoon, allowing LAN connections
Deployment
Simply run push
:
$ ops/home/push
To push to only a single machine, use ops/home/push --on <machine>
.