Merge pull request #435 from genebean/readme-update

Update my readme a little
This commit is contained in:
Gene Liverman 2024-07-08 15:37:11 -04:00 committed by GitHub
commit 79e18a26bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,26 +2,50 @@
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. 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](#flake-structure)
- [Note](#note)
- [Repo structure](#repo-structure)
- [Historical bits](#historical-bits)
- [Adding a new macOS host](#adding-a-new-macos-host)
- [Extras steps not done by Nix and/or Homebrew and/or mas](#extras-steps-not-done-by-nix-andor-homebrew-andor-mas)
- [Firefox profile switcher](#firefox-profile-switcher)
- [Setup sudo via Touch ID](#setup-sudo-via--touch-id)
- [Atuin](#atuin)
- [Mouse support](#mouse-support)
- [Adding a NixOS host](#adding-a-nixos-host)
- [Post-install](#post-install)
## Flake structure ## 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: The Nix bits are driven by `flake.nix` which pulls in things under `modules/`. Both Intel and Apple Silicon macOS are suppoted, as is NixOS. The flake is structured like so:
- description: a human readable description of this flake - description: a human readable description of this flake
- inputs: all the places things are pulled from - inputs: all the places things are pulled from
- outputs: - outputs:
- all the outputs from the inputs - all the outputs from the inputs
- a `let` ... `in` block that contains: - 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 - `darwinHostConfig` which takes a set of paramters as an attribute set 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 - `nixosHostConfig` which takes a set of parameters as an attribute set and pulls in all the things needed to configure a NixOS host
- `linuxHomeConfig` which takes a set of paramters as an attribute set and pulls in the things I manage on non-NixOS Linux hosts
- the body of outputs that contains: - 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 - `darwinConfigurations` contains is an attribute set that contains keys named 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 - `nixosConfigurations` contains is an attribute set that contains keys named for each NixOS host set to the results of a call to `darwinHostConfig` with values for each of the required parameters
- `homeConfigurations` contains an entry for each username set to the results of a call to `linuxHomeConfig` with values for each of the required parameters
The parameters on `darwinHostConfig` & `nixosHostConfig` are: The parameters on `darwinHostConfig` & `nixosHostConfig` are:
- `system:` the system definition to use for nixpkgs - `system:` the system definition to use for nixpkgs
- `hostname:` the hostname of the machine being configured - `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) - `username:` the username being configured on the host (all code currently assumes there is a single human user managed by Nix)
- `additionalModules:` any nix modules that are desired to supplement the default for the host. An example use case for this is adding in the hardware specific module from `nixos-hardware`.
- `additionalSpecialArgs:` any supplemental arguments to be passed to `specialArgs`.
The parameters on `linxuHomeConfig` are the same as the above.
## Note
> All the bits below here are useful, but may be slightly outdated... I have not done a good job of keeping them updated.
## Repo structure ## Repo structure