Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tiredofit/home
Home-Manager configuration ala Nix flakes
https://github.com/tiredofit/home
flakes home-manager nix
Last synced: 3 months ago
JSON representation
Home-Manager configuration ala Nix flakes
- Host: GitHub
- URL: https://github.com/tiredofit/home
- Owner: tiredofit
- Created: 2023-08-18T00:08:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-27T17:47:25.000Z (3 months ago)
- Last Synced: 2024-10-27T22:19:39.923Z (3 months ago)
- Topics: flakes, home-manager, nix
- Language: Nix
- Homepage: https://tiredofit.ca
- Size: 6.15 MB
- Stars: 28
- Watchers: 2
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🏠 $HOME 🏠
Here are my standalone [home-manager](https://nix-community.github.io/home-manager/) configuration files that are used on my NixOS systems and also other linux distribution systems.
This allows for home directory portability from machine to machine to configure once and enjoy a many times forward. If you are looking for NixOS _system_ configuration have a peek at my [NixOS Configurations](https://github.com/tiredofit/nixos-config).
If you would like to base your own configuration from this repository, you will need to be able to use [Nix flakes](https://nixos.wiki/wiki/Flakes).
**Highlights**:
- Flexible **roles** such as **workstation**, **server**, **kiosk**
- Deployment of secrets using **sops-nix**
- Highly configured desktop environments for **i3** **sway** and **hyprland**
- Some interesting **bash scripts** for automating common tasks.
- **Declarative** **themes** and **wallpapers** with **nix-colors**- I ~sort of~ totally spent the summer of 2023 moving into this configuration after waving a fond farewell to near 2 decades of running Arch Linux. This, as with life, is still WIP. I documented the process on the [Tired of IT! NixOS](https://notes.tiredofit.ca/books/linux/chapter/nixos) chapter on my website.
## Tree Structure
- `flake.nix`: Entrypoint for home configurations.
- `dotfiles`: Configuration files that are outside of the Home-Manager configuration (not migrated to nix)
- `home`: Home Manager Configurations, accessible via `home-manager switch --flake `.
- Split in between 'orgs' and common configuration this creates isolation. Based on 'roles' defaults are loaded
and then each subfolder creates a different level of configuration specific to that host or role.
- `common`: Shared configurations consumed by all users.
- `role`: Files related to what "role" is being selected as a template
- `secrets`: Secrets that are available to all users
- `generic`: The 'generic' org to allow for isolation of configurations, secrets and config from various clients
- `toi`: The 'toi' org to allow for isolation of configurations, secrets and config from various clients
- `secrets`: Secrets that are specific to the 'toi' org
- ``: Optional subfolder to load more configuration files based on the home-manager profiles name
- ``: Optional subfolder to load more configuration files based on the roles name
- ``: Load some specific user profile information
- `sd`: Similar to the above org, just another org for isolation
- `sr`: Similar to the above org, just another org for isolation
- `...`
- `modules`: Modules that are specific to this installation
- `applications`: Applications and configurations
- `cli`: Command line tools
- `gui`: Programs with a graphical interface
- `desktop`: Desktop environments
- `displayServer`: `x` or `wayland` configuration
- `utils`: Programs specific to desktop and window environments
- `agnostic` - runs great on whatever window manager
- `wayland` - wayland specific utilities to complement window managers
- `x` - x specific utilties to complement window managers
- `windowManager`: A variety of configurations depending on the type of window manager, or Desktop environment
- `feature` - Switchable features
- `service` - Daemons and services## Usage
I used nix flakes in a system that had a multi user installation of Nix. I documented it on my website here: [Tired of I.T! Home Manager Setup](https://notes.tiredofit.ca/books/linux/page/home-manager-setup). The quick steps were:
- Initialize Home Manager
```
nix --extra-experimental-features "nix-command flakes" run home-manager/master --init
```- Activate the Configuration
```
home-manager switch --flake .#${HOSTNAME}.${USERNAME} --extra-experimental-features 'nix-command flakes'
```### Keep it up to date
```
nix flake update .
```### Managing Secrets
I took some notes and documented the process of getting encrypted secrets created and keeping up to date on my website. [Tired of IT! Secrets Management](https://notes.tiredofit.ca/books/linux/page/secrets-management).
# License
Do you what you'd like and I hope that this inspires you for your own configurations as many others have myself.