nixpkgs
nixpkgs copied to clipboard
My Nix system configs!
My Nix Configs
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.
Highlights
In no particular order:
- Flakes!
- All external dependencies managed through flakes for easy updating.
- Outputs for
nix-darwinmacOS system configurations (usinghome-manageras anix-darwinmodule) and ahome-manageruser configuration for Linux. darwinModulesoutput fornix-darwinmodules that are pending upstream:homeManagerModulesoutput forhome-managermodules with additional functionality and prepackaged configuration:colorswhich is a work in progress module used to define colorschemes. Seehome/colors.nix, for an example of how to define a colorscheme.programs-neovim-extrasthat providestermBufferAutoChangeDir, andnvrAliasesoptions.programs-kitty-extrasthat provides a,colorsoption to configure a light and dark colorscheme, which when used also addsterm-light,term-dark, andterm-backgroundscripts tohome.packagesto easily switch between them; anduseSymbolsFromNerdFontoption to use symbols from a NerdFont while using any font with Kitty.
malo-git-aliasesmalo-gh-aliasesmalo-startship-symbolsthat provides predefined configuration of symbols for Starship prompt using NerdFont symbols.
- Support for non-flake compatible versions of Nix and legacy workflows through
flake-compat:default.nix, allows traditional Nix commands likenix-buildto operate on the flake inputs/outputs.nixpkgs.nix, functions as a wrapper for thenixpkgsinput of the flake. This can be used for things like setting<nixpkgs>by, e.g., settingnix.nixPath = { nixpkgs = "$HOME/.config/nixpkgs/nixpkgs.nix"; };innix-darwin.
- Support for Macs with Apple Silicon including ability to easily overlay in x86 version of packages, when they don't build on arm. Search
pkgs-x86inflake.nixand seenix.extraOptionsindarwin/bootstrap.nixfor details. - A GitHub workflow that builds the my macOS system
nix-darwinconfig andhome-managerLinux 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 changes. - Git config with a bunch of handy aliases and better diffs using
delta, - A slick Neovim 0.6 config in Lua (some bugs probably exist due to recent update to 0.6). See also:
neovim.nix. - Unified colorscheme (based on Solarized) with light and dark variant for Kitty terminal, Fish shell, Neovim, and other tools, where toggling between light and dark can be done for all of them simultaneously by calling a Fish function. This is achieved by:
- using the
colorsmodule mentioned above; - using my
programs-kitty-extrashome-managermodule (see above); - using a self-made WIP Solarized based colorscheme with Neovim; and
- a Fish shell config, which provides a
toggle-backgroundfunction (and an aliastb) which toggles a universal environment variable ($term_background) between the values"light"and"dark", along withset-shell-colorsfunction which trigger automatically when$term_backgroundchanges.
- using the
- A nice shell prompt config for Fish using Starship.