This is my personal configuration for home-manager.
First steps on nix
world, I'm currently just using home-manager
to install utilities I need day by day.
I'm using direnv
and nix develop
or devbox
to manage my development environments.
.
├── common # configurations and modules shared across all hosts
│ ├── cli-tools.nix # all tools and cli utilities I use
│ ├── common.nix # main entry point
│ ├── darwin.nix # darwin specific configuration (yabai, skhd, ...)
│ ├── docker.nix # docker pkgs and configurations
│ ├── git.nix # git pkgs and configurations
│ ├── kubernetes.nix # kubernetes pkgs and configurations
│ ├── python.nix # python pkgs and configurations
│ ├── sec-tools.nix # security tools pkgs and configurations
│ └── zsh.nix # zsh pkgs and configurations (oh-my-zsh, theme and such)
├── flake.nix # entrypoint
└── README.md
Dotfiles and secrets are sops-encryted and stored in a private repository.
- Install
nix
andhome-manager
(depends on target OS) - Clone this repository
- Run
nix develop
enter a development environment - Generate age key for this host
age-keygen -o ~/.config/sops/age/keys.txt
- Add the public key to sops config of the private repository and re-encrypt everything/prepare the secrets for this host
- Run
gh auth login
to authenticate with GitHub and create a private key for the host - Run
home-manager switch
to apply the configuration
nix flake update
home-manager build -L |& nom
# If there are no errors
home-manager switch -L |& nom