Overview
I use the nix package manager on all of my (non-mobile) computers, and it is very helpful.
There are many ways that this setup provides me value, but one of the most legible is this: I have a fairly customized environment (including a few dozen tools, a couple hundred lines of config, and about a dozen custom scripts) that I am able to install and synchronize across multiple machines, including my personal MacBook Pro, my Linux work machine, and a few servers I use for hobby projects.
Usage
-
Install my environment:
nix profile install github:jeremyschlatter/nixpkgs
-
Run my post-install script:
jeremy-post-install
Composing env definitions
While the bulk of my environment is defined here in this repo, I also have a few pieces defined in private repos. This is useful for managing parts of my environment that either need to be secret or that I just don't want to publish for whatever reason.
I have not yet written instructions for how to compose these definitions. I may do that in the future.
About my environment
This config installs kitty, which I use as my terminal emulator.
It configures kitty to use a custom shell (bash with a custom bashrc). To use my shell config outside
kitty, you can run it manually as shell
.
Other Notes
To pick up the Fira Code font in Gnome I made this symlink:
ln -s ~/.nix-profile/share/fonts/ ~/.local/share/
To pick up application launchers for kitty and obsidian in Gnome I made this symlink:
rmdir ~/.local/share/applications
ln -s ~/.nix-profile/share/applications/ ~/.local/share/
To get desktop icons:
ln -s ~/.nix-profile/share/icons/ ~/.local/share/