Files
zaneyos/FAQ.md
Don Williams ee4026c883 Fix FAQ.md Markdown formatting for better rendering
- Replace HTML <h4> tags with proper Markdown ## headers
- Replace HTML <strong> tags with **bold** Markdown formatting
- Convert mixed HTML/Markdown structure to pure Markdown
- Improve rendering compatibility across all Markdown renderers
- All keybindings and sections now display properly
2025-08-15 23:00:58 -04:00

40 KiB
Raw Permalink Blame History

💬 ZaneyOS FAQ for v2.3

  • Revision v1.19
  • Date: 30-May-2025

⌨ 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.
 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
# 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/<HOSTNAME>/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:

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:

# 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

**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.

    ...
    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
  ];
}
  1. For applications that will only be on specific host.

You edit the host-packages.nix associated with that host. ~/zaneyos/hosts/<HOSTNAME>/host-packages.nix

The part of the file you need to edit, looks like this:

{ 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.
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_usb_sdmmc"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
  1. Add the override. E.g. to set the kernel to 6.12.
  • boot.kernelPackages = lib.mkForce pkgs.linuxPackages_6_12;
  1. The updated code should look like this:
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 = [];
  1. 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
  1. Edit the ~/zaneyos/flake.nix file. Change the line:
  • host = "NEW-HOSTNAME"
  1. In the ~/zaneyos Directory run git add . The rebuild will fail with a 'file not found' error if you forget this step.

  2. 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:
};
 plymouth.enable = true;
};
  1. Change it to false
  2. 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 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
# 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;
    };
  1. Select the image you want stylix to use for the colorpalette.
  2. 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
 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";
};
  1. Run the frcommand 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
# 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
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"
     ];
  1. Run the command alias fr to create a new generation.
  2. 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

  1. In the zaneyos directory run git stash && git pull

  2. Copy back your previously created host(s).

  • cp -rpv ~/Backup-ZaneyOS/hosts/HOSTNAME ~/zaneyos/hosts
  1. 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.**
  1. In the zaneyos directory run git add . when you have finished copying your host(s).

  2. 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 server.

**📂 ZaneyOS v2.3 Layout**

📂 ~/zaneyos

~/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**

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**
{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:

    # 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:

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.
#theme = Aura
theme = Dracula
#theme = Aardvark Blue
#theme = GruvboxDarkHard
  1. Comment out Dracula and either uncomment one of the others or add one of ghostty's many themes.
What are the default ghostty keybindings?
 # 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
**❄ 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 youre 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? **
**🏤 Where can I get info on using GIT repositories **