My dot files and a tooling to deploy them to various OS's
Find a file
2023-12-17 00:11:16 -05:00
legacy Do more migration work 2023-09-15 15:48:04 -04:00
link/windows Do more migration work 2023-09-15 15:48:04 -04:00
modules Add tmux 2023-12-16 22:50:54 -05:00
.gitignore Setup nixnuc, rework home manager files 2023-12-16 22:50:07 -05:00
flake.lock Updates 2023-12-16 09:15:52 -05:00
flake.nix Cleanup the flake a little bit 2023-12-17 00:06:24 -05:00
LICENSE Initial commit 2017-05-05 22:38:42 -07:00
README.md Cleanup the flake a little bit 2023-12-17 00:06:24 -05:00
Vagrantfile Rubocop "fixes" 2019-12-26 20:40:20 -05:00

Dots

This repo is a Nix flake that manages most of my setup on macOS and fully manages machines I have that run NixOS as their operating system.

Flake structure

The Nix bits are driven by flake.nix which pulls in things under modules/. Initial support is for both x86 macOS and NixOS. The flake is structured like so:

  • description: a human readable description of this flake
  • inputs: all the places things are pulled from
  • outputs:
    • all the outputs from the inputs
    • a let ... in block that contains:
      • darwinHostConfig which takes 3 params and pulls in all the things needed to use Nix on a macOS host
      • nixosHostConfig which takes 3 params and pulls in all the things needed to configure a NixOS host
    • the body of outputs that contains:
      • darwinConfigurations contains an entry for each macOS host set to the results of a call to darwinHostConfig with values for each of the required parameters
      • nixosConfigurations contains an entry for each nixOS host set to the results of a call to nixosHostConfig with values for each of the required parameters

The parameters on darwinHostConfig & nixosHostConfig are:

  • system: the system definition to use for nixpkgs
  • hostname: the hostname of the machine being configured
  • username: the username being configured on the host (all code currently assumes there is a single human user managed by Nix)

Repo structure

The Nix stuff is structured like so, at least for now:

$ tree . -I legacy* -I link* --gitignore --dirsfirst
.
├── modules
│   ├── home-manager
│   │   ├── common
│   │   │   ├── linux-apps
│   │   │   │   ├── tilix.nix
│   │   │   │   ├── waybar.nix
│   │   │   │   └── xfce4-terminal.nix
│   │   │   ├── all-cli.nix
│   │   │   ├── all-darwin.nix
│   │   │   ├── all-gui.nix
│   │   │   └── all-linux.nix
│   │   ├── files
│   │   │   ├── tilix
│   │   │   │   └── Beanbag-Mathias.json
│   │   │   ├── waybar
│   │   │   │   ├── config
│   │   │   │   └── style.css
│   │   │   ├── xfce4
│   │   │   │   └── terminal
│   │   │   │       ├── accels.scm
│   │   │   │       └── terminalrc
│   │   │   └── Microsoft.PowerShell_profile.ps1
│   │   └── hosts
│   │       ├── Blue-Rock
│   │       │   └── gene.liverman.nix
│   │       ├── nixnuc
│   │       │   └── gene.nix
│   │       └── rainbow-planet
│   │           └── gene.nix
│   ├── hosts
│   │   ├── darwin
│   │   │   └── Blue-Rock
│   │   │       └── default.nix
│   │   └── nixos
│   │       ├── nixnuc
│   │       │   ├── default.nix
│   │       │   └── hardware-configuration.nix
│   │       └── rainbow-planet
│   │           ├── default.nix
│   │           └── hardware-configuration.nix
│   └── system
│       └── common
│           ├── linux
│           │   └── internationalisation.nix
│           ├── all-darwin.nix
│           └── all-nixos.nix
├── LICENSE
├── README.md
├── Vagrantfile
├── flake.lock
└── flake.nix

23 directories, 29 files

Historical bits

This repo historically contained my dot files. Historically symlinked files are still in link/. Most all the other old stuff is now tucked away under legacy/ to get it out of the way until I decide what is and isn't needed.