Remove sync to own calendars. Always fetch from original source to local. |
3 days ago | |
---|---|---|
.git-crypt | 1 year ago | |
assets | 1 week ago | |
gpg/publickeys | 1 year ago | |
home | 3 days ago | |
overlays | 1 month ago | |
shells | 4 weeks ago | |
systems/hikari | 4 weeks ago | |
.gitattributes | 1 month ago | |
.gitignore | 1 year ago | |
config.nix | 2 weeks ago | |
home.nix | 1 week ago | |
readme.rst | 2 months ago |
readme.rst
nixpkgs / nix home-manager
I currently use Ubuntu and installed nix alongside. This repository contains my personal ~/.config/nixpkgs folder, for sharing, inspiration and retrieving feedback.
This includes home.nix to maintain home-manager, see: https://nix-community.github.io/home-manager/index.html
Disclaimer
This is my personal setup for my local laptop running Ubuntu. I share this for free so everyone can have a look and inspiration or provide feedback to me.
This is not intended to be used by anyone else just by copy and pasting or cloning.
Installation
Install (clone) into ~/.config/nixpkgs.
Create ~/.config/home-manager and create a symlink from ~/.config/nixpkgs/home.nix to ~/.config/home-manager/home.nix.
Install home-manager see: https://nix-community.github.io/home-manager/index.html Execute home-manager switch
Folder structure
The folder overlays contains overlays for nix itself. E.g. alter packages like patching.
The folder home is related to extras for home-manager. It has the following sub folder:
- home/files
Holds configuration files. home-manager doesn't provide modules for all programs.
- home/modules
Holds nix modules. Not all programs provide modules out of the box. I add my own here, which I might create PRs for in future.
- home/packages
Holds custom nix packages. Not all programs are available. Foreign programs are added here. Custom programs / scripts are added within subfolder custom.
- home/programs
Holds home-manager programs. entries. Each file corresponds to a single program.
- home/services
Holds home-manager services. entries. Each file corresponds to a single service.
- home/*.nix
Holds files for most home.* modules. I don't like to clutter a single file with to many entries. Instead home.nix loads files from within here. Each file name should correspond to the home sub option / module.
- overlays
Holds overlays for existing packages. E.g. in order to patch them.
- shells/
Holds shells for customer projects. The customers are not aware of Nix and I don't want to stress them. I use this folder to have them in version control and symlink them into the project.
- systems/
Holds nix os configuration for different system.s Each system has its own subfolder.
Update
Update can be done via custom-update-system package which is a custom package.
Manual changes
List of manual needed changes for various reasons.
Use xdm as display manager, or: Allow gdm3 to use xsessions as login. Add the following content as `/usr/share/xsessions/xsession.desktop`:
[Desktop Entry] Name=XSession Comment=This session uses the custom xsession file Exec=/etc/X11/Xsession Type=Application X-DesktopNames=GNOME-Flashback;GNOME; X-Ubuntu-Gettext-Domain=gnome-flashback
This is used by gdm3 (installed via ubuntu host) to allow logging in via xsession which will pick up all the settings generated by home-manager.
Do not forget to call sudo desktop-file-install xsession.desktop to make system aware of the file.
Todos
Migration:
- Migrate home manager to use flake for better rollback support if update breaks something.
Additions:
Check https://github.com/nix-community/home-manager/blob/bb4b25b302dbf0f527f190461b080b5262871756/modules/files.nix#L64 to symlink files instead of re compiling setup everytime? Also see: https://www.foodogsquared.one/posts/2023-03-24-managing-mutable-files-in-nixos/
https://github.com/altdesktop/playerctl#selecting-the-most-recent-player in order to not worry about current media player, control whatever was last
https://github.com/darrenburns/dunk diff alternative
Integrate https://github.com/Wilfred/difftastic for diffing source code https://github.com/nix-community/home-manager/pull/2850
Alternative file managers:
Resources
Some resources I found useful (in no particular order):
- https://www.youtube.com/playlist?list=PLRGI9KQ3_HP_OFRG6R-p4iFgMSK1t5BHs
- https://nixos.org/learn.html
- https://nix-community.github.io/home-manager/index.html
- https://nixos.wiki/
- https://nixcloud.io/main/en/
- https://teu5us.github.io/nix-lib.html
- https://ryantm.github.io/nixpkgs/
- https://www.tweag.io/blog/2020-05-25-flakes/
- https://github.com/NixOS/nix-book