moves all secrets into one centralised location in /media/secrets and uses systemd-tmpfiles to set the appropriate permissions for them |
||
|---|---|---|
| assets | ||
| hosts | ||
| modules | ||
| stow | ||
| .gitignore | ||
| backup.sh | ||
| conf.sh | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
dots
overview
my dotfiles for NixOS, macOS or POSIX systems. primarily for systems that support Nix since they have declarative configuration.
linux specific:
installation
NixOS
boot up a NixOS live installation image and clone the flake. run the following if reinstalling on a host:
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
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:
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
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.
macOS
after going through the MacOS setup wizard, do the following:
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
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
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.