Skip to content
This repository has been archived by the owner on Nov 14, 2023. It is now read-only.
/ dotnix Public archive

Shackled within an elaborate prison of my own design.

Notifications You must be signed in to change notification settings

jkachmar/dotnix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gone fishin'

fresh start with over at https://github.com/jkachmar/termina

I Fucking Hate Dotfiles

Installation

Clone

macOS

Clone this repository to $HOME/.config/dotfiles; this is a hardcoded path, however it should be the only one that is expected by the configuration.

After cloning, cd into the directory.

NixOS

The system-level prerequisites of the NixOS configuration is significantly more involved than the macOS configuration.

In general it follows the same principles as Graham Christensen described in his Erase Your Darlings blog post; in this case, /persist is being used as the persistent directory.

This repository can be cloned anywhere, but in general I tend to place it in $HOME/.config/dotfiles on desktop machines and /persist/etc/nixos on servers.

After cloning, cd into the directory.

Existing Profile

macOS

From the configuration directory, build the darwin activation utilities and then invoke them directly for the desired profile.

For example, the following will build and activate the crazy-diamond profile:

nix build .#darwinConfigurations.crazy-diamond.system
./result/sw/bin/darwin-rebuild --flake $(pwd)#crazy-diamond switch

At the time of writing, nix-darwin hasn't been fully updated to work with Flakes so this will have to be repeated every time the configuration is to be updated.

TODO
  • package the above into a script available within the nix develop shell

NixOS

From the configuration directory, build the NixOS configuration and activate it.

For example, the following will build and activate the star-platinum profile:

nixos-rebuild switch \
  --use-remote-sudo \
  --flake '.#star-platinum'

The initial activation will set the machine's host name, which means that subsequent activations can be performed with nixos-rebuild switch --use-remote-sudo.

NOTE: --use-remote-sudo is a "workaround" for how flakes repositories can interact with git-2.35..

cf. NixOS/nixpkgs#169193

New Profile

To install based off of a new profile:

  • create a new directory with the machine name at machines/<new-machine-name>
  • perform the same steps as above to build and deploy the new machine's configuration

Post-Install

Once everything's been installed and is up and running, direnv allow will enable nix-direnv and most of the nix-shell --run nonsense below can be elided.

Maintenance

Updates

Sources are pinned and tracked using "Nix Flakes".

TODO

  • add example commands showing how to update pinned flake sources.

This project contains a .envrc file that works with the nix-direnv integration for direnv. This should mean that, upon entering this directory, a user is immediately dropped into the environment defined in this repository's shell.nix file.

Additionally, nix-direnv should also automatically register a GC Root similar to lorri*.

Before running nix-collect-garbage -d, nix-direnv's cached evaluation can be "manually refreshed" by calling touch .envrc in this directory; this should ensure that a GC Root is installed for an up-to-date version of shell.nix.

*I have a slight preference for nix-direnv over lorri due to some issues I've had in the past with lorri's daemon.

Resources

TODO: Link against some of the Nix configurations that I referenced when figuring this out for myself.

About

Shackled within an elaborate prison of my own design.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published