- 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
40 KiB
💬 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 inflake.nix
. -- It will get current hostname and run GPU detect codeadd-host
: Add a new host configuration. -- It runs hostname and GPU auto-detect -- You can specify thehostname
and GPUprofile
zcli add-host [hostname] [profile]
-- Profiles (GPU) areamd
,intel
,nvidia
,nvidia-hybrid
, andvm
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
→ LaunchTerminal
$modifier + K
→ List keybinds$modifier + Shift + Return
→ Launchrofi-launcher
$modifier + Shift + W
→ Openweb-search
$modifier + Alt + W
→ Openwallsetter
$modifier + Shift + N
→ Runswaync-client -rs
$modifier + W
→ LaunchWeb Browser
$modifier + Y
→ Openkitty
withyazi
$modifier + E
→ Openemopicker9000
$modifier + S
→ Take a screenshot$modifier + D
→ OpenDiscord
$modifier + O
→ LaunchOBS Studio
$modifier + C
→ Runhyprpicker -a
$modifier + G
→ OpenGIMP
$modifier + V
→ Show clipboard history viacliphist
$modifier + T
→ Toggle terminal withpypr
$modifier + M
→ Openpavucontrol
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 windowAlt + 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
, orwaybar-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? **
- In the file,
~/zaneyos/modules/core/system.nix
- Edit the line: time.timeZone = "America/New_York";
- 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.
- 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
];
}
- 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 agit 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? **
- You have to edit the
hardware.nix
file for that host in~/zaneyos/hosts/HOSTNAME/hardware.nix
and override the default. - 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 = [];
- Add the override. E.g. to set the kernel to 6.12.
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_6_12;
- 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 = [];
- 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:-
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.
-
linuxPackages_latest
- The latest mainline kernel, which may include newer features but could be less stable.
-
linuxPackages_zen
- A performance-optimized kernel with patches aimed at improving responsiveness and interactivity. Commonly used by gamers and desktop users.
-
linuxPackages_hardened
- A security-focused kernel with additional hardening patches for enhanced protection.
-
linuxPackages_rt
- A real-time kernel designed for low-latency and time-sensitive applications, such as audio production or robotics.
-
linuxPackages_libre
- A kernel stripped of proprietary firmware and drivers, adhering to free software principles.
-
linuxPackages_xen_dom0
- A kernel tailored for running as the host (dom0) in Xen virtualization environments.
-
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.
- 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
- Edit the
~/zaneyos/flake.nix
file. Change the line:
host = "NEW-HOSTNAME"
-
In the
~/zaneyos
Directory rungit add .
The rebuild will fail with a 'file not found' error if you forget this step. -
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? **
- Edit the
~/zaneyos/modules/core/boot.nix
file. - Look for:
};
plymouth.enable = true;
};
- Change it to
false
- Run the command alias
fr
to create a new generation.
** How do I configure my hybrid laptop with Intel/NVIDIA GPUs? **
-
Either run the
install-zaneyos.sh
script and selectnvidia-laptop
template or if configuring manually, set the template in theflake.nix
tonvidia-prime
-
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. -
Once you have everything configured properly, use the
fr
Flake Rebuild alias to create a new generation. -
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:
- Edit the
~/zaneyos/modules/core/stylix.nix
file. - Comment out from
base16Scheme
to the};
afterbase0F
# 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;
};
- Select the image you want stylix to use for the colorpalette.
- Run
fr
command alias to create a new generation with this colorscheme.
- To disable uncomment
- Edit the
~/zaneyos/modules/core/stylix.nix
file. - Uncomment out from
base16Scheme
to the};
afterbase0F
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";
};
- 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?
- Edit the
~/zaneyos/hosts/HOSTNAME/varibles.nix
- 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
orzcli 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? **
- Edit the
~/zaneyos/modules/home/hyprland/config.nix
file. - Comment out the line
sleep 1.5 && swww img ...
- 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"
];
- Run the command alias
fr
to create a new generation. - You will need to logout or reboot to make the change effective.
**How do I change the interval the wallpaper changes? **
- Edit the
~/zaneyos/modules/home/scripts/wallsetter
- Change the
TIMEOUT =
value. Which is in seconds. - Run the command alias
fr
to create a new generation. - You will need to logout or reboot to make the change effective.
**⬆ How do I update ZaneyOS? **
For versions v2.3+
- 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
-
In the
zaneyos
directory rungit stash && git pull
-
Copy back your previously created host(s).
cp -rpv ~/Backup-ZaneyOS/hosts/HOSTNAME ~/zaneyos/hosts
- 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 yourhardware.nix
file to the~/zaneyos/hosts/default/hardware.nix
file.**
-
In the
zaneyos
directory rungit add .
when you have finished copying your host(s). -
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
-
First backup your existing
zaneyos
directory. e.g.cp -r ~/zaneyos ~/zaneyos-backup
-
There is no direct update. When you clone the the new config the config files and layout have changed.
-
You need to install zaneyos like a new install.
./install-zaneyos.sh
-
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
-
The layout and configuration are completely different. Virtually noting from 1.x is applicable to v2.3.
-
Backup your
zaneyos
directory e.g.cp -r ~/zaneyos ~/zaneyos-backup
-
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.gjournalctl | grep hm-activate
- You can now redo your rebuild
- If you ran
fu
forflake update
you can now dofr
forflake 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.
- Edit that file and change the
cursor_trail 1
tocursor_trail 0
or comment out that line. - 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?
- Edit the
~/zaneyos/modules/home/ghostty.nix
file. - Change
enable = true;
- Run the command alias
fr
to create a new generation.
How do I change the ghostty theme?
- Edit the
~/zaneyos/modules/home/ghostty.nix
file. - There are several example themes included but commented out.
#theme = Aura
theme = Dracula
#theme = Aardvark Blue
#theme = GruvboxDarkHard
- 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
🪧 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:
-
Pin Dependencies:
- Flakes lock the versions of dependencies in a
flake.lock
file, ensuring reproducibility across systems.
- Flakes lock the versions of dependencies in a
-
Standardize Configurations:
- They use a
flake.nix
file to define how to build, run, or deploy a project or system, making setups more predictable.
- They use a
-
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:
-
Declarative Configuration:
- Define all your settings and preferences in a single
home.nix
file, making it easy to track, share, and replicate your setup.
- Define all your settings and preferences in a single
-
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.
-
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:
-
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.
-
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.
-
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.