v4.0.0
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
16
.github/assets/README_template.md
vendored
@@ -30,8 +30,7 @@ _secrets_, and _custom theming_ all in one place.
|
|||||||
|
|
||||||
**Features:**
|
**Features:**
|
||||||
|
|
||||||
- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel,
|
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
|
||||||
etc.)
|
|
||||||
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
||||||
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
||||||
|
|
||||||
@@ -39,12 +38,11 @@ _secrets_, and _custom theming_ all in one place.
|
|||||||
|
|
||||||
{md_table_of_content}
|
{md_table_of_content}
|
||||||
|
|
||||||
## Gallery
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
@@ -55,7 +53,6 @@ Contains **dotfiles and settings** that apply to your user environment.
|
|||||||
**Subfolders:**
|
**Subfolders:**
|
||||||
|
|
||||||
- `programs` is a collection of apps configured with home-manager
|
- `programs` is a collection of apps configured with home-manager
|
||||||
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
|
|
||||||
- `system` is some "desktop environment" configuration
|
- `system` is some "desktop environment" configuration
|
||||||
|
|
||||||
### 🐧 /nixos
|
### 🐧 /nixos
|
||||||
@@ -120,9 +117,6 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
|||||||
|
|
||||||
- [SERVER](docs/SERVER.md): Check out the server documentation
|
- [SERVER](docs/SERVER.md): Check out the server documentation
|
||||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||||
- [SCRIPTS](docs/SCRIPTS.md): A list of available scripts and their usage
|
|
||||||
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in
|
|
||||||
Hyprland
|
|
||||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
||||||
collection of wallpapers
|
collection of wallpapers
|
||||||
|
|
||||||
|
|||||||
BIN
.github/assets/large.png
vendored
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 412 KiB |
BIN
.github/assets/logo.png
vendored
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 12 KiB |
BIN
.github/assets/nixy/1.png
vendored
|
Before Width: | Height: | Size: 643 KiB |
BIN
.github/assets/nixy/2.png
vendored
|
Before Width: | Height: | Size: 301 KiB |
BIN
.github/assets/nixy/3.png
vendored
|
Before Width: | Height: | Size: 404 KiB |
BIN
.github/assets/nixy/4.png
vendored
|
Before Width: | Height: | Size: 1001 KiB |
BIN
.github/assets/rose-pine/browser-and-notifications.png
vendored
Normal file
|
After Width: | Height: | Size: 837 KiB |
BIN
.github/assets/rose-pine/flake-spotify.png
vendored
Normal file
|
After Width: | Height: | Size: 738 KiB |
BIN
.github/assets/rose-pine/home.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
2
.github/scripts/create_readme.sh
vendored
@@ -10,7 +10,7 @@ table_of_content=$(markdown-table-of-contents --start-by 2 ./.github/assets/READ
|
|||||||
readme_content=$(cat "./.github/assets/README_template.md")
|
readme_content=$(cat "./.github/assets/README_template.md")
|
||||||
|
|
||||||
# Replace variables
|
# Replace variables
|
||||||
readme_content=${readme_content//\{primarycolor\}/A594FD}
|
readme_content=${readme_content//\{primarycolor\}/A89AD1}
|
||||||
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
|
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
|
||||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
||||||
|
|
||||||
|
|||||||
26
.github/scripts/create_scripts_docs.sh
vendored
@@ -1,26 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
|
||||||
|
|
||||||
DOCS_FILE="./docs/SCRIPTS.md"
|
|
||||||
SCRIPTS_FOLDER="./home/scripts"
|
|
||||||
|
|
||||||
# search for every directory in the scripts folder:
|
|
||||||
# The docs for each scripts are in the beginning of the file prefixed by "#-" or "# -" for the title
|
|
||||||
# Inside the folders, the scripts are stored in default.nix files
|
|
||||||
echo "[//]: # (This file is autogenerated)" >"$DOCS_FILE"
|
|
||||||
echo "# Scripts" >>"$DOCS_FILE"
|
|
||||||
echo "" >>"$DOCS_FILE"
|
|
||||||
echo "Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path." >>"$DOCS_FILE"
|
|
||||||
echo "" >>"$DOCS_FILE"
|
|
||||||
|
|
||||||
for folder in "$SCRIPTS_FOLDER"/*; do
|
|
||||||
script="$folder/default.nix"
|
|
||||||
[[ -f "$script" ]] || continue
|
|
||||||
|
|
||||||
content=$(cat "$script")
|
|
||||||
content=$(echo "$content" | grep -E "^#-|^# -" | sed 's/^#- //;s/^# - //;s/#-//')
|
|
||||||
|
|
||||||
echo "$content" >>"$DOCS_FILE"
|
|
||||||
echo "" >>"$DOCS_FILE"
|
|
||||||
done
|
|
||||||
60
.github/scripts/keybindings_to_markdown.sh
vendored
@@ -1,60 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# A script to parse the Hyprland configuration to store keybindings in a table
|
|
||||||
|
|
||||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
|
||||||
|
|
||||||
KEYBINDINGS_FILE="./docs/KEYBINDINGS-HYPRLAND.md"
|
|
||||||
|
|
||||||
function getList() {
|
|
||||||
content=$1
|
|
||||||
name=$2
|
|
||||||
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
|
|
||||||
list=$(echo "$content" | tail +"$list_start")
|
|
||||||
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
|
|
||||||
list=$(echo "$list" | head -n"$list_end")
|
|
||||||
|
|
||||||
echo "$list"
|
|
||||||
}
|
|
||||||
|
|
||||||
[[ -f "./home/system/hyprland/bindings.nix" ]] || (echo "File ./home/system/hyprland/bindings.nix not found" && exit 1)
|
|
||||||
|
|
||||||
config=$(cat "./home/system/hyprland/bindings.nix")
|
|
||||||
|
|
||||||
# Bind
|
|
||||||
bind=$(getList "$config" "bind")
|
|
||||||
# Bindm (mouse)
|
|
||||||
bindm=$(getList "$config" "bindm")
|
|
||||||
# Bindl (lock)
|
|
||||||
bindl=$(getList "$config" "bindl")
|
|
||||||
# Bindle (lock, repetition)
|
|
||||||
bindle=$(getList "$config" "bindle")
|
|
||||||
|
|
||||||
# Join the lists:
|
|
||||||
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
|
|
||||||
|
|
||||||
echo "[//]: # (This file is autogenerated)" >"$KEYBINDINGS_FILE"
|
|
||||||
echo "# Keybindings for Hyprland" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "> [!NOTE]" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "> SUPER is the windows key by default" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "" >>"$KEYBINDINGS_FILE"
|
|
||||||
|
|
||||||
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "| Move app to Workspace | SHIFT + SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
|
|
||||||
echo "$keybindings" | while read -r line; do
|
|
||||||
comment=$(echo "$line" | cut -d\# -f2)
|
|
||||||
line=$(echo "$line" | cut -d\# -f1)
|
|
||||||
line=${line:1:${#line}-3}
|
|
||||||
mod=$(echo "$line" | cut -d, -f1)
|
|
||||||
key=$(echo "$line" | cut -d, -f2)
|
|
||||||
# dispatcher=$(echo "$line" | cut -d, -f3)
|
|
||||||
# params=$(echo "$line" | cut -d, -f4)
|
|
||||||
|
|
||||||
[[ $mod == '$mod' ]] && mod="SUPER + "
|
|
||||||
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
|
|
||||||
|
|
||||||
echo "| ${comment:1} | $mod$key |" >>"$KEYBINDINGS_FILE"
|
|
||||||
done
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- 'home/system/hyprland/bindings.nix'
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
update-readme:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./
|
|
||||||
steps:
|
|
||||||
- name: Check out the repository to the runner
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Run a script
|
|
||||||
run: |
|
|
||||||
chmod +x ./.github/scripts/keybindings_to_markdown.sh
|
|
||||||
./.github/scripts/keybindings_to_markdown.sh
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
git add .
|
|
||||||
git commit -m "Update KEYBINDINGS-HYPRLAND.md (auto)" && git push
|
|
||||||
exit 0
|
|
||||||
24
.github/workflows/update-scripts-docs.yml
vendored
@@ -1,24 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- 'home/scripts/**'
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
update-readme:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./
|
|
||||||
steps:
|
|
||||||
- name: Check out the repository to the runner
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Run a script
|
|
||||||
run: |
|
|
||||||
chmod +x ./.github/scripts/create_scripts_docs.sh
|
|
||||||
./.github/scripts/create_scripts_docs.sh
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
git add .
|
|
||||||
git commit -m "Update SCRIPTS.md (auto)" && git push
|
|
||||||
exit 0
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
[//]: # (This file is autogenerated)
|
|
||||||
# Keybindings for Hyprland
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> SUPER is the windows key by default
|
|
||||||
|
|
||||||
| Description | Keybinding |
|
|
||||||
| -- | -- |
|
|
||||||
| Switch Workspace | SUPER + {Number} |
|
|
||||||
| Move app to Workspace | SHIFT + SUPER + {Number} |
|
|
||||||
| Proton VPN | SUPER + V |
|
|
||||||
| Proton Authenticator | SUPER + A |
|
|
||||||
| Lock | SUPER + L |
|
|
||||||
| Launcher | SUPER + SPACE |
|
|
||||||
| "$mod,SPACE, exec, menu" | |
|
|
||||||
| Powermenu | SUPER + X |
|
|
||||||
| Toggle HyprFocus | SHIFT + SUPER + SPACE |
|
|
||||||
| Close window | SUPER + Q |
|
|
||||||
| Toggle Floating | SUPER + T |
|
|
||||||
| Toggle Fullscreen | SUPER + F |
|
|
||||||
| Move focus left | SUPER + left |
|
|
||||||
| Move focus Right | SUPER + right |
|
|
||||||
| Move focus Up | SUPER + up |
|
|
||||||
| Move focus Down | SUPER + down |
|
|
||||||
| Focus previous monitor | SHIFT + SUPER + up |
|
|
||||||
| Focus next monitor | SHIFT + SUPER + down |
|
|
||||||
| Add to master | SHIFT + SUPER + left |
|
|
||||||
| Remove from master | SHIFT + SUPER + right |
|
|
||||||
| Screenshot region | SUPER + PRINT |
|
|
||||||
| Screenshot monitor | PRINT |
|
|
||||||
| Screenshot window | SHIFT + SUPER + PRINT |
|
|
||||||
| Screenshot region then edit | ALTPRINT |
|
|
||||||
| Toggle hyprpanel | SHIFT + SUPER + T |
|
|
||||||
| Toggle night shift | SHIFT + SUPER + F2 |
|
|
||||||
| Toggle night shift | SHIFT + SUPER + F3 |
|
|
||||||
| Move Window (mouse) | SUPER + mouse:272 |
|
|
||||||
| Resize Window (mouse) | SUPER + R |
|
|
||||||
| Toggle Mute | XF86AudioMute |
|
|
||||||
| Play/Pause Song | XF86AudioPlay |
|
|
||||||
| Next Song | XF86AudioNext |
|
|
||||||
| Previous Song | XF86AudioPrev |
|
|
||||||
| Lock when closing Lid | switch:Lid Switch |
|
|
||||||
| Sound Up | XF86AudioRaiseVolume |
|
|
||||||
| Sound Down | XF86AudioLowerVolume |
|
|
||||||
| Brightness Up | XF86MonBrightnessUp |
|
|
||||||
| Brightness Down | XF86MonBrightnessDown |
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
[//]: # (This file is autogenerated)
|
|
||||||
# Scripts
|
|
||||||
|
|
||||||
Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path.
|
|
||||||
|
|
||||||
## Brightness
|
|
||||||
|
|
||||||
This module provides a set of scripts to control the brightness of the screen.
|
|
||||||
|
|
||||||
- `brightness-up` increases the brightness by 5%.
|
|
||||||
- `brightness-down` decreases the brightness by 5%.
|
|
||||||
- `brightness-set [value]` sets the brightness to the given value.
|
|
||||||
- `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
|
|
||||||
|
|
||||||
## Caffeine
|
|
||||||
|
|
||||||
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
|
|
||||||
|
|
||||||
- `caffeine-status` - Check if hypridle is running. (0/1)
|
|
||||||
- `caffeine-status-icon` - Check if hypridle is running. (icon)
|
|
||||||
- `caffeine` - Toggle hypridle.
|
|
||||||
|
|
||||||
## Hyprfocus
|
|
||||||
|
|
||||||
A simple script to toggle focus on few windows in Hyprland.
|
|
||||||
(disable gaps, border, shadow, opacity, etc.)
|
|
||||||
|
|
||||||
- `hyprfocus-on` - Enable hyprfocus.
|
|
||||||
- `hyprfocus-off` - Disable hyprfocus.
|
|
||||||
- `hyprfocus-toggle` - Toggle hyprfocus.
|
|
||||||
|
|
||||||
## Hyprpanel
|
|
||||||
|
|
||||||
Quick scripts to toggle, reload, hide & show hyprpanel.
|
|
||||||
|
|
||||||
- `hyprpanel-toggle` - Toggle hyprpanel (hide/show).
|
|
||||||
- `hyprpanel-show` - Show hyprpanel.
|
|
||||||
- `hyprpanel-hide` - Hide hyprpanel.
|
|
||||||
- `hyprpanel-reload` - Reload hyprpanel.
|
|
||||||
|
|
||||||
## Nerdfont FZF
|
|
||||||
|
|
||||||
This module provides a script to search for Nerd Fonts icons using fzf.
|
|
||||||
|
|
||||||
- `nerdfont-fzf` - Search for Nerd Fonts icons using fzf.
|
|
||||||
|
|
||||||
## Night-Shift
|
|
||||||
|
|
||||||
Night-Shift is a feature that reduces the amount of blue light emitted by your screen, which can help reduce eye strain and improve sleep quality. This module provides a set of scripts to control Night-Shift on your system.
|
|
||||||
It use hyprsunset to control the screen temperature.
|
|
||||||
|
|
||||||
- `night-shift-on` activates Night-Shift.
|
|
||||||
- `night-shift-off` deactivates Night-Shift.
|
|
||||||
- `night-shift` toggles Night-Shift.
|
|
||||||
- `night-shift-status` checks if Night-Shift is active. (0/1)
|
|
||||||
- `night-shift-status-icon` checks if Night-Shift is active. (icon)
|
|
||||||
|
|
||||||
## Nixy
|
|
||||||
|
|
||||||
Nixy is a simple script that I use to manage my NixOS system. It's a simple script that provides a menu to rebuild, test, update, collect garbage, clean boot menu, etc.
|
|
||||||
|
|
||||||
- `nixy` - UI wizard to manage the system.
|
|
||||||
- `nixy rebuild` - Rebuild the system.
|
|
||||||
- `nixy ...` - ... see the script for more commands.
|
|
||||||
|
|
||||||
## Notif
|
|
||||||
|
|
||||||
|
|
||||||
- `notif {id} {title} {description}` - Sends a notification
|
|
||||||
|
|
||||||
## Screenshot
|
|
||||||
|
|
||||||
This module provides a script to take screenshots using `grimblast` and `swappy`.
|
|
||||||
|
|
||||||
- `screenshot [region|window|monitor] [swappy]` - Take a screenshot of the region, window, or monitor. Optionally, use `swappy` to copy the screenshot to the clipboard.
|
|
||||||
|
|
||||||
## Sound
|
|
||||||
|
|
||||||
This module provides a set of scripts to control the volume of the default audio sink using `wpctl`.
|
|
||||||
|
|
||||||
- `sound-up` increases the volume by 5%.
|
|
||||||
- `sound-down` decreases the volume by 5%.
|
|
||||||
- `sound-set [value]` sets the volume to the given value.
|
|
||||||
- `sound-toggle` toggles the mute state of the default audio sink.
|
|
||||||
|
|
||||||
## System
|
|
||||||
|
|
||||||
Usefull quick scripts
|
|
||||||
|
|
||||||
- `lock` - Lock the screen. (hyprlock)
|
|
||||||
- `powermode-toggle` - Toggle between performance and balanced power mode. (powerprofilesctl)
|
|
||||||
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
# SERVER
|
# SERVER
|
||||||
|
|
||||||
|
> Update in comming. Early 2026
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **Tailscale**. The server is designed for private, secure, and easily manageable self-hosting of various services.
|
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **Tailscale**. The server is designed for private, secure, and easily manageable self-hosting of various services.
|
||||||
@@ -20,8 +22,6 @@ The server hosts several key applications:
|
|||||||
### **Core Infrastructure**
|
### **Core Infrastructure**
|
||||||
|
|
||||||
- **NGINX**: Reverse proxy for routing traffic to services via `example.org`.
|
- **NGINX**: Reverse proxy for routing traffic to services via `example.org`.
|
||||||
- **Bitwarden**: A self-hosted password manager for secure credential storage.
|
|
||||||
- **Nextcloud**: A private cloud solution for file synchronization and collaboration.
|
|
||||||
|
|
||||||
### **Networking & Security**
|
### **Networking & Security**
|
||||||
|
|
||||||
@@ -30,7 +30,6 @@ The server hosts several key applications:
|
|||||||
### **Monitoring & Storage**
|
### **Monitoring & Storage**
|
||||||
|
|
||||||
- **Glance**: An awesome dashboard! (See the screenshot above)
|
- **Glance**: An awesome dashboard! (See the screenshot above)
|
||||||
- **Hoarder**: A self-hostable bookmark-everything app (links, notes and images)
|
|
||||||
|
|
||||||
### **Media & Content Management**
|
### **Media & Content Management**
|
||||||
|
|
||||||
@@ -52,11 +51,3 @@ The server hosts several key applications:
|
|||||||
4. **Access Control**
|
4. **Access Control**
|
||||||
- Only devices within the Tailscale network can reach the services.
|
- Only devices within the Tailscale network can reach the services.
|
||||||
- Firewall rules restrict access further based on necessity.
|
- Firewall rules restrict access further based on necessity.
|
||||||
|
|
||||||
## What's Next?
|
|
||||||
|
|
||||||
I want to self-host:
|
|
||||||
|
|
||||||
- **A great todolist app**: One that is compatible with markdown & IOS
|
|
||||||
- **Cyberchef**
|
|
||||||
- **Maybe**: An app to manage finances
|
|
||||||
|
|||||||
@@ -3,19 +3,15 @@
|
|||||||
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
||||||
You can change the selected theme by changing the import statement of your host's variables.nix file.
|
You can change the selected theme by changing the import statement of your host's variables.nix file.
|
||||||
|
|
||||||
> [!TIP]
|
|
||||||
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
|
|
||||||
|
|
||||||
## Create your theme
|
## Create your theme
|
||||||
|
|
||||||
Create a copy of one of the existing themes and change the variables.
|
Create a copy of one of the existing themes and change the variables.
|
||||||
Wallpapers are loaded from the [nixy-wallpapers](https://github.com/anotherhadi/nixy-wallpapers) repo.
|
Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
|
||||||
|
|
||||||
## Gallery
|
## Gallery
|
||||||
|
|
||||||
### Nixy
|
### Rose-pine
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|
|
||||||
|
|||||||
751
flake.lock
generated
14
flake.nix
@@ -10,23 +10,29 @@
|
|||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
|
|
||||||
stylix.url = "github:danth/stylix";
|
stylix.url = "github:danth/stylix";
|
||||||
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
|
|
||||||
nixcord.url = "github:kaylorben/nixcord";
|
nixcord.url = "github:kaylorben/nixcord";
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
nixarr.url = "github:rasmus-kirk/nixarr";
|
|
||||||
nvf.url = "github:notashelf/nvf";
|
nvf.url = "github:notashelf/nvf";
|
||||||
vicinae.url = "github:vicinaehq/vicinae";
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
caelestia-shell = {
|
||||||
|
url = "github:caelestia-dots/shell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
caelestia-cli = {
|
||||||
|
url = "github:caelestia-dots/cli";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
spicetify-nix = {
|
spicetify-nix = {
|
||||||
url = "github:Gerg-L/spicetify-nix";
|
url = "github:Gerg-L/spicetify-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
# Server
|
||||||
eleakxir.url = "github:anotherhadi/eleakxir";
|
eleakxir.url = "github:anotherhadi/eleakxir";
|
||||||
|
nixarr.url = "github:rasmus-kirk/nixarr";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {nixpkgs, ...}: {
|
outputs = inputs @ {nixpkgs, ...}: {
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
# Alacritty is a fast, cross-platform, OpenGL terminal emulator.
|
|
||||||
{
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
window.padding = {
|
|
||||||
x = 10;
|
|
||||||
y = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# This file is used to sign git commits using an SSH key.
|
# This file is used to sign git commits using an SSH key.
|
||||||
{
|
{
|
||||||
# Obviously, change this to your own SSH key.
|
# CHANGEME: change this to your own SSH key.
|
||||||
home.file.".ssh/allowed_signers".text = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINhWby7lUUXQNKbRu9/UOrGjWDf3fvoAwGHomWv/+lL";
|
home.file.".ssh/allowed_signers".text = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINhWby7lUUXQNKbRu9/UOrGjWDf3fvoAwGHomWv/+lL";
|
||||||
|
|
||||||
programs.git.settings = {
|
programs.git.settings = {
|
||||||
|
|||||||
15
home/programs/group/cybersecurity.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wireshark
|
||||||
|
nmap
|
||||||
|
john
|
||||||
|
hashcat
|
||||||
|
inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils
|
||||||
|
caido
|
||||||
|
nuclei
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
# Kitty is a fast, featureful, GPU based terminal emulator
|
|
||||||
{
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
keybindings = {
|
|
||||||
"ctrl+shift+tab" = "new_tab_with_cwd";
|
|
||||||
"ctrl+shift+enter" = "new_window_with_cwd";
|
|
||||||
"ctrl+j" = ''kitten pass_keys.py bottom ctrl+j'';
|
|
||||||
"ctrl+k" = ''kitten pass_keys.py top ctrl+k'';
|
|
||||||
"ctrl+h" = ''kitten pass_keys.py left ctrl+h'';
|
|
||||||
"ctrl+l" = ''kitten pass_keys.py right ctrl+l'';
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
scrollback_lines = 10000;
|
|
||||||
initial_window_width = 1200;
|
|
||||||
initial_window_height = 600;
|
|
||||||
update_check_interval = 0;
|
|
||||||
enable_audio_bell = false;
|
|
||||||
confirm_os_window_close = "0";
|
|
||||||
remember_window_size = "no";
|
|
||||||
disable_ligatures = "never";
|
|
||||||
url_style = "curly";
|
|
||||||
copy_on_select = "clipboard";
|
|
||||||
cursor_shape = "Underline";
|
|
||||||
cursor_underline_thickness = 3;
|
|
||||||
cursor_trail = 3;
|
|
||||||
cursor_trail_decay = "0.1 0.4";
|
|
||||||
window_padding_width = 10;
|
|
||||||
open_url_with = "default";
|
|
||||||
allow_remote_control = "yes";
|
|
||||||
listen_on = "unix:/tmp/mykitty";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"kitty/pass_keys.py".text = ''
|
|
||||||
import re
|
|
||||||
|
|
||||||
from kittens.tui.handler import result_handler
|
|
||||||
from kitty.key_encoding import KeyEvent, parse_shortcut
|
|
||||||
|
|
||||||
|
|
||||||
def is_window_vim(window, vim_id):
|
|
||||||
fp = window.child.foreground_processes
|
|
||||||
return any(re.search(vim_id, p['cmdline'][0] if len(p['cmdline']) else "", re.I) for p in fp)
|
|
||||||
|
|
||||||
|
|
||||||
def encode_key_mapping(window, key_mapping):
|
|
||||||
mods, key = parse_shortcut(key_mapping)
|
|
||||||
event = KeyEvent(
|
|
||||||
mods=mods,
|
|
||||||
key=key,
|
|
||||||
shift=bool(mods & 1),
|
|
||||||
alt=bool(mods & 2),
|
|
||||||
ctrl=bool(mods & 4),
|
|
||||||
super=bool(mods & 8),
|
|
||||||
hyper=bool(mods & 16),
|
|
||||||
meta=bool(mods & 32),
|
|
||||||
).as_window_system_event()
|
|
||||||
|
|
||||||
return window.encoded_key(event)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@result_handler(no_ui=True)
|
|
||||||
def handle_result(args, result, target_window_id, boss):
|
|
||||||
direction = args[1]
|
|
||||||
key_mapping = args[2]
|
|
||||||
vim_id = args[3] if len(args) > 3 else "n?vim"
|
|
||||||
|
|
||||||
window = boss.window_id_map.get(target_window_id)
|
|
||||||
|
|
||||||
if window is None:
|
|
||||||
return
|
|
||||||
if is_window_vim(window, vim_id):
|
|
||||||
for keymap in key_mapping.split(">"):
|
|
||||||
encoded = encode_key_mapping(window, keymap)
|
|
||||||
window.write_to_child(encoded)
|
|
||||||
else:
|
|
||||||
boss.active_tab.neighboring_window(direction)
|
|
||||||
'';
|
|
||||||
"kitty/neighboring_window.py".text = ''
|
|
||||||
def main():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def handle_result(args, result, target_window_id, boss):
|
|
||||||
return boss.active_tab.current_layout.name
|
|
||||||
|
|
||||||
|
|
||||||
handle_result.no_ui = True
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
19
home/programs/nightshift/default.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
nightshift-toggle =
|
||||||
|
pkgs.writeShellScriptBin "nightshift-toggle"
|
||||||
|
# bash
|
||||||
|
''
|
||||||
|
if pidof "hyprsunset"; then
|
||||||
|
pkill hyprsunset
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Night Shift Disabled" "Returning to full spectrum light. Filter disabled."
|
||||||
|
else
|
||||||
|
${pkgs.hyprsunset}/bin/hyprsunset -t 4500 &
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Night Shift Activated" "Welcome to the warm side. Blue light filtering is now active."
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hyprsunset
|
||||||
|
nightshift-toggle
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
go.enable = true;
|
go.enable = true;
|
||||||
markdown = {
|
markdown = {
|
||||||
enable = true;
|
enable = true;
|
||||||
format.type = "prettierd";
|
format.type = ["prettierd"];
|
||||||
extensions = {
|
extensions = {
|
||||||
markview-nvim = {
|
markview-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
19
home/programs/proton/default.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
protonvpn-gui
|
||||||
|
proton-pass
|
||||||
|
proton-authenticator
|
||||||
|
];
|
||||||
|
|
||||||
|
# Fix Proton Authenticator desktop entry
|
||||||
|
xdg.desktopEntries = {
|
||||||
|
"Proton Authenticator" = {
|
||||||
|
name = "Proton Authenticator";
|
||||||
|
exec = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator";
|
||||||
|
icon = "proton-authenticator";
|
||||||
|
type = "Application";
|
||||||
|
categories = ["Utility"];
|
||||||
|
terminal = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Tailscale is a VPN service that works on top of WireGuard.
|
|
||||||
# It allows me to access my servers and devices from anywhere.
|
|
||||||
{inputs, ...}: {
|
|
||||||
home.packages = with inputs.nixpkgs-stable.legacyPackages.x86_64-linux; [tailscale tailscale-systray];
|
|
||||||
|
|
||||||
# wayland.windowManager.hyprland.settings.exec-once = ["${pkgs.tailscale-systray}/bin/tailscale-systray"];
|
|
||||||
}
|
|
||||||
@@ -73,26 +73,25 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = ''
|
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = ''
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.1" encoding="UTF-8"?>
|
||||||
|
|
||||||
<channel name="thunar" version="1.0">
|
<channel name="thunar" version="1.0">
|
||||||
<property name="last-view" type="string" value="ThunarIconView"/>
|
<property name="last-view" type="string" value="ThunarIconView"/>
|
||||||
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
||||||
<property name="last-window-maximized" type="bool" value="true"/>
|
<property name="last-window-maximized" type="bool" value="true"/>
|
||||||
<property name="last-separator-position" type="int" value="170"/>
|
<property name="last-separator-position" type="int" value="230"/>
|
||||||
<property name="last-statusbar-visible" type="bool" value="false"/>
|
<property name="last-statusbar-visible" type="bool" value="false"/>
|
||||||
<property name="last-menubar-visible" type="bool" value="false"/>
|
<property name="last-menubar-visible" type="bool" value="false"/>
|
||||||
<property name="misc-single-click" type="bool" value="false"/>
|
<property name="misc-single-click" type="bool" value="false"/>
|
||||||
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
||||||
<property name="tree-icon-emblems" type="bool" value="true"/>
|
<property name="tree-icon-emblems" type="bool" value="true"/>
|
||||||
<property name="misc-file-size-binary" type="bool" value="true"/>
|
<property name="misc-file-size-binary" type="bool" value="false"/>
|
||||||
<property name="misc-thumbnail-draw-frames" type="bool" value="false"/>
|
<property name="misc-thumbnail-draw-frames" type="bool" value="true"/>
|
||||||
<property name="misc-text-beside-icons" type="bool" value="true"/>
|
<property name="misc-text-beside-icons" type="bool" value="false"/>
|
||||||
<property name="misc-change-window-icon" type="bool" value="true"/>
|
<property name="misc-change-window-icon" type="bool" value="false"/>
|
||||||
<property name="hidden-bookmarks" type="array">
|
<property name="hidden-bookmarks" type="array">
|
||||||
<value type="string" value="computer:///"/>
|
<value type="string" value="computer:///"/>
|
||||||
<value type="string" value="recent:///"/>
|
<value type="string" value="recent:///"/>
|
||||||
<value type="string" value="file:///"/>
|
|
||||||
<value type="string" value="network:///"/>
|
<value type="string" value="network:///"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="hidden-devices" type="array">
|
<property name="hidden-devices" type="array">
|
||||||
@@ -103,35 +102,60 @@ in {
|
|||||||
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
||||||
<property name="last-show-hidden" type="bool" value="false"/>
|
<property name="last-show-hidden" type="bool" value="false"/>
|
||||||
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
||||||
<property name="last-details-view-column-widths" type="string" value="50,50,127,50,50,50,50,50,751,50,50,75,50,145"/>
|
<property name="last-details-view-column-widths" type="string" value="50,50,118,111,50,50,50,50,993,50,50,84,50,151"/>
|
||||||
<property name="last-toolbar-items" type="string" value="menu:1,back:1,forward:0,open-parent:0,open-home:0,undo:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,location-bar:1,reload:0,search:1,uca-action-1710183590071525-1:0,new-tab:0,new-window:0,view-switcher:0"/>
|
<property name="last-toolbar-items" type="string" value="menu:1,undo:1,back:1,forward:1,open-parent:0,open-home:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,location-bar:1,view-switcher:1,search:1,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,reload:0,new-tab:0,new-window:0,uca-action-1700000000000001:0"/>
|
||||||
|
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
|
||||||
|
<property name="last-image-preview-visible" type="bool" value="false"/>
|
||||||
|
<property name="misc-use-csd" type="bool" value="true"/>
|
||||||
|
<property name="default-view" type="string" value="ThunarIconView"/>
|
||||||
|
<property name="misc-thumbnail-max-file-size" type="uint64" value="1073741824"/>
|
||||||
|
<property name="misc-symbolic-icons-in-toolbar" type="bool" value="true"/>
|
||||||
|
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
|
||||||
|
<property name="shortcuts-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
||||||
|
<property name="tree-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
||||||
|
<property name="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
|
||||||
|
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
|
||||||
|
<property name="misc-full-path-in-tab-title" type="bool" value="true"/>
|
||||||
|
<property name="misc-show-delete-action" type="bool" value="false"/>
|
||||||
</channel>
|
</channel>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
xdg.configFile."Thunar/uca.xml".text = ''
|
xdg.configFile."Thunar/uca.xml".text = ''
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<actions>
|
<actions>
|
||||||
<action>
|
<action>
|
||||||
<icon>utilities-terminal</icon>
|
<icon>utilities-terminal</icon>
|
||||||
<name>Open Terminal Here</name>
|
<name>Open Terminal Here</name>
|
||||||
<unique-id>1700000000000001</unique-id>
|
<unique-id>1700000000000001</unique-id>
|
||||||
<command>kitty -d %f</command>
|
<command>kitty -d %f</command>
|
||||||
<description>Opens Kitty terminal in the selected folder</description>
|
<description>Opens Kitty terminal in the selected folder</description>
|
||||||
<patterns>*</patterns>
|
<patterns>*</patterns>
|
||||||
<startup-notify/>
|
<startup-notify/>
|
||||||
<directories/>
|
<directories/>
|
||||||
</action>
|
</action>
|
||||||
<action>
|
<action>
|
||||||
<icon></icon>
|
<icon></icon>
|
||||||
<name>Extract here</name>
|
<name>Extract here</name>
|
||||||
|
<submenu></submenu>
|
||||||
|
<unique-id>1689618425925956-3</unique-id>
|
||||||
|
<command>xarchiver -x . %f</command>
|
||||||
|
<description>Extracts the archive into the directory it is located in.</description>
|
||||||
|
<range>*</range>
|
||||||
|
<patterns>*.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt;</patterns>
|
||||||
|
<other-files/>
|
||||||
|
</action>
|
||||||
|
<action>
|
||||||
|
<icon>package-x-generic</icon>
|
||||||
|
<name>Compress here (tar.gz)</name>
|
||||||
<submenu></submenu>
|
<submenu></submenu>
|
||||||
<unique-id>1689618425925956-3</unique-id>
|
<unique-id>1700000000000003</unique-id>
|
||||||
<command>xarchiver -x . %f</command>
|
<command>tar -czvf %n.tar.gz %N</command>
|
||||||
<description>Extracts the archive into the directory it is located in.</description>
|
<description>Creates a compressed archive (.tar.gz) of selected files/folders.</description>
|
||||||
<range>*</range>
|
<range>*</range>
|
||||||
<patterns>*.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt;</patterns>
|
<patterns>*</patterns>
|
||||||
|
<directories/>
|
||||||
<other-files/>
|
<other-files/>
|
||||||
</action>
|
</action>
|
||||||
</actions>
|
</actions>
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
12
home/programs/vivaldi/default.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.vivaldi = {
|
||||||
|
enable = true;
|
||||||
|
commandLineArgs = [
|
||||||
|
"--no-default-browser-check"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
DEFAULT_BROWSER = "${pkgs.vivaldi}/bin/vivaldi";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# TODO: Misc section with VLC, Zathura etc
|
||||||
# Zathura is a PDF viewer
|
# Zathura is a PDF viewer
|
||||||
{
|
{
|
||||||
programs.zathura = {
|
programs.zathura = {
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
# - ## Brightness
|
|
||||||
#-
|
|
||||||
#- This module provides a set of scripts to control the brightness of the screen.
|
|
||||||
#-
|
|
||||||
#- - `brightness-up` increases the brightness by 5%.
|
|
||||||
#- - `brightness-down` decreases the brightness by 5%.
|
|
||||||
#- - `brightness-set [value]` sets the brightness to the given value.
|
|
||||||
#- - `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
increments = "5";
|
|
||||||
|
|
||||||
brightness-change = pkgs.writeShellScriptBin "brightness-change" ''
|
|
||||||
[[ $1 == "up" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%+
|
|
||||||
[[ $1 == "down" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%-
|
|
||||||
'';
|
|
||||||
|
|
||||||
brightness-set = pkgs.writeShellScriptBin "brightness-set" ''
|
|
||||||
${pkgs.brightnessctl}/bin/brightnessctl set ''${1-100}%
|
|
||||||
'';
|
|
||||||
|
|
||||||
brightness-up = pkgs.writeShellScriptBin "brightness-up" ''
|
|
||||||
brightness-change up ${increments}
|
|
||||||
'';
|
|
||||||
|
|
||||||
brightness-down = pkgs.writeShellScriptBin "brightness-down" ''
|
|
||||||
brightness-change down ${increments}
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.brightnessctl
|
|
||||||
brightness-change
|
|
||||||
brightness-up
|
|
||||||
brightness-down
|
|
||||||
brightness-set
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# - ## Caffeine
|
|
||||||
#-
|
|
||||||
#- Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
|
|
||||||
#-
|
|
||||||
#- - `caffeine-status` - Check if hypridle is running. (0/1)
|
|
||||||
#- - `caffeine-status-icon` - Check if hypridle is running. (icon)
|
|
||||||
#- - `caffeine` - Toggle hypridle.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
caffeine-status = pkgs.writeShellScriptBin "caffeine-status" ''
|
|
||||||
[[ $(pidof "hypridle") ]] && echo "0" || echo "1"
|
|
||||||
'';
|
|
||||||
|
|
||||||
caffeine-status-icon = pkgs.writeShellScriptBin "caffeine-status-icon" ''
|
|
||||||
[[ $(pidof "hypridle") ]] && echo "" || echo ""
|
|
||||||
'';
|
|
||||||
|
|
||||||
caffeine = pkgs.writeShellScriptBin "caffeine" ''
|
|
||||||
if [[ $(pidof "hypridle") ]]; then
|
|
||||||
systemctl --user stop hypridle.service
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Caffeine On" --custom-icon="emblem-default"
|
|
||||||
else
|
|
||||||
systemctl --user start hypridle.service
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Caffeine Off" --custom-icon="emblem-default"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {home.packages = [caffeine-status caffeine caffeine-status-icon];}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./nixy
|
|
||||||
./sounds
|
|
||||||
./brightness
|
|
||||||
./caffeine
|
|
||||||
./hyprpanel
|
|
||||||
./hyprfocus
|
|
||||||
./night-shift
|
|
||||||
./screenshot
|
|
||||||
./nerdfont-fzf
|
|
||||||
./notification
|
|
||||||
./system
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
# - ## Hyprfocus
|
|
||||||
#-
|
|
||||||
#- A simple script to toggle focus on few windows in Hyprland.
|
|
||||||
#- (disable gaps, border, shadow, opacity, etc.)
|
|
||||||
#-
|
|
||||||
#- - `hyprfocus-on` - Enable hyprfocus.
|
|
||||||
#- - `hyprfocus-off` - Disable hyprfocus.
|
|
||||||
#- - `hyprfocus-toggle` - Toggle hyprfocus.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
hyprfocus-on =
|
|
||||||
pkgs.writeShellScriptBin "hyprfocus-on"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
hyprpanel-hide
|
|
||||||
|
|
||||||
hyprctl --batch "\
|
|
||||||
keyword animations:enabled 0;\
|
|
||||||
keyword decoration:shadow:enabled 0;\
|
|
||||||
keyword decoration:blur:enabled 0;\
|
|
||||||
keyword general:gaps_in 0;\
|
|
||||||
keyword general:gaps_out 0;\
|
|
||||||
keyword general:border_size 1;\
|
|
||||||
keyword decoration:rounding 0;\
|
|
||||||
keyword decoration:inactive_opacity 1;\
|
|
||||||
keyword decoration:active_opacity 1"
|
|
||||||
|
|
||||||
echo "1" > /tmp/hyprfocus
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Hyprfocus On" --custom-icon="emblem-default"
|
|
||||||
'';
|
|
||||||
|
|
||||||
hyprfocus-off =
|
|
||||||
pkgs.writeShellScriptBin "hyprfocus-off"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
hyprctl reload
|
|
||||||
hyprpanel-show
|
|
||||||
rm /tmp/hyprfocus
|
|
||||||
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Hyprfocus Off" --custom-icon="emblem-default"
|
|
||||||
'';
|
|
||||||
|
|
||||||
hyprfocus-toggle =
|
|
||||||
pkgs.writeShellScriptBin "hyprfocus-toggle"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if [ -f /tmp/hyprfocus ]; then
|
|
||||||
hyprfocus-off
|
|
||||||
else
|
|
||||||
hyprfocus-on
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {home.packages = [hyprfocus-on hyprfocus-off hyprfocus-toggle];}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# - ## Hyprpanel
|
|
||||||
#-
|
|
||||||
#- Quick scripts to toggle, reload, hide & show hyprpanel.
|
|
||||||
#-
|
|
||||||
#- - `hyprpanel-toggle` - Toggle hyprpanel (hide/show).
|
|
||||||
#- - `hyprpanel-show` - Show hyprpanel.
|
|
||||||
#- - `hyprpanel-hide` - Hide hyprpanel.
|
|
||||||
#- - `hyprpanel-reload` - Reload hyprpanel.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
hyprpanel-toggle = pkgs.writeShellScriptBin "hyprpanel-toggle" ''
|
|
||||||
hyprpanel toggleWindow bar-0
|
|
||||||
hyprpanel toggleWindow bar-1
|
|
||||||
hyprpanel toggleWindow bar-2
|
|
||||||
hyprpanel toggleWindow bar-3
|
|
||||||
'';
|
|
||||||
|
|
||||||
hyprpanel-hide = pkgs.writeShellScriptBin "hyprpanel-hide" ''
|
|
||||||
status=$(hyprpanel isWindowVisible bar-0)
|
|
||||||
if [[ $status == "true" ]]; then
|
|
||||||
hyprpanel toggleWindow bar-0
|
|
||||||
fi
|
|
||||||
status=$(hyprpanel isWindowVisible bar-1)
|
|
||||||
if [[ $status == "true" ]]; then
|
|
||||||
hyprpanel toggleWindow bar-1
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
hyprpanel-show = pkgs.writeShellScriptBin "hyprpanel-show" ''
|
|
||||||
status=$(hyprpanel isWindowVisible bar-0)
|
|
||||||
if [[ $status == "false" ]]; then
|
|
||||||
hyprpanel toggleWindow bar-0
|
|
||||||
fi
|
|
||||||
status=$(hyprpanel isWindowVisible bar-1)
|
|
||||||
if [[ $status == "false" ]]; then
|
|
||||||
hyprpanel toggleWindow bar-1
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
hyprpanel-reload = pkgs.writeShellScriptBin "hyprpanel-reload" ''
|
|
||||||
[ $(pgrep "hyprpanel") ] && pkill hyprpanel
|
|
||||||
hyprctl dispatch exec hyprpanel
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [hyprpanel-toggle hyprpanel-reload hyprpanel-hide hyprpanel-show];
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# - ## Nerdfont FZF
|
|
||||||
#-
|
|
||||||
#- This module provides a script to search for Nerd Fonts icons using fzf.
|
|
||||||
#-
|
|
||||||
#- - `nerdfont-fzf` - Search for Nerd Fonts icons using fzf.
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
nerdfont-fzf = pkgs.writeShellScriptBin "nerdfont-fzf" ''
|
|
||||||
icons=$(${pkgs.jq}/bin/jq -r 'to_entries[] | "\(.key):\(.value.char)"' "/home/${config.var.username}/.config/nerdfont_glyphnames.json" | awk -F: '{print "\033[95m "$2" \033[0m "$1}')
|
|
||||||
fzf_result=$(echo "$icons" | ${pkgs.fzf}/bin/fzf --ansi --border none | awk '{print $1}')
|
|
||||||
if [ -z "$fzf_result" ]; then
|
|
||||||
echo "No icon selected"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copied to clipboard: $fzf_result"
|
|
||||||
${pkgs.wl-clipboard}/bin/wl-copy "$fzf_result"
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [nerdfont-fzf];
|
|
||||||
|
|
||||||
xdg.configFile."nerdfont_glyphnames.json" = {
|
|
||||||
source = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/384b1825ea0037b0314f7f9c660a80c1ecdb219a/glyphnames.json";
|
|
||||||
hash = "sha256-Ps0dyFcMs51RMTthBOVSOf/lafPV/53JxuNSKlmZ7cc=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# - ## Night-Shift
|
|
||||||
#-
|
|
||||||
#- Night-Shift is a feature that reduces the amount of blue light emitted by your screen, which can help reduce eye strain and improve sleep quality. This module provides a set of scripts to control Night-Shift on your system.
|
|
||||||
#- It use hyprsunset to control the screen temperature.
|
|
||||||
#-
|
|
||||||
#- - `night-shift-on` activates Night-Shift.
|
|
||||||
#- - `night-shift-off` deactivates Night-Shift.
|
|
||||||
#- - `night-shift` toggles Night-Shift.
|
|
||||||
#- - `night-shift-status` checks if Night-Shift is active. (0/1)
|
|
||||||
#- - `night-shift-status-icon` checks if Night-Shift is active. (icon)
|
|
||||||
{pkgs, ...}: let
|
|
||||||
value = "4500"; # Default value for night-shift temperature
|
|
||||||
|
|
||||||
night-shift-on =
|
|
||||||
pkgs.writeShellScriptBin "night-shift-on"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
${pkgs.hyprsunset}/bin/hyprsunset -t ${value} &
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Night-Shift On" --custom-icon="emblem-default"
|
|
||||||
'';
|
|
||||||
|
|
||||||
night-shift-off =
|
|
||||||
pkgs.writeShellScriptBin "night-shift-off"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
pkill hyprsunset
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Night-Shift Off" --custom-icon="emblem-default"
|
|
||||||
'';
|
|
||||||
|
|
||||||
night-shift =
|
|
||||||
pkgs.writeShellScriptBin "night-shift"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if pidof "hyprsunset"; then
|
|
||||||
night-shift-off
|
|
||||||
else
|
|
||||||
night-shift-on
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
night-shift-status =
|
|
||||||
pkgs.writeShellScriptBin "night-shift-status"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if pidof "hyprsunset"; then
|
|
||||||
echo "1"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
night-shift-status-icon =
|
|
||||||
pkgs.writeShellScriptBin "night-shift-status-icon"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if pidof "hyprsunset"; then
|
|
||||||
echo ""
|
|
||||||
else
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.hyprsunset
|
|
||||||
night-shift-on
|
|
||||||
night-shift-off
|
|
||||||
night-shift
|
|
||||||
night-shift-status
|
|
||||||
night-shift-status-icon
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# - ## Notif
|
|
||||||
#-
|
|
||||||
# This file provides a script to send custom notifications using `notify-send`.
|
|
||||||
#-
|
|
||||||
#- - `notif {id} {title} {description}` - Sends a notification
|
|
||||||
{pkgs, ...}: let
|
|
||||||
notif =
|
|
||||||
pkgs.writeShellScriptBin "notif" # bash
|
|
||||||
|
|
||||||
''
|
|
||||||
# Shell script to send custom notifications
|
|
||||||
# Usage: notif "sender_id" "message" ["description"]
|
|
||||||
NOTIF_FOLDER="/tmp/notif"
|
|
||||||
sender_id=$1 # To overwrite existing notifications
|
|
||||||
title=$2
|
|
||||||
description=$3
|
|
||||||
|
|
||||||
[[ -d "$NOTIF_FOLDER" ]] || mkdir $NOTIF_FOLDER
|
|
||||||
[[ -f "$NOTIF_FOLDER/$sender_id" ]] || (echo "0" > "$NOTIF_FOLDER/$sender_id")
|
|
||||||
|
|
||||||
old_notification_id=$(cat "$NOTIF_FOLDER/$sender_id")
|
|
||||||
[[ -z "$old_notification_id" ]] && old_notification_id=0
|
|
||||||
|
|
||||||
${pkgs.libnotify}/bin/notify-send \
|
|
||||||
--replace-id="$old_notification_id" --print-id \
|
|
||||||
--app-name="$sender_id" \
|
|
||||||
"$title" \
|
|
||||||
"$description" \
|
|
||||||
> "$NOTIF_FOLDER/$sender_id"
|
|
||||||
'';
|
|
||||||
in {home.packages = [pkgs.libnotify notif];}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# - ## Screenshot
|
|
||||||
#-
|
|
||||||
#- This module provides a script to take screenshots using `grimblast` and `swappy`.
|
|
||||||
#-
|
|
||||||
#- - `screenshot [region|window|monitor] [swappy]` - Take a screenshot of the region, window, or monitor. Optionally, use `swappy` to copy the screenshot to the clipboard.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
screenshot = pkgs.writeShellScriptBin "screenshot" ''
|
|
||||||
if [[ $2 == "swappy" ]];then
|
|
||||||
folder="/tmp"
|
|
||||||
else
|
|
||||||
folder="$HOME/Pictures"
|
|
||||||
fi
|
|
||||||
filename="$(date +%Y-%m-%d_%H:%M:%S).png"
|
|
||||||
|
|
||||||
if [[ $1 == "window" ]];then
|
|
||||||
mode="active"
|
|
||||||
elif [[ $1 == "region" ]];then
|
|
||||||
mode="area"
|
|
||||||
elif [[ $1 == "monitor" ]];then
|
|
||||||
mode="output"
|
|
||||||
fi
|
|
||||||
|
|
||||||
${pkgs.grimblast}/bin/grimblast --notify --freeze copysave $mode "$folder/$filename" || exit 1
|
|
||||||
|
|
||||||
if [[ $2 == "swappy" ]];then
|
|
||||||
${pkgs.swappy}/bin/swappy -f "$folder/$filename" -o "$HOME/Pictures/$filename"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [ screenshot pkgs.grim pkgs.grimblast ];
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
# - ## Sound
|
|
||||||
#-
|
|
||||||
#- This module provides a set of scripts to control the volume of the default audio sink using `wpctl`.
|
|
||||||
#-
|
|
||||||
#- - `sound-up` increases the volume by 5%.
|
|
||||||
#- - `sound-down` decreases the volume by 5%.
|
|
||||||
#- - `sound-set [value]` sets the volume to the given value.
|
|
||||||
#- - `sound-toggle` toggles the mute state of the default audio sink.
|
|
||||||
{pkgs, ...}: let
|
|
||||||
increments = "5";
|
|
||||||
|
|
||||||
sound-change = pkgs.writeShellScriptBin "sound-change" ''
|
|
||||||
[[ $1 == "mute" ]] && wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
||||||
[[ $1 == "up" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-${increments}}%+
|
|
||||||
[[ $1 == "down" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-${increments}}%-
|
|
||||||
[[ $1 == "set" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-100}%
|
|
||||||
'';
|
|
||||||
|
|
||||||
sound-up = pkgs.writeShellScriptBin "sound-up" ''
|
|
||||||
sound-change up ${increments}
|
|
||||||
'';
|
|
||||||
|
|
||||||
sound-set = pkgs.writeShellScriptBin "sound-set" ''
|
|
||||||
sound-change set ''${1-100}
|
|
||||||
'';
|
|
||||||
|
|
||||||
sound-down = pkgs.writeShellScriptBin "sound-down" ''
|
|
||||||
sound-change down ${increments}
|
|
||||||
'';
|
|
||||||
|
|
||||||
sound-toggle = pkgs.writeShellScriptBin "sound-toggle" ''
|
|
||||||
sound-change mute
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
home.packages = [sound-change sound-up sound-down sound-toggle sound-set];
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
# - ## System
|
|
||||||
#-
|
|
||||||
#- Usefull quick scripts
|
|
||||||
#-
|
|
||||||
#- - `lock` - Lock the screen. (hyprlock)
|
|
||||||
#- - `powermode-toggle` - Toggle between performance and balanced power mode. (powerprofilesctl)
|
|
||||||
{pkgs, ...}: let
|
|
||||||
menu =
|
|
||||||
pkgs.writeShellScriptBin "menu"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if pgrep wofi; then
|
|
||||||
pkill wofi
|
|
||||||
else
|
|
||||||
wofi -p "Apps" --show drun
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
powermenu =
|
|
||||||
pkgs.writeShellScriptBin "powermenu"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
if pgrep wofi >/dev/null; then
|
|
||||||
pkill wofi
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
declare -A actions=(
|
|
||||||
[" Lock"]="hyprlock"
|
|
||||||
[" Logout"]="hyprctl dispatch exit"
|
|
||||||
[" Suspend"]="systemctl suspend"
|
|
||||||
[" Reboot"]="systemctl reboot"
|
|
||||||
[" Shutdown"]="systemctl poweroff"
|
|
||||||
)
|
|
||||||
|
|
||||||
selected_option=$(
|
|
||||||
printf '%s\n' "''${!actions[@]}" | wofi -p "Powermenu" --dmenu
|
|
||||||
)
|
|
||||||
|
|
||||||
if [[ -n "$selected_option" ]]; then
|
|
||||||
|
|
||||||
action_command=''${actions["''$selected_option"]}
|
|
||||||
|
|
||||||
if [[ -n "$action_command" ]]; then
|
|
||||||
eval "$action_command"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
lock =
|
|
||||||
pkgs.writeShellScriptBin "lock"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
${pkgs.hyprlock}/bin/hyprlock
|
|
||||||
'';
|
|
||||||
|
|
||||||
powermode-toggle =
|
|
||||||
pkgs.writeShellScriptBin "powermode-toggle"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
current_profile=$(powerprofilesctl get)
|
|
||||||
if [ "$current_profile" = "performance" ]; then
|
|
||||||
powerprofilesctl set balanced
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Powermode set to balanced" --custom-icon="emblem-default"
|
|
||||||
else
|
|
||||||
powerprofilesctl set performance
|
|
||||||
${pkgs.swayosd}/bin/swayosd-client --custom-message="Powermode set to performance" --custom-icon="emblem-default"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {home.packages = [lock powermode-toggle menu powermenu];}
|
|
||||||
49
home/system/caelestia-shell/appearance.nix
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
rounding = config.theme.rounding + config.theme.gaps-out;
|
||||||
|
inherit (config.stylix) fonts;
|
||||||
|
in {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
papirus-icon-theme
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.caelestia.settings = {
|
||||||
|
paths.sessionGif = ./session-gif-hacker-cat.gif;
|
||||||
|
background.enabled = false;
|
||||||
|
appearance = {
|
||||||
|
transparency = {
|
||||||
|
enable = true;
|
||||||
|
base = 0.85;
|
||||||
|
layers = 0.4;
|
||||||
|
};
|
||||||
|
font.family = {
|
||||||
|
material = "Material Symbols Rounded";
|
||||||
|
mono = fonts.monospace.name;
|
||||||
|
sans = fonts.sansSerif.name;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
utilities = {
|
||||||
|
enabled = true;
|
||||||
|
maxToasts = 4;
|
||||||
|
toasts = {
|
||||||
|
audioInputChanged = true;
|
||||||
|
audioOutputChanged = true;
|
||||||
|
capsLockChanged = false;
|
||||||
|
chargingChanged = true;
|
||||||
|
configLoaded = false;
|
||||||
|
dndChanged = true;
|
||||||
|
gameModeChanged = true;
|
||||||
|
numLockChanged = false;
|
||||||
|
nowPlaying = false;
|
||||||
|
kbLayoutChanged = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
inherit rounding;
|
||||||
|
thickness = 8;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
69
home/system/caelestia-shell/bar.nix
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
programs.caelestia.settings.bar = {
|
||||||
|
clock.showIcon = false;
|
||||||
|
popouts.activeWindow = false;
|
||||||
|
persistent = true;
|
||||||
|
status = {
|
||||||
|
showBattery = true;
|
||||||
|
showMicrophone = false;
|
||||||
|
showLockStatus = false;
|
||||||
|
showBluetooth = true;
|
||||||
|
showAudio = true;
|
||||||
|
showKbLayout = false;
|
||||||
|
showNetwork = true;
|
||||||
|
};
|
||||||
|
workspaces = {
|
||||||
|
activeIndicator = true;
|
||||||
|
activeLabel = " ";
|
||||||
|
activeTrail = false;
|
||||||
|
label = " ";
|
||||||
|
occupiedBg = true;
|
||||||
|
occupiedLabel = " ";
|
||||||
|
rounded = true;
|
||||||
|
showWindows = false;
|
||||||
|
shown = 5;
|
||||||
|
};
|
||||||
|
entries = [
|
||||||
|
{
|
||||||
|
id = "logo";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "workspaces";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "spacer";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "activeWindow";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "spacer";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "tray";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "clock";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "statusIcons";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "power";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
tray = {
|
||||||
|
background = false;
|
||||||
|
recolour = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
58
home/system/caelestia-shell/bindings.nix
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bindin = [
|
||||||
|
# Launcher
|
||||||
|
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
||||||
|
];
|
||||||
|
bind = [
|
||||||
|
# Launcher
|
||||||
|
"$mod, SPACE, global, caelestia:launcher"
|
||||||
|
"$mod, X, global, caelestia:session" # Powermenu
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
"$mod, L, global, caelestia:lock"
|
||||||
|
"$mod, N, exec, caelestia shell drawers toggle sidebar"
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
"$mod+Shift, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
|
||||||
|
"$mod+Shift, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
||||||
|
"$mod+Shift+Alt, S, global, caelestia:screenshot" # Capture region
|
||||||
|
"$mod+Alt, R, exec, caelestia record -s" # Record screen with sound
|
||||||
|
"Ctrl+Alt, R, exec, caelestia record" # Record screen
|
||||||
|
"$mod+Shift+Alt, R, exec, caelestia record -r" # Record region
|
||||||
|
|
||||||
|
"$mod+Shift, E, exec, pkill fuzzel || caelestia emoji -p"
|
||||||
|
];
|
||||||
|
bindl = [
|
||||||
|
# Brightness
|
||||||
|
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
||||||
|
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
||||||
|
"$mod, F2, exec, nightshift-toggle"
|
||||||
|
"$mod, F3, exec, nightshift-toggle"
|
||||||
|
|
||||||
|
# Media
|
||||||
|
", XF86AudioPlay, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioPause, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioNext, global, caelestia:mediaNext"
|
||||||
|
", XF86AudioPrev, global, caelestia:mediaPrev"
|
||||||
|
", XF86AudioStop, global, caelestia:mediaStop"
|
||||||
|
|
||||||
|
# Sound
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
|
||||||
|
];
|
||||||
|
bindle = [
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
62
home/system/caelestia-shell/default.nix
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Caelestia Shell Home Manager Configuration
|
||||||
|
# See https://github.com/caelestia-dots/shell
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
inputs.caelestia-shell.homeManagerModules.default
|
||||||
|
./bindings.nix
|
||||||
|
./bar.nix
|
||||||
|
./launcher.nix
|
||||||
|
./appearance.nix
|
||||||
|
./scheme.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.caelestia = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = false;
|
||||||
|
settings = {
|
||||||
|
services.weatherLocation = "Paris";
|
||||||
|
general = {
|
||||||
|
apps = {
|
||||||
|
terminal = ["ghostty"];
|
||||||
|
audio = ["pavucontrol"];
|
||||||
|
explorer = ["thunar"];
|
||||||
|
};
|
||||||
|
idle = {
|
||||||
|
timeouts = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cli = {
|
||||||
|
enable = true;
|
||||||
|
settings.theme = {
|
||||||
|
enableTerm = false;
|
||||||
|
enableDiscord = false;
|
||||||
|
enableSpicetify = false;
|
||||||
|
enableBtop = false;
|
||||||
|
enableCava = false;
|
||||||
|
enableHypr = false;
|
||||||
|
enableGtk = false;
|
||||||
|
enableQt = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gpu-screen-recorder
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
"uwsm app -- caelestia resizer -d"
|
||||||
|
"uwsm app -- caelestia shell -d"
|
||||||
|
"caelestia scheme set -n custom"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.cliphist = {
|
||||||
|
enable = true;
|
||||||
|
allowImages = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
124
home/system/caelestia-shell/launcher.nix
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
{
|
||||||
|
programs.caelestia.settings = {
|
||||||
|
session.commands = {
|
||||||
|
logout = ["loginctl" "terminate-user" ""];
|
||||||
|
shutdown = ["systemctl" "poweroff"];
|
||||||
|
hibernate = ["systemctl" "hibernate"];
|
||||||
|
reboot = ["systemctl" "reboot"];
|
||||||
|
};
|
||||||
|
launcher = {
|
||||||
|
actionPrefix = "/";
|
||||||
|
actions = [
|
||||||
|
{
|
||||||
|
name = "Calculator";
|
||||||
|
icon = "calculate";
|
||||||
|
description = "Do simple math equations (powered by Qalc)";
|
||||||
|
command = ["autocomplete" "calc"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Shutdown";
|
||||||
|
icon = "power_settings_new";
|
||||||
|
description = "Shutdown the system";
|
||||||
|
command = ["systemctl" "poweroff"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Reboot";
|
||||||
|
icon = "cached";
|
||||||
|
description = "Reboot the system";
|
||||||
|
command = ["systemctl" "reboot"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Logout";
|
||||||
|
icon = "exit_to_app";
|
||||||
|
description = "Log out of the current session";
|
||||||
|
command = ["loginctl" "terminate-user" ""];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Lock";
|
||||||
|
icon = "lock";
|
||||||
|
description = "Lock the current session";
|
||||||
|
command = ["loginctl" "lock-session"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Sleep";
|
||||||
|
icon = "bedtime";
|
||||||
|
description = "Suspend then hibernate";
|
||||||
|
command = ["systemctl" "suspend-then-hibernate"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Restart caelestia";
|
||||||
|
icon = "cached";
|
||||||
|
description = "Restart caelestia";
|
||||||
|
command = ["hyprctl" "dispatch" "exec" "caelestia-shell kill | sleep 1 | caelestia-shell"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Emoji Picker";
|
||||||
|
icon = "mood";
|
||||||
|
description = "Toggle the emoji picker";
|
||||||
|
command = ["caelestia" "emoji" "-p"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Clipboard History";
|
||||||
|
icon = "content_paste";
|
||||||
|
description = "Toggle the clipboard history";
|
||||||
|
command = ["caelestia" "clipboard"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Delete from Clipboard History";
|
||||||
|
icon = "content_paste_off";
|
||||||
|
description = "Delete a line from the clipboard history";
|
||||||
|
command = ["caelestia" "clipboard"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Night Shift";
|
||||||
|
icon = "moon_stars";
|
||||||
|
description = "Toggle Night Shift, the blue light filter";
|
||||||
|
command = ["nightshift-toggle"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Hyprpicker";
|
||||||
|
icon = "colorize";
|
||||||
|
description = "Pick an hex color";
|
||||||
|
command = ["hyprpicker" "-a"];
|
||||||
|
enabled = true;
|
||||||
|
dangerous = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
dragThreshold = 50;
|
||||||
|
enableDangerousActions = false;
|
||||||
|
maxShown = 7;
|
||||||
|
specialPrefix = "@";
|
||||||
|
useFuzzy = {
|
||||||
|
apps = false;
|
||||||
|
actions = false;
|
||||||
|
schemes = false;
|
||||||
|
variants = false;
|
||||||
|
wallpapers = false;
|
||||||
|
};
|
||||||
|
showOnHover = false;
|
||||||
|
hiddenApps = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
132
home/system/caelestia-shell/scheme.nix
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
# This Nix module customizes the color scheme of the Caelestia CLI application using the Stylix base16 color palette.
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
colors = config.lib.stylix.colors;
|
||||||
|
|
||||||
|
customSchemeFile = pkgs.writeText "custom-dark.txt" ''
|
||||||
|
primary_paletteKeyColor ${colors.base0D}
|
||||||
|
secondary_paletteKeyColor ${colors.base04}
|
||||||
|
tertiary_paletteKeyColor ${colors.base08}
|
||||||
|
neutral_paletteKeyColor ${colors.base03}
|
||||||
|
neutral_variant_paletteKeyColor ${colors.base03}
|
||||||
|
background ${colors.base00}
|
||||||
|
onBackground ${colors.base05}
|
||||||
|
surface ${colors.base00}
|
||||||
|
surfaceDim ${colors.base00}
|
||||||
|
surfaceBright ${colors.base02}
|
||||||
|
surfaceContainerLowest ${colors.base01}
|
||||||
|
surfaceContainerLow ${colors.base01}
|
||||||
|
surfaceContainer ${colors.base01}
|
||||||
|
surfaceContainerHigh ${colors.base02}
|
||||||
|
surfaceContainerHighest ${colors.base02}
|
||||||
|
onSurface ${colors.base05}
|
||||||
|
surfaceVariant ${colors.base02}
|
||||||
|
onSurfaceVariant ${colors.base04}
|
||||||
|
inverseSurface ${colors.base05}
|
||||||
|
inverseOnSurface ${colors.base00}
|
||||||
|
outline ${colors.base03}
|
||||||
|
outlineVariant ${colors.base02}
|
||||||
|
shadow ${colors.base00}
|
||||||
|
scrim ${colors.base00}
|
||||||
|
surfaceTint ${colors.base0D}
|
||||||
|
primary ${colors.base0D}
|
||||||
|
onPrimary ${colors.base00}
|
||||||
|
primaryContainer ${colors.base0D}
|
||||||
|
onPrimaryContainer ${colors.base05}
|
||||||
|
inversePrimary ${colors.base0D}
|
||||||
|
secondary ${colors.base0C}
|
||||||
|
onSecondary ${colors.base00}
|
||||||
|
secondaryContainer ${colors.base02}
|
||||||
|
onSecondaryContainer ${colors.base0C}
|
||||||
|
tertiary ${colors.base08}
|
||||||
|
onTertiary ${colors.base00}
|
||||||
|
tertiaryContainer ${colors.base08}
|
||||||
|
onTertiaryContainer ${colors.base00}
|
||||||
|
error ${colors.base08}
|
||||||
|
onError ${colors.base00}
|
||||||
|
errorContainer ${colors.base08}
|
||||||
|
onErrorContainer ${colors.base05}
|
||||||
|
primaryFixed ${colors.base0D}
|
||||||
|
primaryFixedDim ${colors.base0D}
|
||||||
|
onPrimaryFixed ${colors.base00}
|
||||||
|
onPrimaryFixedVariant ${colors.base00}
|
||||||
|
secondaryFixed ${colors.base0C}
|
||||||
|
secondaryFixedDim ${colors.base0C}
|
||||||
|
onSecondaryFixed ${colors.base00}
|
||||||
|
onSecondaryFixedVariant ${colors.base02}
|
||||||
|
tertiaryFixed ${colors.base08}
|
||||||
|
tertiaryFixedDim ${colors.base08}
|
||||||
|
onTertiaryFixed ${colors.base00}
|
||||||
|
onTertiaryFixedVariant ${colors.base00}
|
||||||
|
term0 ${colors.base00}
|
||||||
|
term1 ${colors.base08}
|
||||||
|
term2 ${colors.base0B}
|
||||||
|
term3 ${colors.base0A}
|
||||||
|
term4 ${colors.base0D}
|
||||||
|
term5 ${colors.base0E}
|
||||||
|
term6 ${colors.base0C}
|
||||||
|
term7 ${colors.base05}
|
||||||
|
term8 ${colors.base03}
|
||||||
|
term9 ${colors.base08}
|
||||||
|
term10 ${colors.base0B}
|
||||||
|
term11 ${colors.base0A}
|
||||||
|
term12 ${colors.base0D}
|
||||||
|
term13 ${colors.base0E}
|
||||||
|
term14 ${colors.base0C}
|
||||||
|
term15 ${colors.base07}
|
||||||
|
rosewater ${colors.base06}
|
||||||
|
flamingo ${colors.base0F}
|
||||||
|
pink ${colors.base0E}
|
||||||
|
mauve ${colors.base0D}
|
||||||
|
red ${colors.base08}
|
||||||
|
maroon ${colors.base08}
|
||||||
|
peach ${colors.base09}
|
||||||
|
yellow ${colors.base0A}
|
||||||
|
green ${colors.base0B}
|
||||||
|
teal ${colors.base0C}
|
||||||
|
sky ${colors.base0C}
|
||||||
|
sapphire ${colors.base0C}
|
||||||
|
blue ${colors.base0D}
|
||||||
|
lavender ${colors.base0D}
|
||||||
|
klink ${colors.base0D}
|
||||||
|
klinkSelection ${colors.base0D}
|
||||||
|
kvisited ${colors.base0E}
|
||||||
|
kvisitedSelection ${colors.base0E}
|
||||||
|
knegative ${colors.base08}
|
||||||
|
knegativeSelection ${colors.base08}
|
||||||
|
kneutral ${colors.base0A}
|
||||||
|
kneutralSelection ${colors.base0A}
|
||||||
|
kpositive ${colors.base0B}
|
||||||
|
kpositiveSelection ${colors.base0B}
|
||||||
|
text ${colors.base05}
|
||||||
|
subtext1 ${colors.base04}
|
||||||
|
subtext0 ${colors.base03}
|
||||||
|
overlay2 ${colors.base03}
|
||||||
|
overlay1 ${colors.base03}
|
||||||
|
overlay0 ${colors.base02}
|
||||||
|
surface2 ${colors.base02}
|
||||||
|
surface1 ${colors.base01}
|
||||||
|
surface0 ${colors.base01}
|
||||||
|
base ${colors.base00}
|
||||||
|
mantle ${colors.base00}
|
||||||
|
crust ${colors.base00}
|
||||||
|
success ${colors.base0B}
|
||||||
|
onSuccess ${colors.base00}
|
||||||
|
successContainer ${colors.base0B}
|
||||||
|
onSuccessContainer ${colors.base05}
|
||||||
|
'';
|
||||||
|
|
||||||
|
customCli = inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs (oldAttrs: {
|
||||||
|
postUnpack = ''
|
||||||
|
mkdir -p $sourceRoot/src/caelestia/data/schemes/custom/main
|
||||||
|
cp ${customSchemeFile} $sourceRoot/src/caelestia/data/schemes/custom/main/dark.txt
|
||||||
|
echo "Custom scheme added to source"
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
programs.caelestia.cli.package = customCli;
|
||||||
|
}
|
||||||
BIN
home/system/caelestia-shell/session-gif-hacker-cat.gif
Normal file
|
After Width: | Height: | Size: 51 KiB |
@@ -1,32 +0,0 @@
|
|||||||
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 600;
|
|
||||||
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 660;
|
|
||||||
on-timeout = "systemctl suspend";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user.services.hypridle.Unit.After =
|
|
||||||
lib.mkForce "graphical-session.target";
|
|
||||||
}
|
|
||||||
@@ -1,20 +1,19 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
"$shiftMod" = "SUPER_SHIFT";
|
||||||
|
|
||||||
bind =
|
bind =
|
||||||
[
|
[
|
||||||
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
||||||
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
|
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
|
||||||
"$mod,B, exec, uwsm app -- ${pkgs.brave}/bin/brave" # Brave Browser
|
"$mod,B, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi" # Browser (Vivaldi)
|
||||||
"$mod,K, exec, uwsm app -- ${pkgs.proton-pass}/bin/proton-pass" # Proton Pass
|
"$mod,K, exec, uwsm app -- ${pkgs.proton-pass}/bin/proton-pass" # Proton Pass
|
||||||
"$mod,M, exec, uwsm app -- ${pkgs.protonmail-desktop}/bin/proton-mail" # Proton Mail
|
|
||||||
"$mod,V, exec, uwsm app -- ${pkgs.protonvpn-gui}/bin/protonvpn-app" # Proton VPN
|
"$mod,V, exec, uwsm app -- ${pkgs.protonvpn-gui}/bin/protonvpn-app" # Proton VPN
|
||||||
"$mod,A, exec, uwsm app -- ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Authenticator
|
"$mod,A, exec, uwsm app -- env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Auth
|
||||||
"$mod,L, exec, uwsm app -- ${pkgs.hyprlock}/bin/hyprlock" # Lock
|
"$mod,M, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=jnpecgipniidlgicjocehkhajgdnjekh" # Proton Mail (PWA)
|
||||||
"$mod,SPACE, exec, vicinae toggle" # Launcher
|
"$mod,C, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=ojibjkjikcpjonjjngfkegflhmffeemk" # Proton Calendar (PWA)
|
||||||
# "$mod,SPACE, exec, menu" # Launcher
|
"$mod,I, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=lcfjlhjhpmdjimnbkdfjnkojodddgfmd" # Proton Lumo (PWA)
|
||||||
"$mod,X, exec, powermenu" # Powermenu
|
|
||||||
|
|
||||||
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
|
|
||||||
|
|
||||||
"$mod,Q, killactive," # Close window
|
"$mod,Q, killactive," # Close window
|
||||||
"$mod,T, togglefloating," # Toggle Floating
|
"$mod,T, togglefloating," # Toggle Floating
|
||||||
@@ -27,15 +26,6 @@
|
|||||||
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
|
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
|
||||||
"$shiftMod,left, layoutmsg, addmaster" # Add to master
|
"$shiftMod,left, layoutmsg, addmaster" # Add to master
|
||||||
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
|
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
|
||||||
|
|
||||||
"$mod,PRINT, exec, screenshot region" # Screenshot region
|
|
||||||
",PRINT, exec, screenshot monitor" # Screenshot monitor
|
|
||||||
"$shiftMod,PRINT, exec, screenshot window" # Screenshot window
|
|
||||||
"ALT,PRINT, exec, screenshot region swappy" # Screenshot region then edit
|
|
||||||
|
|
||||||
"$shiftMod,T, exec, hyprpanel-toggle" # Toggle hyprpanel
|
|
||||||
"$shiftMod,F2, exec, night-shift" # Toggle night shift
|
|
||||||
"$shiftMod,F3, exec, night-shift" # Toggle night shift
|
|
||||||
]
|
]
|
||||||
++ (builtins.concatLists (builtins.genList (i: let
|
++ (builtins.concatLists (builtins.genList (i: let
|
||||||
ws = i + 1;
|
ws = i + 1;
|
||||||
@@ -49,20 +39,5 @@
|
|||||||
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
||||||
"$mod,R, resizewindow" # Resize Window (mouse)
|
"$mod,R, resizewindow" # Resize Window (mouse)
|
||||||
];
|
];
|
||||||
|
|
||||||
bindl = [
|
|
||||||
",XF86AudioMute, exec, sound-toggle" # Toggle Mute
|
|
||||||
",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause" # Play/Pause Song
|
|
||||||
",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next" # Next Song
|
|
||||||
",XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous" # Previous Song
|
|
||||||
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
|
|
||||||
];
|
|
||||||
|
|
||||||
bindle = [
|
|
||||||
",XF86AudioRaiseVolume, exec, sound-up" # Sound Up
|
|
||||||
",XF86AudioLowerVolume, exec, sound-down" # Sound Down
|
|
||||||
",XF86MonBrightnessUp, exec, brightness-up" # Brightness Up
|
|
||||||
",XF86MonBrightnessDown, exec, brightness-down" # Brightness Down
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
rounding = config.theme.rounding;
|
rounding = config.theme.rounding;
|
||||||
blur = config.theme.blur;
|
blur = config.theme.blur;
|
||||||
keyboardLayout = config.var.keyboardLayout;
|
keyboardLayout = config.var.keyboardLayout;
|
||||||
background = "rgb(" + config.lib.stylix.colors.base00 + ")";
|
background = "rgba(" + config.lib.stylix.colors.base00 + "77)";
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./animations.nix
|
./animations.nix
|
||||||
@@ -27,13 +27,14 @@ in {
|
|||||||
qt6.qtwayland
|
qt6.qtwayland
|
||||||
libsForQt5.qt5ct
|
libsForQt5.qt5ct
|
||||||
qt6Packages.qt6ct
|
qt6Packages.qt6ct
|
||||||
|
hyprland-qtutils
|
||||||
|
adw-gtk3
|
||||||
hyprshot
|
hyprshot
|
||||||
hyprpicker
|
hyprpicker
|
||||||
swappy
|
swappy
|
||||||
imv
|
imv
|
||||||
wf-recorder
|
wf-recorder
|
||||||
wlr-randr
|
wlr-randr
|
||||||
wl-clipboard
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
libva
|
libva
|
||||||
@@ -58,12 +59,8 @@ in {
|
|||||||
portalPackage = null;
|
portalPackage = null;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
|
||||||
"$shiftMod" = "SUPER_SHIFT";
|
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"dbus-update-activation-environment --systemd --all &"
|
"dbus-update-activation-environment --systemd --all &"
|
||||||
"systemctl --user enable --now hyprpaper.service &"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
monitor = [
|
monitor = [
|
||||||
@@ -138,6 +135,16 @@ in {
|
|||||||
|
|
||||||
gesture = "3, horizontal, workspace";
|
gesture = "3, horizontal, workspace";
|
||||||
|
|
||||||
|
windowrule = [
|
||||||
|
"match:class proton-authenticator, float on"
|
||||||
|
"match:class proton-authenticator, suppress_event maximize"
|
||||||
|
"match:class proton-authenticator, center on"
|
||||||
|
"match:class proton-authenticator, size 500 400"
|
||||||
|
"match:class protonvpn-app, float on"
|
||||||
|
"match:class protonvpn-app, center on"
|
||||||
|
"match:class protonvpn-app, size 500 400"
|
||||||
|
];
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
vfr = true;
|
vfr = true;
|
||||||
disable_hyprland_logo = true;
|
disable_hyprland_logo = true;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
alert-when-low-battery = false;
|
||||||
keyboard-backlight = pkgs.writeShellScriptBin "keyboard-backlight" ''
|
keyboard-backlight = pkgs.writeShellScriptBin "keyboard-backlight" ''
|
||||||
function set_keyboard_backlight {
|
function set_keyboard_backlight {
|
||||||
local color=$1
|
local color=$1
|
||||||
@@ -15,6 +16,9 @@
|
|||||||
}
|
}
|
||||||
state="white"
|
state="white"
|
||||||
set_keyboard_backlight ${config.lib.stylix.colors.base0D}
|
set_keyboard_backlight ${config.lib.stylix.colors.base0D}
|
||||||
|
if [ "${toString alert-when-low-battery}" = "false" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
while true; do
|
while true; do
|
||||||
BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity)
|
BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity)
|
||||||
IS_CHARGING=$(cat /sys/class/power_supply/BAT*/status)
|
IS_CHARGING=$(cat /sys/class/power_supply/BAT*/status)
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
# Hyprlock is a lockscreen for Hyprland
|
|
||||||
{ config, lib, ... }:
|
|
||||||
let
|
|
||||||
foreground = "rgba(${config.theme.textColorOnWallpaper}ee)";
|
|
||||||
font = config.stylix.fonts.serif.name;
|
|
||||||
in {
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
ignore_empty_input = true;
|
|
||||||
hide_cursor = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
background = { brightness = 0.7172; };
|
|
||||||
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
# Day-Month-Date
|
|
||||||
monitor = "";
|
|
||||||
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
|
|
||||||
color = foreground;
|
|
||||||
font_size = 28;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
position = "0, 490";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
# Time
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = ''cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"'';
|
|
||||||
color = foreground;
|
|
||||||
font_size = 160;
|
|
||||||
font_family = "steelfish outline regular";
|
|
||||||
position = "0, 370";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
# USER
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = " $USER";
|
|
||||||
color = foreground;
|
|
||||||
font_size = 18;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
position = "0, -180";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# INPUT FIELD
|
|
||||||
input-field = lib.mkForce {
|
|
||||||
size = "300, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "rgba(25, 25, 25, 0)";
|
|
||||||
inner_color = "rgba(25, 25, 25, 0.1)";
|
|
||||||
font_color = foreground;
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
placeholder_text = "<i>🔒 Enter Password</i>";
|
|
||||||
position = "0, -250";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,267 +0,0 @@
|
|||||||
# Hyprpanel is the bar on top of the screen
|
|
||||||
# Display information like workspaces, battery, wifi, ...
|
|
||||||
{config, ...}: let
|
|
||||||
transparentButtons = config.theme.bar.transparentButtons;
|
|
||||||
|
|
||||||
accent = "#${config.lib.stylix.colors.base0D}";
|
|
||||||
accent-alt = "#${config.lib.stylix.colors.base03}";
|
|
||||||
background = "#${config.lib.stylix.colors.base00}";
|
|
||||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
|
||||||
foreground = "#${config.lib.stylix.colors.base05}";
|
|
||||||
foregroundOnWallpaper = "#${config.theme.textColorOnWallpaper}";
|
|
||||||
font = "${config.stylix.fonts.serif.name}";
|
|
||||||
fontSizeForHyprpanel = "${toString config.stylix.fonts.sizes.desktop}px";
|
|
||||||
|
|
||||||
rounding = config.theme.rounding;
|
|
||||||
border-size = config.theme.border-size;
|
|
||||||
|
|
||||||
gaps-out = config.theme.gaps-out;
|
|
||||||
gaps-in = config.theme.gaps-in;
|
|
||||||
|
|
||||||
floating = config.theme.bar.floating;
|
|
||||||
transparent = config.theme.bar.transparent;
|
|
||||||
position = config.theme.bar.position; # "top" ou "bottom"
|
|
||||||
|
|
||||||
notificationOpacity = 90;
|
|
||||||
|
|
||||||
location = config.var.location;
|
|
||||||
|
|
||||||
homeDir = "/home/${config.var.username}";
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["hyprpanel"];
|
|
||||||
|
|
||||||
programs.hyprpanel = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
bar.layouts = {
|
|
||||||
"*" = {
|
|
||||||
left = ["dashboard" "workspaces" "windowtitle"];
|
|
||||||
middle = ["media" "cava"];
|
|
||||||
right = [
|
|
||||||
"systray"
|
|
||||||
"volume"
|
|
||||||
"bluetooth"
|
|
||||||
"battery"
|
|
||||||
"network"
|
|
||||||
"clock"
|
|
||||||
"notifications"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
theme.font.name = font;
|
|
||||||
theme.font.size = fontSizeForHyprpanel;
|
|
||||||
|
|
||||||
theme.bar.outer_spacing =
|
|
||||||
if floating && transparent
|
|
||||||
then "0px"
|
|
||||||
else "8px";
|
|
||||||
theme.bar.buttons.y_margins =
|
|
||||||
if floating && transparent
|
|
||||||
then "0px"
|
|
||||||
else "8px";
|
|
||||||
theme.bar.buttons.spacing = "0.3em";
|
|
||||||
theme.bar.buttons.radius =
|
|
||||||
(
|
|
||||||
if transparent
|
|
||||||
then toString rounding
|
|
||||||
else toString (rounding - 8)
|
|
||||||
)
|
|
||||||
+ "px";
|
|
||||||
theme.bar.floating = floating;
|
|
||||||
theme.bar.buttons.padding_x = "0.8rem";
|
|
||||||
theme.bar.buttons.padding_y = "0.4rem";
|
|
||||||
|
|
||||||
theme.bar.margin_top =
|
|
||||||
(
|
|
||||||
if position == "top"
|
|
||||||
then toString (gaps-in * 2)
|
|
||||||
else "0"
|
|
||||||
)
|
|
||||||
+ "px";
|
|
||||||
theme.bar.margin_bottom =
|
|
||||||
(
|
|
||||||
if position == "top"
|
|
||||||
then "0"
|
|
||||||
else toString (gaps-in * 2)
|
|
||||||
)
|
|
||||||
+ "px";
|
|
||||||
theme.bar.margin_sides = toString gaps-out + "px";
|
|
||||||
theme.bar.border_radius = toString rounding + "px";
|
|
||||||
theme.bar.transparent = transparent;
|
|
||||||
theme.bar.location = position;
|
|
||||||
theme.bar.dropdownGap = "4.5em";
|
|
||||||
theme.bar.menus.shadow =
|
|
||||||
if transparent
|
|
||||||
then "0 0 0 0"
|
|
||||||
else "0px 0px 3px 1px #16161e";
|
|
||||||
theme.bar.buttons.style = "default";
|
|
||||||
theme.bar.buttons.monochrome = true;
|
|
||||||
theme.bar.menus.monochrome = true;
|
|
||||||
theme.bar.menus.card_radius = toString rounding + "px";
|
|
||||||
theme.bar.menus.border.size = toString border-size + "px";
|
|
||||||
theme.bar.menus.border.radius = toString rounding + "px";
|
|
||||||
theme.bar.menus.menu.media.card.tint = 90;
|
|
||||||
|
|
||||||
bar.launcher.icon = "";
|
|
||||||
bar.workspaces.show_numbered = false;
|
|
||||||
bar.workspaces.workspaces = 5;
|
|
||||||
bar.workspaces.numbered_active_indicator = "color";
|
|
||||||
bar.workspaces.monitorSpecific = false;
|
|
||||||
bar.workspaces.applicationIconEmptyWorkspace = "";
|
|
||||||
bar.workspaces.showApplicationIcons = true;
|
|
||||||
bar.workspaces.showWsIcons = true;
|
|
||||||
|
|
||||||
bar.windowtitle.label = true;
|
|
||||||
bar.volume.label = false;
|
|
||||||
bar.network.truncation_size = 12;
|
|
||||||
bar.bluetooth.label = false;
|
|
||||||
bar.clock.format = "%a %b %d %I:%M %p";
|
|
||||||
bar.notifications.show_total = true;
|
|
||||||
bar.media.show_active_only = true;
|
|
||||||
|
|
||||||
bar.customModules.updates.pollingInterval = 1440000;
|
|
||||||
bar.customModules.cava.showIcon = false;
|
|
||||||
bar.customModules.cava.stereo = true;
|
|
||||||
bar.customModules.cava.showActiveOnly = true;
|
|
||||||
|
|
||||||
notifications.position = "top right";
|
|
||||||
notifications.showActionsOnHover = true;
|
|
||||||
theme.notification.opacity = notificationOpacity;
|
|
||||||
theme.notification.enableShadow = true;
|
|
||||||
theme.notification.border_radius = toString rounding + "px";
|
|
||||||
|
|
||||||
theme.osd.enable = true;
|
|
||||||
theme.osd.orientation = "vertical";
|
|
||||||
theme.osd.location = "left";
|
|
||||||
theme.osd.radius = toString rounding + "px";
|
|
||||||
theme.osd.margins = "0px 0px 0px 10px";
|
|
||||||
theme.osd.muted_zero = true;
|
|
||||||
|
|
||||||
menus.clock.weather.location = location;
|
|
||||||
menus.clock.weather.unit = "metric";
|
|
||||||
menus.dashboard.powermenu.confirmation = false;
|
|
||||||
menus.dashboard.powermenu.avatar.image = "~/.face.icon";
|
|
||||||
|
|
||||||
menus.dashboard.shortcuts.left.shortcut1.icon = "";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut1.command = "zen";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut1.tooltip = "Zen";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut2.icon = "";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut2.command = "caffeine";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut2.tooltip = "Caffeine";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut3.icon = "";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut3.command = "night-shift";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut3.tooltip = "Night-shift";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut4.icon = "";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut4.command = "menu";
|
|
||||||
menus.dashboard.shortcuts.left.shortcut4.tooltip = "Search Apps";
|
|
||||||
|
|
||||||
menus.dashboard.shortcuts.right.shortcut1.icon = "";
|
|
||||||
menus.dashboard.shortcuts.right.shortcut1.command = "hyprpicker -a";
|
|
||||||
menus.dashboard.shortcuts.right.shortcut1.tooltip = "Color Picker";
|
|
||||||
|
|
||||||
menus.dashboard.shortcuts.right.shortcut3.icon = "";
|
|
||||||
menus.dashboard.shortcuts.right.shortcut3.command = "screenshot region swappy";
|
|
||||||
menus.dashboard.shortcuts.right.shortcut3.tooltip = "Screenshot";
|
|
||||||
|
|
||||||
menus.dashboard.directories.left.directory1.label = " Home";
|
|
||||||
menus.dashboard.directories.left.directory1.command = "xdg-open ${homeDir}";
|
|
||||||
|
|
||||||
menus.dashboard.directories.left.directory2.label = " Documents";
|
|
||||||
menus.dashboard.directories.left.directory2.command = "xdg-open ${homeDir}/Documents";
|
|
||||||
|
|
||||||
menus.dashboard.directories.left.directory3.label = " Downloads";
|
|
||||||
menus.dashboard.directories.left.directory3.command = "xdg-open ${homeDir}/Downloads";
|
|
||||||
|
|
||||||
menus.dashboard.directories.right.directory1.label = " Desktop";
|
|
||||||
menus.dashboard.directories.right.directory1.command = "xdg-open ${homeDir}/Desktop";
|
|
||||||
|
|
||||||
menus.dashboard.directories.right.directory2.label = " Videos";
|
|
||||||
menus.dashboard.directories.right.directory2.command = "xdg-open ${homeDir}/Videos";
|
|
||||||
|
|
||||||
menus.dashboard.directories.right.directory3.label = " Pictures";
|
|
||||||
menus.dashboard.directories.right.directory3.command = "xdg-open ${homeDir}/Pictures";
|
|
||||||
|
|
||||||
menus.power.lowBatteryNotification = true;
|
|
||||||
|
|
||||||
wallpaper.enable = false;
|
|
||||||
|
|
||||||
# theme.bar.buttons.workspaces.hover = accent-alt;
|
|
||||||
# theme.bar.buttons.workspaces.active = accent;
|
|
||||||
# theme.bar.buttons.workspaces.available = accent-alt;
|
|
||||||
# theme.bar.buttons.workspaces.occupied = accent-alt;
|
|
||||||
#
|
|
||||||
# theme.bar.menus.background = background;
|
|
||||||
# theme.bar.menus.cards = background-alt;
|
|
||||||
# theme.bar.menus.label = foreground;
|
|
||||||
# theme.bar.menus.text = foreground;
|
|
||||||
# theme.bar.menus.border.color = accent;
|
|
||||||
# theme.bar.menus.popover.text = foreground;
|
|
||||||
# theme.bar.menus.popover.background = background-alt;
|
|
||||||
# theme.bar.menus.listitems.active = accent;
|
|
||||||
# theme.bar.menus.icons.active = accent;
|
|
||||||
# theme.bar.menus.switch.enabled = accent;
|
|
||||||
# theme.bar.menus.check_radio_button.active = accent;
|
|
||||||
# theme.bar.menus.buttons.default = accent;
|
|
||||||
# theme.bar.menus.buttons.active = accent;
|
|
||||||
# theme.bar.menus.iconbuttons.active = accent;
|
|
||||||
# theme.bar.menus.progressbar.foreground = accent;
|
|
||||||
# theme.bar.menus.slider.primary = accent;
|
|
||||||
# theme.bar.menus.tooltip.background = background-alt;
|
|
||||||
# theme.bar.menus.tooltip.text = foreground;
|
|
||||||
# theme.bar.menus.dropdownmenu.background = background-alt;
|
|
||||||
# theme.bar.menus.dropdownmenu.text = foreground;
|
|
||||||
|
|
||||||
# theme.bar.background =
|
|
||||||
# background
|
|
||||||
# + (
|
|
||||||
# if transparentButtons && transparent
|
|
||||||
# then "00"
|
|
||||||
# else ""
|
|
||||||
# );
|
|
||||||
# theme.bar.buttons.text =
|
|
||||||
# if transparent && transparentButtons
|
|
||||||
# then foregroundOnWallpaper
|
|
||||||
# else foreground;
|
|
||||||
# theme.bar.buttons.background =
|
|
||||||
# (
|
|
||||||
# if transparent
|
|
||||||
# then background
|
|
||||||
# else background-alt
|
|
||||||
# )
|
|
||||||
# + (
|
|
||||||
# if transparentButtons
|
|
||||||
# then "00"
|
|
||||||
# else ""
|
|
||||||
# );
|
|
||||||
# theme.bar.buttons.icon = accent;
|
|
||||||
#
|
|
||||||
# theme.bar.buttons.notifications.background = background-alt;
|
|
||||||
# theme.bar.buttons.hover = background;
|
|
||||||
# theme.bar.buttons.notifications.hover = background;
|
|
||||||
# theme.bar.buttons.notifications.total = accent;
|
|
||||||
# theme.bar.buttons.notifications.icon = accent;
|
|
||||||
#
|
|
||||||
# theme.osd.bar_color = accent;
|
|
||||||
# theme.osd.bar_overflow_color = accent-alt;
|
|
||||||
# theme.osd.icon = background;
|
|
||||||
# theme.osd.icon_container = accent;
|
|
||||||
# theme.osd.label = accent;
|
|
||||||
# theme.osd.bar_container = background-alt;
|
|
||||||
#
|
|
||||||
# theme.bar.menus.menu.media.background.color = background-alt;
|
|
||||||
# theme.bar.menus.menu.media.card.color = background-alt;
|
|
||||||
#
|
|
||||||
# theme.notification.background = background-alt;
|
|
||||||
# theme.notification.actions.background = accent;
|
|
||||||
# theme.notification.actions.text = foreground;
|
|
||||||
# theme.notification.label = accent;
|
|
||||||
# theme.notification.border = background-alt;
|
|
||||||
# theme.notification.text = foreground;
|
|
||||||
# theme.notification.labelicon = accent;
|
|
||||||
# theme.notification.close_button.background = background-alt;
|
|
||||||
# theme.notification.close_button.label = "#f38ba8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -11,4 +11,8 @@
|
|||||||
};
|
};
|
||||||
systemd.user.services.hyprpaper.Unit.After =
|
systemd.user.services.hyprpaper.Unit.After =
|
||||||
lib.mkForce "graphical-session.target";
|
lib.mkForce "graphical-session.target";
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
"systemctl --user enable --now hyprpaper.service"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
with lib; let
|
with lib; let
|
||||||
defaultApps = {
|
defaultApps = {
|
||||||
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
|
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
|
||||||
browser = ["brave-browser.desktop"];
|
browser = ["vivaldi-stable.desktop"];
|
||||||
text = ["org.gnome.TextEditor.desktop"];
|
text = ["org.gnome.TextEditor.desktop"];
|
||||||
image = ["imv-dir.desktop"];
|
image = ["imv-dir.desktop"];
|
||||||
audio = ["mpv.desktop"];
|
audio = ["mpv.desktop"];
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
{inputs, ...}: {
|
|
||||||
imports = [inputs.vicinae.homeManagerModules.default];
|
|
||||||
|
|
||||||
services.vicinae = {
|
|
||||||
enable = true;
|
|
||||||
autoStart = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl enable --now --user vicinae.service"];
|
|
||||||
}
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
# Wofi is a launcher for Wayland, inspired by rofi.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
accent = "#${config.lib.stylix.colors.base0D}";
|
|
||||||
background = "#${config.lib.stylix.colors.base00}";
|
|
||||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
|
||||||
foreground = "#${config.lib.stylix.colors.base05}";
|
|
||||||
font = config.stylix.fonts.serif.name;
|
|
||||||
rounding = config.theme.rounding;
|
|
||||||
font-size = config.stylix.fonts.sizes.popups;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [wofi-emoji];
|
|
||||||
|
|
||||||
programs.wofi = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
allow_markup = true;
|
|
||||||
width = 450;
|
|
||||||
show = "drun";
|
|
||||||
prompt = "Apps";
|
|
||||||
normal_window = true;
|
|
||||||
height = 305;
|
|
||||||
allow_images = true;
|
|
||||||
image_size = 24;
|
|
||||||
insensitive = true;
|
|
||||||
hide_scroll = true;
|
|
||||||
no_actions = true;
|
|
||||||
gtk_dark = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
style =
|
|
||||||
lib.mkForce
|
|
||||||
# css
|
|
||||||
''
|
|
||||||
* {
|
|
||||||
font-family: "${font}";
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: ${toString font-size}px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
background-color: ${background};
|
|
||||||
color: ${foreground};
|
|
||||||
border-radius: ${toString rounding}px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
background-color: ${background-alt};
|
|
||||||
border: 0px solid ${accent};
|
|
||||||
color: ${foreground};
|
|
||||||
padding: 8px 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scroll {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {}
|
|
||||||
|
|
||||||
#img {
|
|
||||||
padding-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
color: ${foreground};
|
|
||||||
}
|
|
||||||
|
|
||||||
#text:selected {
|
|
||||||
color: ${foreground};
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry {
|
|
||||||
padding: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
background-color: ${accent};
|
|
||||||
color: ${foreground};
|
|
||||||
}
|
|
||||||
|
|
||||||
#unselected {}
|
|
||||||
|
|
||||||
#selected {}
|
|
||||||
|
|
||||||
#input,
|
|
||||||
#entry:selected {
|
|
||||||
border-radius: ${toString rounding}px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
../../nixos/hyprland.nix
|
../../nixos/hyprland.nix
|
||||||
../../nixos/docker.nix
|
../../nixos/docker.nix
|
||||||
|
|
||||||
../../nixos/omen.nix # For my laptop only
|
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|||||||
@@ -1,72 +1,54 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Mostly user-specific configuration
|
|
||||||
./variables.nix
|
|
||||||
|
|
||||||
# Programs
|
# Programs
|
||||||
../../home/programs/kitty
|
../../home/programs/vivaldi
|
||||||
# ../../home/programs/alacritty
|
../../home/programs/proton
|
||||||
../../home/programs/ghostty
|
../../home/programs/ghostty
|
||||||
../../home/programs/nvf
|
../../home/programs/nvf
|
||||||
../../home/programs/shell
|
../../home/programs/shell
|
||||||
../../home/programs/fetch
|
../../home/programs/fetch
|
||||||
../../home/programs/git
|
../../home/programs/git
|
||||||
../../home/programs/git/signing.nix
|
../../home/programs/git/lazygit.nix
|
||||||
|
../../home/programs/git/signing.nix # Change the key or remove this file
|
||||||
../../home/programs/spicetify
|
../../home/programs/spicetify
|
||||||
../../home/programs/thunar
|
../../home/programs/thunar
|
||||||
../../home/programs/lazygit
|
|
||||||
../../home/programs/discord
|
../../home/programs/discord
|
||||||
../../home/programs/tailscale
|
../../home/programs/nixy
|
||||||
|
../../home/programs/zathura
|
||||||
# Scripts
|
../../home/programs/nightshift
|
||||||
../../home/scripts # All scripts
|
../../home/programs/group/cybersecurity.nix
|
||||||
|
|
||||||
# System (Desktop environment like stuff)
|
# System (Desktop environment like stuff)
|
||||||
../../home/system/hyprland
|
../../home/system/hyprland
|
||||||
../../home/system/hyprlock
|
../../home/system/caelestia-shell
|
||||||
../../home/system/hyprpanel
|
|
||||||
../../home/system/hyprpaper
|
../../home/system/hyprpaper
|
||||||
../../home/system/zathura
|
|
||||||
../../home/system/mime
|
../../home/system/mime
|
||||||
../../home/system/udiskie
|
../../home/system/udiskie
|
||||||
../../home/system/vicinae
|
|
||||||
../../home/system/wofi
|
|
||||||
# ../../home/system/hypridle
|
|
||||||
|
|
||||||
|
./variables.nix # Mostly user-specific configuration
|
||||||
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
|
||||||
homeDirectory = "/home/" + config.var.username;
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Apps
|
# Apps
|
||||||
bitwarden-desktop # Password manager
|
|
||||||
vlc # Video player
|
vlc # Video player
|
||||||
blanket # White-noise app
|
blanket # White-noise app
|
||||||
obsidian # Note taking app
|
obsidian # Note taking app
|
||||||
planify # Todolists
|
|
||||||
textpieces # Manipulate texts
|
textpieces # Manipulate texts
|
||||||
curtail # Compress images
|
|
||||||
resources # Ressource monitor
|
resources # Ressource monitor
|
||||||
gnome-clocks # Clocks app
|
gnome-clocks # Clocks app
|
||||||
gnome-text-editor # Basic graphic text editor
|
gnome-text-editor # Basic graphic text editor
|
||||||
mpv # Video player
|
mpv # Video player
|
||||||
brave # Web browser
|
ticktick # Todo app
|
||||||
|
|
||||||
# Privacy
|
|
||||||
session-desktop # Session app, private messages
|
session-desktop # Session app, private messages
|
||||||
signal-desktop # Signal app, private messages
|
signal-desktop # Signal app, private messages
|
||||||
protonvpn-gui
|
stirling-pdf # TODO: Server version
|
||||||
proton-pass
|
calibre
|
||||||
proton-authenticator
|
|
||||||
ticktick # Privacy friendly todo app
|
|
||||||
|
|
||||||
# Dev
|
# Dev
|
||||||
go
|
go
|
||||||
@@ -79,32 +61,24 @@
|
|||||||
pnpm
|
pnpm
|
||||||
air
|
air
|
||||||
duckdb
|
duckdb
|
||||||
inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils
|
|
||||||
caido
|
|
||||||
wireshark
|
|
||||||
nuclei
|
|
||||||
|
|
||||||
# Utils
|
|
||||||
zip
|
|
||||||
unzip
|
|
||||||
optipng
|
|
||||||
jpegoptim
|
|
||||||
pfetch
|
|
||||||
btop
|
|
||||||
fastfetch
|
|
||||||
|
|
||||||
# Just cool
|
# Just cool
|
||||||
peaclock
|
peaclock
|
||||||
cbonsai
|
cbonsai
|
||||||
pipes
|
pipes
|
||||||
cmatrix
|
cmatrix
|
||||||
|
fastfetch
|
||||||
|
|
||||||
# Backup
|
# Backup
|
||||||
vscode
|
vscode
|
||||||
|
brave
|
||||||
];
|
];
|
||||||
|
|
||||||
# Import my profile picture, used by the hyprpanel dashboard
|
inherit (config.var) username;
|
||||||
file.".face.icon" = {source = ./profile_picture.png;};
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
|
# Import a profile picture, used by the caelestia dashboard
|
||||||
|
file.".face" = {source = ./profile_picture.png;};
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "24.05";
|
stateVersion = "24.05";
|
||||||
|
|||||||
@@ -13,11 +13,9 @@
|
|||||||
secrets = {
|
secrets = {
|
||||||
sshconfig = {path = "/home/hadi/.ssh/config";};
|
sshconfig = {path = "/home/hadi/.ssh/config";};
|
||||||
github-key = {path = "/home/hadi/.ssh/github";};
|
github-key = {path = "/home/hadi/.ssh/github";};
|
||||||
gitlab-key = {path = "/home/hadi/.ssh/gitlab";};
|
|
||||||
jack-key = {path = "/home/hadi/.ssh/jack";};
|
jack-key = {path = "/home/hadi/.ssh/jack";};
|
||||||
signing-key = {path = "/home/hadi/.ssh/key";};
|
signing-key = {path = "/home/hadi/.ssh/key";};
|
||||||
signing-pub-key = {path = "/home/hadi/.ssh/key.pub";};
|
signing-pub-key = {path = "/home/hadi/.ssh/key.pub";};
|
||||||
pia = {path = "/home/hadi/.config/pia/pia.ovpn";};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Choose your theme here:
|
# Choose your theme here:
|
||||||
../../themes/nixy.nix
|
../../themes/rose-pine.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config.var = {
|
config.var = {
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Let this here
|
# DON'T TOUCH THIS
|
||||||
options = {
|
options = {
|
||||||
var = lib.mkOption {
|
var = lib.mkOption {
|
||||||
type = lib.types.attrs;
|
type = lib.types.attrs;
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with inputs.nixpkgs-stable.legacyPackages.x86_64-linux; [
|
||||||
|
tailscale
|
||||||
|
];
|
||||||
|
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs.nixpkgs-stable.legacyPackages.x86_64-linux.tailscale;
|
package = inputs.nixpkgs-stable.legacyPackages.x86_64-linux.tailscale;
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
# TUIGreet is a display manager.
|
|
||||||
# Legacy, I'm now using SDDM
|
|
||||||
{pkgs, ...}: {
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --remember --asterisks --container-padding 2 --time --time-format '%I:%M %p | %a • %h | %F' --cmd Hyprland";
|
|
||||||
user = "greeter";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [greetd.tuigreet];
|
|
||||||
|
|
||||||
# this is a life saver.
|
|
||||||
# literally no documentation about this anywhere.
|
|
||||||
# might be good to write about this...
|
|
||||||
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
|
||||||
systemd.services.greetd.serviceConfig = {
|
|
||||||
Type = "idle";
|
|
||||||
StandardInput = "tty";
|
|
||||||
StandardOutput = "tty";
|
|
||||||
StandardError = "journal"; # Without this errors will spam on screen
|
|
||||||
# Without these bootlogs will spam on screen
|
|
||||||
TTYReset = true;
|
|
||||||
TTYVHangup = true;
|
|
||||||
TTYVTDisallocate = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -90,7 +90,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
hyprland-qtutils
|
|
||||||
fd
|
fd
|
||||||
bc
|
bc
|
||||||
gcc
|
gcc
|
||||||
@@ -99,9 +98,17 @@ in {
|
|||||||
xdg-utils
|
xdg-utils
|
||||||
wget
|
wget
|
||||||
curl
|
curl
|
||||||
|
gnupg
|
||||||
|
openssl
|
||||||
vim
|
vim
|
||||||
go
|
go
|
||||||
comma
|
comma
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
optipng
|
||||||
|
jpegoptim
|
||||||
|
pfetch
|
||||||
|
btop
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.theme = lib.mkOption {
|
|
||||||
type = lib.types.attrs;
|
|
||||||
default = {
|
|
||||||
rounding = 17;
|
|
||||||
gaps-in = 8;
|
|
||||||
gaps-out = 8 * 2;
|
|
||||||
active-opacity = 0.97;
|
|
||||||
inactive-opacity = 0.94;
|
|
||||||
blur = true;
|
|
||||||
border-size = 3;
|
|
||||||
animation-speed = "fast"; # "fast" | "medium" | "slow"
|
|
||||||
fetch = "none"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
|
||||||
textColorOnWallpaper =
|
|
||||||
config.lib.stylix.colors.base01; # Color of the text displayed on the wallpaper (Lockscreen, display manager, ...)
|
|
||||||
|
|
||||||
bar = {
|
|
||||||
# Hyprpanel
|
|
||||||
position = "top"; # "top" | "bottom"
|
|
||||||
transparent = true;
|
|
||||||
transparentButtons = false;
|
|
||||||
floating = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
description = "Theme configuration options";
|
|
||||||
};
|
|
||||||
|
|
||||||
config.stylix = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# Mocha
|
|
||||||
# See https://tinted-theming.github.io/tinted-gallery/ for more schemes
|
|
||||||
base16Scheme = {
|
|
||||||
base00 = "0F0F15"; # Default Background
|
|
||||||
base01 = "15151A"; # Lighter Background (Used for status bars, line number and folding marks)
|
|
||||||
base02 = "313244"; # Selection Background
|
|
||||||
base03 = "45475a"; # Comments, Invisibles, Line Highlighting
|
|
||||||
base04 = "585b70"; # Dark Foreground (Used for status bars)
|
|
||||||
base05 = "cdd6f4"; # Default Foreground, Caret, Delimiters, Operators
|
|
||||||
base06 = "f5e0dc"; # Light Foreground (Not often used)
|
|
||||||
base07 = "b4befe"; # Light Background (Not often used)
|
|
||||||
base08 = "f38ba8"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
|
||||||
base09 = "fab387"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
|
||||||
base0A = "f9e2af"; # Classes, Markup Bold, Search Text Background
|
|
||||||
base0B = "a6e3a1"; # Strings, Inherited Class, Markup Code, Diff Inserted
|
|
||||||
base0C = "94e2d5"; # Support, Regular Expressions, Escape Characters, Markup Quotes
|
|
||||||
base0D = "89b4fa"; # Functions, Methods, Attribute IDs, Headings, Accent color
|
|
||||||
base0E = "cba6f7"; # Keywords, Storage, Selector, Markup Italic, Diff Changed
|
|
||||||
base0F = "f2cdcd"; # Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
name = "phinger-cursors-light";
|
|
||||||
package = pkgs.phinger-cursors;
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
|
||||||
name = "JetBrains Mono Nerd Font";
|
|
||||||
};
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.source-sans-pro;
|
|
||||||
name = "Source Sans Pro";
|
|
||||||
};
|
|
||||||
serif = config.stylix.fonts.sansSerif;
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-color-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
sizes = {
|
|
||||||
applications = 13;
|
|
||||||
desktop = 13;
|
|
||||||
popups = 13;
|
|
||||||
terminal = 13;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
polarity = "dark";
|
|
||||||
image = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/japan-houses.png";
|
|
||||||
sha256 = "sha256-BeTFz+WeulDt5ixg5ni09J439PxMnofWnJz5PGEUgf8=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.theme = lib.mkOption {
|
|
||||||
type = lib.types.attrs;
|
|
||||||
default = {
|
|
||||||
rounding = 20;
|
|
||||||
gaps-in = 10;
|
|
||||||
gaps-out = 10 * 2;
|
|
||||||
active-opacity = 0.96;
|
|
||||||
inactive-opacity = 0.92;
|
|
||||||
blur = true;
|
|
||||||
border-size = 3;
|
|
||||||
animation-speed = "fast"; # "fast" | "medium" | "slow"
|
|
||||||
fetch = "none"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
|
||||||
textColorOnWallpaper =
|
|
||||||
config.lib.stylix.colors.base05; # Color of the text displayed on the wallpaper (Lockscreen, display manager, ...)
|
|
||||||
|
|
||||||
bar = {
|
|
||||||
# Hyprpanel
|
|
||||||
position = "top"; # "top" | "bottom"
|
|
||||||
transparent = false;
|
|
||||||
transparentButtons = false;
|
|
||||||
floating = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
description = "Theme configuration options";
|
|
||||||
};
|
|
||||||
|
|
||||||
config.stylix = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# See https://tinted-theming.github.io/tinted-gallery/ for more schemes
|
|
||||||
base16Scheme = {
|
|
||||||
base00 = "09090B"; # Default Background
|
|
||||||
base01 = "1c1e1f"; # Lighter Background (Used for status bars, line number and folding marks)
|
|
||||||
base02 = "313244"; # Selection Background
|
|
||||||
base03 = "45475a"; # Comments, Invisibles, Line Highlighting
|
|
||||||
base04 = "585b70"; # Dark Foreground (Used for status bars)
|
|
||||||
base05 = "cdd6f4"; # Default Foreground, Caret, Delimiters, Operators
|
|
||||||
base06 = "f5e0dc"; # Light Foreground (Not often used)
|
|
||||||
base07 = "b4befe"; # Light Background (Not often used)
|
|
||||||
base08 = "f38ba8"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
|
||||||
base09 = "fab387"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
|
||||||
base0A = "f9e2af"; # Classes, Markup Bold, Search Text Background
|
|
||||||
base0B = "a6e3a1"; # Strings, Inherited Class, Markup Code, Diff Inserted
|
|
||||||
base0C = "94e2d5"; # Support, Regular Expressions, Escape Characters, Markup Quotes
|
|
||||||
base0D = "8771DA"; # Functions, Methods, Attribute IDs, Headings, Accent color
|
|
||||||
base0E = "cba6f7"; # Keywords, Storage, Selector, Markup Italic, Diff Changed
|
|
||||||
base0F = "f2cdcd"; # Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
name = "phinger-cursors-light";
|
|
||||||
package = pkgs.phinger-cursors;
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
|
||||||
name = "JetBrains Mono Nerd Font";
|
|
||||||
};
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.source-sans-pro;
|
|
||||||
name = "Source Sans Pro";
|
|
||||||
};
|
|
||||||
serif = config.stylix.fonts.sansSerif;
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-color-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
sizes = {
|
|
||||||
applications = 13;
|
|
||||||
desktop = 13;
|
|
||||||
popups = 13;
|
|
||||||
terminal = 13;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
polarity = "dark";
|
|
||||||
image = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/cat-watching-the-star_pixelart_purple_static.png";
|
|
||||||
sha256 = "sha256-P8gCiCC9CZPJyGL4kpvAaOqlNor010s/BUA0muBVfK0=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
82
themes/rose-pine.nix
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
options.theme = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = {
|
||||||
|
rounding = 30;
|
||||||
|
gaps-in = 12;
|
||||||
|
gaps-out = 12 * 2;
|
||||||
|
active-opacity = 0.96;
|
||||||
|
inactive-opacity = 0.94;
|
||||||
|
blur = true;
|
||||||
|
border-size = 4;
|
||||||
|
animation-speed = "fast"; # "fast" | "medium" | "slow"
|
||||||
|
fetch = "none"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
||||||
|
textColorOnWallpaper =
|
||||||
|
config.lib.stylix.colors.base00; # Color of the text displayed on the wallpaper (Lockscreen, display manager, ...)
|
||||||
|
};
|
||||||
|
description = "Theme configuration options";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.stylix = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# See https://tinted-theming.github.io/tinted-gallery/ for more schemes
|
||||||
|
base16Scheme = {
|
||||||
|
base00 = "151320"; # Default Background
|
||||||
|
base01 = "1f1d2e"; # Lighter Background (Used for status bars, line number and folding marks)
|
||||||
|
base02 = "26233a"; # Selection Background
|
||||||
|
base03 = "6e6a86"; # Comments, Invisibles, Line Highlighting
|
||||||
|
base04 = "908caa"; # Dark Foreground (Used for status bars)
|
||||||
|
base05 = "e0def4"; # Default Foreground, Caret, Delimiters, Operators
|
||||||
|
base06 = "e0def4"; # Light Foreground (Not often used)
|
||||||
|
base07 = "524f67"; # Light Background (Not often used)
|
||||||
|
base08 = "eb6f92"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||||
|
base09 = "f6c177"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||||
|
base0A = "ebbcba"; # Classes, Markup Bold, Search Text Background
|
||||||
|
base0B = "31748f"; # Strings, Inherited Class, Markup Code, Diff Inserted
|
||||||
|
base0C = "9ccfd8"; # Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||||
|
base0D = "c4a7e7"; # Functions, Methods, Attribute IDs, Headings, Accent color
|
||||||
|
base0E = "f6c177"; # Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||||
|
base0F = "524f67"; # Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
name = "BreezeX-RosePine-Linux";
|
||||||
|
package = pkgs.rose-pine-cursor;
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
|
name = "JetBrains Mono Nerd Font";
|
||||||
|
};
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.source-sans-pro;
|
||||||
|
name = "Source Sans Pro";
|
||||||
|
};
|
||||||
|
serif = config.stylix.fonts.sansSerif;
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-color-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
sizes = {
|
||||||
|
applications = 13;
|
||||||
|
desktop = 13;
|
||||||
|
popups = 13;
|
||||||
|
terminal = 13;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
polarity = "dark";
|
||||||
|
image = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/pink-clouds.png";
|
||||||
|
sha256 = "sha256-IvINf62mg9rKjml4sh8hl/j7UHrQQlbm6QnZTaI+TRk=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||