# π¬ 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)