All missing tools are already within readme, no need for general todo anymore.
4 KiB
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
Table of Contents
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.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. Those files can be added via
xdg.configFile
.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/programs
Holds home-manager programs. entries. Each file corresponds to a single program. Each file is loaded within
home.nix
.home/services
Holds home-manager services. entries. Each file corresponds to a single service. Each file is loaded within
home.nix
.
Update
The following will update the whole system and clean things up:
nix-channel --update \
&& home-manager switch \
&& home-manager expire-generations '-30 days' \
&& nix-env --delete-generations +5 \
&& nix-store --gc
This will update the channel (fetch state of nixpkgs). It then will update system. Delete old generations. And run garbage collection.
Manual changes
List of manual needed changes for various reasons.
.desktop files seem not to be supported by home-manager yet. They need to manually be linked, e.g.:
cd ~/.local/share/applications && ln -s ~/.nix-profile/share/applications/* .
Todos
No particular order:
Migrate neovim
Migrate ssh config (I don't really like to expose customer server names and configs to outer world, how to handle?)
Migrate PGP?
- Right now I've instaled gnupg2, gnupg, gpg on ubuntu
Migrate firefox (with geckodriver), thunderbird, ungoogled chromium
Migrate other system configurations like keyboard?!
Migrate desktop environment (is that possible? I select it within ubuntu login screen, guess it needs to be installed or registered somwhere in ubuntu) i3-wm, i3, i3lock-color
Begin migrating local development to execute nodejs, yarn, php, etc. On a per customer project. Use flakes? Most are more or less the same, maybe provide a general flake inside this repo which can be used by projects? Also include psysh
Begin migrating further configuration, e.g. php fpm pools and apache config (Again I don't like customer internals in public repo, how to handle?) Does that work? I guess nix (home-manager) shouldn't write outside of user home. Maybe within vm as preparation of switch to nix os?
Maybe PR upstream:
./home/modules/programs/languagetool.nix
.
Ideas
- Maybe I can have a private channel which provides more sensitive info like customer related things and is referenced from here? I then can make that repo private but keep this one here public?
Resources
Some resources I found useful (in no particular order):