Skip to content

LoganBarnett/dotfiles

This branch is 2346 commits ahead of, 23 commits behind rattboi/dotfiles:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9d26804 · Mar 4, 2025
Jan 20, 2025
Feb 5, 2018
Oct 27, 2022
Jun 3, 2024
Feb 14, 2025
Apr 15, 2022
Jul 24, 2019
Mar 20, 2024
Mar 4, 2025
Feb 26, 2025
Jan 31, 2025
Aug 16, 2024
Sep 9, 2019
Oct 8, 2020
Feb 22, 2025
Feb 18, 2016
Jul 17, 2020
Oct 29, 2019
Mar 5, 2024
Jul 19, 2023
May 27, 2024
May 14, 2020
May 27, 2024
May 27, 2024
Jul 14, 2017
Jan 8, 2022
Mar 20, 2022
May 27, 2024
Mar 20, 2022
Apr 1, 2020
Nov 15, 2020
May 27, 2024
Feb 27, 2022
Mar 1, 2020
Jan 6, 2020
Feb 18, 2016
May 30, 2018
Jun 28, 2023
Jan 6, 2020
Sep 17, 2018
Mar 23, 2019
Mar 14, 2020
Jul 14, 2020
Jul 14, 2020
Oct 19, 2020
Aug 22, 2020
May 27, 2024
Jul 19, 2023
Feb 28, 2022
Feb 27, 2022
Feb 27, 2022
May 27, 2024
Feb 26, 2025
Jul 24, 2019
Jul 24, 2019
Sep 8, 2022
Jun 3, 2024
Feb 18, 2020
Oct 2, 2023
May 27, 2024
Oct 19, 2024
Oct 19, 2024
Oct 27, 2020
Apr 30, 2021
Oct 8, 2020
May 27, 2024
Sep 15, 2014
Jan 22, 2023
Jul 19, 2023
Mar 23, 2020
Nov 2, 2018
Mar 11, 2021
Oct 19, 2020
Sep 23, 2014
Jun 22, 2023
Sep 24, 2018
Dec 21, 2018
Oct 8, 2020
Mar 1, 2020
Feb 28, 2022
May 2, 2024
Jul 29, 2024

Repository files navigation

Dotfiles

This is my system configuration. It’s a continual work in progress. It also relies upon less public configuration in another repository. My end goal is to transform this into a fully literate configuration. At least as much as is reasonable. At some point I need to bootstrap the configuration, of course.

Privacy

Some configuration here is private and cannot reasonably shared with the community at large. These exist as separate repositories whose permissions are locked down to my personal access only. Some paths in here will refer to private repositories or files. All of them will have a private identifier somewhere in the name. It is recommended that you stub these out if you’re not me, but if you’re in a rush you can just comment/remove these references to get you going.

If Installing From an Existing Configuration

You will want to backup your ~/.zshrc and perhaps other shell configuration files.

Installation

Run ./install.sh.

Other installers are named install-<thing>.sh or <thing>-install.sh, with the latter being preferred but refactoring is not done yet. In addition, installers are slowly being removed in favor of Nix. See the Nix section for details on its preferred layout.

Nix

This repository uses Nix extensively. Nix is used in conjunction with home-manager to manage a user’s configuration. nix-darwin is used for macOS configurations. Everything locked via Nix Flakes. The entry point is ./nix/flake.nix.

Nix installation can be run by itself via ./nix-install.sh.

I have in-progress work and notes in ./nix/README.org.

Updating Nix packages

This is done via:

nix-channel --update

Switching

Use this to apply changes on macOS:

nix-darwin-switch

This wraps the normal invocation.

Home Manager

Home Manager manages the configuration of a user.

Warning: Do not use the invocations below. Home manager is in use but delegated to by nix-darwin or NixOS.

Normally you would use this to build a home-manager configuration:

home-manager build

To use the new configuration, use

home-manager switch

switch implies build.

home.nix is the starting point for home-manager, and is required to be named that via home-manager _when home-manager is the only entity in control. This does not apply when using nix-darwin or NixOS.

Generally we want to avoid global tool installs for various things (like what version of Node.js you’re running), and instead push those to specific repositories.

With Direnv and shell.nix Files

Old - needs updating since we now use flake.nix instead of shell.nix but much of this still applies.

This installation includes direnv, which can automatically load a shell.nix file when entering its directory if the path has been blessed via direnv allow. The shell.nix file declares a series of packages which will be available in the shell, and possibly even additional setup (like adding shell aliases or running some initial setup like database schemas). This is like tools like pyenv, rbenv, and nodenv or the *vm equivalents (rvm, nvm, etc), but it works for any software that Nix can handle, not just that one ecosystem.

Use nix-direnv-add-envrc to lay down the necessary direnv files and also allow the setup immediately.

Global Packages from VMs

Some languages that require runtimes (Ruby, Python, Node.js) all have packages that can be installed globally and communities tend to author tools which leverage this. Installing these kinds of packages by hand is not really the Nix way and generally you will run into permissions errors trying to do this with this configuration. Instead you want to install these packages via your .nix files.

About

Config files I use

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 40.1%
  • Emacs Lisp 22.0%
  • CSS 14.8%
  • Shell 12.9%
  • Ruby 6.5%
  • JavaScript 1.5%
  • Other 2.2%