nixos-config/README.md
2024-01-12 22:15:34 +01:00

342 lines
13 KiB
Markdown

<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```. By default ```$mainMod``` is the ```SUPER``` key
<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 = $mainMod SHIFT, left, movewindow, l```
- ```bind = $mainMod SHIFT, right, movewindow, r```
- ```bind = $mainMod SHIFT, up, movewindow, u```
- ```bind = $mainMod SHIFT, down, movewindow, d```
- ```bind = $mainMod CTRL, left, resizeactive, -80 0```
- ```bind = $mainMod CTRL, right, resizeactive, 80 0```
- ```bind = $mainMod CTRL, up, resizeactive, 0 -80```
- ```bind = $mainMod CTRL, down, resizeactive, 0 80```
- ```bind = $mainMod ALT, left, moveactive, -80 0```
- ```bind = $mainMod ALT, right, moveactive, 80 0```
- ```bind = $mainMod ALT, up, moveactive, 0 -80```
- ```bind = $mainMod 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