dotfiles.nix/README.md
2023-05-07 23:31:22 +08:00

72 lines
3.3 KiB
Markdown

# NixOS & Home-Manager Configuration
![nixos-logo](assets/nixos-official-logo.png)
My [NixOS](https://nixos.org/) and [Home-Manager](https://github.com/nix-community/home-manager) config files.
Based upon [Misterio77's starter configs](https://github.com/Misterio77/nix-starter-configs).
My other configs:
* [neovim](https://github.com/sajenim/neovim-jsm)
* [xmonad](https://github.com/sajenim/xmonad-jsm)
Alternatively [jade](https://github.com/sajenim/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](https://github.com/Misterio77/nix-starter-configs/tree/main/standard)
## 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.
## Credit
### Boilerplate
* [Misterio77/nix-starter-configs](https://github.com/Misterio77/nix-starter-configs)
### Other Configs
* [fortuneteller2k/nix-config](https://github.com/fortuneteller2k/nix-config)
* [javacafe01/dotnix](https://github.com/javacafe01/dotnix)