diff --git a/README.md b/README.md index 10533e4..df7ac3b 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,94 @@ -# my little nix system +# 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: [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. +``` diff --git a/assets/desktop.jpg b/assets/desktop.jpg new file mode 100644 index 0000000..6756385 Binary files /dev/null and b/assets/desktop.jpg differ