This repo contains my Nix configs for macOS and Linux and by extension, configuration for most tools/programs I use, at least in the terminal.
I'm continuously tweaking/improving my setup, trying to find ways to make more of my configuration declarative, and I like experimenting with bleeding edge updates/features, so this repo sees a lot of changes. I do try to ensure that master
always builds and doesn't have any bad bugs (at least in my workflow), and keep the code fairly well documented.
Feel free to file an issue or start a discussion if you find a bug, or think something is broken, or think I'm doing something in a dumb/clumsy way and have a suggestion for a more elegant alternative, or try to crib something from my config but just can't get it working, or are looking at my config and think to yourself "does this guy know about X, cause I bet he'd be into it", or have some other type of feedback/comment. (Issues, are better for things that are actually issues, while discussions are better for ideas, questions, etc.)
I make no promises that I'll respond quickly, or fix the bug (especially if I'm not experiencing it), or whatever, but you definitely shouldn't feel like you're imposing in any way, and I probably will respond within a few days.
Below, I've highlighted stuff that I'm particularly happy with or think others might find helpful/useful.
In no particular order:
nix-darwin
macOS system configurations (using home-manager
as a nix-darwin
module) and a home-manager
user configuration for Linux.nix-darwin
system configurations (with home-manager
integration), lib.mkDarwinSystem
.darwinModules
output for nix-darwin
modules with additional functionality and prepackaged configuration, including:users-primaryUser
that provides users.primaryUsers.{username,fullName,email,nixConfigDirectory}
options, which allows specifying this information one time by setting these options and then referencing their values when setting other options.homeManagerModules
output for home-manager
modules with additional functionality and prepackaged configuration, including:home-user-info
], that provides the same options as the my nix-darwin
module users-primaryUsers
above under home.user-info
. See examples of it in use in home/git.nix
, home/neovim.nix
.colors
which is a WIP module used to define colorschemes. See home/colors.nix
, for an example of how to define a colorscheme.programs-neovim-extras
that provides programs.neovim.extras.{defaultEditor,nvrAliases,termBufferAutoChangeDir}
options.programs-kitty-extras
that provides a,
programs.kitty.extras.colors
option to configure a light and dark colorscheme, which when used also adds term-light
, term-dark
, and term-background
scripts to home.packages
to easily switch between them; and aprograms.kitty.extras.useSymbolsFromNerdFont
option to use symbols from a NerdFont while using any font with Kitty.malo-git-aliases
malo-gh-aliases
malo-startship-symbols
that provides predefined configuration of symbols for Starship prompt using NerdFont symbols.flake-compat
:default.nix
, allows traditional Nix commands like nix-build
to operate on the flake inputs/outputs.pkgs-x86
in flake.nix
and see nix.settings.extra-platforms
in darwin/bootstrap.nix
for details.nix-darwin
config and home-manager
Linux user config, and updates a Cachix cache. Also, once a week it updates all the flake inputs before building, and if the build succeeds, it commits the updated flake.lock
file.delta
.neovim.nix
.colors
module mentioned above;programs-kitty-extras
home-manager
module (see above);toggle-background
function (and an alias tb
) which toggles a universal environment variable ($term_background
) between the values "light"
and "dark"
, along with set-shell-colors
function which trigger automatically when $term_background
changes.