# dots ## overview 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: [fish](https://fishshell.com/) - 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 ### 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 ``` 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. ### macOS after going through the MacOS setup wizard, do the following: ```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 ``` 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. ```