chore: redo README completely

redoes the installation instructions, gives a bit more of an overview of
whats in the repo and adds a screenshot.
This commit is contained in:
Nico 2025-06-09 01:31:05 +10:00
parent 6f50e9b4df
commit d0903fa191
Signed by: nico
SSH key fingerprint: SHA256:XuacYOrGqRxC3jVFjfLROn1CSvLz85Dec6N7O9Gwu/0
2 changed files with 85 additions and 37 deletions

122
README.md
View file

@ -1,46 +1,94 @@
# my little nix system
# dots
## overview
<img width="60%" align="right" src="assets/desktop.jpg">
my dotfiles for NixOS, macOS or POSIX systems. primarily for systems that support [Nix](https://nixos.org) since they have declarative configuration.
- OS: [NixOS](https://nixos.org) and MacOS
- Shell: [zsh](https://www.zsh.org/)
- Terminal: [Ghostty](https://ghostty.org/)
- Browser: Firefox
linux specific:
- Desktop: [Hyprland](https://hyprland.org/) and [Niri](https://github.com/YaLTeR/niri). [Plasma](https://kde.org/plasma-desktop/) if I feel like it.
- Status Bar: [Waybar](https://github.com/Alexays/Waybar)
- Run Launcher: [Walker](https://github.com/abenz1267/walker)
## installation
### linux - desktop
1. Boot up NixOS live iso on a system.
2. Clone flake
3. Make a folder for the system under hosts/
4. Run `nixos-generate-config --dir hosts/HOSTNAME`
6. Set LUKS encryption passphrase via `sudo nano /tmp/secret.key`
7. Run disko `sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount /path/to/disko-config.nix`
8. Copy over flake directory to new system
9. Install system with `sudo nixos-install --flake .#HOSTNAME` - set a password for root
10. Reboot into new system.
11. Open a terminal and run `passwd`
12. Log into normal user and configure networking via `nmtui`
13. Apply dotfiles via `stow stow` in the base of the dotfiles directory.
14. Download a wallpaper and apply it via `matugen image`
### NixOS
boot up a NixOS live installation image and clone the flake. run the following if reinstalling on a host:
```sh
sudo nano /tmp/secret.key # set password used to unlock LUKS encryption
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount /path/to/disko-config.nix # partition drives w/ disko
sudo nixos-install --flake .#HOSTNAME # install base NixOS system
```
#### Secure boot
If a system has a secure boot, install the system WITHOUT the secureboot module. Once the steps above have been completed return here.
during installation set a root password when prompted and reboot as soon as the installation finishes. on first boot switch to a new TTY using `ctrl+alt+f1,f2,f3,etc`, login as root and set a password for your user. then login as your normal user, connect to the wifi with `nmtui`, apply the dotfiles with `stow` and set a wallpaper with `matugen` to ensure anything that depends on a configuration file generated from it works. if you cannot get a wallpaper you can use `matugen color hex FFFFFF` to generate matugen themes from a colour.
#### setting up a new system
if setting up a new system, first boot up a NixOS live installation image and run:
```sh
nixos-generate-config --dir hosts/HOSTNAME # change to hostname of new system
nano flake.nix # add new host in flake.nix
```
then, commit changes to the repository and continue with the steps to reinstall a NixOS system above.
#### secure boot
If you want to setup secure boot for you system, you need to first complete an installation without the secureboot module enabled. after that is done continue with the below
```sh
sudo nix run nixpkgs#sbctl create-keys # create signing keys for boot images
nano flake.nix && sudo nixos-rebuild switch # add the secureboot module to the host
sudo sbctl verify # check to see if some files are signed, it is normal for some files not to be signed.
```
then reboot your system and enter UEFI setup. try to find an option to enroll secureboot keys, after that is done boot up your NixOS system again. run `sudo nix run nixpkgs#sbctl -- enroll-keys --microsoft` when your back in your system. after enrolling your secure boot keys, you must enter UEFI setup again and enable UEFI secureboot.
1. Generate secureboot signing keys with `sudo nix run nixpkgs#sbctl create-keys`
2. Rebuild the system WITH the secureboot module.
3. Run `sudo sbctl verify` to check if SOME of the files are signed.
4. Reboot your system, in the UEFI enable onboarding secureboot keys, usually a setting called 'Reset to setup mode'.
5. Boot into your NixOS system and run `sudo sbctl enroll-keys --microsoft` to enroll your keys.
6. Reboot into your UEFI again and enable secure boot.
### macOS
1. Install xcode developer tools, determinate nix and brew.
after going through the MacOS setup wizard, do the following:
```sh
xcode-select --install
curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinate
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
xcode-select --install # install xcode developer tools
curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinate # install determinate nix
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # install brew package manager
git clone REPO_URL # clone nix flake to system
nix run nix-darwin/master#darwin-rebuild -- switch # switch to nix flake configuration
```
2. Install Nix flake to system. `nix run nix-darwin/master#darwin-rebuild -- switch`
3. Reboot
4. Install OpenUTAU `https://github.com/stakira/OpenUtau/releases/latest/download/OpenUtau-osx-x64.dmg`
5. Configure non-automated settings
- set accent colour
- set display to be spacious
- customise spotlight settings
- disable bluetooth
after switching to the nix flake you will need to do the following manually:
- set display scaling to spacious
- disable spotlight's keyboard shortcut and setup raycast
- setup rectangle, lulu, easy move+resize, linearmouse, battery and alttab
- enable the keybinds to switch workspaces in settings
- enable firewall
- set wallpaper
- enable switching workspace keybinds
### POSIX/linux system
you will need to first install `stow` and `git` using your distro's package manager. after that you can link the dotfiles with `stow stow`.
you probably also may need to install various CLI apps like:
- zsh
- bat
- zoxide
- neovim
- tlrc
- file
- ripgrep
- wget
- unzip
- fastfetch
- trash-cli
a full list of CLI apps needed is in `modules/shell.nix`
# misc
all content in this repository is licensed under the BSD0 license aka 0-Clause BSD license.
```
Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```