# πŸ’¬ ZaneyOS FAQ for v2.3 - **Revision v1.19** - **Date:** 30-May-2025 ## ZaneyOS related **⌨ Where can I see the Hyprland keybindings?** - The SUPER key + K opens a searchable menu with the bindings - The "keys" icon on the right side of the waybar will also bring up this menu.
**πŸ–₯️ ZCLI: What is it and how do I use it?**
The `zcli` utility is a command-line tool designed to simplify the management of your ZanyeOS environment. It provides a set of commands to perform common tasks such as updating your system, managing hosts, and cleaning up old generations. To use it, open a terminal and type `zcli` followed by one of the commands listed below: - `cleanup`: Clean up old system generations. -- You can specify the number of generations to keep. - `diag`: Create a system diagnostic report, saved to `~/diag.txt`. - `list-gens`: List user and system generations. - `rebuild`: Rebuild the NixOS system configuration. - `trim`: Trim filesystems to improve SSD performance. - `update`: Update the flake and rebuild the system. - `update-host`: Automatically set the host and profile in `flake.nix`. -- It will get current hostname and run GPU detect code - `add-host`: Add a new host configuration. -- It runs hostname and GPU auto-detect -- You can specify the `hostname` and GPU `profile` - `zcli add-host [hostname] [profile]` -- Profiles (GPU) are `amd`, `intel`, `nvidia`, `nvidia-hybrid`, and `vm` - `del-host`: Delete a host configuration. `del-host [hostname]` - `help`: Show the help message. ```text ❯ zcli Error: No command provided. ZaneyOS CLI Utility -- version 0.9 Usage: zcli [command] Commands: cleanup - Clean up old system generations. Can specify a number to keep. diag - Create a system diagnostic report. (Filename: homedir/diag.txt) list-gens - List user and system generations. rebuild - Rebuild the NixOS system configuration. trim - Trim filesystems to improve SSD performance. update - Update the flake and rebuild the system. update-host - Auto set host and profile in flake.nix. (Opt: zcli update-host [hostname] [profile]) add-host - Adds a new host. (Opt: zcli add-host [hostname] [profile]) del-host - Deletes a host. (Opt: zcli del-host [hostname]) help - Show this help message. ~ ❯ ex: >zcli add-host myhost amd >zcli rebuild ```
## Major Hyprland Keybindings Below are the keybindings for Hyprland, formatted for easy reference. ## Application Launching - `$modifier + Return` β†’ Launch `Terminal` - `$modifier + K` β†’ List keybinds - `$modifier + Shift + Return` β†’ Launch `rofi-launcher` - `$modifier + Shift + W` β†’ Open `web-search` - `$modifier + Alt + W` β†’ Open `wallsetter` - `$modifier + Shift + N` β†’ Run `swaync-client -rs` - `$modifier + W` β†’ Launch `Web Browser` - `$modifier + Y` β†’ Open `kitty` with `yazi` - `$modifier + E` β†’ Open `emopicker9000` - `$modifier + S` β†’ Take a screenshot - `$modifier + D` β†’ Open `Discord` - `$modifier + O` β†’ Launch `OBS Studio` - `$modifier + C` β†’ Run `hyprpicker -a` - `$modifier + G` β†’ Open `GIMP` - `$modifier + V` β†’ Show clipboard history via `cliphist` - `$modifier + T` β†’ Toggle terminal with `pypr` - `$modifier + M` β†’ Open `pavucontrol` ## Window Management - `$modifier + Q` β†’ Kill active window - `$modifier + P` β†’ Toggle pseudo tiling - `$modifier + Shift + I` β†’ Toggle split mode - `$modifier + F` β†’ Toggle fullscreen - `$modifier + Shift + F` β†’ Toggle floating mode - `$modifier + Alt + F` β†’ Float all windows - `$modifier + Shift + C` β†’ Exit Hyprland ## Window Movement - `$modifier + Shift + ← / β†’ / ↑ / ↓` β†’ Move window left/right/up/down - `$modifier + Shift + H / L / K / J` β†’ Move window left/right/up/down - `$modifier + Alt + ← / β†’ / ↑ / ↓` β†’ Swap window left/right/up/down - `$modifier + Alt + 43 / 46 / 45 / 44` β†’ Swap window left/right/up/down ## Focus Movement - `$modifier + ← / β†’ / ↑ / ↓` β†’ Move focus left/right/up/down - `$modifier + H / L / K / J` β†’ Move focus left/right/up/down ## Workspaces - `$modifier + 1-10` β†’ Switch to workspace 1-10 - `$modifier + Shift + Space` β†’ Move window to special workspace - `$modifier + Space` β†’ Toggle special workspace - `$modifier + Shift + 1-10` β†’ Move window to workspace 1-10 - `$modifier + Control + β†’ / ←` β†’ Switch workspace forward/backward ## Window Cycling - `Alt + Tab` β†’ Cycle to next window - `Alt + Tab` β†’ Bring active window to top
**❄ Why did you create ZaneyOS ? **
- Orginally, it was simply my configuration saved on a GIT repository. - It was there to promote NixOS and Hyprland. - Providing a stable, working configuration. - It has never been intended as a full NixOS distro. - The `ZaneyOS` name is an inside joke among friends. - The intent is this configration can be used as a daily driver - Develop software, play games via steam, etc. - My hope is that it helpful, and will modify it to fit your needs. - That is the key take away. Make it your own. - You create a fork of ZaneyOS, then modify it. - If you find an issue and fix it, or provide a new feature, please share it. - ZaneyOS is not a distro. At this time there are no plans to create an install ISO.
**πŸ–ΌοΈ Settings and configuration**
**How to I change the waybar?** - Go to the `~/zaneyos/host/HOSTNAME` - Edit the `variables.nix` file - Find the line that starts `waybarChoice` - Change the name to one of the available files - `waybar-simple.nix`, `waybar-curved.nix`, or `waybar-ddubs.nix` - Save the file and exit - You need to do a rebuild to make the change effective - Run `fr` "flake rebuild" to start the rebuild process ```json # Set Waybar # Includes alternates such as waybar-simple.nix, waybar-curved.nix & waybar-ddubs.nix waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix; ```
** How do I change the Timezone? ** 1. In the file, `~/zaneyos/modules/core/system.nix` 2. Edit the line: time.timeZone = "America/New_York"; 3. Save the file and rebuild using the `fr` alias.
**How do I change the monitor settings? ** Monitor settings are in the file: `~/zaneyos/hosts//variables.nix` Inside the quotes the syntax is "monitor=video apapter,resolution@refresh rate, auto,scale" Monitor must be in all lowercase. If you are not sure of your video devices run `hyprctl monitors` at a terminal CLI. The output will look similar to this: ```text hyprctl monitors Monitor HDMI-A-1 (ID 0): 2560x1440@143.91200 at 0x0 description: Dell Inc. DELL S3222DGM F45WJK3 make: Dell Inc. model: DELL S3222DGM serial: F45WJK3 active workspace: 1 (1) special workspace: 0 () reserved: 0 52 0 0 scale: 1.00 transform: 0 focused: yes dpmsStatus: 1 vrr: false solitary: 0 activelyTearing: false directScanoutTo: 0 disabled: false currentFormat: XRGB8888 mirrorOf: none availableModes: 2560x1440@59.95Hz 2560x1440@143.91Hz 2560x1440@120.00Hz 1920x1200@59.95Hz 1920x1080@143.86Hz 1920x1080@120.00Hz 1920x1080@119.88Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1600x1200@60.00Hz 1680x1050@59.88Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.95Hz 1280x800@59.91Hz 1152x864@75.00Hz 1280x720@120.00Hz 1280x720@119.88Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@60.00Hz 800x600@75.00Hz 800x600@60.32Hz 720x576@50.00Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@60.00Hz 720x480@59.94Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@60.00Hz 640x480@59.94Hz 640x480@59.94Hz 720x400@70.08Hz ``` Edit the `extraMonitorSettings` line. **Examples:** - Single Monitor: `extraMonitorSettings = "monitor=eDP-1,1920x1080@60,auto,1";` - Multiple Monitors: `extraMonitorSettings = " monitor=eDP-1,1920x1080@60,auto,auto monitor=HDMI-A-1,2560x1440@75,auto,auto ";` - For more complex, multi-monitor configurations, you may wish to use the GUI application, `nwg-displays` This will show your currently connected monitors allowing you to use the mouse match how they are physicall arranged. E.g. what monitor is to the left, right, up or down. It is very similar to the X11 based tool, `arandr` It will then create a Hyprland compatible configuration file at `~/.config/hypr/monitors.conf` After you finish configring the monitors as you wish, hit `Apply` to save the changes to `~/.config/hypr/monitors.conf`\ The contents will look something like this: ```text # Generated by nwg-displays on 2025-03-20 at 13:13:49. Do not edit manually. monitor=HDMI-A-1,1920x1080@74.97,2136x268,1.0 monitor=eDP-1,1920x1080@144.0,216x268,1.0 ``` You only need to copy the `monitor=` lines and paste them into the `variables.nix` file as described in the process above. Once you have that done. Run the command alias `fr` to build a new generation to make the chnages effective. More information on configuring monitors is available on the [Hyprland Wiki](https://wiki.hyprland.org/Configuring/Monitors/)
**How do I add applications to ZaneyOS? ** ### There are two options. One for all hosts you have, another for a specific host. 1. For applications to be included in all defined hosts edit the `~/zaneyos/modules/core/packages.nix` file. There is a section that begins with: `environment.systemPackages = with pkgs;` Followed by a list of packages These are required for ZaneyOS. We suggest you add a comment at the end of the package names. Then add in your packages. ```text ... virt-viewer wget ### My Apps ### bottom dua emacs-nox fd gping lazygit lunarvim luarocks mission-center ncdu nvtopPackages.full oh-my-posh pyprland shellcheck multimarkdown nodejs_23 ugrep zoxide ]; } ``` 2. For applications that will only be on specific host. You edit the `host-packages.nix` associated with that host. `~/zaneyos/hosts//host-packages.nix` The part of the file you need to edit, looks like this: ```nix { pkgs, ... }: { environment.systemPackages = with pkgs; [ audacity discord nodejs obs-studio ]; } ``` You can add additional packages, or for example change `discord` to `discord-canary` to get the beta version of Discord but only on this host.
** I added the package names, now how do I install them ? ** - Use the `fr`, Flake Rebuild alias. If the rebuild completes successfully, a new generation with your added packages will be created.
** How do I update the packages I've already installed? ** - Use the `fu`, Flake Update alias. This will check for updated packages, download and install them.
** I made a change to my ZaneyOS configuration, how do I activate it? ** - Use the `fr` Flake Rebuild alias. If you **created a new file** please note you will need to run a `git add .` command in the zaneyos folder. If successful, a new generation will be generated with your changes. A logout or reboot could be required depending on what you changed.
** How can I configure a different kernel on a specific host? ** 1. You have to edit the `hardware.nix` file for that host in `~/zaneyos/hosts/HOSTNAME/hardware.nix` and override the default. 2. Near the top you will find this section of the `hardware.nix` file. ```nix boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_usb_sdmmc"]; boot.initrd.kernelModules = []; boot.kernelModules = ["kvm-intel"]; boot.extraModulePackages = []; ``` 3. Add the override. E.g. to set the kernel to 6.12. - `boot.kernelPackages = lib.mkForce pkgs.linuxPackages_6_12;` 4. The updated code should look like this: ```nix boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_usb_sdmmc"]; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_6_12; boot.initrd.kernelModules = []; boot.kernelModules = ["kvm-intel"]; boot.extraModulePackages = []; ``` 5. Use the command alias `fr` to create a new generation and reboot to take effect.
** What are the major Kernel options in NixOS? ** NixOS offers several major kernel types to cater to different needs and preferences. Below are the available options, excluding specific kernel versions: 1. **`linuxPackages`** - The default stable kernel, typically an LTS (Long-Term Support) version. LTS in 25.05 (warbler) is 6.12.x Older kernels, 6.6.x, 6.8.x are not supported. 2. **`linuxPackages_latest`** - The latest mainline kernel, which may include newer features but could be less stable. 3. **`linuxPackages_zen`** - A performance-optimized kernel with patches aimed at improving responsiveness and interactivity. Commonly used by gamers and desktop users. 4. **`linuxPackages_hardened`** - A security-focused kernel with additional hardening patches for enhanced protection. 5. **`linuxPackages_rt`** - A real-time kernel designed for low-latency and time-sensitive applications, such as audio production or robotics. 6. **`linuxPackages_libre`** - A kernel stripped of proprietary firmware and drivers, adhering to free software principles. 7. **`linuxPackages_xen_dom0`** - A kernel tailored for running as the host (dom0) in Xen virtualization environments. 8. **`linuxPackages_mptcp`** - A kernel with support for Multipath TCP, useful for advanced networking scenarios.
** I have older generations I want to delete, how can I do that? ** - The `ncg` NixOS Clean Generations alias will remove **ALL** but the most current generation. Make sure you have booted from that generation before using this alias. There is also a schedule that will remove older generations automatically over time.
**How do I change the hostname? ** To change the hostname, there are several steps and you will have to reboot to make the change effective. 1. Copy the directory of the host you want to rename to a directory with the new name. - `cp -rpv ~/zaneyos/hosts/OLD-HOSTNAME ~/zaneyos/hosts/NEW-HOSTNAME` 2. Edit the `~/zaneyos/flake.nix` file. Change the line: - `host = "NEW-HOSTNAME"` 3. In the `~/zaneyos` Directory run `git add .` _The rebuild will fail with a 'file not found' error if you forget this step._ 4. Use the `fr` alias to create a new generation with the new hostname. You must reboot to make the change effective.
** How do I disable the spinning snowflake at startup? ** 1. Edit the `~/zaneyos/modules/core/boot.nix` file. 2. Look for: ```nix }; plymouth.enable = true; }; ``` 3. Change it to `false` 4. Run the command alias `fr` to create a new generation.
** How do I configure my hybrid laptop with Intel/NVIDIA GPUs? ** 1. Either run the `install-zaneyos.sh` script and select `nvidia-laptop` template or if configuring manually, set the template in the `flake.nix` to `nvidia-prime` 2. In the `~/zaneyos/hosts/HYBRID-HOST/variables.nix` file you will need to set the PCI IDs for the Intel and NVIDIA GPUs. Refer to [this page](https://nixos.wiki/wiki/Nvidia) to help determine those values. 3. Once you have everything configured properly, use the `fr` Flake Rebuild alias to create a new generation. 4. In the `~/zaneyos/modules/home/hyprland/config.nix` file is an ENV setting`"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1"` This sets the primary and secondary GPUs. Using the info from the weblink above you might have to change the order of these values.
**🎨 Stylix**
How do I enable or disable Stylix? - To Enable: 1. Edit the `~/zaneyos/modules/core/stylix.nix` file. 2. Comment out from `base16Scheme` to the `};` after `base0F` ```nix # Styling Options stylix = { enable = true; image = ../../wallpapers/Anime-girl-sitting-night-sky_1952x1120.jpg; #image = ../../wallpapers/Rainnight.jpg; #image = ../../wallpapers/zaney-wallpaper.jpg; # base16Scheme = { # base00 = "282936"; # base01 = "3a3c4e"; # base02 = "4d4f68"; # base03 = "626483"; # base04 = "62d6e8"; # base05 = "e9e9f4"; # base06 = "f1f2f8"; # base07 = "f7f7fb"; # base08 = "ea51b2"; # base09 = "b45bcf"; # base0A = "00f769"; # base0B = "ebff87"; # base0C = "a1efe4"; # base0D = "62d6e8"; # base0E = "b45bcf"; # base0F = "00f769"; #}; polarity = "dark"; opacity.terminal = 1.0; cursor = { package = pkgs.bibata-cursors; name = "Bibata-Modern-Ice"; size = 24; }; ``` 3. Select the image you want stylix to use for the colorpalette. 4. Run `fr` command alias to create a new generation with this colorscheme. - To disable uncomment 1. Edit the `~/zaneyos/modules/core/stylix.nix` file. 2. Uncomment out from `base16Scheme` to the `};` after `base0F` ```nix base16Scheme = { base00 = "282936"; base01 = "3a3c4e"; base02 = "4d4f68"; base03 = "626483"; base04 = "62d6e8"; base05 = "e9e9f4"; base06 = "f1f2f8"; base07 = "f7f7fb"; base08 = "ea51b2"; base09 = "b45bcf"; base0A = "00f769"; base0B = "ebff87"; base0C = "a1efe4"; base0D = "62d6e8"; base0E = "b45bcf"; base0F = "00f769"; }; ``` 3. Run the `fr`command alias to build a new generation with either the default dracula or set your own custom colors
How do I change the image Stylix uses to theme with? 1. Edit the `~/zaneyos/hosts/HOSTNAME/varibles.nix` 2. Change the `stylixImage =` to the filename you want to use. Wallpapers are in `~/zaneyos/wallpapers` ```nix # Set Stylix Image stylixImage = ../../wallpapers/AnimeGirlNightSky.jpg; ```
**πŸŒƒ Wallpapers**
** How do I add more wallpapers? ** - Wallpapers are stored in the `~/zaneyos/wallpapers` directory. - Simply copy the new ones to that directory. - Run `git add .` To add them to the local GIT repo - You must do a rebuild after adding new wallpapers. - Run `fr` or `zcli rebuild` at the CLI.
** How do I change the background? ** - SUPER + ALT + W will select a new background
** How can I set a timer to change the wallpaper automatically? ** 1. Edit the `~/zaneyos/modules/home/hyprland/config.nix` file. 2. Comment out the line `sleep 1.5 && swww img ...` 3. Add new line after that with `sleep 1 && wallsetter` ```json settings = { exec-once = [ "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "killall -q swww;sleep .5 && swww init" "killall -q waybar;sleep .5 && waybar" "killall -q swaync;sleep .5 && swaync" "nm-applet --indicator" "lxqt-policykit-agent" "pypr &" #"sleep 1.5 && swww img /home/${username}/Pictures/Wallpapers/zaney-wallpaper.jpg" "sleep 1 && wallsetter" ]; ``` 4. Run the command alias `fr` to create a new generation. 5. You will need to logout or reboot to make the change effective.
**How do I change the interval the wallpaper changes? ** 1. Edit the `~/zaneyos/modules/home/scripts/wallsetter` 2. Change the `TIMEOUT =` value. Which is in seconds. 3. Run the command alias `fr` to create a new generation. 4. You will need to logout or reboot to make the change effective.
**⬆ How do I update ZaneyOS? **
For versions v2.3+ 1. First backup your existing `zaneyos` directory. - `cp -rpv ~/zaneyos ~/Backup-ZaneyOS` _Any changes you made to the ZaneyOS config will need to be re-done_ 2. In the `zaneyos` directory run `git stash && git pull` 3. Copy back your previously created host(s). - `cp -rpv ~/Backup-ZaneyOS/hosts/HOSTNAME ~/zaneyos/hosts` 4. If you did not use the `default` host during your initial install - Then do not copy the `default` host from your backup. The new default host might have updates or fixes you will need for the next host you create.** - Then you will have to manually compare your backup to the new updated `default` host template, and potentially merge the changes and overwrite your `hardware.nix` file to the `~/zaneyos/hosts/default/hardware.nix` file.** 5. In the `zaneyos` directory run `git add .` when you have finished copying your host(s). 6. For any other changes you've made. For example: hyprland keybinds, waybar config, if you added additional packages to the `modules/packages.nix` file. Those you will have to manually merge back into the new version.
For versions v2.0->2.2 1. First backup your existing `zaneyos` directory. e.g. `cp -r ~/zaneyos ~/zaneyos-backup` 2. There is no direct update. When you clone the the new config the config files and layout have changed. 3. You need to install zaneyos like a new install. `./install-zaneyos.sh` 4. Once the build completes and you have rebooted you can review the new layout and decide what if any changes you made on the earlier version can be migrated to v2.3.
For version v1.x 1. The layout and configuration are completely different. Virtually noting from 1.x is applicable to v2.3. 2. Backup your `zaneyos` directory e.g. `cp -r ~/zaneyos ~/zaneyos-backup` 3. Run the `./install-zaneyos.sh` script and follow the new install instructions.
How do I know when a new version of ZaneyOS is released? It will be announced on the Zaney [Discord](https://discord.gg/W7efsSDS) server.
**πŸ“‚ ZaneyOS v2.3 Layout**
#### πŸ“‚ ~/zaneyos ```text ~/zaneyos/ β”œβ”€β”€ hosts/ # Folder where host configs are saved β”‚ β”œβ”€β”€ default # Default host template β”‚ └── nixstation # Zaney's host β”œβ”€β”€ img/ # Images for README.md β”œβ”€β”€ modules/ # Core, HomeMgr, drivers config files β”‚ └── drivers/ # AMD,NVIDA,Intel,VM config files β”‚ └── core/ # Services, packages, fonts, etc β”‚ └── home/ # Home Manager config files β”‚ β”œβ”€β”€ fastfetch/ # Fastfetch config β”‚ β”œβ”€β”€ hyprland/ # Hyrprland configs β”‚ β”œβ”€β”€ rofi/ # rofi menu configs β”‚ β”œβ”€β”€ scripts/ # screenshots, wallpaper, etc. β”‚ β”œβ”€β”€ waybar/ # waybar configs in NIX format β”‚ β”œβ”€β”€ wlogout/ # Theme, config for logout menu β”‚ β”œβ”€β”€ yazi/ # TUI filemgr config file β”‚ └── zsh/ # Theme and settings for ZSH β”œβ”€β”€ profiles/ # Video hardware templates β”‚ β”œβ”€β”€ amd/ # AMD Video config files β”‚ β”œβ”€β”€ intel/ # Intel video config files β”‚ β”œβ”€β”€ nvidia/ # NVIDIA discrete video config files β”‚ β”œβ”€β”€ nvidia-laptop/ # NVIDIA Hybrid video config files β”‚ └── vm/ # Virtual Machine config files β”œβ”€β”€ wallpapers/ # Add your wallpapers here β”œβ”€β”€ CHANGELOG.md # List of changes β”œβ”€β”€ CONTRIBUTING.md # How you can help β”œβ”€β”€ FAQ.md # Frequently Asked Questions β”œβ”€β”€ flake.lock # Saves version info on all installed packages β”œβ”€β”€ flake.nix # flake that controls ZaneyOS config β”œβ”€β”€ install-zaneyos.sh # Install script for ZaneyOS β”œβ”€β”€ LICENSE # MIT license ZaneyOS is using └── README.md # Intro document for ZaneyOS ```
## 🧰 Miscellaneous
**πŸͺ§ Rebuild or update fails with Home Manager error can't backup a file**

```text May 08 18:33:57 explorer hm-activate-dwilliams[92420]: Please do one of the following: May 08 18:33:57 explorer hm-activate-dwilliams[92420]: - Move or remove the above files and try again. May 08 18:33:57 explorer hm-activate-dwilliams[92420]: - In standalone mode, use 'home-manager switch -b backup' to back up May 08 18:33:57 explorer hm-activate-dwilliams[92420]: files automatically. May 08 18:33:57 explorer hm-activate-dwilliams[92420]: - When used as a NixOS or nix-darwin module, set May 08 18:33:57 explorer hm-activate-dwilliams[92420]: 'home-manager.backupFileExtension' May 08 18:33:57 explorer hm-activate-dwilliams[92420]: to, for example, 'backup' and rebuild. May 08 18:33:57 explorer systemd[1]: home-manager-dwilliams.service: Main process exited, code=exited, status=1/FAILURE May 08 18:33:57 explorer systemd[1]: home-manager-dwilliams.service: Failed with result 'exit-code'. May 08 18:33:57 explorer systemd[1]: Failed to start Home Manager environment for dwilliams. ``` - There is a script `hm-find` That will search the journal and if found, - It will prompt you to delete these backups - It creates a log as well - Note: The script is not perfect - If you get this msg but `hm-find` doesn't report any you will have to search manually e.g `journalctl | grep hm-activate` - You can now redo your rebuild - If you ran `fu` for `flake update` you can now do `fr` for `flake rebuild` - The flake has already been updated
**πŸ“š What is the difference between Master and Dwindle layouts**

**1. Master Layout** - The **Master** layout divides the workspace into two main areas: - A **master area** for the primary window, which takes up a larger portion of the screen. - A **stack area** for all other windows, which are tiled in the remaining space. - This layout is ideal for workflows where you want to focus on a single main window while keeping others accessible. **2. Dwindle Layout** - The **Dwindle** layout is a binary tree-based tiling layout: - Each new window splits the available space dynamically, alternating between horizontal and vertical splits. - The splits are determined by the aspect ratio of the parent container (e.g., wider splits horizontally, taller splits vertically). - This layout is more dynamic and evenly distributes space among all windows. --- **How to Verify the Current Layout** To check which layout is currently active, use the `hyprctl` command: `hyprctl getoption general:layout`
**πŸ“¦ What are the Yazi keybindings and how can I change them? **

The Yazi configuration file is located in `~/zaneyos/modules/home/yazi.nix` Yazi is configured like VIM and VIM motions The keymap is in the `~/zaneyos/modules/home/yazi/keymap.toml` file
** What fonts are avialable in NixOS** ```nix {pkgs, ...}: { fonts = { packages = with pkgs; [ dejavu_fonts fira-code fira-code-symbols font-awesome hackgen-nf-font ibm-plex inter jetbrains-mono material-icons maple-mono.NF minecraftia nerd-fonts.im-writing nerd-fonts.blex-mono noto-fonts noto-fonts-emoji noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-monochrome-emoji powerline-fonts roboto roboto-mono symbola terminus_font # NERD fonts nerd-fonts.0xproto nerd-fonts._3270 nerd-fonts.agave nerd-fonts.anonymice nerd-fonts.arimo nerd-fonts.aurulent-sans-mono nerd-fonts.bigblue-terminal nerd-fonts.bitstream-vera-sans-mono nerd-fonts.blex-mono nerd-fonts.caskaydia-cove nerd-fonts.caskaydia-mono nerd-fonts.code-new-roman nerd-fonts.comic-shanns-mono nerd-fonts.commit-mono nerd-fonts.cousine nerd-fonts.d2coding nerd-fonts.daddy-time-mono nerd-fonts.departure-mono nerd-fonts.dejavu-sans-mono nerd-fonts.droid-sans-mono nerd-fonts.envy-code-r nerd-fonts.fantasque-sans-mono nerd-fonts.fira-code nerd-fonts.fira-mono nerd-fonts.geist-mono nerd-fonts.go-mono nerd-fonts.gohufont nerd-fonts.hack nerd-fonts.hasklug nerd-fonts.heavy-data nerd-fonts.hurmit nerd-fonts.im-writing nerd-fonts.inconsolata nerd-fonts.inconsolata-go nerd-fonts.inconsolata-lgc nerd-fonts.intone-mono nerd-fonts.iosevka nerd-fonts.iosevka-term nerd-fonts.iosevka-term-slab nerd-fonts.jetbrains-mono nerd-fonts.lekton nerd-fonts.liberation nerd-fonts.lilex nerd-fonts.martian-mono nerd-fonts.meslo-lg nerd-fonts.monaspace nerd-fonts.monofur nerd-fonts.monoid nerd-fonts.mononoki nerd-fonts.mplus nerd-fonts.noto nerd-fonts.open-dyslexic nerd-fonts.overpass nerd-fonts.profont nerd-fonts.proggy-clean-tt nerd-fonts.recursive-mono nerd-fonts.roboto-mono nerd-fonts.shure-tech-mono nerd-fonts.sauce-code-pro nerd-fonts.space-mono nerd-fonts.symbols-only nerd-fonts.terminess-ttf nerd-fonts.tinos nerd-fonts.ubuntu nerd-fonts.ubuntu-mono nerd-fonts.ubuntu-sans nerd-fonts.victor-mono nerd-fonts.zed-mono ]; }; } ```
## πŸ–₯️ Terminals
**🐱 Kitty**
My cursor in Kitty is "janky" and it jumps around. How do I fix that? - That feature is called "cursor_trail" in the `~/zaneyos/modules/home/kitty.nix` file. 1. Edit that file and change the `cursor_trail 1` to `cursor_trail 0` or comment out that line. 2. Use the command alias `fr` to create a new generation with the change.
What are the Kitty keybindings and how can I change them? The kitty bindings are configured in `~/zaneyos/modules/home/kitty.nix` The defaults are: ```text # Clipboard map ctrl+shift+v paste_from_selection map shift+insert paste_from_selection # Scrolling map ctrl+shift+up scroll_line_up map ctrl+shift+down scroll_line_down map ctrl+shift+k scroll_line_up map ctrl+shift+j scroll_line_down map ctrl+shift+page_up scroll_page_up map ctrl+shift+page_down scroll_page_down map ctrl+shift+home scroll_home map ctrl+shift+end scroll_end map ctrl+shift+h show_scrollback # Window management map alt+n new_window_with_cwd #Opens new window in current directory #map alt+n new_os_window #Opens new window in $HOME dir map alt+w close_window map ctrl+shift+enter launch --location=hsplit map ctrl+shift+s launch --location=vsplit map ctrl+shift+] next_window map ctrl+shift+[ previous_window map ctrl+shift+f move_window_forward map ctrl+shift+b move_window_backward map ctrl+shift+` move_window_to_top map ctrl+shift+1 first_window map ctrl+shift+2 second_window map ctrl+shift+3 third_window map ctrl+shift+4 fourth_window map ctrl+shift+5 fifth_window map ctrl+shift+6 sixth_window map ctrl+shift+7 seventh_window map ctrl+shift+8 eighth_window map ctrl+shift+9 ninth_window map ctrl+shift+0 tenth_window # Tab management map ctrl+shift+right next_tab map ctrl+shift+left previous_tab map ctrl+shift+t new_tab map ctrl+shift+q close_tab map ctrl+shift+l next_layout map ctrl+shift+. move_tab_forward map ctrl+shift+, move_tab_backward # Miscellaneous map ctrl+shift+up increase_font_size map ctrl+shift+down decrease_font_size map ctrl+shift+backspace restore_font_size ```
**πŸ‡Ό WezTerm**
How do I enable WezTerm? Edit the `/zaneyos/modules/home/wezterm.nix` Change `enable = false` to `enable = true;`\ Save the file and rebuild zaneyos with the `fr` command. ``` {pkgs, ...}: { programs.wezterm = { enable = false; package = pkgs.wezterm; }; ```
What are the WezTerm keybindings and how can I change them? The kitty bindings are configured in `~/zaneyos/modules/home/wezterm.nix` The defaults are: ```text ALT is the defined META key for WezTerm -- Tab management ALT + t Open new Tab ALT + w Close current Tab ALT + n Move to next Tab ALT + p Move to previous Tab -- Pane management ALT + v Create Vertical Split ALT + h Create Horizontal Split ALT + q Close Current Pane -- Pane navigation (move between panes with ALT + Arrows) ALT + Left Arrow Move to pane -- Left ALT + Right Arrow Move to pane -- Right ALT + Down Arrow Move to pane -- Down ALT + Up Arrow Move to pane -- Down ```
**πŸ‘» Ghostty **
How do I enable the ghostty terminal? 1. Edit the `~/zaneyos/modules/home/ghostty.nix` file. 2. Change `enable = true;` 3. Run the command alias `fr` to create a new generation.
How do I change the ghostty theme? 1. Edit the `~/zaneyos/modules/home/ghostty.nix` file. 2. There are several example themes included but commented out. ```text #theme = Aura theme = Dracula #theme = Aardvark Blue #theme = GruvboxDarkHard ``` 3. Comment out `Dracula` and either uncomment one of the others or add one of ghostty's many themes.
What are the default ghostty keybindings? ```text # keybindings keybind = alt+s>r=reload_config keybind = alt+s>x=close_surface keybind = alt+s>n=new_window # tabs keybind = alt+s>c=new_tab keybind = alt+s>shift+l=next_tab keybind = alt+s>shift+h=previous_tab keybind = alt+s>comma=move_tab:-1 keybind = alt+s>period=move_tab:1 # quick tab switch keybind = alt+s>1=goto_tab:1 keybind = alt+s>2=goto_tab:2 keybind = alt+s>3=goto_tab:3 keybind = alt+s>4=goto_tab:4 keybind = alt+s>5=goto_tab:5 keybind = alt+s>6=goto_tab:6 keybind = alt+s>7=goto_tab:7 keybind = alt+s>8=goto_tab:8 keybind = alt+s>9=goto_tab:9 # split keybind = alt+s>\=new_split:right keybind = alt+s>-=new_split:down keybind = alt+s>j=goto_split:bottom keybind = alt+s>k=goto_split:top keybind = alt+s>h=goto_split:left keybind = alt+s>l=goto_split:right keybind = alt+s>z=toggle_split_zoom keybind = alt+s>e=equalize_splits ```
## πŸͺ§ General NixOS related topics
**❄ What are Flakes in NixOS? **
**Flakes** are a feature of the Nix package manager that simplifies and standardizes how configurations, dependencies, and packages are managed. If you're familiar with tools like `package.json` in JavaScript or `Cargo.toml` in Rust, flakes serve a similar purpose in the Nix ecosystem. #### Key Features of Flakes: 1. **Pin Dependencies**: - Flakes lock the versions of dependencies in a `flake.lock` file, ensuring reproducibility across systems. 2. **Standardize Configurations**: - They use a `flake.nix` file to define how to build, run, or deploy a project or system, making setups more predictable. 3. **Improve Usability**: - Flakes simplify sharing and reusing configurations across different systems or projects by providing a consistent structure. In essence, flakes help manage NixOS setups or Nix-based projects in a more portable and reliable way.
**🏑 What is NixOS Home Manager? ** **Home Manager** is a powerful tool in the Nix ecosystem that allows you to declaratively manage user-specific configurations and environments. With Home Manager, you can streamline the setup of dotfiles, shell settings, applications, and system packages for your user profile. ### Key Features of Home Manager: 1. **Declarative Configuration**: - Define all your settings and preferences in a single `home.nix` file, making it easy to track, share, and replicate your setup. 2. **Cross-Distribution Support**: - Home Manager works not only on NixOS but also on other Linux distributions and macOS, allowing you to standardize configurations across devices. 3. **User Environment Management**: - Manage applications, environment variables, shell configurations, and moreβ€”all isolated to your user profile. ### Why Use Home Manager? Home Manager simplifies system management by offering consistency, reproducibility, and portability. Whether you’re customizing your development environment or sharing configurations between machines, it provides an efficient way to tailor your user experience.
**🏭 What are Atomic Builds?** **Atomic builds** in NixOS ensure that any system change (like installing software or updating the configuration) is applied in a safe and fail-proof way. This means that a system update is either fully successful or has no effect at all, eliminating the risk of a partially applied or broken system state. ### How Atomic Builds Work: 1. **Immutable System Generation**: - Every configuration change creates a new "generation" of the system, while the previous ones remain untouched. You can easily roll back to an earlier generation if something goes wrong. 2. **Transaction-Like Behavior**: - Similar to database transactions, changes are applied atomically: either they succeed and become the new active system, or they fail and leave the current system unchanged. 3. **Seamless Rollbacks**: - In case of errors or issues, you can reboot and select a previous system generation from the boot menu to return to a working state. ### Benefits of Atomic Builds: - **Reliability**: Your system is always in a consistent state, even if a configuration change fails. - **Reproducibility**: The same configuration will always produce the same system state, making it easy to debug or replicate. - **Ease of Rollback**: Reverting to a working configuration is as simple as rebooting and selecting the previous generation. ### Why NixOS Uses Atomic Builds: This feature is a cornerstone of NixOS's declarative and reproducible design philosophy, ensuring that system management is predictable and stress-free.
**❓ I am new to NIXOS where can I go to get more info? ** - [NIXOS Config Guide](https://www.youtube.com/watch?v=AGVXJ-TIv3Y&t=34s) - [VIMJOYER YouTube Channel](https://www.youtube.com/@vimjoyer/videos) - [Librephoenix YouTube Channel](https://www.youtube.com/@librephoenix) - [8 Part Video Series on NIXOS](https://www.youtube.com/watch?v=QKoQ1gKJY5A&list=PL-saUBvIJzOkjAw_vOac75v-x6EzNzZq-) - [Great guide for NixOS and Flakes](https://nixos-and-flakes.thiscute.world/preface)
**🏀 Where can I get info on using GIT repositories ** - [Managing NIXOS config with GIT](https://www.youtube.com/watch?v=20BN4gqHwaQ) - [GIT for dummies](https://www.youtube.com/watch?v=K6Q31YkorUE) - [How GIT works](https://www.youtube.com/watch?v=e9lnsKot_SQ) - [In depth 1hr video on GIT](https://www.youtube.com/watch?v=S7XpTAnSDL4&t=123s)