<h1 align="center">
   <img src="./.github/assets/logo/nixos-logo.png  " width="100px" /> 
   <br>
      Frost-Phoenix's Flakes 
   <br>
      <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/palette/macchiato.png" width="600px" /> <br>
   <div align="center">

   <div align="center">
      <p></p>
      <div align="center">
         <a href="https://github.com/Frost-Phoenix/nixos-config/stargazers">
            <img src="https://img.shields.io/github/stars/Frost-Phoenix/nixos-config?color=F5BDE6&labelColor=303446&style=for-the-badge&logo=starship&logoColor=F5BDE6">
         </a>
         <a href="https://github.com/Frost-Phoenix/nixos-config/">
            <img src="https://img.shields.io/github/repo-size/Frost-Phoenix/nixos-config?color=C6A0F6&labelColor=303446&style=for-the-badge&logo=github&logoColor=C6A0F6">
         </a>
         <a = href="https://nixos.org">
            <img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=303446&logo=NixOS&logoColor=white&color=91D7E3">
         </a>
         <a href="https://github.com/Frost-Phoenix/nixos-config/blob/main/LICENSE">
            <img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=313244&colorB=F5A97F&logo=unlicense&logoColor=F5A97F&"/>
         </a>
      </div>
      <br>
   </div>
</h1>

<br>
</div>

<p align="center">
   <img src="./.github/assets/screenshots/1.png" width="800px" /> <br>
</p>
<p align="center">
   Screeenshot last updated <b>2024-01-12</b>
</p>

### 🖼️ Gallery

<details>
<summary>
EXPAND
</summary>
<p align="center">
   <img src="./.github/assets/screenshots/3.png" width="800px" /> <br>
</p>
<p align="center">
   <img src="./.github/assets/screenshots/2.png" width="800px" /> <br>
</p>
</details>

# 🗃️ Overview

### 📚 Layout

-   [flake.nix](flake.nix) base of the configuration
-   [hosts](hosts) 🌳 per-host configurations that contain machine specific configurations
    - [nixos](hosts/nixos/) 🖥️ Default host
-   [modules](modules) 🍱 modularized NixOS configurations
    -   [core](modules/core/) ⚙️ Core NixOS configuration
    -   [homes](modules/home/) 🏠 my [Home-Manager](https://github.com/nix-community/home-manager) config
-   [pkgs](flake/pkgs) 📦 packages exported by my flake
-   [wallpapers](wallpapers/) 🌄 wallpapers collection

### 📓 Components
|                             | NixOS + Hyprland                                                                              |
| --------------------------- | :---------------------------------------------------------------------------------------------:
| **Window Manager**          | [Hyprland][Hyprland] |
| **Bar**                     | [Waybar][Waybar] |
| **Application Launcher**    | [wofi][wofi] |
| **Notification Daemon**     | [Mako][Mako] |
| **Terminal Emulator**       | [Kitty][Kitty] |
| **Shell**                   | [zsh][zsh] + [oh-my-zsh][oh-my-zsh] + [Starship][Starship] |
| **Text Editor**             | [VSCodium][VSCodium] + [Neovim][Neovim] |
| **network management tool** | [NetworkManager][NetworkManager] + [network-manager-applet][network-manager-applet] |
| **System resource monitor** | [Btop][Btop] |
| **File Manager**            | [nemo][nemo] + [yazi][yazi] |
| **Fonts**                   | [Nerd fonts][Nerd fonts] |
| **Color Scheme**            | [Catppuccin][Catppuccin] |
| **Cursor**                  | [Nordzy-cursors][Nordzy-cursors] |
| **Icons**                   | [catppuccin-papirus-folders][catppuccin-papirus-folders] |
| **Lockscreen**              | [Swaylock-effects][Swaylock-effects] |
| **Image Viewer**            | [imv][imv] |
| **Media Player**            | [mpv][mpv] |
| **Music Player**            | [audacious][audacious] |
| **Screenshot Software**     | [grimblast][grimblast] |
| **Screen Recording**        | [wf-recorder][wf-recorder] |
| **Clipboard**               | [wl-clipboard][wl-clipboard] |
| **Color Picker**            | [hyprpicker][hyprpicker] |


### 🔧 Shell aliases

<details>
<summary>
Utils (EXPAND)
</summary>

- ```c```     $\rightarrow$ ```clear```
- ```vim```   $\rightarrow$ ```nvim```
- ```cat```   $\rightarrow$ ```bat```
- ```nano```  $\rightarrow$ ```micro```
- ```icat```  $\rightarrow$ ```kitten icat```
- ```dsize``` $\rightarrow$ ```du -hs```
- ```findw``` $\rightarrow$ ```grep -rl```
- ```l```     $\rightarrow$ ```eza --icons  -a --group-directories-first -1```
- ```ll```    $\rightarrow$ ```eza --icons  -a --group-directories-first -1 --no-user --long```
- ```tree```  $\rightarrow$ ```eza --icons --tree --group-directories-first```
</details>

<details>
<summary>
Nixos (EXPAND)
</summary>

- ```cdnix```            $\rightarrow$ ```cd ~/nixos-config && codium ~/nixos-config```
- ```nix-shell```        $\rightarrow$ ```nix-shell --run zsh```
- ```nix-switch```       $\rightarrow$ ```sudo nixos-rebuild switch --flake ~/nixos-config#nixos```
- ```nix-switchu```      $\rightarrow$ ```sudo nixos-rebuild switch --upgrade --flake ~/nixos-config#nixos```
- ```nix-flake-update``` $\rightarrow$ ```sudo nix flake update ~/nixos-config#```
- ```nix-clean```        $\rightarrow$ ```sudo nix-collect-garbage && sudo nix-collect-garbage -d && sudo rm /nix/var/nix/gcroots/auto/* && nix-collect-garbage && nix-collect-garbage -d```
</details>

<details>
<summary>
Git (EXPAND)
</summary>

- ```ga```   $\rightarrow$ ```git add```
- ```gaa```  $\rightarrow$ ```git add --all```
- ```gs```   $\rightarrow$ ```git status```
- ```gb```   $\rightarrow$ ```git branch```
- ```gm```   $\rightarrow$ ```git merge```
- ```gpl```  $\rightarrow$ ```git pull```
- ```gplo``` $\rightarrow$ ```git pull origin```
- ```gps```  $\rightarrow$ ```git push```
- ```gpso``` $\rightarrow$ ```git push origin```
- ```gc```   $\rightarrow$ ```git commit```
- ```gcm```  $\rightarrow$ ```git commit -m```
- ```gch```  $\rightarrow$ ```git checkout```
- ```gchb``` $\rightarrow$ ```git checkout -b```
- ```gcoe``` $\rightarrow$ ```git config user.email```
- ```gcon``` $\rightarrow$ ```git config user.name```
- ```g```    $\rightarrow$ ```lazygit```
</details>

### 📝 Scripts

All the scripts are in ```modules/home/scripts/scripts/``` and are exported as packages in ```modules/home/scripts/default.nix```

### ⌨️ Keybinds

View all keybinds by pressing ```$mainMod F1```

<details>
<summary>
Complete list (EXPAND)
</summary>
   
   <details>
   <summary>
   Keybindings 
   </summary>
   
   - ```bind = $mainMod, Return, exec, kitty```
   - ```bind = ALT, Return, exec, kitty --title float_kitty```
   - ```bind = $mainMod SHIFT, Return, exec, kitty --start-as=fullscreen -o 'font_size=16'```
   - ```bind = $mainMod, B, exec, firefox```
   - ```bind = $mainMod, Q, killactive,```
   - ```bind = $mainMod, F, fullscreen, 0```
   - ```bind = $mainMod SHIFT, F, fullscreen, 1```
   - ```bind = $mainMod, Space, togglefloating,```
   - ```bind = $mainMod, D, exec, pkill wofi || wofi --show drun```
   - ```bind = $mainMod, Escape, exec, swaylock```
   - ```bind = $mainMod SHIFT, Escape, exec, shutdown-script```
   - ```bind = $mainMod, P, pseudo,```
   - ```bind = $mainMod, J, togglesplit,```
   - ```bind = $mainMod, E, exec, nemo```
   - ```bind = $mainMod SHIFT, B, exec, pkill -SIGUSR1 .waybar-wrapped```
   - ```bind = $mainMod, C ,exec, hyprpicker -a```
   - ```bind = $mainMod, G,exec, $HOME/.local/bin/toggle_layout```
   - ```bind = $mainMod, W,exec, pkill wofi || wallpaper-picker```
   </details>

   <details>
   <summary>
   Screenshot 
   </summary>
   
   - ```bind = $mainMod, Print, exec, grimblast --notify --cursor save area ~/Pictures/$(date +'%Y-%m-%d-At-%Ih%Mm%Ss').png```
   - ```bind = ,Print, exec, grimblast --notify --cursor  copy area```
   </details>

   <details>
   <summary>
   Switch window focus 
   </summary>
   
   - ```bind = $mainMod, left, movefocus, l```
   - ```bind = $mainMod, right, movefocus, r```
   - ```bind = $mainMod, up, movefocus, u```
   - ```bind = $mainMod, down, movefocus, d```
   </details>

   <details>
   <summary>
   Switch workspace 
   </summary>
   
   - ```bind = $mainMod, 1, workspace, 1```
   - ```bind = $mainMod, 2, workspace, 2```
   - ```bind = $mainMod, 3, workspace, 3```
   - ```bind = $mainMod, 4, workspace, 4```
   - ```bind = $mainMod, 5, workspace, 5```
   - ```bind = $mainMod, 6, workspace, 6```
   - ```bind = $mainMod, 7, workspace, 7```
   - ```bind = $mainMod, 8, workspace, 8```
   - ```bind = $mainMod, 9, workspace, 9```
   - ```bind = $mainMod, 0, workspace, 10```
   </details>

   <details>
   <summary>
   Switch window to workspace 
   </summary>

   - ```bind = $mainMod SHIFT, 1, movetoworkspace, 1```
   - ```bind = $mainMod SHIFT, 2, movetoworkspace, 2```
   - ```bind = $mainMod SHIFT, 3, movetoworkspace, 3```
   - ```bind = $mainMod SHIFT, 4, movetoworkspace, 4```
   - ```bind = $mainMod SHIFT, 5, movetoworkspace, 5```
   - ```bind = $mainMod SHIFT, 6, movetoworkspace, 6```
   - ```bind = $mainMod SHIFT, 7, movetoworkspace, 7```
   - ```bind = $mainMod SHIFT, 8, movetoworkspace, 8```
   - ```bind = $mainMod SHIFT, 9, movetoworkspace, 9```
   - ```bind = $mainMod SHIFT, 0, movetoworkspace, 10```
   - ```bind = $mainMod CTRL, c, movetoworkspace, empty```
   </details>

   <details>
   <summary>
   Window control 
   </summary>
   
   - ```bind = SUPER SHIFT, left, movewindow, l```
   - ```bind = SUPER SHIFT, right, movewindow, r```
   - ```bind = SUPER SHIFT, up, movewindow, u```
   - ```bind = SUPER SHIFT, down, movewindow, d```
   - ```bind = SUPER CTRL, left, resizeactive, -80 0```
   - ```bind = SUPER CTRL, right, resizeactive, 80 0```
   - ```bind = SUPER CTRL, up, resizeactive, 0 -80```
   - ```bind = SUPER CTRL, down, resizeactive, 0 80```
   - ```bind = SUPER ALT, left, moveactive,  -80 0```
   - ```bind = SUPER ALT, right, moveactive, 80 0```
   - ```bind = SUPER ALT, up, moveactive, 0 -80```
   - ```bind = SUPER ALT, down, moveactive, 0 80```
   </details>

   <details>
   <summary>
   Media and volume controls 
   </summary>
      
   - ```bind = ,XF86AudioRaiseVolume,exec, pamixer -i 2```
   - ```bind = ,XF86AudioLowerVolume,exec, pamixer -d 2```
   - ```bind = ,XF86AudioMute,exec, pamixer -t```
   - ```bind = ,XF86AudioPlay,exec, playerctl play-pause```
   - ```bind = ,XF86AudioNext,exec, playerctl next```
   - ```bind = ,XF86AudioPrev,exec, playerctl previous```
   - ```bind = , XF86AudioStop, exec, playerctl stop```
   - ```bind = $mainMod, mouse_down, workspace, e-1```
   - ```bind = $mainMod, mouse_up, workspace, e+1```
   </details>

   <details>
   <summary>
   Mouse binding 
   </summary>

   - ```bindm = $mainMod, mouse:272, movewindow```
   - ```bindm = $mainMod, mouse:273, resizewindow```
   </details>

</details>

# 🛠️ Instalation 

# 👥 Credits

Other dotfiles that I learned / copy from:

- Nix Flakes
  - [nomadics9/NixOS-Flake](https://github.com/nomadics9/NixOS-Flake2): This is where I start my nixos / hyprland journey.
  - [samiulbasirfahim/Flakes](https://github.com/samiulbasirfahim/Flakes): General flake / files structure
  - [justinlime/dotfiles](https://github.com/justinlime/dotfiles): Mainly waybar
  - [skiletro/nixfiles](https://github.com/skiletro/nixfiles): Vscodium config (that prevent it to crash)
  - [fufexan/dotfiles](https://github.com/fufexan/dotfiles)

- README
  - [ryan4yin/nix-config](https://github.com/ryan4yin/nix-config)
  - [NotAShelf/nyx](https://github.com/NotAShelf/nyx)
  - [sioodmy/dotfiles](https://github.com/sioodmy/dotfiles)
  - [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes)


<p align="center"><img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" /></p>

<!-- end of page, send back to the top -->

<div align="right">
  <a href="#readme">Back to the Top</a>
</div>

<!-- Links -->
[Hyprland]: https://github.com/hyprwm/Hyprland
[Kitty]: https://github.com/kovidgoyal/kitty
[Starship]: https://github.com/starship/starship
[Waybar]: https://github.com/Alexays/Waybar
[wofi]: https://hg.sr.ht/~scoopta/wofi
[Btop]: https://github.com/aristocratos/btop
[nemo]: https://github.com/linuxmint/nemo
[yazi]: https://github.com/sxyazi/yazi
[zsh]: https://ohmyz.sh/
[oh-my-zsh]: https://ohmyz.sh/
[Swaylock-effects]: https://github.com/mortie/swaylock-effects
[audacious]: https://audacious-media-player.org/
[mpv]: https://github.com/mpv-player/mpv
[VSCodium]:https://vscodium.com/
[Neovim]: https://github.com/neovim/neovim
[grimblast]: https://github.com/hyprwm/contrib
[imv]: https://sr.ht/~exec64/imv/
[Mako]: https://github.com/emersion/mako
[Nerd fonts]: https://github.com/ryanoasis/nerd-fonts
[NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager
[network-manager-applet]: https://gitlab.gnome.org/GNOME/network-manager-applet/
[wl-clipboard]: https://github.com/bugaevc/wl-clipboard
[wf-recorder]: https://github.com/ammen99/wf-recorder
[hyprpicker]: https://github.com/hyprwm/hyprpicker
[Catppuccin]: https://github.com/catppuccin/catppuccin
[catppuccin-papirus-folders]: https://github.com/catppuccin/papirus-folders
[Nordzy-cursors]: https://github.com/alvatip/Nordzy-cursors