Frost-Phoenix/nixos-config

❄️ NixOs / Hyprland rice with Home-Manager ❄️

Nix

943

1,880 commits

updated Jun 25, 2026

See the code

README


Frost-Phoenix's Flakes





Screenshots last updated 2025-12-25

Waybar (EXPAND)
Swaylock (EXPAND)
Hyprlock (EXPAND)
Power menu (EXPAND)
Launcher (EXPAND)
Wallpapers picker (EXPAND)
Notification (EXPAND)
Notification center (EXPAND)

You can find my previous Catppuccin rice here (outdated).

🗃️ Overview

[!IMPORTANT] This is my personal NixOS configuration, shared for reference and inspiration.

Please be aware:

  • This configuration is constantly evolving - expect breaking changes
  • The README and documentation are most likely outdated
  • Features may be partially implemented or broken
  • I provide no guarantees of stability

Before using any part of this configuration:

  1. Review the code thoroughly
  2. Understand what each module does
  3. And adapt it to your specific needs

📚 Layout

  • flake.nix Base of the configuration
  • hosts Per-host configurations that contain machine specific configurations
    • desktop Desktop specific configuration
    • laptop Laptop specific configuration
    • vm VM specific configuration
  • modules Modularized NixOS configurations
  • pkgs Custom packages build from source
  • scripts Custom shell scripts
  • wallpapers Wallpapers collection

🛠️ System Components & Applications

ComponentSoftware
Window ManagerHyprland
BarWaybar
Application LauncherRofi
Notification Daemonswaync
Terminal EmulatorGhostty
Shellzsh + powerlevel10k
Text EditorVSCodium + Neovim
network management toolNetworkManager + network-manager-applet
System resource monitorBtop
File Managersuperfile + nemo
FontsMaple Mono
Color SchemeGruvbox Dark Hard
GTK themeColloid gtk theme
CursorBibata-Modern-Ice
IconsPapirus-Dark
LockscreenHyprlock + Swaylock-effects
Image Viewerimv
Media Playermpv
Music Playeraudacious
Screenshot Softwaregrimblast
Screen Recordingwf-recorder + OBS
Clipboardwl-clip-persist
Color Pickerhyprpicker

📝 Shell aliases

Shell aliases are defined in two places. You can find git related aliases in git.nix, and all the others in zsh_alias.nix.

Some notable ones that can help you are:

AliasCommandPurpose
nftnh-notify nh os testTest configuration changes without modifying the bootloader
nfsnh-notify nh os switchRebuild and activate the new system configuration
nfunh-notify nh os switch --updateUpdate all flake inputs and rebuild/activate the new configuration (system update)
nsnom-shell --run zshEnter a nix shell
ndnom develop --command zshEnter a development environment from a flake.nix file
nbnom buildBuild packages exported by a flake
ncnh-notify nh clean all --keep 5Clean up old Nix generations, keeping only the 5 most recent
nsearchnh searchSearch nixpkgs for available packages

🛠️ Custom Scripts

All of the scripts are in the ./scripts/scripts/ folder and are exported as packages in ./scripts/scripts.nix.

Shell scripts are automatically discovered and exported as standalone packages. The package name becomes the script base name without its extension (i.e., ascii.sh will become the ascii command).

Note: Scripts must have names that end with .sh and be tracked by git to be automatically detected.

Since scripts are exposed as packages, you can:

  • Run them directly from the terminal (e.g., ascii)
  • Bind them to keybindings (see binds.nix for examples)
  • Call them from other scripts or automation tools

To add your own script:

  1. Add a new .sh file to ./scripts/scripts/
  2. Ensure it's executable (chmod +x)
  3. Add it to git (git add ./scripts/scripts/<name>.sh)
  4. Rebuild your configuration (nfs or nft)
  5. The script will be automatically available as a command

Location: ./scripts/

scripts/
├── scripts/            # All shell scripts are here
│   └── <script>.sh
└── scripts.nix         # Automatic scripts packaging

⌨️ Keybinds

Keybindings are defined in binds.nix.

Quick access: Press $mod F1 to view all keybinds.

Here are some of the main keybinds:

CategoryKey ExamplesPurpose
Navigation$mod + 0-9/arrow keysworkspace & window navigation
Applications$mod + return/d/b/eterminal, launcher, browser, file manager
Window Control$mod + q/f/spaceclose, fullscreen, float windows
Media & ToolsPrint, $mod + c/wscreenshots, color picker, wallpaper picker
System$mod + escape/shift escapelockscreen, power menu

🚀 Installation

[!CAUTION] This is a personal configuration. Use at your own risk. I am not responsible for any issues that may arise from using this setup. Always review and adapt the configuration to your needs before installation.

[!WARNING] VM Usage Notice: Hyprland does not officially support virtual machines. While it often works, you may encounter graphical issues, performance problems, or complete incompatibility depending on your VM configuration.

If you wish to test this configuration in a VM, please review Hyprland's VM guide for setup recommendations and known limitations.

Installation Steps

1. Install NixOS

First, install NixOS using any graphical ISO.

Tested with the GNOME installer using the "No desktop" option

2. Clone the Repository

nix-shell -p git
git clone https://github.com/Frost-Phoenix/nixos-config
cd nixos-config

The configuration expects the repo to be located at $HOME/nixos-config.

3. Run the Install Script

[!TIP] As it is better to know what a script does before running it, you are advised to read and understand it. You can find the install script here

./install.sh

The script will guide you through host selection and apply the configuration.

The installation phase can take quite some time depending on your machine.

[!NOTE] If the build gets stuck , due to RAM constraints (see PR #30), you may need to edit the script to limit CPU cores:

# Change in install.sh:
- sudo nixos-rebuild switch --flake .#${HOST}
+ sudo nixos-rebuild switch --cores 4 --flake .#${HOST}

4. Reboot

After the installation completes, reboot your system. If the installation was successful, you should be greeted by Hyprlock.

5. Post Install

Some manual configuration is still required:

  • Browser: Configure your browser extensions, settings, etc. (for now, all browser configuration is done manually)
  • Aseprite Themes: Import themes from aseprite themes folder
  • Git Identity: Update the git.nix file with your name and email
programs.git = {
   ...
   userName = "<your_name>";
   userEmail = "<your_email>";
   ...
};

👥 Credits

Other dotfiles that I copied learned from:

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

dotfiles
flakes
gruvbox
gruvbox-dark
home-manager
hyprland
linux-rice
nix
nix-flake
nixos
unixporn
zsh

Frost-Phoenix/nixos-config

❄️ NixOs / Hyprland rice with Home-Manager ❄️

Nix

943

1,880 commits

updated Jun 25, 2026

See the code

README


Frost-Phoenix's Flakes





Screenshots last updated 2025-12-25

Waybar (EXPAND)
Swaylock (EXPAND)
Hyprlock (EXPAND)
Power menu (EXPAND)
Launcher (EXPAND)
Wallpapers picker (EXPAND)
Notification (EXPAND)
Notification center (EXPAND)

You can find my previous Catppuccin rice here (outdated).

🗃️ Overview

[!IMPORTANT] This is my personal NixOS configuration, shared for reference and inspiration.

Please be aware:

  • This configuration is constantly evolving - expect breaking changes
  • The README and documentation are most likely outdated
  • Features may be partially implemented or broken
  • I provide no guarantees of stability

Before using any part of this configuration:

  1. Review the code thoroughly
  2. Understand what each module does
  3. And adapt it to your specific needs

📚 Layout

  • flake.nix Base of the configuration
  • hosts Per-host configurations that contain machine specific configurations
    • desktop Desktop specific configuration
    • laptop Laptop specific configuration
    • vm VM specific configuration
  • modules Modularized NixOS configurations
  • pkgs Custom packages build from source
  • scripts Custom shell scripts
  • wallpapers Wallpapers collection

🛠️ System Components & Applications

ComponentSoftware
Window ManagerHyprland
BarWaybar
Application LauncherRofi
Notification Daemonswaync
Terminal EmulatorGhostty
Shellzsh + powerlevel10k
Text EditorVSCodium + Neovim
network management toolNetworkManager + network-manager-applet
System resource monitorBtop
File Managersuperfile + nemo
FontsMaple Mono
Color SchemeGruvbox Dark Hard
GTK themeColloid gtk theme
CursorBibata-Modern-Ice
IconsPapirus-Dark
LockscreenHyprlock + Swaylock-effects
Image Viewerimv
Media Playermpv
Music Playeraudacious
Screenshot Softwaregrimblast
Screen Recordingwf-recorder + OBS
Clipboardwl-clip-persist
Color Pickerhyprpicker

📝 Shell aliases

Shell aliases are defined in two places. You can find git related aliases in git.nix, and all the others in zsh_alias.nix.

Some notable ones that can help you are:

AliasCommandPurpose
nftnh-notify nh os testTest configuration changes without modifying the bootloader
nfsnh-notify nh os switchRebuild and activate the new system configuration
nfunh-notify nh os switch --updateUpdate all flake inputs and rebuild/activate the new configuration (system update)
nsnom-shell --run zshEnter a nix shell
ndnom develop --command zshEnter a development environment from a flake.nix file
nbnom buildBuild packages exported by a flake
ncnh-notify nh clean all --keep 5Clean up old Nix generations, keeping only the 5 most recent
nsearchnh searchSearch nixpkgs for available packages

🛠️ Custom Scripts

All of the scripts are in the ./scripts/scripts/ folder and are exported as packages in ./scripts/scripts.nix.

Shell scripts are automatically discovered and exported as standalone packages. The package name becomes the script base name without its extension (i.e., ascii.sh will become the ascii command).

Note: Scripts must have names that end with .sh and be tracked by git to be automatically detected.

Since scripts are exposed as packages, you can:

  • Run them directly from the terminal (e.g., ascii)
  • Bind them to keybindings (see binds.nix for examples)
  • Call them from other scripts or automation tools

To add your own script:

  1. Add a new .sh file to ./scripts/scripts/
  2. Ensure it's executable (chmod +x)
  3. Add it to git (git add ./scripts/scripts/<name>.sh)
  4. Rebuild your configuration (nfs or nft)
  5. The script will be automatically available as a command

Location: ./scripts/

scripts/
├── scripts/            # All shell scripts are here
│   └── <script>.sh
└── scripts.nix         # Automatic scripts packaging

⌨️ Keybinds

Keybindings are defined in binds.nix.

Quick access: Press $mod F1 to view all keybinds.

Here are some of the main keybinds:

CategoryKey ExamplesPurpose
Navigation$mod + 0-9/arrow keysworkspace & window navigation
Applications$mod + return/d/b/eterminal, launcher, browser, file manager
Window Control$mod + q/f/spaceclose, fullscreen, float windows
Media & ToolsPrint, $mod + c/wscreenshots, color picker, wallpaper picker
System$mod + escape/shift escapelockscreen, power menu

🚀 Installation

[!CAUTION] This is a personal configuration. Use at your own risk. I am not responsible for any issues that may arise from using this setup. Always review and adapt the configuration to your needs before installation.

[!WARNING] VM Usage Notice: Hyprland does not officially support virtual machines. While it often works, you may encounter graphical issues, performance problems, or complete incompatibility depending on your VM configuration.

If you wish to test this configuration in a VM, please review Hyprland's VM guide for setup recommendations and known limitations.

Installation Steps

1. Install NixOS

First, install NixOS using any graphical ISO.

Tested with the GNOME installer using the "No desktop" option

2. Clone the Repository

nix-shell -p git
git clone https://github.com/Frost-Phoenix/nixos-config
cd nixos-config

The configuration expects the repo to be located at $HOME/nixos-config.

3. Run the Install Script

[!TIP] As it is better to know what a script does before running it, you are advised to read and understand it. You can find the install script here

./install.sh

The script will guide you through host selection and apply the configuration.

The installation phase can take quite some time depending on your machine.

[!NOTE] If the build gets stuck , due to RAM constraints (see PR #30), you may need to edit the script to limit CPU cores:

# Change in install.sh:
- sudo nixos-rebuild switch --flake .#${HOST}
+ sudo nixos-rebuild switch --cores 4 --flake .#${HOST}

4. Reboot

After the installation completes, reboot your system. If the installation was successful, you should be greeted by Hyprlock.

5. Post Install

Some manual configuration is still required:

  • Browser: Configure your browser extensions, settings, etc. (for now, all browser configuration is done manually)
  • Aseprite Themes: Import themes from aseprite themes folder
  • Git Identity: Update the git.nix file with your name and email
programs.git = {
   ...
   userName = "<your_name>";
   userEmail = "<your_email>";
   ...
};

👥 Credits

Other dotfiles that I copied learned from:

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

dotfiles
flakes
gruvbox
gruvbox-dark
home-manager
hyprland
linux-rice
nix
nix-flake
nixos
unixporn
zsh

Significant stargazers

Donald Williams

54 followers · starred Jan 2025

Adrian

60 followers · starred Jun 2024

Mahyar Mirrashed

31 followers · starred Aug 2026

Justin

20 followers · starred Apr 2025