Nyx
Personal Nix/Shell/Hyprland running on Native, Mac, WSL, and Droid
Install / Use
/learn @mwdavisii/NyxREADME
Nixos + DotFiles
This is my personal configuration that I use for Nixos, Arch Linux, WSL on Windows, MacOS, and my PixelFold.
Desktop — Hyprland + Quickshell

The desktop stack is Hyprland (compositor) with Ambxst (Quickshell-based desktop environment) providing bar, dock, launcher, notifications, lockscreen, AI assistant, and more. Colors are dynamically generated from wallpapers via matugen (Material Design extraction) and exported to pywal format for downstream tools (cava, btop, kitty, neovim).
Dynamic Color Scheme
Every UI element — bar, terminals, file manager, system monitor, audio visualizer, and IDE — pulls its palette from the active wallpaper. Switching wallpapers re-themes the entire environment instantly.
| Vibrant | Forest |
|---|---|
|
|
|
| Minimal | Warm / IDE |
|---|---|
|
|
|
Multi-platform Shells

Overview
The general approach here is to isolate my user configuration into home folder and system configurations in the system folder. There are some deviations from this. For instance, all of the secrets are user based, but they are decrypted from the system configuration because we get more control from agenix (owner and group permissions) and I have found this approach does not require any custom activations or a restart of wsl.
I have used this repo for shell environments over the last couple of years or so but I've gotten carried away with hyprland and desktop tiling over the last few months. I've tried to put everything desktop related in the nyx.modules.desktop configuration space under home-manager. Most of the options are specified in in the /systems/<platform>/hosts/<hostname>/home.nix file. You can delete the entire desktop section if you don't want any your desktop to be modified.
The exceptions to this are:
-
Nixos
- Hyprland =>
system/nixos/modules/hyprland - Hyprlogin =>
system/nixos/modules/hyprlogin - Yubilogin =>
system/nixos/modules/yubilogin
- Hyprland =>
-
Darwin
- Yarbai =>
system/darwin/modules/system/yabai - Dock =>
system/darwin/modules/dock - Brews =>
system/darwin/brews.nix - Casks =>
system/darwin/casks.nix
- Yarbai =>
General Project Structure
.
├─ home # Home-manager and user configurations
├─ lib # Shared functions that generate attribute sets
├─ nix # Default Nix Configurations and Overlays
├─ setup # Initial Install/Configure Scripts (see platform READMEs below)
├─ system # System / Host / Global configurations
Setup Guides
| Platform | Guide |
|---|---|
| Arch Linux | setup/arch/README.md — 3-phase install (01-install.sh, 02-install-packages.sh, 03-setup-nix.sh) |
| Virtual Machines | setup/virtual/readme.md — VirtualBox image build |
Influences, Inspirations & Credits
These public repositories heavily influenced my configuration. The project architecture and most of the dot files in this project started directly from EdenEast's public nix configuration. I am sure I missed someone's repo in the list, but I'm trying to give credit where credit is due.
Nix
Hyprland / Quickshell / dotFiles
- Axenide/Ambxst — Quickshell-based desktop environment (bar, dock, launcher, notifications, lockscreen, AI assistant)
- HeinzDev/Hyperland-dotfiles
- linuxmobile/hyperland-dots
- xsghetti/HyprCrux
- justinmdickey/publicdots
Amethyst / Yabai / Hammerspoon
Installation & Configuration
My Configured Hosts
Below are descriptions of the hosts configurations. If you have access to windows / wsl, I recommend wsl/hosts/nixos.
├─ system
├─── arch
├───── hosts
├─────── L242731 # => Work Dell — Arch Linux + Hyprland
├─────── prometheus # => Home desktop — Arch Linux + Hyprland
├─── darwin
├───── hosts
├─────── mwdavis-workm1 # => Work Macbook / 2022 16" Pro M1
├─────── L241729 # => Work MacBook
├─── droid
├───── hosts
├─────── default # => Google Pixel Fold
├─── nixos
├───── hosts
├─────── ares # => Personal WSL w/ personal credential decryption
├─────── hephaestus # => Home machine - Custom Build / i9 / AMD 7900xt / dual boot nixos+win
├─────── hydra # => Home lab k3s VM on proxmox w/ cilium
├─────── livecd # => Bootable installer ISO w/ custom shell
├─────── olenos # => Work laptop - Thinkpad x13 / i7 / integrated graphics / nixos only
├─────── virtualbox # => Oracle Virtualbox Image (Gnome + Shell)
├─────── nixos # => Generic WSL2
Secrets Configuration
This repository uses ryantm/agenix to manage secrets. The secrets are stored as encrypted age files in a private repository. To run this as is, you will need to either remove all references to secrets or create your own secrets repository.
The easiest way to run this is to update 'flake.nix` to use my nix-secrets-example repository. Replace this:
secrets = {
url = "git+ssh://git@github.com/mwdavisii/nix-secrets.git";
flake = false;
};
with this:
secrets = {
url = "git+https://git@github.com/mwdavisii/nix-secrets-example.git";
flake = false;
};
Then make sure the options in '/system/$darwin or $wsl2>/hosts/$hostname/default.nix are all marked false as shown below. This will maintain the secrets skeleton, but should not error since no decryption configuration is provided.
nyx = {
modules = {
user.home = ../../shared/home.nix;
};
secrets = {
awsSSHKeys.enable = false;
awsConfig.enable = false;
userSSHKeys.enable = false;
userPGPKeys.enable = false;
};
profiles = {
desktop = {
enable = true;
};
};
};
If you want to actually build and decrypt secrets, here is what my secrets repository looks like:
.
├─ secrets.nix # The secrets file you're instructed to create in this tutorial => https://github.com/ryantm/agenix?tab=readme-ov-file#tutorial
├─ encrypted # Subdirectory to hold encrypted files
├─── id_ed25519.age files # Example encrypted file
** Note that if the repository is private and you're using sudo, it will be looking for the github ssh key in the /root/.ssh directory and not your user directory.
WSL2 Installation
- Make sure you have WSL enabled and installed. Click here if you need help setting up basic WSL2.
- Make sure you have git installed in windows. You can download it here.
- Open up a PowerShell window
- Clone this repo and start the windows side of the installation by executing start_here.ps1.
git clone https://github.com/mwdavisii/nyx.git
set-location ./nyx/setup/wsl
./start_here.ps1
- You should now be in your windows user directory, but in the NixOS shell. Move back into the startup directory and launch step2.sh.
cd ./nyx/setup/wsl
./step2.sh
Note
Some users have reported a shell error when running step 2. If you see an error message that contains \r, it's likely git converted line breaks to windows format. I think it's caused b having git config --global core.autocrlf set to true on windows. If this happens, the easiest thing to do is go to your home directory cd ~ and clone another copy of the repo through nix (commands below). If you do this this, don't forget to update your secrets.
sudo nix-channel --add https://nixos.org/channels/nixos-25.05 nixos
sudo nix-channel --update
nix-shell -p git vim
git clone https://github.com/mwdavisii/nyx
After this, you shou be able to continue to step 6.
- Before running the last step, open ./flake.nix in your favorite text editor and look for the lines below and change the following values:
- displayName => Display Name used in GitHub config
- email => Display Name used in GitHub config`
- signingKey => The key used to sign git commits. (you can leave blank)`
- windowsUserDirName => This is the folder name of your windows profile. It is used to create the symlink from WSL to VS Code and add it to your path.
*Note: Leave the userName as nixos for wsl unless you know how to configure non-default users in nixos for WSL. As of now, it requires building from nix-community/NixOS-WSL which is more than I care to tackle at the moment.
{
userName = "nixos";
email = "mwdavisii@gmail.com";
displayName = "Mike D.";
signingKey = "5A60221930345909";
windowsUserDirName = "mwdav";
}
- Finally, run the last script, step3.sh.
./step3.sh
Now close the current shell and open a new one. After the initial install, you can apply updates by executing the refresh script.
./switch.sh #Rebuilds and switches to the home environment.
Arch Linux
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
