2 releases (1 stable)

1.0.0 May 25, 2023
0.1.0 May 23, 2023

#1843 in Command line utilities

BSD-2-Clause

42KB
641 lines

hdn: utility for updating home.nix

Home Manager is great, but it's tedious to run home-manager edit, add your package to the file, and run home-manager switch every time you want to install a package.

I wanted a workflow like Poetry, where I could just add a package and install it in one command. So, I made hdn.

You can call it with e.g. hdn add pkgs.hello pkgs.cowsay:

image

This adds pkgs.hello and pkgs.cowsay to the home.packages attribute in home.nix, and calls home-manager switch.

If home-manager switch fails, it will automatically roll back home.nix to its original state.

Requirements

This program requires that:

  • you have home-manger on your PATH
  • home.nix lives in one of the default locations (namely, ~/.config/home-manager/, ~/.config/nixpkgs/, ~/.nixpkgs/)
  • home.nix contains the attribute home.packages, the list of packages in the user environment

These requirements should be satisfied with the default home-manager installation.

Disclaimer

This program uses Rust, and I don't actually know how to program in Rust.

(I chose Rust because I found a Rust library for easily reading and writing nix files.)

Someday I'll go back, actually learn Rust, and rewrite this, but for now, use at your own risk.

Installation

Releases are available on crates.io.

cargo install hdn

Acknowledgements

This project was made possible by the work of others (that I stole legally incorporated).

I thank Victor Fuentes for his work on nix-editor; the code for nix parsing and writing comes from his project.

I thank Armin Ronacher for his work on similar; the code that displays the home.nix diff comes from his project.

Dependencies

~3.5MB
~64K SLoC