2022-02-02 17:42:39 +01:00
nixpkgs / nix home-manager
==========================
2022-02-01 17:11:13 +01:00
2022-02-01 18:31:35 +01:00
I currently use Ubuntu and installed nix alongside.
This repository contains my personal `` ~/.config/nixpkgs `` folder,
for sharing, inspiration and retrieving feedback.
2022-02-01 17:11:13 +01:00
2022-02-02 17:21:27 +01:00
This includes `` home.nix `` to maintain `` home-manager `` ,
see: https://nix-community.github.io/home-manager/index.html
2022-02-01 17:11:13 +01:00
.. contents :: Table of Contents
2022-02-01 18:31:35 +01:00
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.
2022-02-01 17:11:13 +01:00
Installation
------------
Install (clone) into `` ~/.config/nixpkgs `` .
2022-02-02 17:21:27 +01:00
Install `` home-manager `` see: https://nix-community.github.io/home-manager/index.html
Execute `` home-manager switch ``
2022-02-01 17:11:13 +01:00
Usage
-----
2022-02-02 17:21:27 +01:00
Add packages to `` home.nix `` and run `` home-manager switch `` .
2022-02-01 17:14:21 +01:00
2022-02-02 18:17:06 +01:00
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:
2022-02-03 09:10:38 +01:00
`` home/files ``
Holds configuration files.
home-manager doesn't provide modules for all programs.
Those files can be loaded via `` biuiltins.readFile ``
or linked via `` home.file. `` .
`` home/programs ``
Holds home-manager `programs.` entries.
Each file corresponds to a single program.
2022-02-02 18:17:06 +01:00
Each file is loaded within `` home.nix `` .
`` home/services ``
2022-02-03 09:10:38 +01:00
Holds home-manager `services.` entries.
Each file corresponds to a single service.
Each file is loaded within `` home.nix `` .
`` home/systemd ``
2022-02-02 18:17:06 +01:00
Holds custom definitions for systemd services.
Each file corresponds to a single service.
Each file is loaded within `` home.nix `` .
2022-02-01 17:11:13 +01:00
Update
------
The following will update the whole system and clean things up::
2022-02-02 17:40:23 +01:00
nix-channel --update \
&& home-manager switch \
&& home-manager expire-generations '-30 days' \
2022-02-03 09:46:30 +01:00
&& nix-env --delete-generations +5 \
2022-02-02 17:40:23 +01:00
&& nix-store --gc
2022-02-01 17:11:13 +01:00
This will update the channel (fetch state of nixpkgs).
2022-02-02 17:40:23 +01:00
It then will update system.
Delete old generations.
2022-02-01 17:11:13 +01:00
And run garbage collection.
2022-02-02 20:27:47 +01:00
2022-02-03 09:46:08 +01:00
Manual changes
--------------
List of manual needed changes for various reasons.
2022-02-07 08:03:43 +01:00
* .desktop files seem not to be supported by home-manager yet.
They need to manually be linked, e.g.::
2022-02-03 09:46:08 +01:00
2022-02-07 08:03:43 +01:00
cd ~/.local/share/applications && ln -s ~/.nix-profile/share/applications/* .
2022-02-03 14:34:32 +01:00
2022-02-02 22:35:28 +01:00
Todos
-----
No particular order:
* Migrate other local configurations (inspect `` ~/.config `` folder)
All other dotfiles in home dir are already migrated :yay:
2022-02-03 13:05:06 +01:00
* Migrate mailhog (manually installed right now)
2022-02-02 22:35:28 +01:00
* Migrate zsh
* Migrate ssh config (I don't really like to expose customer server names and configs to outer world, how to handle?)
* Migrate PGP?
* Migrate other tools from local system (which are not part of above migrations)
* Migrate other systemd services.
* 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)
2022-02-07 09:20:28 +01:00
* 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?
2022-02-02 22:35:28 +01:00
* 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?)
2022-02-03 08:18:23 +01:00
* Switch to stable channels
2022-02-07 08:22:30 +01:00
* Fix broken lock screen (i3lock-color)
* Maybe PR upstream: `` ./home/modules/programs/languagetool.nix `` .
2022-02-02 22:35:28 +01:00
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?
2022-02-02 20:27:47 +01:00
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://nixcloud.io/main/en/