nixpkgs/readme.md
Daniel Siepmann 2823c2f0f9
Maintain more global options via home-manager
Use home-manager to create xsession.
Readme contains info on how to start xsession on login.

That way home-manager can maintain languages, keyboard and further stuff
globally for user.

No more need to set stuff as workaround within i3 or zsh.
Also enabled to start systemd units after login, as home-manager will
create and trigger `hm-graphical-session.target`.
2022-05-20 12:47:01 +02:00

4.2 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

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.

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 available within the overlay.

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/* .
    

    Or link whole folder:

    cd ~/.local/share && ln -s ~/.nix-profile/share/applications
    
  • 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:

Migration:

  • 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 installed gnupg2, gnupg, gpg on ubuntu
  • Migrate home manager to use flake for better rollback support if update breaks something.

  • Maybe PR upstream: ./home/modules/programs/languagetool.nix.

  • Migrate other system configurations like keyboard?!

  • i3lock-color

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):