Daniel Siepmann
08bc0ee761
I now already have nix shells as well as compose.yaml files for projects. Those were split and are now migrated into a common folder. That should keep main directory clean and self document that those files relate to projects, not home manager or systems.
159 lines
4.5 KiB
ReStructuredText
159 lines
4.5 KiB
ReStructuredText
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
|
|
----------------
|
|
|
|
`assets/`
|
|
contains assets used within nix.
|
|
E.g. images used for search engines configured for Firefox.
|
|
|
|
`gpg/`
|
|
contains everything related to gpg, like public keys.
|
|
|
|
`home/`
|
|
is related to extras for home-manager.
|
|
|
|
`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.
|
|
|
|
`projects/`
|
|
Holds shells and compose.yaml files 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 systems.
|
|
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
|
|
-----
|
|
|
|
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:
|
|
|
|
* http://www.krusader.org
|
|
|
|
* https://ignorantguru.github.io/spacefm/
|
|
|
|
* https://www.mucommander.com/
|
|
|
|
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
|