3.3 KiB
3.3 KiB
NixOS & Home-Manager Configuration
My NixOS and Home-Manager config files. Based upon Misterio77's starter configs.
My other configs:
Alternatively jade provides the plumbing for a desktop environment like experience.
To be used as a simple home-manager import.
This repo is often neglected and doesn't necesarrily follow best practices.
I recommend only using this repo for inspiration and instead use this boilerplate
Structure
.
├── flake.lock # Pinned dependencies.
├── flake.nix # Entrypoint for hosts and home configurations.
├── nixpkgs.nix # A nixpkgs instance.
├── shell.nix # Shell for bootstrapping.
├── assets # Various assets.
├── config # Legacy configuration files.
├── home-manager # Home Manager configurations.
│ ├── user.nix # User configuration.
│ ├── programs # Program configurations.
│ └── services # Service configurations.
├── modules # Modules I haven't upstreamed yet.
│ ├── home-manager # Reuseable Home Manager modules.
│ └── nixos # Reuseable NixOS modules.
├── nixos # NixOS configurations.
│ └── hostname # Directory per host.
│ ├── configuration.nix # Server configuration.
│ └── hardware-configuration.nix # Generated hardware configuration.
├── overlays # Patches and version overides.
└── pkgs # Custom packages.
Installation
# Clone the configuration files and link them into the NixOS directory
git clone https://github.com/sajenim/dotfiles.nix.git
ln -s ~/dotfiles.nix/ /etc/nixos
# We must be in the repo to access the flake
cd /etc/nixos
# Apply the system configuration
sudo nixos-rebuild switch --flake .#hostname
# Apply the user configuration
home-manager switch --flake .#user@hostname
FAQ
- What is nix?
Nix is a tool that takes a unique approach to package management and system configuration. - Nix benefits
Nix is reproducible, declarative and reliable. - Why flakes?
Flakes allow you to specify your code's dependencies (e.g. remote Git repositories) in a declarative way, simply by listing them inside a flake.nix file.