diff --git a/.github/assets/README_template.md b/.github/assets/README_template.md index 3f6775f..fe63346 100644 --- a/.github/assets/README_template.md +++ b/.github/assets/README_template.md @@ -1,130 +1,124 @@ -
- nixy logo -
- -
- -# Nixy - -
-
- - - - - - - - - - - - -
-
- -**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily -customizable setup. It provides a structured way to manage your system -configuration and dotfiles with minimal effort. It includes _home-manager_, -_secrets_, and _custom theming_ all in one place. - -**Features:** - -- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel, - etc.) -- 🎨 Consistent Theming: Base16 & Stylix-powered themes -- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.) - -## Table of Content - -{md_table_of_content} - -## Gallery - -![Nixy helper, peaclock](.github/assets/nixy/1.png) -![Qutebrowser, pipes, shell](.github/assets/nixy/2.png) -![nvim, lazygit](.github/assets/nixy/3.png) -![spotify, cava](.github/assets/nixy/4.png) - -## Architecture - -### 🏠 /home (User-level configuration) - -Contains **dotfiles and settings** that apply to your user environment. - -**Subfolders:** - -- `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 - -### 🐧 /nixos - -Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, -...) - -### 🎨 /themes - -This folder contains all system themes. Mainly -[stylix](https://stylix.danth.me/) configurations. Check out the available -themes and learn how to create your own in [THEMES.md](docs/THEMES.md) - -### 💻 /hosts - -This directory contains host-specific configurations. Each host includes: - -- `configuration.nix` for system-wide settings -- `home.nix` for user-level configuration -- `variables.nix` for global variables -- `secrets/` for sensitive data - -### 🖥️ /server-modules - -This folder contains server-related nixos modules. (bitwarden, nextcloud, ...) - -## Installation - -1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to - your system: - -```sh -git clone https://github.com/anotherhadi/nixy ~/.config/nixos -``` - -2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname, - and update `variables.nix` with your machine’s settings. -3. Copy your `hardware-configuration.nix` into your new host's folder to ensure - proper hardware support. -4. Register your new host in `flake.nix` by adding it under nixosConfigurations. - +
+ nixy logo +
+ +
+ +# Nixy + +
+
+ + + + + + + + + + + + +
+
+ +**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily +customizable setup. It provides a structured way to manage your system +configuration and dotfiles with minimal effort. It includes _home-manager_, +_secrets_, and _custom theming_ all in one place. + +**Features:** + +- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!) +- 🎨 Consistent Theming: Base16 & Stylix-powered themes +- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.) + +## Table of Content + +{md_table_of_content} + +## Screenshots + +![Home](.github/assets/rose-pine/home.png) +![Flake & Spotify](.github/assets/rose-pine/flake-spotify.png) +![Browser and notification center](.github/assets/rose-pine/browser-and-notifications.png) + +## Architecture + +### 🏠 /home (User-level configuration) + +Contains **dotfiles and settings** that apply to your user environment. + +**Subfolders:** + +- `programs` is a collection of apps configured with home-manager +- `system` is some "desktop environment" configuration + +### 🐧 /nixos + +Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, +...) + +### 🎨 /themes + +This folder contains all system themes. Mainly +[stylix](https://stylix.danth.me/) configurations. Check out the available +themes and learn how to create your own in [THEMES.md](docs/THEMES.md) + +### 💻 /hosts + +This directory contains host-specific configurations. Each host includes: + +- `configuration.nix` for system-wide settings +- `home.nix` for user-level configuration +- `variables.nix` for global variables +- `secrets/` for sensitive data + +### 🖥️ /server-modules + +This folder contains server-related nixos modules. (bitwarden, nextcloud, ...) + +## Installation + +1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to + your system: + +```sh +git clone https://github.com/anotherhadi/nixy ~/.config/nixos +``` + +2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname, + and update `variables.nix` with your machine’s settings. +3. Copy your `hardware-configuration.nix` into your new host's folder to ensure + proper hardware support. +4. Register your new host in `flake.nix` by adding it under nixosConfigurations. + > [!IMPORTANT] -> `# CHANGEME` comments are placed throughout the config to -> indicate necessary modifications. Use the following command to quickly locate -> them: -> -> ```sh -> rg "CHANGEME" ~/.config/nixos -> ``` - -> [!TIP] -> When you add new files, don't forget to run `git add .` to add them to the git -> repository - -5. Build the system - -```sh -sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname -``` - -## Documentation - -- [SERVER](docs/SERVER.md): Check out the server documentation -- [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 - collection of wallpapers - -- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute -- [LICENSE](LICENSE): MIT License +> `# CHANGEME` comments are placed throughout the config to +> indicate necessary modifications. Use the following command to quickly locate +> them: +> +> ```sh +> rg "CHANGEME" ~/.config/nixos +> ``` + +> [!TIP] +> When you add new files, don't forget to run `git add .` to add them to the git +> repository + +5. Build the system + +```sh +sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname +``` + +## Documentation + +- [SERVER](docs/SERVER.md): Check out the server documentation +- [THEMES](docs/THEMES.md): How themes work and how to create your own +- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome + collection of wallpapers + +- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute +- [LICENSE](LICENSE): MIT License diff --git a/.github/assets/large.png b/.github/assets/large.png index 49e19ee..ab911ac 100644 Binary files a/.github/assets/large.png and b/.github/assets/large.png differ diff --git a/.github/assets/logo.png b/.github/assets/logo.png index d0c1d91..e7d19b3 100644 Binary files a/.github/assets/logo.png and b/.github/assets/logo.png differ diff --git a/.github/assets/nixy/1.png b/.github/assets/nixy/1.png deleted file mode 100644 index a3da949..0000000 Binary files a/.github/assets/nixy/1.png and /dev/null differ diff --git a/.github/assets/nixy/2.png b/.github/assets/nixy/2.png deleted file mode 100644 index bd87b15..0000000 Binary files a/.github/assets/nixy/2.png and /dev/null differ diff --git a/.github/assets/nixy/3.png b/.github/assets/nixy/3.png deleted file mode 100644 index 6fa3932..0000000 Binary files a/.github/assets/nixy/3.png and /dev/null differ diff --git a/.github/assets/nixy/4.png b/.github/assets/nixy/4.png deleted file mode 100644 index ff65324..0000000 Binary files a/.github/assets/nixy/4.png and /dev/null differ diff --git a/.github/assets/rose-pine/browser-and-notifications.png b/.github/assets/rose-pine/browser-and-notifications.png new file mode 100644 index 0000000..a4232dc Binary files /dev/null and b/.github/assets/rose-pine/browser-and-notifications.png differ diff --git a/.github/assets/rose-pine/flake-spotify.png b/.github/assets/rose-pine/flake-spotify.png new file mode 100644 index 0000000..960c1c1 Binary files /dev/null and b/.github/assets/rose-pine/flake-spotify.png differ diff --git a/.github/assets/rose-pine/home.png b/.github/assets/rose-pine/home.png new file mode 100644 index 0000000..c801aae Binary files /dev/null and b/.github/assets/rose-pine/home.png differ diff --git a/.github/scripts/create_readme.sh b/.github/scripts/create_readme.sh index 1c5638c..e4dd247 100755 --- a/.github/scripts/create_readme.sh +++ b/.github/scripts/create_readme.sh @@ -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") # Replace variables -readme_content=${readme_content//\{primarycolor\}/A594FD} +readme_content=${readme_content//\{primarycolor\}/A89AD1} readme_content=${readme_content//\{backgroundcolor\}/0b0b0b} readme_content=${readme_content//\{md_table_of_content\}/$table_of_content} diff --git a/.github/scripts/create_scripts_docs.sh b/.github/scripts/create_scripts_docs.sh deleted file mode 100755 index 10353d2..0000000 --- a/.github/scripts/create_scripts_docs.sh +++ /dev/null @@ -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 diff --git a/.github/scripts/keybindings_to_markdown.sh b/.github/scripts/keybindings_to_markdown.sh deleted file mode 100755 index f1facfb..0000000 --- a/.github/scripts/keybindings_to_markdown.sh +++ /dev/null @@ -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 diff --git a/.github/workflows/update-hyprland-keybindings.yml b/.github/workflows/update-hyprland-keybindings.yml deleted file mode 100644 index afd1c5e..0000000 --- a/.github/workflows/update-hyprland-keybindings.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/update-scripts-docs.yml b/.github/workflows/update-scripts-docs.yml deleted file mode 100644 index dac3ffa..0000000 --- a/.github/workflows/update-scripts-docs.yml +++ /dev/null @@ -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 diff --git a/docs/KEYBINDINGS-HYPRLAND.md b/docs/KEYBINDINGS-HYPRLAND.md deleted file mode 100644 index 127d7f0..0000000 --- a/docs/KEYBINDINGS-HYPRLAND.md +++ /dev/null @@ -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 | diff --git a/docs/SCRIPTS.md b/docs/SCRIPTS.md deleted file mode 100644 index 2f5bb13..0000000 --- a/docs/SCRIPTS.md +++ /dev/null @@ -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) - diff --git a/docs/SERVER.md b/docs/SERVER.md index 370cbbb..ba3a567 100644 --- a/docs/SERVER.md +++ b/docs/SERVER.md @@ -1,62 +1,53 @@ # SERVER -## Overview +> Update in comming. Early 2026 + +## 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. ![server dashboard](../.github/assets/server_dashboard.png) -## **Why This Setup?** +## **Why This Setup?** -- **Private & Secure**: Services are only accessible through Tailscale, preventing exposure to the public internet. -- **Domain-based Access**: A custom domain (`example.org`) maps to the server's Tailscale IP, making service access simple and consistent. -- **Automatic SSL Certificates**: Using DNS-01 challenges, valid SSL certificates are generated even though the services are not publicly exposed. -- **Modular & Declarative**: Everything is managed through NixOS modules, ensuring reproducibility and easy configuration. +- **Private & Secure**: Services are only accessible through Tailscale, preventing exposure to the public internet. +- **Domain-based Access**: A custom domain (`example.org`) maps to the server's Tailscale IP, making service access simple and consistent. +- **Automatic SSL Certificates**: Using DNS-01 challenges, valid SSL certificates are generated even though the services are not publicly exposed. +- **Modular & Declarative**: Everything is managed through NixOS modules, ensuring reproducibility and easy configuration. -## **Self-Hosted Services** +## **Self-Hosted Services** -The server hosts several key applications: +The server hosts several key applications: -### **Core Infrastructure** +### **Core Infrastructure** -- **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. +- **NGINX**: Reverse proxy for routing traffic to services via `example.org`. -### **Networking & Security** +### **Networking & Security** -- **AdGuard Home**: A self-hosted DNS ad blocker for network-wide ad and tracker filtering. +- **AdGuard Home**: A self-hosted DNS ad blocker for network-wide ad and tracker filtering. -### **Monitoring & Storage** +### **Monitoring & Storage** - **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** - **Arr Stack (Radarr, Sonarr, etc.)**: Automated media management tools for handling movies and TV shows. (legaly ofc) -## **How It Works** +## **How It Works** -1. **Domain Configuration** +1. **Domain Configuration** - `example.org` is pointed to the Tailscale IP of the server. (cloudflare A record, not proxied) - - This allows for easy access without exposing services to the internet. + - This allows for easy access without exposing services to the internet. -2. **SSL Certificate Generation** +2. **SSL Certificate Generation** - Certificates are obtained using a **DNS-01 challenge**, verifying domain ownership without requiring public access. -3. **NGINX Reverse Proxy** - - Routes incoming requests from `*.example.org` to the correct internal service. - - Ensures SSL termination and secure connections. +3. **NGINX Reverse Proxy** + - Routes incoming requests from `*.example.org` to the correct internal service. + - Ensures SSL termination and secure connections. -4. **Access Control** - - Only devices within the Tailscale network can reach the services. +4. **Access Control** + - Only devices within the Tailscale network can reach the services. - 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 diff --git a/docs/THEMES.md b/docs/THEMES.md index c6415fd..651ccda 100644 --- a/docs/THEMES.md +++ b/docs/THEMES.md @@ -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. 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 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 -### Nixy +### Rose-pine -![nixy1](../.github/assets/nixy/1.png) -![nixy2](../.github/assets/nixy/2.png) -![nixy3](../.github/assets/nixy/3.png) -![nixy4](../.github/assets/nixy/4.png) +![Home](.github/assets/rose-pine/home.png) +![Flake & Spotify](.github/assets/rose-pine/flake-spotify.png) +![Browser and notification center](.github/assets/rose-pine/browser-and-notifications.png) diff --git a/flake.lock b/flake.lock index c032838..95e1456 100644 --- a/flake.lock +++ b/flake.lock @@ -1,31 +1,5 @@ { "nodes": { - "apple-fonts": { - "inputs": { - "nixpkgs": "nixpkgs", - "ny": "ny", - "sf-arabic": "sf-arabic", - "sf-armenian": "sf-armenian", - "sf-compact": "sf-compact", - "sf-georgian": "sf-georgian", - "sf-hebrew": "sf-hebrew", - "sf-mono": "sf-mono", - "sf-pro": "sf-pro" - }, - "locked": { - "lastModified": 1758228441, - "narHash": "sha256-3mA9oFuhJ1EHyhPd17g/EuJi4jDYPGhyxkEitdh3Kmc=", - "owner": "Lyndeno", - "repo": "apple-fonts.nix", - "rev": "aba9944f6606a69ebedf7bfb723316139eec3f72", - "type": "github" - }, - "original": { - "owner": "Lyndeno", - "repo": "apple-fonts.nix", - "type": "github" - } - }, "aquamarine": { "inputs": { "hyprutils": [ @@ -46,11 +20,11 @@ ] }, "locked": { - "lastModified": 1764714051, - "narHash": "sha256-AjcMlM3UoavFoLzr0YrcvsIxALShjyvwe+o7ikibpCM=", + "lastModified": 1765900596, + "narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a43bedcceced5c21ad36578ed823e6099af78214", + "rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace", "type": "github" }, "original": { @@ -80,17 +54,17 @@ "base16-fish": { "flake": false, "locked": { - "lastModified": 1754405784, - "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "lastModified": 1765809053, + "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", "owner": "tomyun", "repo": "base16-fish", - "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "type": "github" }, "original": { "owner": "tomyun", "repo": "base16-fish", - "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "type": "github" } }, @@ -127,9 +101,101 @@ "type": "github" } }, + "caelestia-cli": { + "inputs": { + "caelestia-shell": "caelestia-shell", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1766455626, + "narHash": "sha256-Czz+ngYowAR/4MA3Vob+D1NV5h3U6wnnpeYPT771MFI=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "78e0b9d795dc38fb63cfc5a59cb7fa6038a757ed", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-cli_2": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1766195958, + "narHash": "sha256-YGawjW7RDzzOEiovrRGyRoXfjISbgLz4BVN9ZMb8LEc=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "8c83ae1e6a60de7d496d346bf3623f789a9f53e3", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": [ + "caelestia-cli" + ], + "nixpkgs": [ + "caelestia-cli", + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1766280311, + "narHash": "sha256-Ty4GT6EaQFaL9E/dKcJB1Q30ByGkxXV6U1eu8+PS5Dc=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "66e509ae488b2c0468f2c803fd34c2625ca725dc", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, + "caelestia-shell_2": { + "inputs": { + "caelestia-cli": "caelestia-cli_2", + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell_2" + }, + "locked": { + "lastModified": 1766280311, + "narHash": "sha256-Ty4GT6EaQFaL9E/dKcJB1Q30ByGkxXV6U1eu8+PS5Dc=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "66e509ae488b2c0468f2c803fd34c2625ca725dc", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, "eleakxir": { "inputs": { - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "systems": "systems" }, "locked": { @@ -213,11 +279,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1754091436, - "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", "type": "github" }, "original": { @@ -268,24 +334,6 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -350,32 +398,11 @@ ] }, "locked": { - "lastModified": 1765217760, - "narHash": "sha256-BVVyAodLcAD8KOtR3yCStBHSE0WAH/xQWH9f0qsxbmk=", + "lastModified": 1766387499, + "narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=", "owner": "nix-community", "repo": "home-manager", - "rev": "e5b1f87841810fc24772bf4389f9793702000c9b", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "hyprpanel", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1750798083, - "narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82", + "rev": "527ad07e6625302b648ed3b28c34b62a79bd103e", "type": "github" }, "original": { @@ -453,17 +480,17 @@ "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "hyprwire": "hyprwire", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1765284242, - "narHash": "sha256-m4YNFGyuGwsG7bf2YyUoqjTjJvRGJ6YY6bpzg4NDB5U=", + "lastModified": 1766498696, + "narHash": "sha256-74qO6ynwUav+QqNhBVn/4yoBCpU6r3/eCkX/V11uL+E=", "ref": "refs/heads/main", - "rev": "6712fb954f2e4f701878b97f19b7185a2cd0e192", - "revCount": 6701, + "rev": "f7f357f15f83612078eb0919ca08b71cac01c25e", + "revCount": 6741, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -507,11 +534,11 @@ ] }, "locked": { - "lastModified": 1764812575, - "narHash": "sha256-1bK1yGgaR82vajUrt6z+BSljQvFn91D74WJ/vJsydtE=", + "lastModified": 1765643131, + "narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=", "owner": "hyprwm", "repo": "hyprland-guiutils", - "rev": "fd321368a40c782cfa299991e5584ca338e36ebe", + "rev": "e50ae912813bdfa8372d62daf454f48d6df02297", "type": "github" }, "original": { @@ -532,11 +559,11 @@ ] }, "locked": { - "lastModified": 1759610243, - "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", "type": "github" }, "original": { @@ -574,26 +601,6 @@ "type": "github" } }, - "hyprpanel": { - "inputs": { - "flake-utils": "flake-utils", - "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1762493267, - "narHash": "sha256-W/eYgKKVqCh7SJLHk6Asc4LvU3YXvGtlL29yBMGymz4=", - "owner": "Jas-SinghFSU", - "repo": "HyprPanel", - "rev": "f9a04192e8fb90a48e1756989f582dc0baec2351", - "type": "github" - }, - "original": { - "owner": "Jas-SinghFSU", - "repo": "HyprPanel", - "type": "github" - } - }, "hyprtoolkit": { "inputs": { "aquamarine": [ @@ -658,11 +665,11 @@ ] }, "locked": { - "lastModified": 1764962281, - "narHash": "sha256-rGbEMhTTyTzw4iyz45lch5kXseqnqcEpmrHdy+zHsfo=", + "lastModified": 1766160771, + "narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "fe686486ac867a1a24f99c753bb40ffed338e4b0", + "rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", "type": "github" }, "original": { @@ -712,11 +719,11 @@ ] }, "locked": { - "lastModified": 1764872015, - "narHash": "sha256-INI9AVrQG5nJZFvGPSiUZ9FEUZJLfGdsqjF1QSak7Gc=", + "lastModified": 1766253200, + "narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "7997451dcaab7b9d9d442f18985d514ec5891608", + "rev": "1079777525b30a947c8d657fac158e00ae85de9d", "type": "github" }, "original": { @@ -740,18 +747,36 @@ "type": "github" } }, + "ndg": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1765720983, + "narHash": "sha256-tWtukpABmux6EC/FuCJEgA1kmRjcRPtED44N+GGPq+4=", + "owner": "feel-co", + "repo": "ndg", + "rev": "f399ace8bb8e1f705dd8942b24d207aa4d75c936", + "type": "github" + }, + "original": { + "owner": "feel-co", + "repo": "ndg", + "type": "github" + } + }, "nixarr": { "inputs": { - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_3", "vpnconfinement": "vpnconfinement", "website-builder": "website-builder" }, "locked": { - "lastModified": 1764669475, - "narHash": "sha256-lTIxxGTYyc9pQeLvwypRVWyVnabVQg0TE/wjAC+sjFY=", + "lastModified": 1765731404, + "narHash": "sha256-eIEh60iK0L4X7UHj7dOZWZEkmWRA1H7ovjVJsfrPavQ=", "owner": "rasmus-kirk", "repo": "nixarr", - "rev": "ac11a6d765bc321b514d518f0d6c1abab3fb797a", + "rev": "204da9209ad4e921c3562a6bca5ac8ad5b6ed9bc", "type": "github" }, "original": { @@ -764,14 +789,14 @@ "inputs": { "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1765267850, - "narHash": "sha256-jOLV+FOm4rKRqJOc9yAFi6pn3ocZ0vW5tSJkfxQ/BN4=", + "lastModified": 1766476984, + "narHash": "sha256-m5V4MhvDet+Pb5RTTo6I7GH2sAVh+H1fWFxZXF0GAUA=", "owner": "kaylorben", "repo": "nixcord", - "rev": "7809866ea4cb0d9b49e9263dab6504020b91ff7e", + "rev": "2677f85e7f66ae2e182ca35d26eb44939908ece3", "type": "github" }, "original": { @@ -797,85 +822,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1757745802, - "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1753579242, - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1764939437, - "narHash": "sha256-4TLFHUwXraw9Df5mXC/vCrJgb50CRr3CzUzF0Mn3CII=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "00d2457e2f608b4be6fe8b470b0a36816324b0ae", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1764517877, - "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1762111121, - "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1757487488, "narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=", @@ -891,13 +837,44 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs-lib": { "locked": { - "lastModified": 1764950072, - "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", + "lastModified": 1761765539, + "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1766399428, + "narHash": "sha256-vS6LSOMDOB3s+L6tqw9IGujxnmUAZQnEG+Vi640LayI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a6c3a6141ec1b367c58ead3f7f846c772a25f4e5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1766070988, + "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f61125a668a320878494449750330ca58b78c557", + "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", "type": "github" }, "original": { @@ -907,61 +884,45 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1765608474, + "narHash": "sha256-9Wx53UK0z8Di5iesJID0tS1dRKwGxI4i7tsSanOHhF0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "28bb483c11a1214a73f9fd2d9928a6e2ea86ec71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_4": { "locked": { - "lastModified": 1750776420, - "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", - "owner": "nixos", + "lastModified": 1766201043, + "narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", + "rev": "b3aad468604d3e488d627c0b43984eb60e75e782", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_5": { "locked": { - "lastModified": 1761016216, - "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", + "lastModified": 1766309749, + "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1754028485, - "narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "59e69648d345d6e8fef86158c555730fa12af9de", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1765186076, - "narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8", + "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "type": "github" }, "original": { @@ -971,13 +932,29 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_6": { "locked": { - "lastModified": 1761880412, - "narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=", + "lastModified": 1764242076, + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1764081664, + "narHash": "sha256-sUoHmPr/EwXzRMpv1u/kH+dXuvJEyyF2Q7muE+t0EU4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386", + "rev": "dc205f7b4fdb04c8b7877b43edb7b73be7730081", "type": "github" }, "original": { @@ -987,18 +964,34 @@ "type": "github" } }, + "nixpkgs_8": { + "locked": { + "lastModified": 1766125104, + "narHash": "sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O+LiaeCPWEM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7d853e518814cca2a657b72eeba67ae20ebf7059", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_9": { "locked": { - "lastModified": 1764947035, - "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a672be65651c80d3f592a89b3945466584a22069", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -1033,15 +1026,16 @@ "flake-compat": "flake-compat_3", "flake-parts": "flake-parts_2", "mnw": "mnw", - "nixpkgs": "nixpkgs_8", - "systems": "systems_4" + "ndg": "ndg", + "nixpkgs": "nixpkgs_7", + "systems": "systems_3" }, "locked": { - "lastModified": 1765119282, - "narHash": "sha256-iI0fuBBYJMnOprGD2L+rum2P8lHMcZ5n35hzdlpwayI=", + "lastModified": 1766412920, + "narHash": "sha256-EyR4W1ToExI0eqOi3g/w48WNVyocMFt4yxibQT0K5JM=", "owner": "notashelf", "repo": "nvf", - "rev": "26c4a7e3c33e739d474ddaf52aa4c5f3d11922ba", + "rev": "45553196b35874521d667ee488ba1547ffc59734", "type": "github" }, "original": { @@ -1050,18 +1044,6 @@ "type": "github" } }, - "ny": { - "flake": false, - "locked": { - "narHash": "sha256-3257NAH4qlan2YHVLpNRy7x8IJqR2pal3OzFo/ykqXs=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -1072,11 +1054,11 @@ ] }, "locked": { - "lastModified": 1765016596, - "narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=", + "lastModified": 1765911976, + "narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c", + "rev": "b68b780b69702a090c8bb1b973bab13756cc7a27", "type": "github" }, "original": { @@ -1085,119 +1067,77 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "caelestia-cli", + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764663772, + "narHash": "sha256-sHqLmm0wAt3PC4vczJeBozI1/f4rv9yp3IjkClHDXDs=", + "ref": "refs/heads/master", + "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460", + "revCount": 713, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, + "quickshell_2": { + "inputs": { + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764663772, + "narHash": "sha256-sHqLmm0wAt3PC4vczJeBozI1/f4rv9yp3IjkClHDXDs=", + "ref": "refs/heads/master", + "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460", + "revCount": 713, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { - "apple-fonts": "apple-fonts", + "caelestia-cli": "caelestia-cli", + "caelestia-shell": "caelestia-shell_2", "eleakxir": "eleakxir", "home-manager": "home-manager", "hyprland": "hyprland", - "hyprpanel": "hyprpanel", "nixarr": "nixarr", "nixcord": "nixcord", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_5", "nixpkgs-stable": "nixpkgs-stable", "nvf": "nvf", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", - "stylix": "stylix", - "vicinae": "vicinae" - } - }, - "sf-arabic": { - "flake": false, - "locked": { - "narHash": "sha256-/0gjRimqvZyE60xYxxPdlU+7Q2LJnnvtbmwOP0YmS9U=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" - } - }, - "sf-armenian": { - "flake": false, - "locked": { - "narHash": "sha256-rRoDkbNMYkzOHZmQm96Zv80TZvRlAeoxkv4pMHP5nUg=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Armenian.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Armenian.dmg" - } - }, - "sf-compact": { - "flake": false, - "locked": { - "narHash": "sha256-WeqT80cdK/XzTLSaJs5DHodzxoeAzwL/xTgdq0YwQbM=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" - } - }, - "sf-georgian": { - "flake": false, - "locked": { - "narHash": "sha256-IevVNOC28IiR45YfI3PsZzXLMRxuB5u7UiE53Zn6tRU=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Georgian.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Georgian.dmg" - } - }, - "sf-hebrew": { - "flake": false, - "locked": { - "narHash": "sha256-Dw84kYwMpCtKKKqm8cZcQ9TZ7GayU5MO7W0LJw0Rcwk=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Hebrew.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Hebrew.dmg" - } - }, - "sf-mono": { - "flake": false, - "locked": { - "narHash": "sha256-ICdHRFdNL7PM/fXJUzS7LgZxZiqcyIuCMHLze4En4vg=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" - } - }, - "sf-pro": { - "flake": false, - "locked": { - "narHash": "sha256-vprahHpCUf9O8RualBrEuLEfuLfzI/2d8AQmwlCGPPk=", - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" - }, - "original": { - "type": "file", - "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" + "stylix": "stylix" } }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1765231718, - "narHash": "sha256-qdBzo6puTgG4G2RHG0PkADg22ZnQo1JmSVFRxrD4QM4=", + "lastModified": 1766289575, + "narHash": "sha256-BOKCwOQQIP4p9z8DasT5r+qjri3x7sPCOq+FTjY8Z+o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "7fd1416aba1865eddcdec5bb11339b7222c2363e", + "rev": "9836912e37aef546029e48c8749834735a6b9dad", "type": "github" }, "original": { @@ -1211,14 +1151,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_5" + "systems": "systems_4" }, "locked": { - "lastModified": 1765082296, - "narHash": "sha256-EcefoixU9ht+P6QB/TfjLY9E3MdJVfeSec6G8Ges0pA=", + "lastModified": 1766292025, + "narHash": "sha256-dZ9SSqRXfb+WU9MLl5c/ktdRWYZ42uxBPB7rQYuDaJs=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "ac4927ea1ec7e7ea3635a1d8b933106a596c4356", + "rev": "73031a3c9359c6c0ab82098793573d0c0951e372", "type": "github" }, "original": { @@ -1236,9 +1176,9 @@ "firefox-gnome-theme": "firefox-gnome-theme", "flake-parts": "flake-parts_3", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_9", "nur": "nur", - "systems": "systems_6", + "systems": "systems_5", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1246,11 +1186,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1765047449, - "narHash": "sha256-VQcqjJ2g0kT9TW4ENwA2HBQJzfbCUd5s1Wm3K+R2QZY=", + "lastModified": 1766440186, + "narHash": "sha256-7B/dntEDan+pMB8B/sG6599f3mQaySAJL+c9NhdMP7k=", "owner": "danth", "repo": "stylix", - "rev": "bd00e01aab676aee88e6cc5c9238b4a5a7d6639a", + "rev": "844294a58ef0badb3067c4f2fe063030537eb624", "type": "github" }, "original": { @@ -1334,36 +1274,6 @@ "type": "github" } }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tinted-foot": { "flake": false, "locked": { @@ -1445,32 +1355,13 @@ "type": "github" } }, - "vicinae": { - "inputs": { - "nixpkgs": "nixpkgs_11", - "systems": "systems_7" - }, - "locked": { - "lastModified": 1765272078, - "narHash": "sha256-etv2HJA9OWvTkjnrjaNSqvebu9gWLIGPYb9PWr4qkfM=", - "owner": "vicinaehq", - "repo": "vicinae", - "rev": "32cf6b1f82e007cddba9c9ae037eff670219cd55", - "type": "github" - }, - "original": { - "owner": "vicinaehq", - "repo": "vicinae", - "type": "github" - } - }, "vpnconfinement": { "locked": { - "lastModified": 1759956062, - "narHash": "sha256-NUZu0Rb0fwUjfdp51zMm0xM3lcK8Kw4c97LLog7+JjA=", + "lastModified": 1765634578, + "narHash": "sha256-Fujb9sn1cj+u/bzfo2RbQkcAvJ7Ch1pimJzFie4ptb4=", "owner": "Maroka-chan", "repo": "VPN-Confinement", - "rev": "fabe7247b720b5eb4c3c053e24a2b3b70e64c52b", + "rev": "f2989e1e3cb06c7185939e9ddc368f88b998616a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 640dd69..64c90c4 100644 --- a/flake.nix +++ b/flake.nix @@ -10,23 +10,29 @@ nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; stylix.url = "github:danth/stylix"; - apple-fonts.url = "github:Lyndeno/apple-fonts.nix"; nixcord.url = "github:kaylorben/nixcord"; sops-nix.url = "github:Mic92/sops-nix"; - nixarr.url = "github:rasmus-kirk/nixarr"; nvf.url = "github:notashelf/nvf"; - vicinae.url = "github:vicinaehq/vicinae"; home-manager = { url = "github:nix-community/home-manager"; 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 = { url = "github:Gerg-L/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + # Server eleakxir.url = "github:anotherhadi/eleakxir"; + nixarr.url = "github:rasmus-kirk/nixarr"; }; outputs = inputs @ {nixpkgs, ...}: { diff --git a/home/programs/alacritty/default.nix b/home/programs/alacritty/default.nix deleted file mode 100644 index 4f02ad8..0000000 --- a/home/programs/alacritty/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -# Alacritty is a fast, cross-platform, OpenGL terminal emulator. -{ - programs.alacritty = { - enable = true; - settings = { - window.padding = { - x = 10; - y = 10; - }; - }; - }; -} diff --git a/home/programs/lazygit/default.nix b/home/programs/git/lazygit.nix similarity index 100% rename from home/programs/lazygit/default.nix rename to home/programs/git/lazygit.nix diff --git a/home/programs/git/signing.nix b/home/programs/git/signing.nix index 95d6e0b..ab73767 100644 --- a/home/programs/git/signing.nix +++ b/home/programs/git/signing.nix @@ -1,6 +1,6 @@ # 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"; programs.git.settings = { diff --git a/home/programs/group/cybersecurity.nix b/home/programs/group/cybersecurity.nix new file mode 100644 index 0000000..b863848 --- /dev/null +++ b/home/programs/group/cybersecurity.nix @@ -0,0 +1,15 @@ +{ + pkgs, + inputs, + ... +}: { + home.packages = with pkgs; [ + wireshark + nmap + john + hashcat + inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils + caido + nuclei + ]; +} diff --git a/home/programs/kitty/default.nix b/home/programs/kitty/default.nix deleted file mode 100644 index 7b39b91..0000000 --- a/home/programs/kitty/default.nix +++ /dev/null @@ -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 - ''; - }; -} diff --git a/home/programs/nightshift/default.nix b/home/programs/nightshift/default.nix new file mode 100644 index 0000000..749adc3 --- /dev/null +++ b/home/programs/nightshift/default.nix @@ -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 + ]; +} diff --git a/home/scripts/nixy/default.nix b/home/programs/nixy/default.nix similarity index 100% rename from home/scripts/nixy/default.nix rename to home/programs/nixy/default.nix diff --git a/home/programs/nvf/languages.nix b/home/programs/nvf/languages.nix index ce65bb1..0fed863 100644 --- a/home/programs/nvf/languages.nix +++ b/home/programs/nvf/languages.nix @@ -91,7 +91,7 @@ go.enable = true; markdown = { enable = true; - format.type = "prettierd"; + format.type = ["prettierd"]; extensions = { markview-nvim = { enable = true; diff --git a/home/programs/proton/default.nix b/home/programs/proton/default.nix new file mode 100644 index 0000000..f2d5ae4 --- /dev/null +++ b/home/programs/proton/default.nix @@ -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; + }; + }; +} diff --git a/home/programs/tailscale/default.nix b/home/programs/tailscale/default.nix deleted file mode 100644 index e2c1471..0000000 --- a/home/programs/tailscale/default.nix +++ /dev/null @@ -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"]; -} diff --git a/home/programs/thunar/default.nix b/home/programs/thunar/default.nix index 8e2a8f8..3ee0acd 100644 --- a/home/programs/thunar/default.nix +++ b/home/programs/thunar/default.nix @@ -73,26 +73,25 @@ in { ''; home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = '' - + - + - - - - + + + + - @@ -103,35 +102,60 @@ in { - - + + + + + + + + + + + + + + + ''; xdg.configFile."Thunar/uca.xml".text = '' - - utilities-terminal - Open Terminal Here - 1700000000000001 - kitty -d %f - Opens Kitty terminal in the selected folder - * - - - - - - Extract here + + utilities-terminal + Open Terminal Here + 1700000000000001 + kitty -d %f + Opens Kitty terminal in the selected folder + * + + + + + + Extract here + + 1689618425925956-3 + xarchiver -x . %f + Extracts the archive into the directory it is located in. + * + *.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt; + + + + package-x-generic + Compress here (tar.gz) - 1689618425925956-3 - xarchiver -x . %f - Extracts the archive into the directory it is located in. + 1700000000000003 + tar -czvf %n.tar.gz %N + Creates a compressed archive (.tar.gz) of selected files/folders. * - *.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt; + * + - + ''; } diff --git a/home/programs/vivaldi/default.nix b/home/programs/vivaldi/default.nix new file mode 100644 index 0000000..b344c8b --- /dev/null +++ b/home/programs/vivaldi/default.nix @@ -0,0 +1,12 @@ +{pkgs, ...}: { + programs.vivaldi = { + enable = true; + commandLineArgs = [ + "--no-default-browser-check" + ]; + }; + + home.sessionVariables = { + DEFAULT_BROWSER = "${pkgs.vivaldi}/bin/vivaldi"; + }; +} diff --git a/home/system/zathura/default.nix b/home/programs/zathura/default.nix similarity index 84% rename from home/system/zathura/default.nix rename to home/programs/zathura/default.nix index 8cb738a..510e3de 100644 --- a/home/system/zathura/default.nix +++ b/home/programs/zathura/default.nix @@ -1,3 +1,4 @@ +# TODO: Misc section with VLC, Zathura etc # Zathura is a PDF viewer { programs.zathura = { diff --git a/home/scripts/brightness/default.nix b/home/scripts/brightness/default.nix deleted file mode 100644 index 10d6ee6..0000000 --- a/home/scripts/brightness/default.nix +++ /dev/null @@ -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 - ]; -} diff --git a/home/scripts/caffeine/default.nix b/home/scripts/caffeine/default.nix deleted file mode 100644 index 8941223..0000000 --- a/home/scripts/caffeine/default.nix +++ /dev/null @@ -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];} diff --git a/home/scripts/default.nix b/home/scripts/default.nix deleted file mode 100644 index f8b36f7..0000000 --- a/home/scripts/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - imports = [ - ./nixy - ./sounds - ./brightness - ./caffeine - ./hyprpanel - ./hyprfocus - ./night-shift - ./screenshot - ./nerdfont-fzf - ./notification - ./system - ]; -} diff --git a/home/scripts/hyprfocus/default.nix b/home/scripts/hyprfocus/default.nix deleted file mode 100644 index 3dfb55b..0000000 --- a/home/scripts/hyprfocus/default.nix +++ /dev/null @@ -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];} diff --git a/home/scripts/hyprpanel/default.nix b/home/scripts/hyprpanel/default.nix deleted file mode 100644 index ecd443f..0000000 --- a/home/scripts/hyprpanel/default.nix +++ /dev/null @@ -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]; -} diff --git a/home/scripts/nerdfont-fzf/default.nix b/home/scripts/nerdfont-fzf/default.nix deleted file mode 100644 index 6066ece..0000000 --- a/home/scripts/nerdfont-fzf/default.nix +++ /dev/null @@ -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="; - }; - }; -} diff --git a/home/scripts/night-shift/default.nix b/home/scripts/night-shift/default.nix deleted file mode 100644 index 1c6ca82..0000000 --- a/home/scripts/night-shift/default.nix +++ /dev/null @@ -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 - ]; -} diff --git a/home/scripts/notification/default.nix b/home/scripts/notification/default.nix deleted file mode 100644 index 9b813ac..0000000 --- a/home/scripts/notification/default.nix +++ /dev/null @@ -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];} diff --git a/home/scripts/screenshot/default.nix b/home/scripts/screenshot/default.nix deleted file mode 100644 index 78ebb11..0000000 --- a/home/scripts/screenshot/default.nix +++ /dev/null @@ -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 ]; -} diff --git a/home/scripts/sounds/default.nix b/home/scripts/sounds/default.nix deleted file mode 100644 index 3d8ef1c..0000000 --- a/home/scripts/sounds/default.nix +++ /dev/null @@ -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]; -} diff --git a/home/scripts/system/default.nix b/home/scripts/system/default.nix deleted file mode 100644 index b37dcf4..0000000 --- a/home/scripts/system/default.nix +++ /dev/null @@ -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];} diff --git a/home/system/caelestia-shell/appearance.nix b/home/system/caelestia-shell/appearance.nix new file mode 100644 index 0000000..6951199 --- /dev/null +++ b/home/system/caelestia-shell/appearance.nix @@ -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; + }; + }; +} diff --git a/home/system/caelestia-shell/bar.nix b/home/system/caelestia-shell/bar.nix new file mode 100644 index 0000000..b85de87 --- /dev/null +++ b/home/system/caelestia-shell/bar.nix @@ -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; + }; + }; +} diff --git a/home/system/caelestia-shell/bindings.nix b/home/system/caelestia-shell/bindings.nix new file mode 100644 index 0000000..82665fc --- /dev/null +++ b/home/system/caelestia-shell/bindings.nix @@ -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%-" + ]; + }; +} diff --git a/home/system/caelestia-shell/default.nix b/home/system/caelestia-shell/default.nix new file mode 100644 index 0000000..9be94da --- /dev/null +++ b/home/system/caelestia-shell/default.nix @@ -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; + }; +} diff --git a/home/system/caelestia-shell/launcher.nix b/home/system/caelestia-shell/launcher.nix new file mode 100644 index 0000000..149f59a --- /dev/null +++ b/home/system/caelestia-shell/launcher.nix @@ -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 = []; + }; + }; +} diff --git a/home/system/caelestia-shell/scheme.nix b/home/system/caelestia-shell/scheme.nix new file mode 100644 index 0000000..eb1f0df --- /dev/null +++ b/home/system/caelestia-shell/scheme.nix @@ -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; +} diff --git a/home/system/caelestia-shell/session-gif-hacker-cat.gif b/home/system/caelestia-shell/session-gif-hacker-cat.gif new file mode 100644 index 0000000..4cc58d5 Binary files /dev/null and b/home/system/caelestia-shell/session-gif-hacker-cat.gif differ diff --git a/home/system/hypridle/default.nix b/home/system/hypridle/default.nix deleted file mode 100644 index 63089b3..0000000 --- a/home/system/hypridle/default.nix +++ /dev/null @@ -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"; -} diff --git a/home/system/hyprland/bindings.nix b/home/system/hyprland/bindings.nix index 7d0b796..65cdd4c 100644 --- a/home/system/hyprland/bindings.nix +++ b/home/system/hyprland/bindings.nix @@ -1,20 +1,19 @@ {pkgs, ...}: { wayland.windowManager.hyprland.settings = { + "$mod" = "SUPER"; + "$shiftMod" = "SUPER_SHIFT"; + bind = [ "$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal) "$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,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,A, exec, uwsm app -- ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Authenticator - "$mod,L, exec, uwsm app -- ${pkgs.hyprlock}/bin/hyprlock" # Lock - "$mod,SPACE, exec, vicinae toggle" # Launcher - # "$mod,SPACE, exec, menu" # Launcher - "$mod,X, exec, powermenu" # Powermenu - - "$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus + "$mod,A, exec, uwsm app -- env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Auth + "$mod,M, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=jnpecgipniidlgicjocehkhajgdnjekh" # Proton Mail (PWA) + "$mod,C, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=ojibjkjikcpjonjjngfkegflhmffeemk" # Proton Calendar (PWA) + "$mod,I, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=lcfjlhjhpmdjimnbkdfjnkojodddgfmd" # Proton Lumo (PWA) "$mod,Q, killactive," # Close window "$mod,T, togglefloating," # Toggle Floating @@ -27,15 +26,6 @@ "$shiftMod,down, focusmonitor, 1" # Focus next monitor "$shiftMod,left, layoutmsg, addmaster" # Add to 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 ws = i + 1; @@ -49,20 +39,5 @@ "$mod,mouse:272, movewindow" # Move 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 - ]; }; } diff --git a/home/system/hyprland/default.nix b/home/system/hyprland/default.nix index e48d59c..f2e427d 100644 --- a/home/system/hyprland/default.nix +++ b/home/system/hyprland/default.nix @@ -13,7 +13,7 @@ rounding = config.theme.rounding; blur = config.theme.blur; keyboardLayout = config.var.keyboardLayout; - background = "rgb(" + config.lib.stylix.colors.base00 + ")"; + background = "rgba(" + config.lib.stylix.colors.base00 + "77)"; in { imports = [ ./animations.nix @@ -27,13 +27,14 @@ in { qt6.qtwayland libsForQt5.qt5ct qt6Packages.qt6ct + hyprland-qtutils + adw-gtk3 hyprshot hyprpicker swappy imv wf-recorder wlr-randr - wl-clipboard brightnessctl gnome-themes-extra libva @@ -58,12 +59,8 @@ in { portalPackage = null; settings = { - "$mod" = "SUPER"; - "$shiftMod" = "SUPER_SHIFT"; - exec-once = [ "dbus-update-activation-environment --systemd --all &" - "systemctl --user enable --now hyprpaper.service &" ]; monitor = [ @@ -138,6 +135,16 @@ in { 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 = { vfr = true; disable_hyprland_logo = true; diff --git a/home/system/hyprland/keyboard-backlight.nix b/home/system/hyprland/keyboard-backlight.nix index 0143cc7..719c02b 100644 --- a/home/system/hyprland/keyboard-backlight.nix +++ b/home/system/hyprland/keyboard-backlight.nix @@ -5,6 +5,7 @@ config, ... }: let + alert-when-low-battery = false; keyboard-backlight = pkgs.writeShellScriptBin "keyboard-backlight" '' function set_keyboard_backlight { local color=$1 @@ -15,6 +16,9 @@ } state="white" set_keyboard_backlight ${config.lib.stylix.colors.base0D} + if [ "${toString alert-when-low-battery}" = "false" ]; then + exit 0 + fi while true; do BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity) IS_CHARGING=$(cat /sys/class/power_supply/BAT*/status) diff --git a/home/system/hyprlock/default.nix b/home/system/hyprlock/default.nix deleted file mode 100644 index e6313e7..0000000 --- a/home/system/hyprlock/default.nix +++ /dev/null @@ -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 "$(date +"%I:%M")"''; - 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 = "🔒 Enter Password"; - position = "0, -250"; - halign = "center"; - valign = "center"; - }; - }; - }; -} diff --git a/home/system/hyprpanel/default.nix b/home/system/hyprpanel/default.nix deleted file mode 100644 index 96c59ba..0000000 --- a/home/system/hyprpanel/default.nix +++ /dev/null @@ -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"; - }; - }; -} diff --git a/home/system/hyprpaper/default.nix b/home/system/hyprpaper/default.nix index decc13b..0fe9e01 100644 --- a/home/system/hyprpaper/default.nix +++ b/home/system/hyprpaper/default.nix @@ -11,4 +11,8 @@ }; systemd.user.services.hyprpaper.Unit.After = lib.mkForce "graphical-session.target"; + + wayland.windowManager.hyprland.settings.exec-once = [ + "systemctl --user enable --now hyprpaper.service" + ]; } diff --git a/home/system/mime/default.nix b/home/system/mime/default.nix index 3b224bd..531ea29 100644 --- a/home/system/mime/default.nix +++ b/home/system/mime/default.nix @@ -3,7 +3,7 @@ with lib; let defaultApps = { # 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"]; image = ["imv-dir.desktop"]; audio = ["mpv.desktop"]; diff --git a/home/system/vicinae/default.nix b/home/system/vicinae/default.nix deleted file mode 100644 index 3cc5997..0000000 --- a/home/system/vicinae/default.nix +++ /dev/null @@ -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"]; -} diff --git a/home/system/wofi/default.nix b/home/system/wofi/default.nix deleted file mode 100644 index 2adf81a..0000000 --- a/home/system/wofi/default.nix +++ /dev/null @@ -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; - } - ''; - }; -} diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index 7adcbda..86102df 100644 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -15,7 +15,7 @@ ../../nixos/hyprland.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 ./hardware-configuration.nix diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 3c3fe71..4471b6c 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -1,72 +1,54 @@ { pkgs, config, - inputs, ... }: { imports = [ - # Mostly user-specific configuration - ./variables.nix - # Programs - ../../home/programs/kitty - # ../../home/programs/alacritty + ../../home/programs/vivaldi + ../../home/programs/proton ../../home/programs/ghostty ../../home/programs/nvf ../../home/programs/shell ../../home/programs/fetch ../../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/thunar - ../../home/programs/lazygit ../../home/programs/discord - ../../home/programs/tailscale - - # Scripts - ../../home/scripts # All scripts + ../../home/programs/nixy + ../../home/programs/zathura + ../../home/programs/nightshift + ../../home/programs/group/cybersecurity.nix # System (Desktop environment like stuff) ../../home/system/hyprland - ../../home/system/hyprlock - ../../home/system/hyprpanel + ../../home/system/caelestia-shell ../../home/system/hyprpaper - ../../home/system/zathura ../../home/system/mime ../../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 ]; home = { - inherit (config.var) username; - homeDirectory = "/home/" + config.var.username; - packages = with pkgs; [ # Apps - bitwarden-desktop # Password manager vlc # Video player blanket # White-noise app obsidian # Note taking app - planify # Todolists textpieces # Manipulate texts - curtail # Compress images resources # Ressource monitor gnome-clocks # Clocks app gnome-text-editor # Basic graphic text editor mpv # Video player - brave # Web browser - - # Privacy + ticktick # Todo app session-desktop # Session app, private messages signal-desktop # Signal app, private messages - protonvpn-gui - proton-pass - proton-authenticator - ticktick # Privacy friendly todo app + stirling-pdf # TODO: Server version + calibre # Dev go @@ -79,32 +61,24 @@ pnpm air duckdb - inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils - caido - wireshark - nuclei - - # Utils - zip - unzip - optipng - jpegoptim - pfetch - btop - fastfetch # Just cool peaclock cbonsai pipes cmatrix + fastfetch # Backup vscode + brave ]; - # Import my profile picture, used by the hyprpanel dashboard - file.".face.icon" = {source = ./profile_picture.png;}; + inherit (config.var) username; + homeDirectory = "/home/" + config.var.username; + + # Import a profile picture, used by the caelestia dashboard + file.".face" = {source = ./profile_picture.png;}; # Don't touch this stateVersion = "24.05"; diff --git a/hosts/laptop/secrets/default.nix b/hosts/laptop/secrets/default.nix index ba5746a..f6f8d8a 100644 --- a/hosts/laptop/secrets/default.nix +++ b/hosts/laptop/secrets/default.nix @@ -13,11 +13,9 @@ secrets = { sshconfig = {path = "/home/hadi/.ssh/config";}; github-key = {path = "/home/hadi/.ssh/github";}; - gitlab-key = {path = "/home/hadi/.ssh/gitlab";}; jack-key = {path = "/home/hadi/.ssh/jack";}; signing-key = {path = "/home/hadi/.ssh/key";}; signing-pub-key = {path = "/home/hadi/.ssh/key.pub";}; - pia = {path = "/home/hadi/.config/pia/pia.ovpn";}; }; }; diff --git a/hosts/laptop/variables.nix b/hosts/laptop/variables.nix index 19217cd..200ab02 100644 --- a/hosts/laptop/variables.nix +++ b/hosts/laptop/variables.nix @@ -5,7 +5,7 @@ }: { imports = [ # Choose your theme here: - ../../themes/nixy.nix + ../../themes/rose-pine.nix ]; config.var = { @@ -32,7 +32,7 @@ autoGarbageCollector = true; }; - # Let this here + # DON'T TOUCH THIS options = { var = lib.mkOption { type = lib.types.attrs; diff --git a/nixos/tailscale.nix b/nixos/tailscale.nix index 7b3d8b9..149b5a5 100644 --- a/nixos/tailscale.nix +++ b/nixos/tailscale.nix @@ -23,6 +23,10 @@ in { } ]; + environment.systemPackages = with inputs.nixpkgs-stable.legacyPackages.x86_64-linux; [ + tailscale + ]; + services.tailscale = { enable = true; package = inputs.nixpkgs-stable.legacyPackages.x86_64-linux.tailscale; diff --git a/nixos/tuigreet.nix b/nixos/tuigreet.nix deleted file mode 100644 index 2c3c9e3..0000000 --- a/nixos/tuigreet.nix +++ /dev/null @@ -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; - }; -} diff --git a/nixos/utils.nix b/nixos/utils.nix index 285ed83..20a8678 100644 --- a/nixos/utils.nix +++ b/nixos/utils.nix @@ -90,7 +90,6 @@ in { }; environment.systemPackages = with pkgs; [ - hyprland-qtutils fd bc gcc @@ -99,9 +98,17 @@ in { xdg-utils wget curl + gnupg + openssl vim go comma + zip + unzip + optipng + jpegoptim + pfetch + btop ]; xdg.portal = { diff --git a/themes/catppuccin.nix b/themes/catppuccin.nix deleted file mode 100644 index 9b0889e..0000000 --- a/themes/catppuccin.nix +++ /dev/null @@ -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. - }; - - 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="; - }; - }; -} diff --git a/themes/nixy.nix b/themes/nixy.nix deleted file mode 100644 index 3b3cd52..0000000 --- a/themes/nixy.nix +++ /dev/null @@ -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. - }; - - 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="; - }; - }; -} diff --git a/themes/rose-pine.nix b/themes/rose-pine.nix new file mode 100644 index 0000000..b6b7eff --- /dev/null +++ b/themes/rose-pine.nix @@ -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. + }; + + 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="; + }; + }; +}