Skip to content

lucamaraschi/mac-chiavelli

 
 

Repository files navigation

My Nix Configs

Build Nix envs

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-darwin macOS system configurations (using home-manager as a nix-darwin module) and a home-manager user configuration for Linux.
    • darwinModules output for nix-darwin modules that are pending upstream:
      • security-pam that provides an option, enableSudoTouchIdAuth, which enables using Touch ID for sudo authentication. (Pending upstream PR #228.)
      • programs-nix-index that augments nix-darwins's programs.nix-index module with a command not found handler for Fish. (Pending upstream PR #272.)
    • homeManagerModules output for home-manager modules with additional functionality and prepackaged configuration:
      • programs-neovim-extras that provides termBufferAutoChangeDir, and nvrAliases options.
      • programs-kitty-extras that provides a,
        • 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
        • 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.
    • Support for non-flake compatible versions of Nix and legacy workflows through flake-compat:
      • default.nix, allows traditional Nix commands like nix-build to operate on the flake inputs/outputs.
      • nixpkgs.nix, functions as a wrapper for the nixpkgs input of the flake. This can be used for things like setting <nixpkgs> by, e.g., setting nix.nixPath = { nixpkgs = "$HOME/.config/nixpkgs/nixpkgs.nix"; }; in nix-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-x86 in flake.nix and see nix.extraOptions in darwin/bootstrap.nix for details.
  • A GitHub workflow that builds the my macOS system 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 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:
    • adding Solarized colors to pkgs via an overlay;
    • using my programs-kitty-extras home-manager module (see above);
    • using a self-made WIP Solarized based colorscheme with Neovim; and
    • a Fish shell config, which provides a 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.
  • A nice shell prompt config for Fish using Starship.

About

My Nix system configs!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 57.1%
  • Lua 42.7%
  • Vim Script 0.2%