Daniel Siepmann
b9c9d8f934
Those tools are expected to be globally available. Defining runtime input will not expose system wide versions but link specific versions. Updating the packages will not update within the environment as custom project starts a tmux session with the inherited runtime inputs. |
||
---|---|---|
.git-crypt | ||
assets | ||
gpg/publickeys | ||
home | ||
overlays | ||
shells | ||
systems/hikari | ||
.gitattributes | ||
.gitignore | ||
home.nix | ||
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.
Install home-manager see: https://nix-community.github.io/home-manager/index.html Execute home-manager switch
Usage
Add packages to home/packages.nix and run 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.
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
MacBook:
- Provide script to update system
Migration:
- Check vpnc which is currently installed via ubuntu.
- Install i3lock (Right now installed via ubuntu)
- Migrate home manager to use flake for better rollback support if update breaks something.
- Maybe create upstream PRs for
- home/modules/programs/*.nix
Additions:
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