mirror of
https://github.com/anotherhadi/nixy.git
synced 2026-08-21 10:45:49 +02:00
Compare commits
144 Commits
5eb34e05ab
..
v3.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 7b8774d81f | |||
| 017160cff1 | |||
| 949c6dacfd | |||
| 7bd210ba3c | |||
| 4e2c6cbce5 | |||
| 35f0fcbb1f | |||
| d4f2128b72 | |||
| d5486d9b86 | |||
| 044adea965 | |||
| b637233137 | |||
| 82b96a1900 | |||
| bcec00e51c | |||
| f591bd6b2b | |||
| 87db8442ed | |||
| d628b6a5a4 | |||
| 95fbe68e96 | |||
| 3acb5429cd | |||
| 50304e6fbe | |||
| 241757518c | |||
| adab419e03 | |||
| 7103042597 | |||
| 74dc346ea3 | |||
| 47305b4f49 | |||
| 05a795fb1f | |||
| 0ec9ee4d51 | |||
| ba8e07ed87 | |||
| edc9615f6f | |||
| fbef284ba2 | |||
| 241fa97263 | |||
| b155c35a9c | |||
| df659a917c | |||
| 85a0c3d118 | |||
| a08c6833e4 | |||
| 9631d4ef4f | |||
| 703bb9ff79 | |||
| 7f6bf8e405 | |||
| 4ec04c372a | |||
| cf12e5c310 | |||
| bfb8cc8880 | |||
| 35ea4e364b | |||
| 5596b17feb | |||
| 234d68d34b | |||
| 1b40ad6547 | |||
| d6ea51c5ad | |||
| 10b4e2b826 | |||
| e5fd687524 | |||
| c872dfe1f5 | |||
| 7a37403334 | |||
| 5c8674f619 | |||
| 2fe6378221 | |||
| 417e18f7dc | |||
| 6bba61db34 | |||
| 6525cc6a0b | |||
| 8df6f3faac | |||
| e6bf30682a | |||
| 68d78063af | |||
| 623675965c | |||
| bf1c8e33a4 | |||
| 28d03937a4 | |||
| a53de1dc18 | |||
| c85f9f5add | |||
| ab5bd64fa8 | |||
| 0f587c2d7a | |||
| 90917d269f | |||
| 4ae0793b12 | |||
| 6e50f7cb72 | |||
| 23d9aad7aa | |||
| 70baccb96b | |||
| 06a41b3d6e | |||
| c98f623bbf | |||
| cb2272746f | |||
| cd943828cc | |||
| 8a7a3354eb | |||
| aa8f600bd1 | |||
| 9159b34d59 | |||
| becdaf407e | |||
| 746f105209 | |||
| 96932de4fa | |||
| 69c12bf054 | |||
| 16aa758975 | |||
| 07b4b490ae | |||
| ecf6ff0627 | |||
| c5db47ab0e | |||
| 26bc2fef9a | |||
| 27dcbaafa4 | |||
| 87695c4e21 | |||
| 3b43b088ba | |||
| 792466d8c6 | |||
| 25be368726 | |||
| 28d0da590c | |||
| 064407796e | |||
| 98f75ebf3c | |||
| f7ab27b629 | |||
| 049c0c5803 | |||
| 24e5badf06 | |||
| 964c511052 | |||
| c971073a28 | |||
| 6f5fa48009 | |||
| 2c8b7ef08a | |||
| c3f611af88 | |||
| 4d3b0e5244 | |||
| 121991682b | |||
| a80e52d0d0 | |||
| 21845bef5f | |||
| ebdbddf5c0 | |||
| cceb96c26b | |||
| 943eaf2116 | |||
| 1d034481e9 | |||
| 079e01f71e | |||
| f9733872fd | |||
| 5a235ce597 | |||
| a21e68fe5d | |||
| f7616d564b | |||
| b1f7498303 | |||
| 1b6a2dd89e | |||
| f985ded50a | |||
| 7ecde5089e | |||
| c4415474c3 | |||
| a8e6060a92 | |||
| 28e7f5c0dc | |||
| 0968954de1 | |||
| e6b7406730 | |||
| a3d38d8183 | |||
| 932f6b6dbb | |||
| c97948ba09 | |||
| a4050c3422 | |||
| c025097810 | |||
| 769880a865 | |||
| f7d00d972f | |||
| 3a65e6b9a4 | |||
| 893417e316 | |||
| 5bf5e9dee3 | |||
| 36d09253cf | |||
| e69ebdd9d5 | |||
| 697a5c3d63 | |||
| 4636723f7c | |||
| 7bdbc3fdde | |||
| 66e52892ba | |||
| 437fe822ed | |||
| 48f7170f4f | |||
| 9943a1dacf | |||
| 6cc1d430a5 | |||
| 8b5ff95ba3 | |||
| 678098460a |
@@ -0,0 +1,111 @@
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
# Nixy
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
|
||||
I'm Hadi, a french developer, student in infosec, enthusiastic about nix, golang & blockchains.
|
||||
This is my own, **keyboard-centric**, and **minimalistic** NixOS configuration.
|
||||
I enable vim-like keybindings everywhere I can, and I use a lot of custom scripts to make my life easier.
|
||||
|
||||
**Nixy key points:**
|
||||
|
||||
- Hypr-ecosystem first (hyprland, hyprlock, hyprpanel, hypridle, ...)
|
||||
- Stylix/base16 themes
|
||||
- Vim-like keybindings everywhere (hyprland, qutebrowser, nvim, ...)
|
||||
|
||||
## Table of Content
|
||||
|
||||
{md_table_of_content}
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
### 🏠 home
|
||||
|
||||
Those are the dotfiles and configuration files for user-level configuration
|
||||
|
||||
**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
|
||||
|
||||
Those are the themes used in the system configuration.
|
||||
Those themes are based on [stylix](https://github.com/danth/stylix).
|
||||
See avaiable themes in [THEMES.md](docs/THEMES.md)
|
||||
|
||||
### 💻 hosts
|
||||
|
||||
Those are the host-specific configurations.
|
||||
Each host contains a `configuration.nix` for system-level configuration, a `home.nix` for user-level configuration, and a `variables.nix` for config wide variables.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repo
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
2. Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
3. Add your `hardware-configuration.nix` to your new host's folder
|
||||
4. Add your 'nixosConfigurations' inside `flake.nix`
|
||||
|
||||
> [!Important]
|
||||
> I added few `# CHANGEME` comments in the files to help you find what to change. Be sure to check them up.
|
||||
> You can use `rg "CHANGEME"` to find them all with ripgrep.
|
||||
|
||||
> [!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
|
||||
|
||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||
- [SCRIPTS](docs/SCRIPTS.md): Scripts that are available
|
||||
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS](https://github.com/anotherhadi/nixy-wallpapers): A collection of wallpapers for Nixy.
|
||||
|
||||
- [TODO](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT License
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Create the README.md file from the .github/assets/README_template.md file
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
README_FILE="./README.md"
|
||||
|
||||
table_of_content=$(markdown-table-of-contents --start-by 2 ./.github/assets/README_template.md) # https://github.com/anotherhadi/markdown-table-of-contents
|
||||
readme_content=$(cat "./.github/assets/README_template.md")
|
||||
|
||||
# Replace variables
|
||||
readme_content=${readme_content//\{primarycolor\}/A594FD}
|
||||
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
|
||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
||||
|
||||
echo "[//]: # (This file is autogenerated)" >"$README_FILE"
|
||||
echo "$readme_content" >>"$README_FILE"
|
||||
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
|
||||
mv "/tmp/readme.md" "$README_FILE"
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/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
|
||||
Regular → Executable
+11
-12
@@ -4,7 +4,7 @@
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
KEYBINDINGS_FILE="./docs/KEYBINDINGS.md"
|
||||
KEYBINDINGS_FILE="./docs/KEYBINDINGS-HYPRLAND.md"
|
||||
|
||||
function getList() {
|
||||
content=$1
|
||||
@@ -17,9 +17,9 @@ function getList() {
|
||||
echo "$list"
|
||||
}
|
||||
|
||||
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
|
||||
[[ -f "./home/system/hyprland/bindings.nix" ]] || (echo "File ./home/system/hyprland/bindings.nix not found" && exit 1)
|
||||
|
||||
config=$(cat "./home/system/hyprland/default.nix")
|
||||
config=$(cat "./home/system/hyprland/bindings.nix")
|
||||
|
||||
# Bind
|
||||
bind=$(getList "$config" "bind")
|
||||
@@ -33,29 +33,28 @@ bindle=$(getList "$config" "bindle")
|
||||
# Join the lists:
|
||||
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
|
||||
|
||||
echo "# Keybindings" >"$KEYBINDINGS_FILE"
|
||||
echo "[//]: # (This file is autogenerated)" >"$KEYBINDINGS_FILE"
|
||||
echo "# Keybindings for Hyprland" >>"$KEYBINDINGS_FILE"
|
||||
echo "" >>"$KEYBINDINGS_FILE"
|
||||
echo "The list of the keybindings working on Hyprland:" >>"$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 line; do
|
||||
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)
|
||||
# dispatcher=$(echo "$line" | cut -d, -f3)
|
||||
# params=$(echo "$line" | cut -d, -f4)
|
||||
|
||||
[[ $mod == '$mod' ]] && mod="SUPER + "
|
||||
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
|
||||
|
||||
echo "| $comment | $mod$key |" >>"$KEYBINDINGS_FILE"
|
||||
echo "| ${comment:1} | $mod$key |" >>"$KEYBINDINGS_FILE"
|
||||
done
|
||||
|
||||
pandoc -t commonmark_x "$KEYBINDINGS_FILE" -o "/tmp/keybindings.md"
|
||||
mv "/tmp/keybindings.md" "$KEYBINDINGS_FILE"
|
||||
@@ -0,0 +1,24 @@
|
||||
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
|
||||
./docs/.github/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
|
||||
@@ -0,0 +1,31 @@
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- '.github/assets/README_template.md'
|
||||
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: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '^1.23'
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
go install github.com/anotherhadi/markdown-table-of-contents@latest
|
||||
- name: Run a script
|
||||
run: |
|
||||
chmod +x ./.github/scripts/create_readme.sh
|
||||
./.github/scripts/create_readme.sh
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git add .
|
||||
git commit -m "Update README.md (auto)"
|
||||
git push
|
||||
@@ -0,0 +1,24 @@
|
||||
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
|
||||
@@ -1,11 +1,6 @@
|
||||
[//]: # (Title: Nixy)
|
||||
[//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
|
||||
[//]: # (Author: Hadi)
|
||||
[//]: # (Date: 08/28/24)
|
||||
[//]: # (Version: v2.2.0)
|
||||
|
||||
[//]: # (This file is autogenerated)
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
@@ -14,20 +9,17 @@
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message=v2.2.0&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=starship&logoColor=89b4fa">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=starship&logoColor=A594FD">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=github&logoColor=89b4fa">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=github&logoColor=A594FD">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=181825&logo=NixOS&logoColor=89b4fa&color=89b4fa">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=0b0b0b&logo=NixOS&logoColor=A594FD&color=A594FD">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=181825&colorB=89b4fa&logo=unlicense&logoColor=89b4fa"/>
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=0b0b0b&colorB=A594FD&logo=unlicense&logoColor=A594FD"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
@@ -35,58 +27,94 @@
|
||||
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
|
||||
I'm Hadi, a french developer, student in infosec, enthusiastic about nix, golang & blockchains.
|
||||
This is my own, **keyboard-centric**, and **minimalistic** NixOS configuration.
|
||||
I enable vim-like keybindings everywhere I can, and I use a lot of custom scripts to make my life easier.
|
||||
|
||||
**Nixy key points:**
|
||||
|
||||
- Hypr-ecosystem first (hyprland, hyprlock, hyprpanel, hypridle, ...)
|
||||
- Stylix/base16 themes
|
||||
- Vim-like keybindings everywhere (hyprland, qutebrowser, nvim, ...)
|
||||
|
||||
## Table of Content
|
||||
|
||||
- [Table of Content](#table-of-content)
|
||||
- [Gallery](#gallery)
|
||||
- [Architecture](#architecture)
|
||||
- [Installation](#installation)
|
||||
- [Documentation](#documentation)
|
||||
- [Table of Content](#table-of-content)
|
||||
- [Gallery](#gallery)
|
||||
- [Architecture](#architecture)
|
||||
- [🏠 home](#-home)
|
||||
- [🐧 nixos](#-nixos)
|
||||
- [🎨 themes](#-themes)
|
||||
- [💻 hosts](#-hosts)
|
||||
- [Installation](#installation)
|
||||
- [Documentation](#documentation)
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
- 🏠 `home` are the dotfiles and configuration files for the users
|
||||
- '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
|
||||
- 'wallpapers' are... wallpapers
|
||||
- 💻 `hosts` are the system configuration files
|
||||
- 'laptop' is my configuration for my laptop with Nvidia that you can copy
|
||||
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
|
||||
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
|
||||
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
|
||||
### 🏠 home
|
||||
|
||||
Those are the dotfiles and configuration files for user-level configuration
|
||||
|
||||
**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
|
||||
|
||||
Those are the themes used in the system configuration.
|
||||
Those themes are based on [stylix](https://github.com/danth/stylix).
|
||||
See avaiable themes in [THEMES.md](docs/THEMES.md)
|
||||
|
||||
### 💻 hosts
|
||||
|
||||
Those are the host-specific configurations.
|
||||
Each host contains a `configuration.nix` for system-level configuration, a `home.nix` for user-level configuration, and a `variables.nix` for config wide variables.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repo
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
- Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
- Add your `hardware-configuration.nix` to your new host's folder
|
||||
- Add your 'nixosConfigurations' inside `flake.nix` (You can edit your hostname one and change the lines containing '# CHANGEME')
|
||||
2. Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
3. Add your `hardware-configuration.nix` to your new host's folder
|
||||
4. Add your 'nixosConfigurations' inside `flake.nix`
|
||||
|
||||
> [!NOTE]
|
||||
> [!Important]
|
||||
> I added few `# CHANGEME` comments in the files to help you find what to change. Be sure to check them up.
|
||||
> You can use `rg "CHANGEME"` to find them all with ripgrep.
|
||||
|
||||
> [!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
|
||||
|
||||
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
|
||||
- [APPS.md](docs/APPS.md): Which apps are installed
|
||||
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
|
||||
- [KEYBINDINGS.md](docs/KEYBINDINGS.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS.md](docs/WALLPAPERS.md): Preview of every wallpapers available
|
||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||
- [SCRIPTS](docs/SCRIPTS.md): Scripts that are available
|
||||
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS](https://github.com/anotherhadi/nixy-wallpapers): A collection of wallpapers for Nixy.
|
||||
|
||||
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
|
||||
- [TODO](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT License
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
# Apps and services
|
||||
|
||||
*non-exhaustive lists*
|
||||
|
||||
## Laptop
|
||||
|
||||
The laptop configuration is used by an Omen 16 laptop w/ nvidia and an amd gpu running NixOS.
|
||||
The configurations files can be found in the `hosts/laptop` directory.
|
||||
|
||||
| Category | Name |
|
||||
| --------------------------------------- | -------------- |
|
||||
| WM | Hyprland |
|
||||
| | hyprlock |
|
||||
| | hyprpaper |
|
||||
| | hypridle |
|
||||
| | hyprcursor |
|
||||
| | wlogout |
|
||||
| Bar | waybar |
|
||||
| Terminal | kitty |
|
||||
| Shell | zsh |
|
||||
| | tmux |
|
||||
| | starship |
|
||||
| | bat |
|
||||
| | eza |
|
||||
| | zoxide |
|
||||
| | fzf |
|
||||
| Editor | neovim(nixvim) |
|
||||
| File manager | lf |
|
||||
| | thunar |
|
||||
| Browser | qutebrowser |
|
||||
| Music | spicetify |
|
||||
| Notifications | dunst |
|
||||
| Launcher | wofi |
|
||||
| DM | tuigreet |
|
||||
| Secrets | sops-nix |
|
||||
| Misc | lazygit |
|
||||
| | neofetch |
|
||||
| | cava |
|
||||
| See [hosts/laptop](../hosts/laptop/)... | |
|
||||
|
||||
## Server
|
||||
|
||||
The server configuration is used by a home server running NixOS.
|
||||
The configurations files can be found in the `hosts/server` directory.
|
||||
I mainly use it for self-hosting websites and services such as Nextcloud, Vaultwarden, ...
|
||||
I exposed some services to the internet using a reverse proxy (Nginx) and cloudflare-dyndns, others are accessed through a tailscale network
|
||||
|
||||
### Apps
|
||||
|
||||
- Nextcloud
|
||||
- Vaultwarden
|
||||
- Adguard Home
|
||||
- Uptime Kuma
|
||||
- "Jackflix"
|
||||
- Jellyfin, Transmission, *arr
|
||||
- See [hosts/server](../hosts/server/)...
|
||||
@@ -9,9 +9,6 @@ The process is straight-forward.
|
||||
- Write your changes (new theme, bug fixes, task in to-do, ...).
|
||||
- Create a Pull Request against the main branch of Nixy.
|
||||
|
||||
> [!TIP]
|
||||
> When wallpapers are added, run `./docs/scripts/compress_png.sh` and `./docs/scripts/create_preview_wallpapers.sh`
|
||||
|
||||
> [!TIP]
|
||||
> To update the README, change the `./docs/src/README_template.md` and run `./docs/scripts/create_readme.sh`
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
[//]: # (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} |
|
||||
| Kitty | SUPER + RETURN |
|
||||
| Thunar | SUPER + E |
|
||||
| Qutebrowser | SUPER + B |
|
||||
| Bitwarden | SUPER + K |
|
||||
| Lock | SUPER + L |
|
||||
| Powermenu | SUPER + X |
|
||||
| Launcher | SUPER + SPACE |
|
||||
| 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 window | SUPER + PRINT |
|
||||
| Screenshot monitor | PRINT |
|
||||
| Screenshot region | SHIFT + SUPER + PRINT |
|
||||
| Screenshot region then edit | ALTPRINT |
|
||||
| Search on internet with wofi | SHIFT + SUPER + S |
|
||||
| Clipboard picker with wofi | SHIFT + SUPER + C |
|
||||
| Emoji picker with wofi | SHIFT + SUPER + E |
|
||||
| Toggle night shift | SUPER + F2 |
|
||||
| Toggle night shift | SUPER + F3 |
|
||||
| Move Window (mouse) | SUPER + mouse:272 |
|
||||
| Resize Window (mouse) | SUPER + R |
|
||||
| Toggle Mute | XF86AudioMute |
|
||||
| Lock when closing Lid | switch:Lid Switch |
|
||||
| Sound Up | XF86AudioRaiseVolume |
|
||||
| Sound Down | XF86AudioLowerVolume |
|
||||
| Brightness Up | XF86MonBrightnessUp |
|
||||
| Brightness Down | XF86MonBrightnessDown |
|
||||
@@ -1,40 +0,0 @@
|
||||
# Keybindings
|
||||
|
||||
The list of the keybindings working on Hyprland:
|
||||
|
||||
| Description | Keybinding |
|
||||
|-----------------------------|--------------------------|
|
||||
| Switch Workspace | SUPER + {Number} |
|
||||
| Move app to Workspace | SHIFT + SUPER + {Number} |
|
||||
| Kitty | SUPER + RETURN |
|
||||
| Thunar | SUPER + E |
|
||||
| Qutebrowser | SUPER + B |
|
||||
| Bitwarden | SUPER + K |
|
||||
| Peaclock | SUPER + C |
|
||||
| Lock | SUPER + L |
|
||||
| Powermenu | SUPER + X |
|
||||
| Launcher | 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 |
|
||||
| Add to master | SHIFT + SUPER + left |
|
||||
| Remove from master | SHIFT + SUPER + right |
|
||||
| Screenshot window | SUPER + PRINT |
|
||||
| Screenshot monitor | PRINT |
|
||||
| Screenshot region | SHIFT + SUPER + PRINT |
|
||||
| Screenshot region then edit | ALT PRINT |
|
||||
| Turn off night shift | SUPER + F2 |
|
||||
| Turn on night shift | SUPER + F3 |
|
||||
| Choose sound output | SUPER + F5 |
|
||||
| Move Window (mouse) | SUPER + mouse:272 |
|
||||
| Resize Window (mouse) | SUPER + R |
|
||||
| Toggle Mute | XF86AudioMute |
|
||||
| Lock when closing Lid | switch:Lid Switch |
|
||||
| Sound Up | XF86AudioRaiseVolume |
|
||||
| Sound Down | XF86AudioLowerVolume |
|
||||
| Brightness Up | XF86MonBrightnessUp |
|
||||
| Brightness Down | XF86MonBrightnessDown |
|
||||
+88
-59
@@ -1,59 +1,88 @@
|
||||
# Scripts
|
||||
|
||||
Scripts are located in the `home/scripts` folder. Home-manager add those in the path.
|
||||
|
||||
## Nix/NixOs shortcuts
|
||||
|
||||
> [!TIP]
|
||||
> The `hostname` variable in `hosts/yourhost/variables.nix` should be also the name of the `nixosConfiguration` in `flake.nix` file.
|
||||
|
||||
- `nixy` # UI
|
||||
- `nixy rebuild`
|
||||
- `nixy update`
|
||||
- `nixy upgrade`
|
||||
- `nixy gc` # garbage collection
|
||||
- `nixy cb` # clean boot menu
|
||||
|
||||
## Brightness control
|
||||
|
||||
- `brightness-up`
|
||||
- `brightness-down`
|
||||
- `brightness-change <up/down> <increment>`
|
||||
|
||||
## Sound control
|
||||
|
||||
- `sound-up`
|
||||
- `sound-down`
|
||||
- `sound-toggle`
|
||||
- `sound-output`
|
||||
- `sound-change [up/down/mute] <increment>`
|
||||
|
||||
## Caffeine
|
||||
|
||||
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
|
||||
|
||||
- `caffeine` # Toggle caffeine
|
||||
- `caffeine-status` # Return active/inactive
|
||||
|
||||
## Night-Shift
|
||||
|
||||
Blue light filter, using wlsunset
|
||||
|
||||
- `night-shift` # Toggle night shift
|
||||
- `night-shift-status` # Return active/inactive
|
||||
- `night-shift-on`
|
||||
- `night-shift-off`
|
||||
|
||||
## Nerdfont FZF
|
||||
|
||||
Nerdfont fzf is a quick way to search for nerdfont icons locally.
|
||||
It will copy the selected icon to the clipboard.
|
||||
|
||||
- `nerdfont-fzf`
|
||||
|
||||
## Compress/Extract
|
||||
|
||||
Some shortcuts to compress and extract files.
|
||||
|
||||
- `compress` ...
|
||||
- `extract` ...
|
||||
[//]: # (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 and kill hyprpanel.
|
||||
|
||||
- `hyprpanel-toggle` - Toggle hyprpanel.
|
||||
- `hyprpanel-reload` - Reload hyprpanel.
|
||||
- `hyprpanel-kill` - Kill 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.
|
||||
|
||||
- `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, upgrade, 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.
|
||||
|
||||
|
||||
|
||||
## Screenshot
|
||||
|
||||
This module provides a script to take screenshots using `hyprshot` 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
|
||||
|
||||
- `menu` - Open wofi with drun mode.
|
||||
- `powermenu` - Open power dropdown menu.
|
||||
- `lock` - Lock the screen.
|
||||
|
||||
|
||||
+7
-18
@@ -1,7 +1,7 @@
|
||||
# Themes
|
||||
|
||||
Themes are defined in `hosts/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.
|
||||
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 configuration.nix file.
|
||||
|
||||
> [!TIP]
|
||||
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
|
||||
@@ -9,24 +9,13 @@ You can change the selected theme by changing the import statement of your host'
|
||||
## Create your theme
|
||||
|
||||
Create a copy of one of the existing themes and change the variables.
|
||||
Wallpapers are loaded from the `home/wallpapers` folder.
|
||||
Wallpapers are loaded from the [nixy-wallpapers](https://github.com/anotherhadi/nixy-wallpapers) repo.
|
||||
|
||||
## Gallery
|
||||
|
||||
### Nixy
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Catppuccin
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Windows
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
+7
-28
@@ -1,34 +1,13 @@
|
||||
# Todolist {
|
||||
# Todolist
|
||||
|
||||
feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md))
|
||||
|
||||
- [ ] Nixy
|
||||
- [ ] Themes
|
||||
|
||||
- [ ] Clipse: clipboard manager
|
||||
- [ ] Walker launcher implementation
|
||||
- [ ] Swaync implementation
|
||||
|
||||
- [ ] Qutebrowser
|
||||
- [ ] !!! Bitwarden integration (I need this.)
|
||||
|
||||
- [ ] Hyprland
|
||||
- [ ] Implement Hyprcursor
|
||||
- [ ] wofi: popin
|
||||
- [ ] wlogout: fade in
|
||||
- [ ] Fix screenshots (screenshot region's border shows up in the screenshot, hyprshot jq error?)
|
||||
- [ ] Hyprlock themes (repo hyprlock-styles on github)
|
||||
- [!] Qutebrowser Bitwarden integration (I need this.)
|
||||
|
||||
- [ ] Nixvim
|
||||
- [ ] Keymaps:
|
||||
- Trouble
|
||||
- Tagbar (actually not working)
|
||||
- [ ] Disable background color for headlines.nvim for titles
|
||||
- [ ] Change headings foreground
|
||||
- [ ] neotest golang
|
||||
- [ ] nvim dap
|
||||
|
||||
## Server
|
||||
|
||||
- [ ] Jackflix V2
|
||||
- Backup Radarr, Prowlarr, Sonarr config
|
||||
- Take a look into buildarr or build a custom solution with *arr apis
|
||||
- [ ] Bitcoin-git: broken
|
||||
- [ ] Secrets mode 0444: not secure
|
||||
- [ ] Tofi configuration
|
||||
- [ ] OS Hardening with nix-mineral
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
# Wallpapers
|
||||
|
||||
Wallpapers can be found in the `/home/wallpapers` folder.
|
||||
|
||||
| Name | Preview |
|
||||
|---------------------|----------------------------------------------------------------|
|
||||
| astronaut.png |  |
|
||||
| aurore.png |  |
|
||||
| barcode.png |  |
|
||||
| cat-leaves.png |  |
|
||||
| city.png |  |
|
||||
| cloud.png |  |
|
||||
| clouds2.png |  |
|
||||
| clouds.png |  |
|
||||
| coffee.png |  |
|
||||
| dark_cloud.png |  |
|
||||
| dark.png |  |
|
||||
| fuji-dark.png |  |
|
||||
| fuji-light.png |  |
|
||||
| galaxy.png |  |
|
||||
| house-cloud.png |  |
|
||||
| key.png |  |
|
||||
| lavender-cat.png |  |
|
||||
| lofi-computer.png |  |
|
||||
| lofi-urban.png |  |
|
||||
| magma.png |  |
|
||||
| mountains-black.png |  |
|
||||
| mountains.png |  |
|
||||
| nix.png |  |
|
||||
| problems.png |  |
|
||||
| sea2.png |  |
|
||||
| sea.png |  |
|
||||
| space2.png |  |
|
||||
| space.png |  |
|
||||
| street.png |  |
|
||||
| sun.png |  |
|
||||
| tokyo.png |  |
|
||||
| train.png |  |
|
||||
| windows.png |  |
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Compress png files in ./docs/src and ./home/wallpapers
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
# Main images
|
||||
for file in ./docs/src/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
|
||||
# Theme's images
|
||||
for file in ./docs/src/*/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
|
||||
# Wallpapers
|
||||
for file in ./home/wallpapers/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
# Create WALLPAPERS.md to preview wallpapers in ./home/wallpapers
|
||||
|
||||
WALLPAPERS_FOLDER="./home/wallpapers"
|
||||
WALLPAPERS_MD="./docs/WALLPAPERS.md"
|
||||
[[ -d "$WALLPAPERS_FOLDER" ]] || (echo "Wallpapers folder not found" && exit 1)
|
||||
|
||||
echo "# Wallpapers" >"$WALLPAPERS_MD"
|
||||
echo "" >>"$WALLPAPERS_MD"
|
||||
echo "Wallpapers can be found in the \`/home/wallpapers\` folder." >>"$WALLPAPERS_MD"
|
||||
echo "" >>"$WALLPAPERS_MD"
|
||||
echo "| Name | Preview |" >>"$WALLPAPERS_MD"
|
||||
echo "| -- | -- |" >>"$WALLPAPERS_MD"
|
||||
|
||||
for file in "$WALLPAPERS_FOLDER"/*.png; do
|
||||
filename=$(basename "$file")
|
||||
echo "| $filename |  |" >>"$WALLPAPERS_MD"
|
||||
done
|
||||
|
||||
pandoc -t commonmark_x "$WALLPAPERS_MD" -o "/tmp/wallpapers.md"
|
||||
mv "/tmp/wallpapers.md" "$WALLPAPERS_MD"
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Create the README.md file from the docs/src/README_template.md file
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
README_FILE="./README.md"
|
||||
|
||||
header=$(cat "./docs/src/header.md")
|
||||
table_of_content=$(md-table-of-contents ./docs/src/README_template.md) # https://github.com/anotherhadi/md-table-of-contents
|
||||
version=$(git describe --tags --abbrev=0)
|
||||
readme_content=$(cat "./docs/src/README_template.md")
|
||||
description=$(curl -s https://api.github.com/repos/anotherhadi/nixy | jq .description)
|
||||
description="${description%\"}"
|
||||
description="${description#\"}"
|
||||
|
||||
header=${header//\{date\}/$(date '+%D')}
|
||||
header=${header//\{primarycolor\}/89b4fa}
|
||||
header=${header//\{backgroundcolor\}/181825}
|
||||
header=${header//\{version\}/$version}
|
||||
header=${header//\{description\}/$description}
|
||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
||||
|
||||
echo "$header" >"$README_FILE"
|
||||
echo "$readme_content" >>"$README_FILE"
|
||||
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
|
||||
mv "/tmp/readme.md" "$README_FILE"
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
TAG=$(git describe --tags --abbrev=0)
|
||||
echo "Current tag: $TAG"
|
||||
|
||||
read -rp "Enter the new tag name: " NEW_TAG
|
||||
|
||||
read -rp "Do you want to compress the png files? [y/N]: " COMPRESS_PNG
|
||||
if [[ "$COMPRESS_PNG" == "y" || "$COMPRESS_PNG" == "Y" ]]; then
|
||||
echo "Compresing png files..."
|
||||
bash ./docs/scripts/compress_png.sh
|
||||
fi
|
||||
|
||||
echo "Creating wallpapers preview..."
|
||||
bash ./docs/scripts/create_preview_wallpapers.sh
|
||||
echo "Creating README.md..."
|
||||
bash ./docs/scripts/create_readme.sh
|
||||
echo "Creating keybindings.md..."
|
||||
bash ./docs/scripts/keybindings_to_markdown.sh
|
||||
|
||||
git add .
|
||||
git commit -m "Release $NEW_TAG"
|
||||
git tag -a "$NEW_TAG" -m "Release $NEW_TAG"
|
||||
git push origin "$NEW_TAG"
|
||||
@@ -1,42 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[ "$1" = "" ] && echo "Usage: $0 <theme_name>" && exit 1
|
||||
theme_name=$1
|
||||
|
||||
# Switch to workspace 1
|
||||
sleep 2
|
||||
|
||||
# Step 1
|
||||
kitty --class peaclock peaclock &
|
||||
sleep 1
|
||||
menu &
|
||||
sleep 1
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "1.png" -d
|
||||
sleep 2
|
||||
pkill peaclock
|
||||
menu
|
||||
sleep 2
|
||||
|
||||
# Step 2
|
||||
kitty cmatrix &
|
||||
sleep 1
|
||||
kitty &
|
||||
sleep 1
|
||||
qutebrowser &
|
||||
sleep 3
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "2.png" -d
|
||||
sleep 2
|
||||
pkill cmatrix
|
||||
pkill --newest qutebrowser ""
|
||||
pkill --newest kitty
|
||||
sleep 2
|
||||
|
||||
# Step 3
|
||||
kitty cava &
|
||||
sleep 1
|
||||
spotify &
|
||||
sleep 10
|
||||
brightness-down
|
||||
sleep 1
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "3.png" -d
|
||||
sleep 2
|
||||
@@ -1,55 +0,0 @@
|
||||
|
||||
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
|
||||
## Table of Content
|
||||
|
||||
{md_table_of_content}
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
- 🏠 `home` are the dotfiles and configuration files for the users
|
||||
- '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
|
||||
- 'wallpapers' are... wallpapers
|
||||
- 💻 `hosts` are the system configuration files
|
||||
- 'laptop' is my configuration for my laptop with Nvidia that you can copy
|
||||
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
|
||||
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
|
||||
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
- Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
- Add your `hardware-configuration.nix` to your new host's folder
|
||||
- Add your 'nixosConfigurations' inside `flake.nix` (You can edit your hostname one and change the lines containing '# CHANGEME')
|
||||
|
||||
> [!NOTE]
|
||||
> When you add new files, don't forget to run `git add .` to add them to the git repository
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
|
||||
- [APPS.md](docs/APPS.md): Which apps are installed
|
||||
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
|
||||
- [KEYBINDINGS.md](docs/KEYBINDINGS.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS.md](docs/WALLPAPERS.md): Preview of every wallpapers available
|
||||
|
||||
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT License
|
||||
@@ -1,33 +0,0 @@
|
||||
[//]: # (Title: Nixy)
|
||||
[//]: # (Description: {description})
|
||||
[//]: # (Author: Hadi)
|
||||
[//]: # (Date: {date})
|
||||
[//]: # (Version: {version})
|
||||
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
# Nixy
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message={version}&colorA={backgroundcolor}&colorB={primarycolor}&logo=githubactions&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1 +0,0 @@
|
||||
8c00e379ddd7f89e4bbf9f381a5721d980c8026f
|
||||
@@ -1 +0,0 @@
|
||||
62b52ad02a886c19a8cfe1ea17e8aaad50f23632
|
||||
Generated
+632
-137
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,7 @@
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -15,7 +16,6 @@
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
|
||||
spicetify-nix = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -25,36 +25,32 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
|
||||
nixy-wallpapers = {
|
||||
url = "github:anotherhadi/nixy-wallpapers";
|
||||
flake = false;
|
||||
};
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
stylix.url = "github:danth/stylix";
|
||||
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
|
||||
hyprswitch.url = "github:h3rmt/hyprswitch/release";
|
||||
};
|
||||
|
||||
outputs = inputs@{ nixpkgs, ... }: {
|
||||
nixosConfigurations = {
|
||||
|
||||
nixy = nixpkgs.lib.nixosSystem { # CHANGEME
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{ _module.args = { inherit inputs; }; }
|
||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
./hosts/laptop/configuration.nix # CHANGEME
|
||||
];
|
||||
};
|
||||
|
||||
jack = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{ _module.args = { inherit inputs; }; }
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
./hosts/server/configuration.nix
|
||||
];
|
||||
};
|
||||
|
||||
nixy = # CHANGEME
|
||||
nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.overlays = [ inputs.hyprpanel.overlay ];
|
||||
_module.args = { inherit inputs; };
|
||||
}
|
||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.stylix.nixosModules.stylix
|
||||
./hosts/laptop/configuration.nix # CHANGEME
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
color_theme = "Default";
|
||||
theme_background = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ config, ... }: {
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general.framerate = 60;
|
||||
smoothing.noise_reduction = 88;
|
||||
color = {
|
||||
background = "'#${config.var.theme.colors.bg}'";
|
||||
foreground = "'#${config.var.theme.colors.accent}'";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, config, ... }: {
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ neofetch ];
|
||||
|
||||
xdg.configFile."neofetch/ascii.txt".text = ''
|
||||
@@ -109,9 +109,6 @@
|
||||
song_format="%artist% - %album% - %title%"
|
||||
song_shorthand="off"
|
||||
mpc_args=()
|
||||
colors=(${toString config.var.theme.colors.accentNumber} 1 ${
|
||||
toString config.var.theme.colors.accentNumber
|
||||
} ${toString config.var.theme.colors.accentNumber} 7)
|
||||
bold="on"
|
||||
underline_enabled="on"
|
||||
underline_char="-"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
|
||||
ostype="$(uname)"
|
||||
@@ -345,9 +345,9 @@ let
|
||||
|
||||
## USER VARIABLES -- YOU CAN CHANGE THESE
|
||||
|
||||
lc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
nc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
hn="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
lc="$reset$bold$magenta" # labels
|
||||
nc="$reset$bold$magenta" # labels
|
||||
hn="$reset$bold$magenta" # labels
|
||||
ic="$reset$white" # info
|
||||
c0="$reset$grey" # first color
|
||||
c1="$reset$white" # second color
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{ config, ... }: {
|
||||
{ config, ... }:
|
||||
let
|
||||
username = config.var.git.username;
|
||||
email = config.var.git.email;
|
||||
in {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = config.var.git.username;
|
||||
userEmail = config.var.git.email;
|
||||
userName = username;
|
||||
userEmail = email;
|
||||
ignores = [
|
||||
".cache/"
|
||||
".DS_Store"
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
{ config, pkgs, ... }: {
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
keybindings = {
|
||||
# Reset existing mappings
|
||||
"ctrl+alt+tab" = "next_tab";
|
||||
"ctrl+alt+shift+tab" = "previous_tab";
|
||||
# Send Ctrl Tab and Ctrl + Shift + Tab for Tmux navigation
|
||||
"ctrl+tab" = "send_text all \\x1b[27;5;9~";
|
||||
"ctrl+shift+tab" = "send_text all \\x1b[27;6;9~";
|
||||
"alt+tab" = "send_text all \\x1b[27;3;9~";
|
||||
};
|
||||
settings = {
|
||||
scrollback_lines = 10000;
|
||||
initial_window_width = 1200;
|
||||
@@ -10,39 +19,10 @@
|
||||
confirm_os_window_close = "0";
|
||||
remember_window_size = "no";
|
||||
disable_ligatures = "never";
|
||||
shell = "${pkgs.tmux}/bin/tmux";
|
||||
url_style = "curly";
|
||||
cursor_shape = "Underline";
|
||||
cursor_underline_thickness = config.var.theme.border-size;
|
||||
window_padding_width = config.var.theme.gaps-in;
|
||||
|
||||
# Font
|
||||
font_family = config.var.theme.font-mono;
|
||||
font_size = config.var.theme.font-size;
|
||||
|
||||
# Colors
|
||||
background = "#" + config.var.theme.colors.bg;
|
||||
url_color = "#" + config.var.theme.colors.accent;
|
||||
color0 = "#" + config.var.theme.colors.c0;
|
||||
color8 = "#" + config.var.theme.colors.c8;
|
||||
color1 = "#" + config.var.theme.colors.c1;
|
||||
color9 = "#" + config.var.theme.colors.c9;
|
||||
color2 = "#" + config.var.theme.colors.c2;
|
||||
color10 = "#" + config.var.theme.colors.c10;
|
||||
color3 = "#" + config.var.theme.colors.c3;
|
||||
color11 = "#" + config.var.theme.colors.c11;
|
||||
color4 = "#" + config.var.theme.colors.c4;
|
||||
color12 = "#" + config.var.theme.colors.c12;
|
||||
color5 = "#" + config.var.theme.colors.c5;
|
||||
color13 = "#" + config.var.theme.colors.c13;
|
||||
color6 = "#" + config.var.theme.colors.c6;
|
||||
color14 = "#" + config.var.theme.colors.c14;
|
||||
color7 = "#" + config.var.theme.colors.c7;
|
||||
color15 = "#" + config.var.theme.colors.c15;
|
||||
cursor = "#" + config.var.theme.colors.fg;
|
||||
cursor_text_color = "#" + config.var.theme.colors.bg;
|
||||
selection_foreground = "#" + config.var.theme.colors.accentFg;
|
||||
selection_background = "#" + config.var.theme.colors.accent;
|
||||
cursor_underline_thickness = 3;
|
||||
window_padding_width = 10;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
in {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = lib.mkForce {
|
||||
gui = {
|
||||
theme = {
|
||||
activeBorderColor = [ accent "bold" ];
|
||||
inactiveBorderColor = [ muted ];
|
||||
};
|
||||
showListFooter = false;
|
||||
showRandomTip = false;
|
||||
showCommandLog = false;
|
||||
showBottomLine = false;
|
||||
nerdFontsVersion = "3";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
# vim:ft=dircolors
|
||||
# (This is not a dircolors file but it helps to highlight colors and comments)
|
||||
|
||||
# default values from dircolors
|
||||
# (entries with a leading # are not implemented in lf)
|
||||
# #no 00 # NORMAL
|
||||
# fi 00 # FILE
|
||||
# #rs 0 # RESET
|
||||
# di 01;34 # DIR
|
||||
# ln 01;36 # LINK
|
||||
# #mh 00 # MULTIHARDLINK
|
||||
# pi 40;33 # FIFO
|
||||
# so 01;35 # SOCK
|
||||
# #do 01;35 # DOOR
|
||||
# bd 40;33;01 # BLK
|
||||
# cd 40;33;01 # CHR
|
||||
# or 40;31;01 # ORPHAN
|
||||
# #mi 00 # MISSING
|
||||
# su 37;41 # SETUID
|
||||
# sg 30;43 # SETGID
|
||||
# #ca 30;41 # CAPABILITY
|
||||
# tw 30;42 # STICKY_OTHER_WRITABLE
|
||||
# ow 34;42 # OTHER_WRITABLE
|
||||
# st 37;44 # STICKY
|
||||
# ex 01;32 # EXEC
|
||||
|
||||
# default values from lf (with matching order)
|
||||
# ln 01;36 # LINK
|
||||
# or 31;01 # ORPHAN
|
||||
# tw 01;34 # STICKY_OTHER_WRITABLE
|
||||
# ow 01;34 # OTHER_WRITABLE
|
||||
# st 01;34 # STICKY
|
||||
# di 01;34 # DIR
|
||||
# pi 33 # FIFO
|
||||
# so 01;35 # SOCK
|
||||
# bd 33;01 # BLK
|
||||
# cd 33;01 # CHR
|
||||
# su 01;32 # SETUID
|
||||
# sg 01;32 # SETGID
|
||||
# ex 01;32 # EXEC
|
||||
# fi 00 # FILE
|
||||
|
||||
# file types (with matching order)
|
||||
ln 01;36 # LINK
|
||||
or 31;01 # ORPHAN
|
||||
tw 34 # STICKY_OTHER_WRITABLE
|
||||
ow 34 # OTHER_WRITABLE
|
||||
st 01;34 # STICKY
|
||||
di 01;34 # DIR
|
||||
pi 33 # FIFO
|
||||
so 01;35 # SOCK
|
||||
bd 33;01 # BLK
|
||||
cd 33;01 # CHR
|
||||
su 01;32 # SETUID
|
||||
sg 01;32 # SETGID
|
||||
ex 01;32 # EXEC
|
||||
fi 00 # FILE
|
||||
|
||||
# archives or compressed (dircolors defaults)
|
||||
*.tar 01;31
|
||||
*.tgz 01;31
|
||||
*.arc 01;31
|
||||
*.arj 01;31
|
||||
*.taz 01;31
|
||||
*.lha 01;31
|
||||
*.lz4 01;31
|
||||
*.lzh 01;31
|
||||
*.lzma 01;31
|
||||
*.tlz 01;31
|
||||
*.txz 01;31
|
||||
*.tzo 01;31
|
||||
*.t7z 01;31
|
||||
*.zip 01;31
|
||||
*.z 01;31
|
||||
*.dz 01;31
|
||||
*.gz 01;31
|
||||
*.lrz 01;31
|
||||
*.lz 01;31
|
||||
*.lzo 01;31
|
||||
*.xz 01;31
|
||||
*.zst 01;31
|
||||
*.tzst 01;31
|
||||
*.bz2 01;31
|
||||
*.bz 01;31
|
||||
*.tbz 01;31
|
||||
*.tbz2 01;31
|
||||
*.tz 01;31
|
||||
*.deb 01;31
|
||||
*.rpm 01;31
|
||||
*.jar 01;31
|
||||
*.war 01;31
|
||||
*.ear 01;31
|
||||
*.sar 01;31
|
||||
*.rar 01;31
|
||||
*.alz 01;31
|
||||
*.ace 01;31
|
||||
*.zoo 01;31
|
||||
*.cpio 01;31
|
||||
*.7z 01;31
|
||||
*.rz 01;31
|
||||
*.cab 01;31
|
||||
*.wim 01;31
|
||||
*.swm 01;31
|
||||
*.dwm 01;31
|
||||
*.esd 01;31
|
||||
|
||||
# image formats (dircolors defaults)
|
||||
*.jpg 01;35
|
||||
*.jpeg 01;35
|
||||
*.mjpg 01;35
|
||||
*.mjpeg 01;35
|
||||
*.gif 01;35
|
||||
*.bmp 01;35
|
||||
*.pbm 01;35
|
||||
*.pgm 01;35
|
||||
*.ppm 01;35
|
||||
*.tga 01;35
|
||||
*.xbm 01;35
|
||||
*.xpm 01;35
|
||||
*.tif 01;35
|
||||
*.tiff 01;35
|
||||
*.png 01;35
|
||||
*.svg 01;35
|
||||
*.svgz 01;35
|
||||
*.mng 01;35
|
||||
*.pcx 01;35
|
||||
*.mov 01;35
|
||||
*.mpg 01;35
|
||||
*.mpeg 01;35
|
||||
*.m2v 01;35
|
||||
*.mkv 01;35
|
||||
*.webm 01;35
|
||||
*.ogm 01;35
|
||||
*.mp4 01;35
|
||||
*.m4v 01;35
|
||||
*.mp4v 01;35
|
||||
*.vob 01;35
|
||||
*.qt 01;35
|
||||
*.nuv 01;35
|
||||
*.wmv 01;35
|
||||
*.asf 01;35
|
||||
*.rm 01;35
|
||||
*.rmvb 01;35
|
||||
*.flc 01;35
|
||||
*.avi 01;35
|
||||
*.fli 01;35
|
||||
*.flv 01;35
|
||||
*.gl 01;35
|
||||
*.dl 01;35
|
||||
*.xcf 01;35
|
||||
*.xwd 01;35
|
||||
*.yuv 01;35
|
||||
*.cgm 01;35
|
||||
*.emf 01;35
|
||||
*.ogv 01;35
|
||||
*.ogx 01;35
|
||||
|
||||
# audio formats (dircolors defaults)
|
||||
*.aac 00;36
|
||||
*.au 00;36
|
||||
*.flac 00;36
|
||||
*.m4a 00;36
|
||||
*.mid 00;36
|
||||
*.midi 00;36
|
||||
*.mka 00;36
|
||||
*.mp3 00;36
|
||||
*.mpc 00;36
|
||||
*.ogg 00;36
|
||||
*.ra 00;36
|
||||
*.wav 00;36
|
||||
*.oga 00;36
|
||||
*.opus 00;36
|
||||
*.spx 00;36
|
||||
*.xspf 00;36
|
||||
@@ -1,361 +0,0 @@
|
||||
# vim:ft=conf
|
||||
|
||||
# These examples require Nerd Fonts or a compatible font to be used.
|
||||
# See https://www.nerdfonts.com for more information.
|
||||
|
||||
# default values from lf (with matching order)
|
||||
# ln l # LINK
|
||||
# or l # ORPHAN
|
||||
# tw t # STICKY_OTHER_WRITABLE
|
||||
# ow d # OTHER_WRITABLE
|
||||
# st t # STICKY
|
||||
# di d # DIR
|
||||
# pi p # FIFO
|
||||
# so s # SOCK
|
||||
# bd b # BLK
|
||||
# cd c # CHR
|
||||
# su u # SETUID
|
||||
# sg g # SETGID
|
||||
# ex x # EXEC
|
||||
# fi - # FILE
|
||||
|
||||
# file types (with matching order)
|
||||
ln # LINK
|
||||
or # ORPHAN
|
||||
tw t # STICKY_OTHER_WRITABLE
|
||||
ow # OTHER_WRITABLE
|
||||
st t # STICKY
|
||||
di # DIR
|
||||
pi p # FIFO
|
||||
so s # SOCK
|
||||
bd b # BLK
|
||||
cd c # CHR
|
||||
su u # SETUID
|
||||
sg g # SETGID
|
||||
ex # EXEC
|
||||
fi # FILE
|
||||
|
||||
# file extensions (vim-devicons)
|
||||
*.styl
|
||||
*.sass
|
||||
*.scss
|
||||
*.htm
|
||||
*.html
|
||||
*.slim
|
||||
*.haml
|
||||
*.ejs
|
||||
*.css
|
||||
*.less
|
||||
*.md
|
||||
*.mdx
|
||||
*.markdown
|
||||
*.rmd
|
||||
*.json
|
||||
*.webmanifest
|
||||
*.js
|
||||
*.mjs
|
||||
*.jsx
|
||||
*.rb
|
||||
*.gemspec
|
||||
*.rake
|
||||
*.php
|
||||
*.py
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.coffee
|
||||
*.mustache
|
||||
*.hbs
|
||||
*.conf
|
||||
*.ini
|
||||
*.yml
|
||||
*.yaml
|
||||
*.toml
|
||||
*.bat
|
||||
*.mk
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.bmp
|
||||
*.png
|
||||
*.webp
|
||||
*.gif
|
||||
*.ico
|
||||
*.twig
|
||||
*.cpp
|
||||
*.c++
|
||||
*.cxx
|
||||
*.cc
|
||||
*.cp
|
||||
*.c
|
||||
*.cs
|
||||
*.h
|
||||
*.hh
|
||||
*.hpp
|
||||
*.hxx
|
||||
*.hs
|
||||
*.lhs
|
||||
*.nix
|
||||
*.lua
|
||||
*.java
|
||||
*.sh
|
||||
*.fish
|
||||
*.bash
|
||||
*.zsh
|
||||
*.ksh
|
||||
*.csh
|
||||
*.awk
|
||||
*.ps1
|
||||
*.ml λ
|
||||
*.mli λ
|
||||
*.diff
|
||||
*.db
|
||||
*.sql
|
||||
*.dump
|
||||
*.clj
|
||||
*.cljc
|
||||
*.cljs
|
||||
*.edn
|
||||
*.scala
|
||||
*.go
|
||||
*.dart
|
||||
*.xul
|
||||
*.sln
|
||||
*.suo
|
||||
*.pl
|
||||
*.pm
|
||||
*.t
|
||||
*.rss
|
||||
'*.f#'
|
||||
*.fsscript
|
||||
*.fsx
|
||||
*.fs
|
||||
*.fsi
|
||||
*.rs
|
||||
*.rlib
|
||||
*.d
|
||||
*.erl
|
||||
*.hrl
|
||||
*.ex
|
||||
*.exs
|
||||
*.eex
|
||||
*.leex
|
||||
*.heex
|
||||
*.vim
|
||||
*.ai
|
||||
*.psd
|
||||
*.psb
|
||||
*.ts
|
||||
*.tsx
|
||||
*.jl
|
||||
*.pp
|
||||
*.vue
|
||||
*.elm
|
||||
*.swift
|
||||
*.xcplayground
|
||||
*.tex
|
||||
*.r
|
||||
*.rproj
|
||||
*.sol
|
||||
*.pem
|
||||
|
||||
# file names (vim-devicons) (case-insensitive not supported in lf)
|
||||
*gruntfile.coffee
|
||||
*gruntfile.js
|
||||
*gruntfile.ls
|
||||
*gulpfile.coffee
|
||||
*gulpfile.js
|
||||
*gulpfile.ls
|
||||
*mix.lock
|
||||
*dropbox
|
||||
*.ds_store
|
||||
*.gitconfig
|
||||
*.gitignore
|
||||
*.gitattributes
|
||||
*.gitlab-ci.yml
|
||||
*.bashrc
|
||||
*.zshrc
|
||||
*.zshenv
|
||||
*.zprofile
|
||||
*.vimrc
|
||||
*.gvimrc
|
||||
*_vimrc
|
||||
*_gvimrc
|
||||
*.bashprofile
|
||||
*favicon.ico
|
||||
*license
|
||||
*node_modules
|
||||
*react.jsx
|
||||
*procfile
|
||||
*dockerfile
|
||||
*docker-compose.yml
|
||||
*docker-compose.yaml
|
||||
*compose.yml
|
||||
*compose.yaml
|
||||
*rakefile
|
||||
*config.ru
|
||||
*gemfile
|
||||
*makefile
|
||||
*cmakelists.txt
|
||||
*robots.txt
|
||||
|
||||
# file names (case-sensitive adaptations)
|
||||
*Gruntfile.coffee
|
||||
*Gruntfile.js
|
||||
*Gruntfile.ls
|
||||
*Gulpfile.coffee
|
||||
*Gulpfile.js
|
||||
*Gulpfile.ls
|
||||
*Dropbox
|
||||
*.DS_Store
|
||||
*LICENSE
|
||||
*React.jsx
|
||||
*Procfile
|
||||
*Dockerfile
|
||||
*Docker-compose.yml
|
||||
*Docker-compose.yaml
|
||||
*Rakefile
|
||||
*Gemfile
|
||||
*Makefile
|
||||
*CMakeLists.txt
|
||||
|
||||
# file patterns (vim-devicons) (patterns not supported in lf)
|
||||
# .*jquery.*\.js$
|
||||
# .*angular.*\.js$
|
||||
# .*backbone.*\.js$
|
||||
# .*require.*\.js$
|
||||
# .*materialize.*\.js$
|
||||
# .*materialize.*\.css$
|
||||
# .*mootools.*\.js$
|
||||
# .*vimrc.*
|
||||
# Vagrantfile$
|
||||
|
||||
# file patterns (file name adaptations)
|
||||
*jquery.min.js
|
||||
*angular.min.js
|
||||
*backbone.min.js
|
||||
*require.min.js
|
||||
*materialize.min.js
|
||||
*materialize.min.css
|
||||
*mootools.min.js
|
||||
*vimrc
|
||||
Vagrantfile
|
||||
|
||||
# archives or compressed (extensions from dircolors defaults)
|
||||
*.tar
|
||||
*.tgz
|
||||
*.arc
|
||||
*.arj
|
||||
*.taz
|
||||
*.lha
|
||||
*.lz4
|
||||
*.lzh
|
||||
*.lzma
|
||||
*.tlz
|
||||
*.txz
|
||||
*.tzo
|
||||
*.t7z
|
||||
*.zip
|
||||
*.z
|
||||
*.dz
|
||||
*.gz
|
||||
*.lrz
|
||||
*.lz
|
||||
*.lzo
|
||||
*.xz
|
||||
*.zst
|
||||
*.tzst
|
||||
*.bz2
|
||||
*.bz
|
||||
*.tbz
|
||||
*.tbz2
|
||||
*.tz
|
||||
*.deb
|
||||
*.rpm
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
*.sar
|
||||
*.rar
|
||||
*.alz
|
||||
*.ace
|
||||
*.zoo
|
||||
*.cpio
|
||||
*.7z
|
||||
*.rz
|
||||
*.cab
|
||||
*.wim
|
||||
*.swm
|
||||
*.dwm
|
||||
*.esd
|
||||
|
||||
# image formats (extensions from dircolors defaults)
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.mjpg
|
||||
*.mjpeg
|
||||
*.gif
|
||||
*.bmp
|
||||
*.pbm
|
||||
*.pgm
|
||||
*.ppm
|
||||
*.tga
|
||||
*.xbm
|
||||
*.xpm
|
||||
*.tif
|
||||
*.tiff
|
||||
*.png
|
||||
*.svg
|
||||
*.svgz
|
||||
*.mng
|
||||
*.pcx
|
||||
*.mov
|
||||
*.mpg
|
||||
*.mpeg
|
||||
*.m2v
|
||||
*.mkv
|
||||
*.webm
|
||||
*.ogm
|
||||
*.mp4
|
||||
*.m4v
|
||||
*.mp4v
|
||||
*.vob
|
||||
*.qt
|
||||
*.nuv
|
||||
*.wmv
|
||||
*.asf
|
||||
*.rm
|
||||
*.rmvb
|
||||
*.flc
|
||||
*.avi
|
||||
*.fli
|
||||
*.flv
|
||||
*.gl
|
||||
*.dl
|
||||
*.xcf
|
||||
*.xwd
|
||||
*.yuv
|
||||
*.cgm
|
||||
*.emf
|
||||
*.ogv
|
||||
*.ogx
|
||||
|
||||
# audio formats (extensions from dircolors defaults)
|
||||
*.aac
|
||||
*.au
|
||||
*.flac
|
||||
*.m4a
|
||||
*.mid
|
||||
*.midi
|
||||
*.mka
|
||||
*.mp3
|
||||
*.mpc
|
||||
*.ogg
|
||||
*.ra
|
||||
*.wav
|
||||
*.oga
|
||||
*.opus
|
||||
*.spx
|
||||
*.xspf
|
||||
|
||||
# other formats
|
||||
*.pdf
|
||||
@@ -1,80 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ pistol ];
|
||||
|
||||
programs.lf = {
|
||||
enable = true;
|
||||
|
||||
commands = {
|
||||
dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"'';
|
||||
editor-open = "$$EDITOR $f";
|
||||
mkdir = ''
|
||||
''${{
|
||||
printf "Directory Name: "
|
||||
read DIR
|
||||
mkdir $DIR
|
||||
}}
|
||||
'';
|
||||
};
|
||||
|
||||
keybindings = {
|
||||
d = "delete";
|
||||
x = "cut";
|
||||
"<enter>" = "open";
|
||||
"<c-g>" = "quit";
|
||||
"<esc>" = "quit";
|
||||
"H" = "set hidden!";
|
||||
"\\\"" = "";
|
||||
o = "";
|
||||
c = "mkdir";
|
||||
"." = "set hidden!";
|
||||
"`" = "mark-load";
|
||||
"\\'" = "mark-load";
|
||||
"g~" = "cd";
|
||||
do = "dragon-out";
|
||||
gh = "cd";
|
||||
"g/" = "/";
|
||||
ee = "editor-open";
|
||||
V = ''$''${pkgs.bat}/bin/bat --paging=always "$f"'';
|
||||
};
|
||||
|
||||
settings = {
|
||||
ratios = [ 1 1 2 ];
|
||||
preview = true;
|
||||
hidden = true;
|
||||
drawbox = true;
|
||||
icons = true;
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
};
|
||||
|
||||
previewer.source = "${pkgs.pistol}/bin/pistol";
|
||||
|
||||
extraConfig = let
|
||||
previewer = pkgs.writeShellScriptBin "pv.sh" ''
|
||||
file=$1
|
||||
w=$2
|
||||
h=$3
|
||||
x=$4
|
||||
y=$5
|
||||
|
||||
if [[ "$( ${pkgs.file}/bin/file -Lb --mime-type "$file")" =~ ^image ]]; then
|
||||
${pkgs.kitty}/bin/kitty +kitten icat --silent --stdin no --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file" < /dev/null > /dev/tty
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${pkgs.pistol}/bin/pistol "$file"
|
||||
'';
|
||||
cleaner = pkgs.writeShellScriptBin "clean.sh" ''
|
||||
${pkgs.kitty}/bin/kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
|
||||
'';
|
||||
in ''
|
||||
set cleaner ${cleaner}/bin/clean.sh
|
||||
set previewer ${previewer}/bin/pv.sh
|
||||
'';
|
||||
};
|
||||
|
||||
xdg.configFile."lf" = {
|
||||
recursive = true;
|
||||
source = ./config;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
# Work in progress on another repo
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ wkhtmltopdf ];
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
# Nextcloud is a suite of client-server software for creating file hosting services and using them. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services, Nextcloud can be hosted on a private server, without additional cost.
|
||||
{
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
}
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings = {
|
||||
transparent_background = true;
|
||||
flavour = "mocha";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
# Nixvim is a NixOS module that installs and configures Neovim
|
||||
{ inputs, ... }: {
|
||||
imports = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
@@ -8,10 +9,13 @@
|
||||
./plugins/tree.nix
|
||||
./plugins/ui.nix
|
||||
./plugins/utils.nix
|
||||
./plugins/zen-mode.nix
|
||||
./plugins/dap.nix
|
||||
./plugins/telescope.nix
|
||||
./plugins/zenmode.nix
|
||||
|
||||
./options.nix
|
||||
./colorscheme.nix
|
||||
./keymaps.nix
|
||||
];
|
||||
|
||||
programs.nixvim.enable = true;
|
||||
}
|
||||
|
||||
+308
-22
@@ -1,24 +1,310 @@
|
||||
{
|
||||
programs.nixvim.keymaps = [
|
||||
{
|
||||
key = "<leader>fm";
|
||||
action = "<cmd>lua vim.lsp.buf.format()<cr>";
|
||||
options.desc = "LSP Format";
|
||||
}
|
||||
{
|
||||
key = "<leader>w";
|
||||
action = "<cmd>set wrap!<cr>";
|
||||
options.desc = "Toggle word wrapping";
|
||||
}
|
||||
{
|
||||
key = "<leader>W";
|
||||
action = "<cmd>set linebreak!<cr>";
|
||||
options.desc = "Toggle linebreak";
|
||||
}
|
||||
{
|
||||
key = "<leader>z";
|
||||
action = "<cmd>ZenMode<cr>";
|
||||
options.desc = "ZenMode";
|
||||
}
|
||||
];
|
||||
programs.nixvim = {
|
||||
plugins.which-key = {
|
||||
enable = true;
|
||||
settings = {
|
||||
delay = 600;
|
||||
icons = {
|
||||
breadcrumb = "»";
|
||||
group = "+";
|
||||
separator = ""; # ➜
|
||||
mappings = false;
|
||||
};
|
||||
spec = [
|
||||
# General Mappings
|
||||
{
|
||||
__unkeyed-1 = "<leader>c";
|
||||
mode = [ "n" "v" ];
|
||||
group = "+code";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>d";
|
||||
mode = [ "n" "v" ];
|
||||
group = "+debug";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>s";
|
||||
mode = "n";
|
||||
group = "+search";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>m";
|
||||
mode = "n";
|
||||
group = "+markdown";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>t";
|
||||
mode = "n";
|
||||
group = "+trouble";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>u";
|
||||
mode = "n";
|
||||
group = "+ui";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>w";
|
||||
mode = "n";
|
||||
group = "+windows";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>h";
|
||||
mode = "n";
|
||||
group = "+harpoon";
|
||||
}
|
||||
];
|
||||
win = {
|
||||
border = "rounded";
|
||||
wo.winblend = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
# General Mappings
|
||||
{
|
||||
key = "<leader>e";
|
||||
action = "<cmd>Oil --float<cr>";
|
||||
options.desc = "Oil";
|
||||
}
|
||||
{
|
||||
key = "-";
|
||||
action = "<cmd>Oil<cr>";
|
||||
options.desc = "Oil";
|
||||
}
|
||||
{
|
||||
key = "<leader>E";
|
||||
action = "<cmd>Neotree toggle<cr>";
|
||||
options.desc = "Neotree";
|
||||
}
|
||||
|
||||
{
|
||||
key = "s";
|
||||
action = "<cmd>lua require('flash').jump()<cr>";
|
||||
options.desc = "Flash";
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
|
||||
options.desc = "LSP Hover";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<C-h>";
|
||||
action = "<cmd>TmuxNavigateLeft<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-j>";
|
||||
action = "<cmd>TmuxNavigateDown<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-k>";
|
||||
action = "<cmd>TmuxNavigateUp<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-l>";
|
||||
action = "<cmd>TmuxNavigateRight<cr>";
|
||||
}
|
||||
|
||||
# UI
|
||||
{
|
||||
key = "<leader>uz";
|
||||
action = "<cmd>ZenMode<cr>";
|
||||
options.desc = "Toggle ZenMode";
|
||||
}
|
||||
{
|
||||
key = "<leader>uw";
|
||||
action = "<cmd>set wrap!<cr>";
|
||||
options.desc = "Toggle word wrapping";
|
||||
}
|
||||
{
|
||||
key = "<leader>ul";
|
||||
action = "<cmd>set linebreak!<cr>";
|
||||
options.desc = "Toggle linebreak";
|
||||
}
|
||||
{
|
||||
key = "<leader>us";
|
||||
action = "<cmd>set spell!<cr>";
|
||||
options.desc = "Toggle spellcheck";
|
||||
}
|
||||
{
|
||||
key = "<leader>uc";
|
||||
action = "<cmd>set cursorline!<cr>";
|
||||
options.desc = "Toggle cursorline";
|
||||
}
|
||||
{
|
||||
key = "<leader>un";
|
||||
action = "<cmd>set number!<cr>";
|
||||
options.desc = "Toggle line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ur";
|
||||
action = "<cmd>set relativenumber!<cr>";
|
||||
options.desc = "Toggle relative line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ut";
|
||||
action = "<cmd>set showtabline=2<cr>";
|
||||
options.desc = "Show tabline";
|
||||
}
|
||||
{
|
||||
key = "<leader>uT";
|
||||
action = "<cmd>set showtabline=0<cr>";
|
||||
options.desc = "Hide tabline";
|
||||
}
|
||||
|
||||
# Search
|
||||
{
|
||||
key = "<leader> ";
|
||||
action = "<cmd>lua require('telescope.builtin').find_files()<cr>";
|
||||
options.desc = "Telescope";
|
||||
}
|
||||
{
|
||||
key = "<leader>sg";
|
||||
action = "<cmd>lua require('telescope.builtin').live_grep()<cr>";
|
||||
options.desc = "Livegrep";
|
||||
}
|
||||
{
|
||||
key = "<leader>sf";
|
||||
action = "<cmd>lua require('telescope.builtin').find_files()<cr>";
|
||||
options.desc = "Find Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>sb";
|
||||
action = "<cmd>lua require('telescope.builtin').buffers()<cr>";
|
||||
options.desc = "Buffers";
|
||||
}
|
||||
{
|
||||
key = "<leader>sh";
|
||||
action = "<cmd>lua require('telescope.builtin').help_tags()<cr>";
|
||||
options.desc = "Help Tags";
|
||||
}
|
||||
{
|
||||
key = "<leader>sc";
|
||||
action = "<cmd>lua require('telescope.builtin').commands()<cr>";
|
||||
options.desc = "Commands";
|
||||
}
|
||||
{
|
||||
key = "<leader>sm";
|
||||
action = "<cmd>lua require('telescope.builtin').marks()<cr>";
|
||||
options.desc = "Marks";
|
||||
}
|
||||
{
|
||||
key = "<leader>so";
|
||||
action = "<cmd>lua require('telescope.builtin').oldfiles()<cr>";
|
||||
options.desc = "Oldfiles";
|
||||
}
|
||||
{
|
||||
key = "<leader>ss";
|
||||
action = "<cmd>lua require('telescope.builtin').spell_suggest()<cr>";
|
||||
options.desc = "Spell Suggest";
|
||||
}
|
||||
{
|
||||
key = "<leader>sr";
|
||||
action = "<cmd>:noh<return><esc>";
|
||||
options.desc = "Reset search";
|
||||
}
|
||||
{
|
||||
key = "<leader>st";
|
||||
action = "<cmd>TodoTelescope<cr>";
|
||||
options.desc = "Todos";
|
||||
}
|
||||
|
||||
# Trouble
|
||||
{
|
||||
key = "<leader>tx";
|
||||
action = "<cmd>Trouble diagnostics toggle<cr>";
|
||||
options.desc = "Diagnostics (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tX";
|
||||
action = "<cmd>Trouble diagnostics toggle filter.buf=0<cr>";
|
||||
options.desc = "Buffer Diagnostics (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>ts";
|
||||
action = "<cmd>Trouble symbols toggle focus=false<cr>";
|
||||
options.desc = "Symbols (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tl";
|
||||
action = "<cmd>Trouble lsp toggle focus=false win.position=right<cr>";
|
||||
options.desc = "LSP Definitions / references / ... (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tL";
|
||||
action = "<cmd>Trouble loclist toggle<cr>";
|
||||
options.desc = "Location List (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tQ";
|
||||
action = "<cmd>Trouble qflist toggle<cr>";
|
||||
options.desc = "Quickfix List (Trouble)";
|
||||
}
|
||||
|
||||
# Windows
|
||||
{
|
||||
key = "<leader>ws";
|
||||
action = "<cmd>split<cr>";
|
||||
options.desc = "Split";
|
||||
}
|
||||
{
|
||||
key = "<leader>wv";
|
||||
action = "<cmd>vsplit<cr>";
|
||||
options.desc = "VSplit";
|
||||
}
|
||||
{
|
||||
key = "<leader>wd";
|
||||
action = "<cmd>close<cr>";
|
||||
options.desc = "Close";
|
||||
}
|
||||
|
||||
# Code
|
||||
{
|
||||
key = "<leader>cd";
|
||||
action = "<cmd>lua vim.lsp.buf.definition()<cr>";
|
||||
options.desc = "LSP Definition";
|
||||
}
|
||||
{
|
||||
key = "<leader>cr";
|
||||
action = "<cmd>lua vim.lsp.buf.references()<cr>";
|
||||
options.desc = "LSP References";
|
||||
}
|
||||
{
|
||||
key = "<leader>ct";
|
||||
action = "<cmd>lua vim.lsp.buf.type_definition()<cr>";
|
||||
options.desc = "LSP Type Definition";
|
||||
}
|
||||
{
|
||||
key = "<leader>ca";
|
||||
action = "<cmd>lua vim.lsp.buf.code_action()<cr>";
|
||||
options.desc = "LSP Code Action";
|
||||
}
|
||||
{
|
||||
key = "<leader>cf";
|
||||
action = "<cmd>lua vim.lsp.buf.formatting()<cr>";
|
||||
options.desc = "LSP Formatting";
|
||||
}
|
||||
{
|
||||
key = "<leader>cn";
|
||||
action = "<cmd>lua vim.lsp.diagnostic.goto_next()<cr>";
|
||||
options.desc = "LSP Next Diagnostic";
|
||||
}
|
||||
{
|
||||
key = "<leader>cp";
|
||||
action = "<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>";
|
||||
options.desc = "LSP Previous Diagnostic";
|
||||
}
|
||||
{
|
||||
key = "<leader>cu";
|
||||
action = "<cmd>lua require('dapui').toggle()<CR>";
|
||||
options.desc = "Toggle Dapui";
|
||||
}
|
||||
{
|
||||
key = "<leader>cb";
|
||||
action = "<cmd>lua require('dap').toggle_breakpoint()<CR>";
|
||||
options.desc = "Toggle breakpoint";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
|
||||
programs.nixvim.globals.mapleader = " ";
|
||||
programs.nixvim.opts = {
|
||||
updatetime = 50; # Faster completion
|
||||
@@ -22,11 +21,13 @@
|
||||
hlsearch = true;
|
||||
smartcase = true;
|
||||
wildmode = "list:longest";
|
||||
completeopt = [ "menuone" "noselect" ];
|
||||
completeopt = [ "menuone" "noselect" "noinsert" ];
|
||||
signcolumn = "yes";
|
||||
cursorline = false;
|
||||
scrolloff = 8;
|
||||
mouse = "a";
|
||||
termguicolors = true;
|
||||
showmode = false;
|
||||
|
||||
wrap = false;
|
||||
|
||||
|
||||
@@ -15,8 +15,12 @@
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "luasnip"; }
|
||||
{ name = "buffer"; }
|
||||
{
|
||||
name = "buffer";
|
||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||
}
|
||||
{ name = "nvim_lua"; }
|
||||
{ name = "mkdnflow"; }
|
||||
{ name = "path"; }
|
||||
];
|
||||
|
||||
@@ -80,7 +84,7 @@
|
||||
completion = {
|
||||
winhighlight =
|
||||
"FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel";
|
||||
scrollbar = true;
|
||||
scrollbar = false;
|
||||
sidePadding = 0;
|
||||
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
||||
};
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.nixvim.plugins.dap = {
|
||||
enable = true;
|
||||
adapters = { };
|
||||
signs = {
|
||||
dapBreakpoint = {
|
||||
text = "●";
|
||||
texthl = "DapBreakpoint";
|
||||
};
|
||||
dapBreakpointCondition = {
|
||||
text = "●";
|
||||
texthl = "DapBreakpointCondition";
|
||||
};
|
||||
dapLogPoint = {
|
||||
text = "◆";
|
||||
texthl = "DapLogPoint";
|
||||
};
|
||||
};
|
||||
extensions = {
|
||||
dap-go = {
|
||||
enable = true;
|
||||
delve.path = "${pkgs.delve}/bin/dlv";
|
||||
};
|
||||
dap-ui = { enable = true; };
|
||||
dap-virtual-text = { enable = true; };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,9 +1,15 @@
|
||||
{ config, ... }: {
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
foreground = "#${config.lib.stylix.colors.base05}";
|
||||
configDir = config.var.configDirectory;
|
||||
in {
|
||||
|
||||
programs.nixvim.highlight = {
|
||||
AlphaHeaderColor.fg = "#${config.var.theme.colors.accent}";
|
||||
AlphaTextColor.fg = "#${config.var.theme.colors.fg}";
|
||||
AlphaShortcutColor.fg = "#${config.var.theme.colors.fgalt}";
|
||||
AlphaHeaderColor.fg = accent;
|
||||
AlphaTextColor.fg = foreground;
|
||||
AlphaShortcutColor.fg = muted;
|
||||
};
|
||||
|
||||
programs.nixvim.plugins.alpha = {
|
||||
@@ -70,8 +76,7 @@
|
||||
{
|
||||
type = "button";
|
||||
val = " NixOs Config";
|
||||
on_press.__raw =
|
||||
"function() vim.cmd[[Neotree ${config.var.configDirectory}]] end";
|
||||
on_press.__raw = "function() vim.cmd[[Neotree ${configDir}]] end";
|
||||
opts = {
|
||||
shortcut = "nc";
|
||||
position = "center";
|
||||
@@ -86,7 +91,7 @@
|
||||
type = "button";
|
||||
val = " Keybindings";
|
||||
on_press.__raw =
|
||||
"function() vim.cmd[[e ${config.var.configDirectory}/docs/KEYBINDINGS.md]] end";
|
||||
"function() vim.cmd[[e ${configDir}/docs/KEYBINDINGS.md]] end";
|
||||
opts = {
|
||||
shortcut = "nc";
|
||||
position = "center";
|
||||
|
||||
@@ -9,16 +9,9 @@
|
||||
gopls.enable = true;
|
||||
nixd.enable = true;
|
||||
tailwindcss.enable = true;
|
||||
# html.enable = true; # FIXME: broken for some reason
|
||||
html.enable = true;
|
||||
svelte.enable = true;
|
||||
marksman.enable = true;
|
||||
ltex = {
|
||||
enable = false;
|
||||
settings = {
|
||||
enabled = false;
|
||||
language = "en";
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps.lspBuf = {
|
||||
"gd" = "definition";
|
||||
@@ -43,6 +36,8 @@
|
||||
tidy.enable = true;
|
||||
shellharden.enable = true;
|
||||
shfmt.enable = true;
|
||||
golines.enable = true;
|
||||
gofumpt.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,72 +1,52 @@
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
mkdnflow = {
|
||||
# The render-markdown.nvim plugin is a plugin that renders markdown files in a neovim in a more readable way.
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
background = "#${config.lib.stylix.colors.base00}";
|
||||
in {
|
||||
|
||||
programs.nixvim = {
|
||||
plugins.mkdnflow = {
|
||||
enable = true;
|
||||
modules = { conceal = false; };
|
||||
|
||||
toDo.symbols = [ " " "-" "x" "!" "/" ];
|
||||
mappings = {
|
||||
|
||||
# Main
|
||||
MkdnEnter = {
|
||||
key = "<CR>";
|
||||
modes = [ "n" "v" "i" ];
|
||||
};
|
||||
|
||||
# Links
|
||||
MkdnCreateLink = false;
|
||||
MkdnCreateLinkFromClipboard = {
|
||||
key = "<leader>lc";
|
||||
key = "<leader>ml";
|
||||
modes = [ "n" "v" ];
|
||||
};
|
||||
MkdnDestroyLink = {
|
||||
key = "<leader>dl";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnFollowLink = false;
|
||||
MkdnNextLink = {
|
||||
key = "<Tab>";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnYankAnchorLink = {
|
||||
key = "ya";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnYankFileAnchorLink = {
|
||||
key = "yfa";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnPrevLink = {
|
||||
key = "<S-Tab>";
|
||||
modes = "n";
|
||||
};
|
||||
|
||||
MkdnDecreaseHeading = {
|
||||
key = "-";
|
||||
key = "<leader>m-";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnDestroyLink = false;
|
||||
MkdnEnter = {
|
||||
key = "<CR>";
|
||||
modes = [ "v" ];
|
||||
};
|
||||
MkdnExtendList = false;
|
||||
MkdnFoldSection = {
|
||||
key = "<leader>ff";
|
||||
key = "<leader>mf";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnUnfoldSection = {
|
||||
key = "<leader>fu";
|
||||
key = "<leader>mF";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnGoBack = {
|
||||
key = "<BS>";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnGoForward = {
|
||||
key = "<Del>";
|
||||
MkdnFollowLink = {
|
||||
key = "gd";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnGoBack = false;
|
||||
MkdnGoForward = false;
|
||||
MkdnIncreaseHeading = {
|
||||
key = "+";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnMoveSource = {
|
||||
key = "<F2>";
|
||||
key = "<leader>m+";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnMoveSource = false;
|
||||
MkdnNewListItem = false;
|
||||
MkdnNewListItemAboveInsert = {
|
||||
key = "O";
|
||||
@@ -77,56 +57,115 @@
|
||||
modes = "n";
|
||||
};
|
||||
MkdnNextHeading = {
|
||||
key = "]]";
|
||||
key = "<leader>m#";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnNextLink = false;
|
||||
MkdnPrevLink = false;
|
||||
MkdnPrevHeading = {
|
||||
key = "[[";
|
||||
key = "<leader>m*";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnSTab = false;
|
||||
MkdnTab = false;
|
||||
MkdnTableFormat = {
|
||||
key = "<leader>ft";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewColAfter = {
|
||||
key = "<leader>ic";
|
||||
key = "<leader>mc";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewColBefore = {
|
||||
key = "<leader>iC";
|
||||
key = "<leader>mC";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewRowAbove = {
|
||||
key = "<leader>iR";
|
||||
key = "<leader>mR";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNewRowBelow = {
|
||||
key = "<leader>ir";
|
||||
key = "<leader>mr";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNextCell = {
|
||||
key = "<S-Tab>";
|
||||
modes = "i";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTableNextRow = false;
|
||||
MkdnTablePrevCell = {
|
||||
key = "<M-Tab>";
|
||||
modes = "i";
|
||||
};
|
||||
MkdnTablePrevRow = {
|
||||
key = "<M-CR>";
|
||||
modes = "i";
|
||||
key = "<S-Tab>";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnTablePrevRow = false;
|
||||
MkdnToggleToDo = {
|
||||
key = "<C-Space>";
|
||||
modes = [ "n" "v" ];
|
||||
};
|
||||
MkdnUpdateNumbering = {
|
||||
key = "<leader>nn";
|
||||
key = "<leader>mn";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnYankAnchorLink = {
|
||||
key = "ya";
|
||||
modes = "n";
|
||||
};
|
||||
MkdnYankFileAnchorLink = {
|
||||
key = "yfa";
|
||||
modes = "n";
|
||||
};
|
||||
};
|
||||
};
|
||||
extraFiles = {
|
||||
"after/ftplugin/markdown.lua".text = ''
|
||||
vim.bo.tabstop = 2
|
||||
vim.bo.shiftwidth = 2
|
||||
vim.bo.expandtab = true
|
||||
'';
|
||||
};
|
||||
highlight = {
|
||||
RenderMarkdownBg.bg = background;
|
||||
RenderMarkdownH1.fg = accent;
|
||||
RenderMarkdownH2.fg = muted;
|
||||
RenderMarkdownH3.fg = muted;
|
||||
RenderMarkdownH4.fg = muted;
|
||||
RenderMarkdownH5.fg = muted;
|
||||
RenderMarkdownH6.fg = muted;
|
||||
RenderMarkdownTodo.fg = muted;
|
||||
RenderMarkdownWarning.fg = accent;
|
||||
};
|
||||
plugins.render-markdown = {
|
||||
enable = true;
|
||||
settings = {
|
||||
heading = {
|
||||
icons = [ "# " " " " " " " " " " " ];
|
||||
backgrounds = [ "RenderMarkdownBg" ];
|
||||
foregrounds = [
|
||||
"RenderMarkdownH1"
|
||||
"RenderMarkdownH2"
|
||||
"RenderMarkdownH3"
|
||||
"RenderMarkdownH4"
|
||||
"RenderMarkdownH5"
|
||||
"RenderMarkdownH6"
|
||||
];
|
||||
};
|
||||
checkbox = {
|
||||
unchecked = { highlight = "RenderMarkdownTodo"; };
|
||||
checked = { highlight = "RenderMarkdownTodo"; };
|
||||
custom = {
|
||||
pending = {
|
||||
raw = "[-]";
|
||||
rendered = " ";
|
||||
highlight = "RenderMarkdownTodo";
|
||||
};
|
||||
important = {
|
||||
raw = "[!]";
|
||||
rendered = " ";
|
||||
highlight = "RenderMarkdownWarning";
|
||||
};
|
||||
cancel = {
|
||||
raw = "[/]";
|
||||
rendered = " ";
|
||||
highlight = "RenderMarkdownTodo";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
background = "#${config.lib.stylix.colors.base00}";
|
||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
||||
in {
|
||||
programs.nixvim = {
|
||||
highlight = {
|
||||
TelescopePromptPrefix.fg = accent;
|
||||
TelescopeSelectionCaret = {
|
||||
fg = accent;
|
||||
bg = background-alt;
|
||||
};
|
||||
TelescopeSelection.bg = background-alt;
|
||||
TelescopePromptTitle = {
|
||||
bg = background;
|
||||
fg = accent;
|
||||
};
|
||||
TelescopePromptNormal.bg = background;
|
||||
TelescopePromptBorder = {
|
||||
bg = background;
|
||||
fg = accent;
|
||||
};
|
||||
};
|
||||
plugins.telescope = {
|
||||
enable = true;
|
||||
extensions.fzf-native = { enable = true; };
|
||||
settings.defaults = { selection_caret = "❚ "; };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -40,22 +40,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "-";
|
||||
action = "<cmd>Oil<cr>";
|
||||
options.desc = "Oil";
|
||||
}
|
||||
{
|
||||
key = "<leader>e";
|
||||
action = "<cmd>Oil --float<cr>";
|
||||
options.desc = "Oil";
|
||||
}
|
||||
{
|
||||
key = "<leader>E";
|
||||
action = "<cmd>Neotree toggle<cr>";
|
||||
options.desc = "Neotree";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,31 +1,54 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ ctags ];
|
||||
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
lualine.enable = true;
|
||||
lualine = {
|
||||
enable = true;
|
||||
settings = {
|
||||
options.disabled_filetypes.statusline =
|
||||
[ "dashboard" "alpha" "neo-tree" ];
|
||||
|
||||
alwaysDivideMiddle = true;
|
||||
globalstatus = true;
|
||||
ignoreFocus = [ "neo-tree" ];
|
||||
extensions = [ "fzf" ];
|
||||
theme = "auto";
|
||||
componentSeparators = {
|
||||
left = "|";
|
||||
right = "|";
|
||||
};
|
||||
sectionSeparators = {
|
||||
left = "█"; #
|
||||
right = "█"; #
|
||||
};
|
||||
sections = {
|
||||
lualine_a = [ "mode" ];
|
||||
lualine_b = [ "branch" "diff" "diagnostics" ];
|
||||
lualine_c = [ "filename" ];
|
||||
lualine_x = [ "filetype" ];
|
||||
lualine_y = [ "progress" ];
|
||||
lualine_z = [ ''" " .. os.date("%R")'' ];
|
||||
};
|
||||
};
|
||||
};
|
||||
web-devicons.enable = true;
|
||||
noice.enable = true;
|
||||
notify = {
|
||||
enable = true;
|
||||
level = "warn";
|
||||
};
|
||||
gitsigns = {
|
||||
enable = true;
|
||||
settings.current_line_blame = false;
|
||||
};
|
||||
bufferline.enable = true;
|
||||
trouble.enable = true;
|
||||
which-key.enable = true;
|
||||
headlines = {
|
||||
enable = true;
|
||||
settings = {
|
||||
markdown = {
|
||||
codeblock_highlight = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
indent-blankline.enable = true;
|
||||
nvim-colorizer.enable = true;
|
||||
# tagbar.enable = true;
|
||||
tagbar = {
|
||||
enable = true;
|
||||
tagsPackage = pkgs.universal-ctags;
|
||||
};
|
||||
};
|
||||
keymaps = [{
|
||||
key = "<leader>t";
|
||||
action = "<cmd>TroubleToggle<cr>";
|
||||
options.desc = "Trouble";
|
||||
}];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
{ config, ... }: {
|
||||
programs.nixvim = {
|
||||
highlightOverride = {
|
||||
FloatBorder.fg = "#${config.var.theme.colors.accent}";
|
||||
FloatBorder.fg = "#${config.lib.stylix.colors.base0D}";
|
||||
};
|
||||
plugins = {
|
||||
copilot-vim.enable = true;
|
||||
flash.enable = true;
|
||||
# image.enable = true;
|
||||
image = {
|
||||
enable = true;
|
||||
integrations.markdown = {
|
||||
clearInInsertMode = true;
|
||||
onlyRenderImageAtCursor = true;
|
||||
};
|
||||
};
|
||||
tmux-navigator.enable = true;
|
||||
comment.enable = true;
|
||||
nvim-autopairs.enable = true;
|
||||
friendly-snippets.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"<leader>fg" = "live_grep";
|
||||
"<leader> " = "find_files";
|
||||
};
|
||||
extensions.fzf-native = { enable = true; };
|
||||
};
|
||||
todo-comments.enable = true;
|
||||
treesitter = {
|
||||
enable = true;
|
||||
nixGrammars = true;
|
||||
@@ -27,25 +26,24 @@
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
harpoon = {
|
||||
enable = true;
|
||||
enableTelescope = true;
|
||||
keymapsSilent = true;
|
||||
keymaps = {
|
||||
addFile = "<leader>ha";
|
||||
toggleQuickMenu = "<leader>hu";
|
||||
navNext = "<leader>hl";
|
||||
navPrev = "<leader>hh";
|
||||
navFile = {
|
||||
"1" = "<leader>h1";
|
||||
"2" = "<leader>h2";
|
||||
"3" = "<leader>h3";
|
||||
"4" = "<leader>h4";
|
||||
};
|
||||
};
|
||||
};
|
||||
treesitter-context.enable = true;
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-h>";
|
||||
action = "<cmd>TmuxNavigateLeft<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-j>";
|
||||
action = "<cmd>TmuxNavigateDown<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-k>";
|
||||
action = "<cmd>TmuxNavigateUp<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-l>";
|
||||
action = "<cmd>TmuxNavigateRight<cr>";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.zen-mode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
on_open = ''
|
||||
function()
|
||||
require("gitsigns.actions").toggle_current_line_blame()
|
||||
vim.opt.relativenumber = false
|
||||
vim.opt.signcolumn = "no"
|
||||
vim.opt.wrap = true
|
||||
vim.opt.linebreak = true
|
||||
end
|
||||
'';
|
||||
plugins = {
|
||||
gitsigns = { enabled = true; };
|
||||
options = {
|
||||
enabled = true;
|
||||
ruler = false;
|
||||
showcmd = false;
|
||||
};
|
||||
tmux = { enabled = true; };
|
||||
};
|
||||
window = {
|
||||
backdrop = 0.95;
|
||||
height = 1;
|
||||
options = { signcolumn = "no"; };
|
||||
width = 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
zen-mode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
on_close = ''
|
||||
function()
|
||||
require("gitsigns.actions").toggle_current_line_blame()
|
||||
vim.cmd('IBLEnable')
|
||||
vim.opt.signcolumn = "yes:2"
|
||||
vim.wo.wrap = false
|
||||
vim.wo.linebreak = false
|
||||
require("gitsigns.actions").refresh()
|
||||
end
|
||||
'';
|
||||
on_open = ''
|
||||
function()
|
||||
require("gitsigns.actions").toggle_current_line_blame()
|
||||
vim.cmd('IBLDisable')
|
||||
vim.opt.relativenumber = false
|
||||
vim.opt.signcolumn = "no"
|
||||
vim.wo.wrap = true
|
||||
vim.wo.linebreak = true
|
||||
require("gitsigns.actions").refresh()
|
||||
end
|
||||
'';
|
||||
window = {
|
||||
backdrop = 1;
|
||||
height = 1;
|
||||
options = {
|
||||
signcolumn = "no";
|
||||
number = false;
|
||||
relativenumber = false;
|
||||
cursorline = false;
|
||||
cursorcolumn = false;
|
||||
foldcolumn = "0";
|
||||
list = false;
|
||||
};
|
||||
width = 0.8;
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
# Qutebrowser is a keyboard-focused browser with a minimal GUI.
|
||||
# My homepage is generated using https://github.com/anotherhadi/homepage
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
background = "#${config.lib.stylix.colors.base00}";
|
||||
foreground = "#${config.lib.stylix.colors.base05}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
|
||||
settings = ''
|
||||
{
|
||||
"config": {
|
||||
@@ -7,10 +15,10 @@ let
|
||||
"openLinksInNewTab": false,
|
||||
"locale": "fr-FR",
|
||||
"colors": {
|
||||
"primary": "#${config.var.theme.colors.accent}",
|
||||
"background": "#${config.var.theme.colors.bg}",
|
||||
"foreground": "#${config.var.theme.colors.fg}",
|
||||
"muted": "#${config.var.theme.colors.c8}"
|
||||
"primary": "${accent}",
|
||||
"background": "${background}",
|
||||
"foreground": "${foreground}",
|
||||
"muted": "#${muted}"
|
||||
},
|
||||
"folders": [
|
||||
{
|
||||
@@ -117,98 +125,12 @@ in {
|
||||
};
|
||||
|
||||
colors = {
|
||||
tabs = {
|
||||
odd.bg = "#${config.var.theme.colors.bg}";
|
||||
odd.fg = "#${config.var.theme.colors.fg}";
|
||||
even.bg = "#${config.var.theme.colors.bg}";
|
||||
even.fg = "#${config.var.theme.colors.fg}";
|
||||
selected = {
|
||||
odd = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
even = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
};
|
||||
indicator = {
|
||||
error = "#${config.var.theme.colors.c1}";
|
||||
start = "#${config.var.theme.colors.bgalt}";
|
||||
stop = "#${config.var.theme.colors.bgalt}";
|
||||
};
|
||||
};
|
||||
|
||||
hints = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
match.fg = "#${config.var.theme.colors.bg}";
|
||||
};
|
||||
|
||||
completion = {
|
||||
category = {
|
||||
bg = "#${config.var.theme.colors.bg}";
|
||||
fg = "#${config.var.theme.colors.fg}";
|
||||
border = {
|
||||
top = "#${config.var.theme.colors.bg}";
|
||||
bottom = "#${config.var.theme.colors.bg}";
|
||||
};
|
||||
};
|
||||
|
||||
odd.bg = "#${config.var.theme.colors.bg}";
|
||||
even.bg = "#${config.var.theme.colors.bg}";
|
||||
|
||||
fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ];
|
||||
|
||||
match.fg = "#${config.var.theme.colors.accent}";
|
||||
|
||||
item.selected = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
border.top = "#${config.var.theme.colors.accent}";
|
||||
border.bottom = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
match.fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
};
|
||||
|
||||
statusbar = {
|
||||
normal.bg = "#${config.var.theme.colors.bg}";
|
||||
normal.fg = "#${config.var.theme.colors.fg}";
|
||||
private.bg = "#${config.var.theme.colors.bg}";
|
||||
private.fg = "#${config.var.theme.colors.fg}";
|
||||
insert.bg = "#${config.var.theme.colors.accent}";
|
||||
insert.fg = "#${config.var.theme.colors.accentFg}";
|
||||
command = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
private.bg = "#${config.var.theme.colors.bgalt}";
|
||||
private.fg = "#${config.var.theme.colors.fgalt}";
|
||||
};
|
||||
};
|
||||
|
||||
messages = {
|
||||
info = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
border = "#${config.var.theme.colors.bgalt}";
|
||||
};
|
||||
|
||||
error = {
|
||||
bg = "#${config.var.theme.colors.c1}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
border = "#${config.var.theme.colors.c1}";
|
||||
};
|
||||
};
|
||||
|
||||
#webpage.darkmode.enabled = true; # Enable dark mode for all websites (Weird on images)
|
||||
webpage.preferred_color_scheme =
|
||||
"dark"; # Enable dark mode for websites that support it
|
||||
};
|
||||
|
||||
statusbar.show = "in-mode";
|
||||
|
||||
fonts = { default_family = "${config.var.theme.font}"; };
|
||||
|
||||
completion = {
|
||||
height = "30%";
|
||||
open_categories = [ "history" ];
|
||||
@@ -235,10 +157,7 @@ in {
|
||||
remove_finished = 0;
|
||||
};
|
||||
|
||||
hints = {
|
||||
border = "none";
|
||||
radius = 1;
|
||||
};
|
||||
hints = { radius = 1; };
|
||||
|
||||
scrolling = {
|
||||
bar = "never";
|
||||
|
||||
@@ -1,36 +1,44 @@
|
||||
{ config, ... }: {
|
||||
home.file.".duckduckgo-colorscheme.js".text = ''
|
||||
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
|
||||
// based on https://ddg.codingcodax.dev/
|
||||
// Cookies string for your theme
|
||||
const cookie = '7=${config.var.theme.colors.bg}; j=${config.var.theme.colors.bg}; 9=${config.var.theme.colors.fg}; aa=${config.var.theme.colors.fgalt}; 8=${config.var.theme.colors.c7}; x=${config.var.theme.colors.accent}; 21=${config.var.theme.colors.bgalt};';
|
||||
# A duckduckgo colorscheme generated for the Stylix theme used.
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = config.lib.stylix.colors.base0D;
|
||||
background = config.lib.stylix.colors.base00;
|
||||
foreground = config.lib.stylix.colors.base05;
|
||||
background-alt = config.lib.stylix.colors.base01;
|
||||
foreground-alt = config.lib.stylix.colors.base06;
|
||||
in {
|
||||
home.file.".duckduckgo-colorscheme.js".text =
|
||||
# js
|
||||
''
|
||||
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
|
||||
// based on https://ddg.codingcodax.dev/
|
||||
// Cookies string for your theme
|
||||
const cookie = '7=${background}; j=${background}; 9=${foreground}; aa=${foreground-alt}; 8=${foreground}; x=${accent}; 21=${background-alt};';
|
||||
|
||||
// Converts cookie string into formatted JSON
|
||||
const cookieToJSON = (cookieRaw) => {
|
||||
const cookieJson = {};
|
||||
const items = cookieRaw.split(/[ ,]+/);
|
||||
// Converts cookie string into formatted JSON
|
||||
const cookieToJSON = (cookieRaw) => {
|
||||
const cookieJson = {};
|
||||
const items = cookieRaw.split(/[ ,]+/);
|
||||
|
||||
items.forEach((item) => {
|
||||
const parts = item.split('=');
|
||||
cookieJson[parts[0]] = parts[1];
|
||||
});
|
||||
items.forEach((item) => {
|
||||
const parts = item.split('=');
|
||||
cookieJson[parts[0]] = parts[1];
|
||||
});
|
||||
|
||||
return cookieJson;
|
||||
};
|
||||
return cookieJson;
|
||||
};
|
||||
|
||||
// Iterates over JSON, and adds to browser cookie store
|
||||
const setCookies = (cookieJson) => {
|
||||
Object.keys(cookieJson).forEach((key) => {
|
||||
document.cookie = `''${key}=''${cookieJson [ key ]}`;
|
||||
});
|
||||
};
|
||||
// Iterates over JSON, and adds to browser cookie store
|
||||
const setCookies = (cookieJson) => {
|
||||
Object.keys(cookieJson).forEach((key) => {
|
||||
document.cookie = `''${key}=''${cookieJson [ key ]}`;
|
||||
});
|
||||
};
|
||||
|
||||
alert('The Nixy theme will be applied.');
|
||||
// Call set cookies, passing in formated cookie data
|
||||
setCookies(cookieToJSON(cookie));
|
||||
|
||||
// Call set cookies, passing in formated cookie data
|
||||
setCookies(cookieToJSON(cookie));
|
||||
|
||||
// All done, reload page for changes to take effect :)
|
||||
location.reload();
|
||||
'';
|
||||
// All done, reload page for changes to take effect :)
|
||||
location.reload();
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
{
|
||||
imports = [
|
||||
./fzf.nix
|
||||
./zsh.nix
|
||||
./starship.nix
|
||||
./zoxide.nix
|
||||
./tmux.nix
|
||||
./lazygit.nix
|
||||
./eza.nix
|
||||
];
|
||||
imports =
|
||||
[ ./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./tmux.nix ./eza.nix ];
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Eza is a ls replacement
|
||||
{
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
{ config, ... }: {
|
||||
# Fzf is a general-purpose command-line fuzzy finder.
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#" + config.lib.stylix.colors.base0D;
|
||||
foreground = "#" + config.lib.stylix.colors.base05;
|
||||
muted = "#" + config.lib.stylix.colors.base03;
|
||||
in {
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
colors = {
|
||||
"fg+" = config.var.theme.colors.accentName;
|
||||
colors = lib.mkForce {
|
||||
"fg+" = accent;
|
||||
"bg+" = "-1";
|
||||
"fg" = "white";
|
||||
"fg" = foreground;
|
||||
"bg" = "-1";
|
||||
"prompt" = "grey";
|
||||
"pointer" = config.var.theme.colors.accentName;
|
||||
"prompt" = muted;
|
||||
"pointer" = accent;
|
||||
};
|
||||
defaultOptions = [
|
||||
"--margin=1"
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
{ config, ... }: {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
gui.theme = {
|
||||
ligthTheme = false;
|
||||
activeBorderColor = [ "${config.var.theme.colors.accentName}" "bold" ];
|
||||
inactiveBorderColor = [ "black" ];
|
||||
selectedLineBgColor = [ "default" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, ... }: {
|
||||
# starship is a minimal, fast, and extremely customizable prompt for any shell!
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
||||
in {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
@@ -10,22 +15,23 @@
|
||||
"$git_status"
|
||||
"$character"
|
||||
];
|
||||
directory = { style = "#${config.var.theme.colors.accent}"; };
|
||||
directory = { style = accent; };
|
||||
|
||||
character = {
|
||||
success_symbol = "[❯](#${config.var.theme.colors.accent})";
|
||||
success_symbol = "[❯](${accent})";
|
||||
error_symbol = "[❯](red)";
|
||||
vimcmd_symbol = "[❮](cyan)";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
format = "[$branch]($style)";
|
||||
style = "bright-black";
|
||||
symbol = "[](${background-alt}) ";
|
||||
style = "fg:${accent} bg:${background-alt}";
|
||||
format = "on [$symbol$branch]($style)[](${background-alt}) ";
|
||||
};
|
||||
|
||||
git_status = {
|
||||
format =
|
||||
"[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)";
|
||||
"[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)";
|
||||
style = "cyan";
|
||||
conflicted = "";
|
||||
renamed = "";
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Tmux is a terminal multiplexer that allows you to run multiple terminal sessions in a single window.
|
||||
{ pkgs, ... }: {
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
@@ -12,37 +13,21 @@
|
||||
bind-key j select-pane -D
|
||||
bind-key k select-pane -U
|
||||
bind-key l select-pane -R
|
||||
|
||||
set -gq allow-passthrough on
|
||||
bind-key x kill-pane # skip "kill-pane 1? (y/n)" prompt
|
||||
set -g detach-on-destroy off # don't exit from tmux when closing a session
|
||||
|
||||
bind-key -n C-Tab next-window
|
||||
bind-key -n C-S-Tab previous-window
|
||||
bind-key -n M-Tab new-window
|
||||
'';
|
||||
|
||||
plugins = with pkgs; [
|
||||
tmuxPlugins.vim-tmux-navigator
|
||||
{
|
||||
plugin = tmuxPlugins.catppuccin;
|
||||
extraConfig = ''
|
||||
set-option -g status-position top
|
||||
set -g @catppuccin_window_left_separator ""
|
||||
set -g @catppuccin_window_right_separator " "
|
||||
set -g @catppuccin_window_middle_separator " █"
|
||||
set -g @catppuccin_window_number_position "right"
|
||||
|
||||
set -g @catppuccin_window_default_fill "number"
|
||||
set -g @catppuccin_window_default_text "#W"
|
||||
|
||||
set -g @catppuccin_window_current_fill "number"
|
||||
set -g @catppuccin_window_current_text "#W"
|
||||
|
||||
set -g @catppuccin_status_modules_right ""
|
||||
set -g @catppuccin_status_left_separator " "
|
||||
set -g @catppuccin_status_right_separator ""
|
||||
set -g @catppuccin_status_fill "icon"
|
||||
set -g @catppuccin_status_connect_separator "no"
|
||||
|
||||
set -g @catppuccin_directory_text "#{pane_current_path}"
|
||||
set -g @catppuccin_status_background "default"
|
||||
set-option -g default-terminal "screen-256color"
|
||||
'';
|
||||
}
|
||||
tmuxPlugins.resurrect
|
||||
tmuxPlugins.sensible
|
||||
tmuxPlugins.tokyo-night-tmux
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Zoxide is a cd replacement
|
||||
{
|
||||
programs.zoxide = {
|
||||
enable= true;
|
||||
enableZshIntegration = true;
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
}
|
||||
|
||||
+28
-11
@@ -1,6 +1,9 @@
|
||||
{ pkgs, lib, config, ... }: {
|
||||
# My shell configuration
|
||||
{ pkgs, lib, config, ... }:
|
||||
let fetch = config.var.theme.fetch; # neofetch, nerdfetch, pfetch
|
||||
in {
|
||||
|
||||
home.packages = with pkgs; [ bat ripgrep tldr ];
|
||||
home.packages = with pkgs; [ bat ripgrep tldr sesh ];
|
||||
|
||||
home.sessionPath = [ "$HOME/go/bin" ];
|
||||
|
||||
@@ -13,20 +16,31 @@
|
||||
|
||||
initExtraFirst = ''
|
||||
bindkey -e
|
||||
${if config.var.theme.fetch == "neofetch" then
|
||||
${if fetch == "neofetch" then
|
||||
pkgs.neofetch + "/bin/neofetch"
|
||||
else if config.var.theme.fetch == "nerdfetch" then
|
||||
else if fetch == "nerdfetch" then
|
||||
"nerdfetch"
|
||||
else if config.var.theme.fetch == "pfetch" then
|
||||
else if fetch == "pfetch" then
|
||||
"echo; ${pkgs.pfetch}/bin/pfetch"
|
||||
else
|
||||
""}
|
||||
|
||||
function sesh-sessions() {
|
||||
session=$(sesh list -t -c | fzf --height 70% --reverse)
|
||||
[[ -z "$session" ]] && return
|
||||
sesh connect $session
|
||||
}
|
||||
|
||||
zle -N sesh-sessions
|
||||
bindkey -M emacs '\es' sesh-sessions
|
||||
bindkey -M vicmd '\es' sesh-sessions
|
||||
bindkey -M viins '\es' sesh-sessions
|
||||
'';
|
||||
|
||||
history = {
|
||||
ignoreDups = true;
|
||||
save = 1000000;
|
||||
size = 1000000;
|
||||
save = 10000;
|
||||
size = 10000;
|
||||
};
|
||||
|
||||
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
|
||||
@@ -49,17 +63,17 @@
|
||||
sl = "ls";
|
||||
open = "${pkgs.xdg_utils}/bin/xdg-open";
|
||||
icat = "${pkgs.kitty}/bin/kitty +kitten icat";
|
||||
|
||||
wireguard-import = "nmcli connection import type wireguard file";
|
||||
neorg =
|
||||
"cd ~/nextcloud/neorg && vim -c ':ZenMode' -c ':Telescope find_files' index.norg";
|
||||
|
||||
notes =
|
||||
"cd ~/nextcloud/Notes && vim -c ':ZenMode' -c ':Telescope find_files' index.md";
|
||||
"nvim ~/nextcloud/Notes/index.md --cmd 'cd ~/nextcloud/Notes' -c ':Telescope find_files'";
|
||||
note = "notes";
|
||||
|
||||
# git
|
||||
g = "lazygit";
|
||||
ga = "git add";
|
||||
gc = "git commit";
|
||||
gcm = "git commit -m";
|
||||
gcu = "git add . && git commit -m 'Update'";
|
||||
gp = "git push";
|
||||
gpl = "git pull";
|
||||
@@ -68,6 +82,9 @@
|
||||
gco = "git checkout";
|
||||
gcb = "git checkout -b";
|
||||
gbr = "git branch";
|
||||
|
||||
gaa = "git add .";
|
||||
gcm = "git commit -m";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,31 +1,26 @@
|
||||
# Spicetify is a spotify client customizer
|
||||
{ pkgs, config, lib, inputs, ... }:
|
||||
let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
let
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
accent = "${config.lib.stylix.colors.base0D}";
|
||||
in {
|
||||
|
||||
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
|
||||
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [ "spotify" ];
|
||||
|
||||
stylix.targets.spicetify.enable = false;
|
||||
|
||||
programs.spicetify = {
|
||||
enable = true;
|
||||
theme = spicePkgs.themes.text;
|
||||
theme = lib.mkForce spicePkgs.themes.text;
|
||||
|
||||
colorScheme = "custom";
|
||||
|
||||
customColorScheme = {
|
||||
text = "${config.var.theme.colors.fg}";
|
||||
subtext = "${config.var.theme.colors.fgalt}";
|
||||
sidebar-text = "${config.var.theme.colors.fgalt}";
|
||||
main = "${config.var.theme.colors.bg}";
|
||||
sidebar = "${config.var.theme.colors.bg}";
|
||||
background = "${config.var.theme.colors.bg}";
|
||||
player = "${config.var.theme.colors.bg}";
|
||||
card = "${config.var.theme.colors.bg}";
|
||||
shadow = "000000";
|
||||
selected-row = "${config.var.theme.colors.bgalt}";
|
||||
button = "${config.var.theme.colors.accent}";
|
||||
button-active = "${config.var.theme.colors.accent}";
|
||||
button-disabled = "${config.var.theme.colors.bgalt}";
|
||||
tab-active = "${config.var.theme.colors.accent}";
|
||||
misc = "${config.var.theme.colors.fgalt}";
|
||||
button = accent;
|
||||
button-active = accent;
|
||||
tab-active = accent;
|
||||
};
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# Thunar is a file explorer
|
||||
{ pkgs, ... }: {
|
||||
# ctrl + m to toggle the menubar
|
||||
home.packages = with pkgs.xfce; [
|
||||
thunar
|
||||
xfconf
|
||||
tumbler
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
|
||||
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="thunar" version="1.0">
|
||||
<property name="last-view" type="string" value="ThunarIconView"/>
|
||||
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
||||
<property name="last-window-maximized" type="bool" value="true"/>
|
||||
<property name="last-separator-position" type="int" value="170"/>
|
||||
<property name="last-statusbar-visible" type="bool" value="false"/>
|
||||
<property name="last-menubar-visible" type="bool" value="false"/>
|
||||
<property name="misc-single-click" type="bool" value="false"/>
|
||||
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
||||
<property name="tree-icon-emblems" type="bool" value="true"/>
|
||||
<property name="misc-file-size-binary" type="bool" value="true"/>
|
||||
<property name="misc-thumbnail-draw-frames" type="bool" value="false"/>
|
||||
<property name="misc-text-beside-icons" type="bool" value="true"/>
|
||||
<property name="misc-change-window-icon" type="bool" value="true"/>
|
||||
<property name="hidden-bookmarks" type="array">
|
||||
<value type="string" value="computer:///"/>
|
||||
<value type="string" value="recent:///"/>
|
||||
<value type="string" value="file:///"/>
|
||||
<value type="string" value="network:///"/>
|
||||
</property>
|
||||
<property name="hidden-devices" type="array">
|
||||
<value type="string" value="52FEA905FEA8E309"/>
|
||||
</property>
|
||||
<property name="last-toolbar-item-order" type="string" value="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"/>
|
||||
<property name="last-toolbar-visible-buttons" type="string" value="0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0"/>
|
||||
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
||||
<property name="last-show-hidden" type="bool" value="false"/>
|
||||
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
||||
<property name="last-details-view-column-widths" type="string" value="50,50,127,50,50,50,50,50,751,50,50,75,50,145"/>
|
||||
</channel>
|
||||
'';
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
# Yazi is a TUI file explorer
|
||||
{
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
@@ -12,28 +13,5 @@
|
||||
sort_reverse = true;
|
||||
};
|
||||
};
|
||||
|
||||
theme = {
|
||||
filetype = {
|
||||
rules = [
|
||||
{
|
||||
fg = "#7AD9E5";
|
||||
mime = "image/*";
|
||||
}
|
||||
{
|
||||
fg = "#F3D398";
|
||||
mime = "video/*";
|
||||
}
|
||||
{
|
||||
fg = "#F3D398";
|
||||
mime = "audio/*";
|
||||
}
|
||||
{
|
||||
fg = "#CD9EFC";
|
||||
mime = "application/x-bzip";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
battery-watch = pkgs.writeShellScriptBin "battery-watch" ''
|
||||
while true;do
|
||||
battery-plugged &
|
||||
battery-level &
|
||||
sleep 60
|
||||
done
|
||||
'';
|
||||
|
||||
battery-plugged = pkgs.writeShellScriptBin "battery-plugged" ''
|
||||
BATTERY_STATUS=$(cat /sys/class/power_supply/BAT*/status | head -n1)
|
||||
OLD_BATTERY_STATUS=$(cat /tmp/old_battery_status 2>/dev/null || echo "Unknown")
|
||||
if [[ $BATTERY_STATUS != $OLD_BATTERY_STATUS && $OLD_BATTERY_STATUS != "Unknown" ]]; then
|
||||
if [[ $BATTERY_STATUS == "Discharging" ]]; then
|
||||
notif "battery" " Battery is unplugged"
|
||||
else
|
||||
notif "battery" " Battery is plugged in"
|
||||
fi
|
||||
fi
|
||||
echo $BATTERY_STATUS > /tmp/old_battery_status
|
||||
'';
|
||||
|
||||
battery-level = pkgs.writeShellScriptBin "battery-level" ''
|
||||
BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity | head -n1)
|
||||
BATTERY_STATUS=$(cat /sys/class/power_supply/BAT*/status | head -n1)
|
||||
if [[ $BATTERY_LEVEL -le 20 ]] && [[ $BATTERY_STATUS == "Discharging" ]]; then
|
||||
notif "battery" " Low battery" "Battery level is $BATTERY_LEVEL%"
|
||||
elif [[ $BATTERY_LEVEL -le 10 ]] && [[ $BATTERY_STATUS == "Discharging" ]]; then
|
||||
notif "battery" " Very low battery" "Battery level is $BATTERY_LEVEL%"
|
||||
# elif [[ $BATTERY_LEVEL -eq 100 ]] && [[ $BATTERY_STATUS -ne "Discharging" ]]; then
|
||||
# notif "battery" " Fully charged"
|
||||
fi
|
||||
'';
|
||||
|
||||
in { home.packages = [ battery-watch battery-plugged battery-level ]; }
|
||||
@@ -1,19 +1,24 @@
|
||||
# - ## 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" ''
|
||||
sleep 0.05
|
||||
[[ $1 == "up" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%+
|
||||
[[ $1 == "down" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%-
|
||||
'';
|
||||
|
||||
[[ $1 == "up" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ${increments}%+
|
||||
[[ $1 == "down" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ${increments}%-
|
||||
|
||||
brightness_level=$(${pkgs.brightnessctl}/bin/brightnessctl get)
|
||||
|
||||
message=" Brightness: $brightness_level%"
|
||||
|
||||
notif "brightness" "$message" "extraargs=-h int:value:$brightness_level"
|
||||
brightness-set = pkgs.writeShellScriptBin "brightness-set" ''
|
||||
${pkgs.brightnessctl}/bin/brightnessctl set ''${1-100}%
|
||||
'';
|
||||
|
||||
brightness-up = pkgs.writeShellScriptBin "brightness-up" ''
|
||||
@@ -24,4 +29,12 @@ let
|
||||
brightness-change down ${increments}
|
||||
'';
|
||||
|
||||
in { home.packages = [ brightness-change brightness-up brightness-down ]; }
|
||||
in {
|
||||
home.packages = [
|
||||
pkgs.brightnessctl
|
||||
brightness-change
|
||||
brightness-up
|
||||
brightness-down
|
||||
brightness-set
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
# - ## 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" ''
|
||||
[[ -f /tmp/caffeine ]] && echo "1" || echo "0"
|
||||
'';
|
||||
|
||||
caffeine = pkgs.writeShellScriptBin "caffeine" ''
|
||||
if [[ -f /tmp/caffeine ]]; then
|
||||
rm /tmp/caffeine
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch exec ${pkgs.hypridle}/bin/hypridle
|
||||
message=" Caffeine Deactivated"
|
||||
else
|
||||
touch /tmp/caffeine
|
||||
pkill hypridle
|
||||
message=" Caffeine Activated"
|
||||
fi
|
||||
notif "caffeine" "$message"
|
||||
[[ $(pidof "hypridle") ]] && echo "0" || echo "1"
|
||||
'';
|
||||
|
||||
caffeine-status-icon = pkgs.writeShellScriptBin "caffeine-status-icon" ''
|
||||
status=$(caffeine-status)
|
||||
if [[ $status == "1" ]]; then
|
||||
echo ""
|
||||
[[ $(pidof "hypridle") ]] && echo "" || echo ""
|
||||
'';
|
||||
|
||||
caffeine = pkgs.writeShellScriptBin "caffeine" ''
|
||||
if [[ $(pidof "hypridle") ]]; then
|
||||
systemctl --user stop hypridle.service
|
||||
title=" Caffeine Activated"
|
||||
description="Caffeine is now active! Your screen will not turn off automatically."
|
||||
else
|
||||
echo ""
|
||||
systemctl --user start hypridle.service
|
||||
title=" Caffeine Deactivated"
|
||||
description="Caffeine is now deactivated! Your screen will turn off automatically."
|
||||
fi
|
||||
|
||||
notif "caffeine" "$title" "$description"
|
||||
'';
|
||||
|
||||
in { home.packages = [ caffeine-status caffeine caffeine-status-icon ]; }
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# From https://github.com/Frost-Phoenix/nixos-config
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
compress = pkgs.writeShellScriptBin "compress" ''
|
||||
if (( $# == 1 )) then
|
||||
# echo -ne "Archive name: "
|
||||
# read name
|
||||
# tar -cvzf "$name.tar.gz" $1
|
||||
tar -cvzf "$1.tar.gz" $1
|
||||
else
|
||||
echo "Wrong number of arguments..."
|
||||
fi
|
||||
'';
|
||||
|
||||
extract = pkgs.writeShellScriptBin "extract" ''
|
||||
for i in "$@" ; do
|
||||
tar -xvzf $i
|
||||
break
|
||||
done
|
||||
'';
|
||||
|
||||
in { home.packages = [ compress extract ]; }
|
||||
@@ -4,13 +4,12 @@
|
||||
./sounds
|
||||
./brightness
|
||||
./caffeine
|
||||
./hyprpanel
|
||||
./hyprfocus
|
||||
./night-shift
|
||||
./screenshot
|
||||
./startup
|
||||
./nerdfont_fzf
|
||||
./notification
|
||||
./battery
|
||||
./compress
|
||||
./misc
|
||||
./system
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
# - ## 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
|
||||
''
|
||||
hyprctl keyword "general:gaps_in" 0
|
||||
hyprctl keyword "general:gaps_out" 0
|
||||
hyprpanel-hide
|
||||
hyprctl keyword "general:border_size" 1
|
||||
hyprctl keyword "decoration:rounding" 0
|
||||
hyprctl keyword "decoration:drop_shadow" false
|
||||
hyprctl keyword "decoration:inactive_opacity" 0.98
|
||||
hyprctl keyword "decoration:active_opacity" 1
|
||||
echo "1" > /tmp/hyprfocus
|
||||
'';
|
||||
|
||||
hyprfocus-off = pkgs.writeShellScriptBin "hyprfocus-off"
|
||||
# bash
|
||||
''
|
||||
hyprctl reload
|
||||
hyprpanel-show
|
||||
rm /tmp/hyprfocus
|
||||
'';
|
||||
|
||||
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 ]; }
|
||||
@@ -0,0 +1,46 @@
|
||||
# - ## Hyprpanel
|
||||
#-
|
||||
#- Quick scripts to toggle, reload and kill hyprpanel.
|
||||
#-
|
||||
#- - `hyprpanel-toggle` - Toggle hyprpanel.
|
||||
#- - `hyprpanel-reload` - Reload hyprpanel.
|
||||
#- - `hyprpanel-kill` - Kill hyprpanel.
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
hyprpanel-toggle = pkgs.writeShellScriptBin "hyprpanel-toggle" ''
|
||||
hyprpanel -t bar-0
|
||||
hyprpanel -t bar-1
|
||||
hyprpanel -t bar-2
|
||||
hyprpanel -t bar-3
|
||||
'';
|
||||
|
||||
hyprpanel-hide = pkgs.writeShellScriptBin "hyprpanel-hide" ''
|
||||
status=$(hyprpanel -r "isWindowVisible('bar-0')")
|
||||
if [[ $status == "true" ]]; then
|
||||
hyprpanel -t bar-0
|
||||
fi
|
||||
status=$(hyprpanel -r "isWindowVisible('bar-1')")
|
||||
if [[ $status == "true" ]]; then
|
||||
hyprpanel -t bar-1
|
||||
fi
|
||||
'';
|
||||
|
||||
hyprpanel-show = pkgs.writeShellScriptBin "hyprpanel-show" ''
|
||||
status=$(hyprpanel -r "isWindowVisible('bar-0')")
|
||||
if [[ $status == "false" ]]; then
|
||||
hyprpanel -t bar-0
|
||||
fi
|
||||
status=$(hyprpanel -r "isWindowVisible('bar-1')")
|
||||
if [[ $status == "false" ]]; then
|
||||
hyprpanel -t bar-1
|
||||
fi
|
||||
'';
|
||||
|
||||
hyprpanel-reload = pkgs.writeShellScriptBin "hyprpanel-reload" ''
|
||||
[ $(pgrep "ags") ] && pkill ags
|
||||
hyprctl dispatch exec hyprpanel
|
||||
'';
|
||||
in {
|
||||
home.packages =
|
||||
[ hyprpanel-toggle hyprpanel-reload hyprpanel-hide hyprpanel-show ];
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
menu = pkgs.writeShellScriptBin "menu" ''
|
||||
if pgrep wofi; then
|
||||
pkill wofi
|
||||
else
|
||||
wofi --show drun
|
||||
fi
|
||||
'';
|
||||
|
||||
powermenu = pkgs.writeShellScriptBin "powermenu" ''
|
||||
if pgrep wlogout; then
|
||||
pkill wlogout
|
||||
else
|
||||
${pkgs.wlogout}/bin/wlogout
|
||||
fi
|
||||
'';
|
||||
|
||||
lock = pkgs.writeShellScriptBin "lock" ''
|
||||
${pkgs.hyprlock}/bin/hyprlock
|
||||
'';
|
||||
|
||||
in { home.packages = [ menu powermenu lock ]; }
|
||||
@@ -1,34 +1,29 @@
|
||||
# - ## 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
|
||||
homedir = config.home.homeDirectory;
|
||||
|
||||
nerdfont-fzf = pkgs.writeShellScriptBin "nerdfont-fzf" ''
|
||||
# Dependencies: jq, fzf, wl-copy, wget
|
||||
icons=$(jq -r 'to_entries[] | "\(.key):\(.value.char)"' "${homedir}/.config/nerdfont_glyphnames.json" | awk -F: '{print "\033[95m "$2" \033[0m "$1}')
|
||||
fzf_result=$(echo "$icons" | fzf --ansi --border none | awk '{print $1}')
|
||||
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"
|
||||
echo "Paste it to close the window"
|
||||
${pkgs.wl-clipboard}/bin/wl-copy -o "$fzf_result" # wait for paste before exiting.. not cool
|
||||
${pkgs.wl-clipboard}/bin/wl-copy "$fzf_result"
|
||||
'';
|
||||
|
||||
nerdfont-fzf-fetch = pkgs.writeShellScriptBin "nerdfont-fzf-fetch" ''
|
||||
wget "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/glyphnames.json" -O "glyphnames.json" || exit 1
|
||||
jq 'del(.METADATA)' "glyphnames.json"
|
||||
'';
|
||||
|
||||
nerdfont-popup = pkgs.writeShellScriptBin "nerdfont-popup" ''
|
||||
${pkgs.kitty}/bin/kitty --class floating -o font_size=18 zsh -c nerdfont-fzf 2>/dev/null
|
||||
'';
|
||||
|
||||
in {
|
||||
home.packages = [ nerdfont-fzf nerdfont-fzf-fetch nerdfont-popup ];
|
||||
home.packages = [ nerdfont-fzf ];
|
||||
|
||||
xdg.configFile."nerdfont_glyphnames.json" = {
|
||||
source = ./nerdfont_glyphnames.json;
|
||||
source = pkgs.fetchurl {
|
||||
url =
|
||||
"https://raw.githubusercontent.com/ryanoasis/nerd-fonts/384b1825ea0037b0314f7f9c660a80c1ecdb219a/glyphnames.json";
|
||||
hash = "sha256-Ps0dyFcMs51RMTthBOVSOf/lafPV/53JxuNSKlmZ7cc=";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,22 +1,33 @@
|
||||
# - ## 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.
|
||||
#-
|
||||
#- - `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
|
||||
default = "4000";
|
||||
|
||||
night-shift-on = pkgs.writeShellScriptBin "night-shift-on" ''
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch exec "${pkgs.wlsunset}/bin/wlsunset -t ${default}"
|
||||
message=" Night-Shift Activated"
|
||||
notif "night-shift" "$message"
|
||||
${pkgs.hyprshade}/bin/hyprshade on blue-light-filter
|
||||
title=" Night-Shift Activated"
|
||||
description="Night-Shift is now activated! Your screen will be warmer and easier on the eyes."
|
||||
|
||||
notif "night-shift" "$title" "$description"
|
||||
'';
|
||||
|
||||
night-shift-off = pkgs.writeShellScriptBin "night-shift-off" ''
|
||||
pkill wlsunset
|
||||
message=" Night-Shift Deactivated"
|
||||
notif "night-shift" "$message"
|
||||
${pkgs.hyprshade}/bin/hyprshade off
|
||||
title=" Night-Shift Deactivated"
|
||||
description="Night-Shift is now deactivated! Your screen will return to normal."
|
||||
|
||||
notif "night-shift" "$title" "$description"
|
||||
'';
|
||||
|
||||
night-shift = pkgs.writeShellScriptBin "night-shift" ''
|
||||
if pgrep wlsunset; then
|
||||
if [[ $(${pkgs.hyprshade}/bin/hyprshade current) ]]; then
|
||||
night-shift-off
|
||||
else
|
||||
night-shift-on
|
||||
@@ -24,7 +35,7 @@ let
|
||||
'';
|
||||
|
||||
night-shift-status = pkgs.writeShellScriptBin "night-shift-status" ''
|
||||
if [[ $(pgrep wlsunset) ]]; then
|
||||
if [[ $(${pkgs.hyprshade}/bin/hyprshade current) ]]; then
|
||||
echo "1"
|
||||
else
|
||||
echo "0"
|
||||
@@ -33,11 +44,11 @@ let
|
||||
|
||||
night-shift-status-icon =
|
||||
pkgs.writeShellScriptBin "night-shift-status-icon" ''
|
||||
if [[ $(pgrep wlsunset) ]]; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
if [[ $(hyprshade current) ]]; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
home.packages = [
|
||||
|
||||
@@ -1,57 +1,70 @@
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
# - ## 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, upgrade, 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.
|
||||
{ pkgs, config, inputs, ... }:
|
||||
let
|
||||
|
||||
nixy = pkgs.writeShellScriptBin "nixy" ''
|
||||
function exec() {
|
||||
$@
|
||||
}
|
||||
configDirectory = config.var.configDirectory;
|
||||
hostname = config.var.hostname;
|
||||
|
||||
function ui(){
|
||||
DEFAULT_ICON=""
|
||||
nixy = pkgs.writeShellScriptBin "nixy"
|
||||
# bash
|
||||
''
|
||||
function exec() {
|
||||
$@
|
||||
}
|
||||
|
||||
# "icon;name;command"[]
|
||||
apps=(
|
||||
";Rebuild;nixy rebuild"
|
||||
";Upgrade;nixy upgrade"
|
||||
";Update;nixy update"
|
||||
";Collect Garbage;nixy gc"
|
||||
";Clean Boot Menu;nixy cb"
|
||||
)
|
||||
function ui(){
|
||||
DEFAULT_ICON=""
|
||||
|
||||
# Apply default icons if empty:
|
||||
for i in "''${!apps[@]}"; do
|
||||
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
|
||||
done
|
||||
# "icon;name;command"[]
|
||||
apps=(
|
||||
";Rebuild;nixy rebuild"
|
||||
";Upgrade;nixy upgrade"
|
||||
";Update;nixy update"
|
||||
";Collect Garbage;nixy gc"
|
||||
";Clean Boot Menu;nixy cb"
|
||||
";Hyprland Keybindings;nvim ${configDirectory}/docs/KEYBINDINGS-HYPRLAND.md"
|
||||
";Wallpapers;nvim ${inputs.nixy-wallpapers}/docs/MOBILE-VIEW.md"
|
||||
)
|
||||
|
||||
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
|
||||
[[ -z $fzf_result ]] && exit 0
|
||||
fzf_result=''${fzf_result/ /;}
|
||||
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
|
||||
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
|
||||
# Apply default icons if empty:
|
||||
for i in "''${!apps[@]}"; do
|
||||
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
|
||||
done
|
||||
|
||||
exec "$command"
|
||||
exit 0
|
||||
}
|
||||
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
|
||||
[[ -z $fzf_result ]] && exit 0
|
||||
fzf_result=''${fzf_result/ /;}
|
||||
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
|
||||
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
|
||||
|
||||
[[ $1 == "" ]] && ui
|
||||
exec "$command"
|
||||
exit 0
|
||||
}
|
||||
|
||||
if [[ $1 == "rebuild" ]];then
|
||||
sudo nixos-rebuild switch --flake ${config.var.configDirectory}#${config.var.hostname}
|
||||
elif [[ $1 == "upgrade" ]];then
|
||||
sudo nixos-rebuild switch --upgrade --flake ${config.var.configDirectory}#${config.var.hostname}
|
||||
elif [[ $1 == "update" ]];then
|
||||
cd ${config.var.configDirectory} && sudo nix flake update
|
||||
elif [[ $1 == "gc" ]];then
|
||||
cd ${config.var.configDirectory} && sudo nix-collect-garbage -d
|
||||
elif [[ $1 == "cb" ]];then
|
||||
sudo /run/current-system/bin/switch-to-configuration boot
|
||||
elif [[ $1 == "remote" ]];then
|
||||
cd ~/.config/nixos && git add . && git commit -m "update" && git push
|
||||
ssh jack -S -C "cd /home/hadi/.config/nixos && git pull && sudo -S nixos-rebuild switch --flake ~/.config/nixos#jack"
|
||||
else
|
||||
echo "Unknown argument"
|
||||
fi
|
||||
'';
|
||||
[[ $1 == "" ]] && ui
|
||||
|
||||
if [[ $1 == "rebuild" ]];then
|
||||
sudo nixos-rebuild switch --flake ${configDirectory}#${hostname}
|
||||
elif [[ $1 == "upgrade" ]];then
|
||||
sudo nixos-rebuild switch --upgrade --flake ${configDirectory}#${hostname}
|
||||
elif [[ $1 == "update" ]];then
|
||||
cd ${configDirectory} && nix flake update
|
||||
elif [[ $1 == "gc" ]];then
|
||||
cd ${configDirectory} && sudo nix-collect-garbage -d
|
||||
elif [[ $1 == "cb" ]];then
|
||||
sudo /run/current-system/bin/switch-to-configuration boot
|
||||
elif [[ $1 == "remote" ]];then
|
||||
cd ~/.config/nixos && git add . && git commit -m "update" && git push
|
||||
ssh jack -S -C "cd /home/hadi/.config/nixos && git pull && sudo -S nixos-rebuild switch --flake ~/.config/nixos#jack"
|
||||
else
|
||||
echo "Unknown argument"
|
||||
fi
|
||||
'';
|
||||
|
||||
in { home.packages = [ nixy ]; }
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
notif = pkgs.writeShellScriptBin "notif" ''
|
||||
# Shell script to send custom notifications
|
||||
NOTIF_FOLDER="/tmp/notif"
|
||||
sender_id=$1 # To overwrite existing notifications
|
||||
message=$2
|
||||
extraargs=""
|
||||
description=""
|
||||
if [[ $3 == "extraargs="* ]]; then
|
||||
extraargs=$(echo "$3" | sed 's/extraargs=//g')
|
||||
else
|
||||
description="$3"
|
||||
extraargs="$4"
|
||||
fi
|
||||
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"
|
||||
[[ -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")
|
||||
old_notification_id=$(cat "$NOTIF_FOLDER/$sender_id")
|
||||
[[ -z "$old_notification_id" ]] && old_notification_id=0
|
||||
|
||||
${pkgs.libnotify}/bin/notify-send "$message" \
|
||||
$extraargs \
|
||||
--replace-id="$old_notification_id" --print-id > "$NOTIF_FOLDER/$sender_id"
|
||||
'';
|
||||
${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 = [ notif ]; }
|
||||
in { home.packages = [ pkgs.libnotify notif ]; }
|
||||
|
||||
@@ -1,32 +1,34 @@
|
||||
# - ## 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/screenshots"
|
||||
folder="$HOME/Pictures"
|
||||
fi
|
||||
filename="$(date +%Y-%m-%d_%H:%M:%S).png"
|
||||
mode="region" # Default to region
|
||||
|
||||
if [[ $1 == "window" ]];then
|
||||
mode="window"
|
||||
mode="active"
|
||||
elif [[ $1 == "region" ]];then
|
||||
mode="area"
|
||||
elif [[ $1 == "monitor" ]];then
|
||||
mode="output"
|
||||
fi
|
||||
|
||||
${pkgs.hyprshot}/bin/hyprshot -m $mode -o $folder -f $filename -s || exit 1
|
||||
${pkgs.grimblast}/bin/grimblast --notify --freeze save $mode "$folder/$filename" || exit 1
|
||||
|
||||
if [[ $2 == "swappy" ]];then
|
||||
${pkgs.swappy}/bin/swappy -f "$folder/$filename" -o "$HOME/Pictures/screenshots/$filename"
|
||||
${pkgs.swappy}/bin/swappy -f "$folder/$filename" -o "$HOME/Pictures/$filename"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
message=" Screenshot saved"
|
||||
|
||||
${pkgs.libnotify}/bin/notify-send "$message" \
|
||||
--icon="$folder/$filename" \
|
||||
--replace-id="$(cat "/tmp/nixy-notification" 2>/dev/null || echo 0)" --print-id > "/tmp/nixy-notification"
|
||||
'';
|
||||
in { home.packages = [ pkgs.hyprshot screenshot ]; }
|
||||
in {
|
||||
home.packages =
|
||||
[ pkgs.hyprshot screenshot pkgs.slurp pkgs.grim pkgs.grimblast ];
|
||||
}
|
||||
|
||||
@@ -1,38 +1,31 @@
|
||||
{ pkgs, config, ... }:
|
||||
# - ## 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
|
||||
homedir = config.home.homeDirectory;
|
||||
increments = "5";
|
||||
|
||||
sound-change = pkgs.writeShellScriptBin "sound-change" ''
|
||||
sleep 0.05
|
||||
|
||||
[[ $1 == "mute" ]] && wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
[[ $1 == "up" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ "$2%+"
|
||||
[[ $1 == "down" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ "$2%-"
|
||||
|
||||
sink_info=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
|
||||
|
||||
volume=$(echo "$(echo "$sink_info" | awk '{print $2}' | sed 's/%//')*100" | bc -l | xargs printf "%.0f")
|
||||
muted=false
|
||||
if [[ $sink_info == *"MUTED"* ]]; then
|
||||
muted=true
|
||||
fi
|
||||
|
||||
message=""
|
||||
if [ $muted = true ]; then
|
||||
message=" Muted"
|
||||
else
|
||||
message=" Volume: $volume%"
|
||||
fi
|
||||
|
||||
notif "sound" "$message" "extraargs=-h int:value:$volume"
|
||||
[[ $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}
|
||||
'';
|
||||
@@ -40,47 +33,6 @@ let
|
||||
sound-toggle = pkgs.writeShellScriptBin "sound-toggle" ''
|
||||
sound-change mute
|
||||
'';
|
||||
|
||||
sound-output = pkgs.writeShellScriptBin "sound-output" ''
|
||||
function parse_sinks(){
|
||||
output=$(wpctl status)
|
||||
sinks=($(echo "$output" | sed 's/ │ //' | awk '/Sinks:/ {flag=1; next} /^$/ {flag=0} flag' | sed 's/ /-/g'))
|
||||
|
||||
for sink in "''${sinks[@]}"; do
|
||||
|
||||
id=""
|
||||
default=false
|
||||
sink=$(echo "$sink" | sed 's/-/ /g')
|
||||
sink_name=$(echo "$sink" | sed 's/\[vol:.*$//')
|
||||
|
||||
if [[ $sink_name == "*"* ]]; then
|
||||
sink_name=$(echo "$sink_name" | sed 's/*//')
|
||||
default=true
|
||||
fi
|
||||
|
||||
id=$(echo "$sink_name" | cut -d'.' -f1)
|
||||
sink_name=$(echo "$sink_name" | sed 's/^[ ]*//;s/[ ]*$//' )
|
||||
sink_name=$(echo "$sink_name" | cut -d'.' -f2 )
|
||||
|
||||
if [[ $default == true ]];then
|
||||
printf "*%s (%d)" "$sink_name" "$id"
|
||||
else
|
||||
printf " %s (%d)" "$sink_name" "$id"
|
||||
fi
|
||||
printf "\n"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
choosed_sink=$(echo "$(parse_sinks)" | ${pkgs.fzf}/bin/fzf \
|
||||
--border-label "Choose sound output" ) || exit 1
|
||||
|
||||
choosed_sink_id=$(echo "$choosed_sink" | sed 's/.*(\(.*\))/\1/')
|
||||
|
||||
wpctl set-default $choosed_sink_id
|
||||
'';
|
||||
|
||||
in {
|
||||
home.packages =
|
||||
[ sound-output sound-change sound-up sound-down sound-toggle ];
|
||||
home.packages = [ sound-change sound-up sound-down sound-toggle sound-set ];
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# File runned at startup by Hyprland
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
startup = pkgs.writeShellScriptBin "startup" ''
|
||||
# Startup is a script called by Hyprland on startup
|
||||
# Because HM enabling services suck.
|
||||
|
||||
[[ ${toString config.var.sops} == "1" ]] && systemctl --user start sops-nix
|
||||
|
||||
battery-watch &
|
||||
${pkgs.waybar}/bin/waybar &
|
||||
|
||||
|
||||
wlr-randr --output "Unknown-1" --off # FIX: REMOVE WEIRD GHOST MONITOR
|
||||
'';
|
||||
|
||||
in { home.packages = [ startup ]; }
|
||||
@@ -0,0 +1,64 @@
|
||||
# - ## System
|
||||
#-
|
||||
#- Usefull quick scripts
|
||||
#-
|
||||
#- - `menu` - Open wofi with drun mode. (wofi)
|
||||
#- - `powermenu` - Open power dropdown menu. (wofi)
|
||||
#- - `lock` - Lock the screen. (hyprlock)
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
menu = pkgs.writeShellScriptBin "menu"
|
||||
# bash
|
||||
''
|
||||
if pgrep wofi; then
|
||||
pkill wofi
|
||||
else
|
||||
wofi --show drun
|
||||
fi
|
||||
'';
|
||||
|
||||
powermenu = pkgs.writeShellScriptBin "powermenu"
|
||||
# bash
|
||||
''
|
||||
if pgrep wofi; then
|
||||
pkill wofi
|
||||
else
|
||||
options=(
|
||||
" Lock"
|
||||
" Logout"
|
||||
" Suspend"
|
||||
" Reboot"
|
||||
" Shutdown"
|
||||
)
|
||||
|
||||
selected=$(printf '%s\n' "''${options[@]}" | wofi --dmenu)
|
||||
selected=''${selected:2}
|
||||
|
||||
case $selected in
|
||||
"Lock")
|
||||
${pkgs.hyprlock}/bin/hyprlock
|
||||
;;
|
||||
"Logout")
|
||||
hyprctl dispatch exit
|
||||
;;
|
||||
"Suspend")
|
||||
systemctl suspend
|
||||
;;
|
||||
"Reboot")
|
||||
systemctl reboot
|
||||
;;
|
||||
"Shutdown")
|
||||
systemctl poweroff
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
'';
|
||||
|
||||
lock = pkgs.writeShellScriptBin "lock"
|
||||
# bash
|
||||
''
|
||||
${pkgs.hyprlock}/bin/hyprlock
|
||||
'';
|
||||
|
||||
in { home.packages = [ menu powermenu lock ]; }
|
||||
@@ -0,0 +1,7 @@
|
||||
# Batsignal is a simple utility to send battery notifications.
|
||||
{
|
||||
services.batsignal = {
|
||||
enable = true;
|
||||
extraArgs = [ "-c 10" "-w 30" "-f disabled" ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
# Clipman allows you to save and retrieve clipboard history.
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
clipboard-clear = pkgs.writeShellScriptBin "clipboard-clear" ''
|
||||
clipman clear --all
|
||||
'';
|
||||
|
||||
clipboard = pkgs.writeShellScriptBin "clipboard" ''
|
||||
clipman pick --tool=wofi
|
||||
'';
|
||||
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings.exec-once =
|
||||
[ "${clipboard-clear}" "wl-paste -t text --watch clipman store" ];
|
||||
home.packages = with pkgs; [ clipman clipboard clipboard-clear ];
|
||||
services.clipman.enable = true;
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{ config, pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [ libnotify ];
|
||||
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
iconTheme = {
|
||||
name = "Moka";
|
||||
package = pkgs.moka-icon-theme;
|
||||
};
|
||||
settings = {
|
||||
global = {
|
||||
rounded = "yes";
|
||||
origin = "top-center";
|
||||
monitor = "0";
|
||||
alignment = "center";
|
||||
vertical_alignment = "center";
|
||||
width = "400";
|
||||
height = "400";
|
||||
scale = 0;
|
||||
gap_size = 0;
|
||||
progress_bar = true;
|
||||
transparency = 0;
|
||||
text_icon_padding = 0;
|
||||
separator_color = "frame";
|
||||
sort = "yes";
|
||||
idle_threshold = 120;
|
||||
line_height = 0;
|
||||
markup = "full";
|
||||
show_age_threshold = 60;
|
||||
ellipsize = "middle";
|
||||
ignore_newline = "no";
|
||||
stack_duplicates = true;
|
||||
sticky_history = "yes";
|
||||
history_length = 20;
|
||||
always_run_script = true;
|
||||
corner_radius = config.var.theme.rounding;
|
||||
follow = "mouse";
|
||||
font = config.var.theme.font;
|
||||
format = "<b>%s</b>\\n%b";
|
||||
progress_bar_corner_radius = config.var.theme.rounding - 10;
|
||||
#format = ''
|
||||
# <span foreground='#${config.var.theme.colors.accent}'><b>%s %p</b></span>
|
||||
# %b'';
|
||||
frame_color = "#" + config.var.theme.colors.bg;
|
||||
highlight = "#" + config.var.theme.colors.accent;
|
||||
foreground = "#" + config.var.theme.colors.fg;
|
||||
frame_width = 1;
|
||||
offset = "0x10";
|
||||
horizontal_padding = 10;
|
||||
icon_position = "left";
|
||||
indicate_hidden = "yes";
|
||||
min_icon_size = 0;
|
||||
max_icon_size = 64;
|
||||
mouse_left_click = "do_action, close_current";
|
||||
mouse_middle_click = "close_current";
|
||||
mouse_right_click = "close_all";
|
||||
padding = 10;
|
||||
plain_text = "no";
|
||||
separator_height = 2;
|
||||
show_indicators = "yes";
|
||||
shrink = "no";
|
||||
word_wrap = "yes";
|
||||
browser = "${pkgs.qutebrowser}/bin/qutebrowser";
|
||||
};
|
||||
|
||||
fullscreen_delay_everything = { fullscreen = "delay"; };
|
||||
|
||||
urgency_critical = {
|
||||
background = "#" + config.var.theme.colors.c1;
|
||||
foreground = "#" + config.var.theme.colors.c0;
|
||||
};
|
||||
urgency_low = {
|
||||
background = "#" + config.var.theme.colors.bgalt;
|
||||
foreground = "#" + config.var.theme.colors.fgalt;
|
||||
};
|
||||
urgency_normal = {
|
||||
background = "#" + config.var.theme.colors.bgalt;
|
||||
foreground = "#" + config.var.theme.colors.fgalt;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
+82
-64
@@ -1,4 +1,29 @@
|
||||
{ config, pkgs, ... }: {
|
||||
# GTK & QT theme configuration
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
foreground = "#${config.lib.stylix.colors.base05}";
|
||||
background = "#${config.lib.stylix.colors.base00}";
|
||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
||||
|
||||
c0 = "#${config.lib.stylix.colors.base00}";
|
||||
c1 = "#${config.lib.stylix.colors.base08}";
|
||||
c2 = "#${config.lib.stylix.colors.base0B}";
|
||||
c3 = "#${config.lib.stylix.colors.base0A}";
|
||||
c4 = "#${config.lib.stylix.colors.base0D}";
|
||||
c5 = "#${config.lib.stylix.colors.base0E}";
|
||||
c6 = "#${config.lib.stylix.colors.base0C}";
|
||||
c7 = "#${config.lib.stylix.colors.base05}";
|
||||
c8 = "#${config.lib.stylix.colors.base03}";
|
||||
c9 = "#${config.lib.stylix.colors.base08}";
|
||||
c10 = "#${config.lib.stylix.colors.base0B}";
|
||||
c11 = "#${config.lib.stylix.colors.base0A}";
|
||||
c12 = "#${config.lib.stylix.colors.base0D}";
|
||||
c13 = "#${config.lib.stylix.colors.base0E}";
|
||||
c14 = "#${config.lib.stylix.colors.base0C}";
|
||||
c15 = "#${config.lib.stylix.colors.base07}";
|
||||
|
||||
in {
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
@@ -9,24 +34,18 @@
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
theme = { name = "FlatColor"; };
|
||||
theme = lib.mkForce { name = "FlatColor"; };
|
||||
|
||||
iconTheme = {
|
||||
package = pkgs.moka-icon-theme;
|
||||
name = "Moka";
|
||||
package = pkgs.kora-icon-theme;
|
||||
name = "Kora";
|
||||
};
|
||||
|
||||
font = {
|
||||
name = config.var.theme.font;
|
||||
size = config.var.theme.font-size;
|
||||
};
|
||||
};
|
||||
font = { name = config.stylix.fonts.serif.name; };
|
||||
|
||||
home.pointerCursor = {
|
||||
gtk.enable = true;
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Classic";
|
||||
size = 14;
|
||||
gtk3.extraConfig = { gtk-application-prefer-dark-theme = 1; };
|
||||
|
||||
gtk4.extraConfig = { gtk-application-prefer-dark-theme = 1; };
|
||||
};
|
||||
|
||||
home.file = {
|
||||
@@ -63,62 +82,61 @@
|
||||
};
|
||||
|
||||
".local/share/themes/FlatColor/colors2".text = ''
|
||||
bg_color:#${config.var.theme.colors.bg}
|
||||
color0:#${config.var.theme.colors.c0}
|
||||
color1:#${config.var.theme.colors.c1}
|
||||
color2:#${config.var.theme.colors.c2}
|
||||
color3:#${config.var.theme.colors.c3}
|
||||
color4:#${config.var.theme.colors.c4}
|
||||
color5:#${config.var.theme.colors.c5}
|
||||
color6:#${config.var.theme.colors.c6}
|
||||
color7:#${config.var.theme.colors.c7}
|
||||
color8:#${config.var.theme.colors.c8}
|
||||
color9:#${config.var.theme.colors.c9}
|
||||
color10:#${config.var.theme.colors.c10}
|
||||
color11:#${config.var.theme.colors.c11}
|
||||
color12:#${config.var.theme.colors.c12}
|
||||
color13:#${config.var.theme.colors.c13}
|
||||
color14:#${config.var.theme.colors.c14}
|
||||
color15:#${config.var.theme.colors.c15}
|
||||
text_color:#${config.var.theme.colors.fg}
|
||||
selected_bg_color:#${config.var.theme.colors.accent}
|
||||
selected_fg_color:#${config.var.theme.colors.accentFg}
|
||||
tooltip_bg_color:#${config.var.theme.colors.bgalt}
|
||||
tooltip_fg_color:#${config.var.theme.colors.fgalt}
|
||||
titlebar_bg_color:#${config.var.theme.colors.bgalt}
|
||||
titlebar_fg_color:#${config.var.theme.colors.fgalt}
|
||||
menu_bg_color:#${config.var.theme.colors.bgalt}
|
||||
menu_fg_color:#${config.var.theme.colors.fgalt}
|
||||
link_color:#${config.var.theme.colors.accent}
|
||||
bg_color:${background}
|
||||
color0:${c0}
|
||||
color1:${c1}
|
||||
color2:${c2}
|
||||
color3:${c3}
|
||||
color4:${c4}
|
||||
color5:${c5}
|
||||
color6:${c6}
|
||||
color7:${c7}
|
||||
color8:${c8}
|
||||
color9:${c9}
|
||||
color10:${c10}
|
||||
color11:${c11}
|
||||
color12:${c12}
|
||||
color13:${c13}
|
||||
color14:${c14}
|
||||
color15:${c15}
|
||||
text_color:${foreground}
|
||||
selected_bg_color:${accent}
|
||||
selected_fg_color:${foreground}
|
||||
tooltip_bg_color:${background-alt}
|
||||
tooltip_fg_color:${foreground}
|
||||
titlebar_bg_color:${background}
|
||||
titlebar_fg_color:${foreground}
|
||||
menu_bg_color:${background-alt}
|
||||
menu_fg_color:${foreground}
|
||||
link_color:${accent}
|
||||
'';
|
||||
|
||||
".local/share/themes/FlatColor/colors3".text = ''
|
||||
@define-color color0 #${config.var.theme.colors.c0};
|
||||
@define-color color1 #${config.var.theme.colors.c1};
|
||||
@define-color color2 #${config.var.theme.colors.c2};
|
||||
@define-color color3 #${config.var.theme.colors.c3};
|
||||
@define-color color4 #${config.var.theme.colors.c4};
|
||||
@define-color color5 #${config.var.theme.colors.c5};
|
||||
@define-color color6 #${config.var.theme.colors.c6};
|
||||
@define-color color7 #${config.var.theme.colors.c7};
|
||||
@define-color color8 #${config.var.theme.colors.c8};
|
||||
@define-color color9 #${config.var.theme.colors.c9};
|
||||
@define-color color10 #${config.var.theme.colors.c10};
|
||||
@define-color color11 #${config.var.theme.colors.c11};
|
||||
@define-color color12 #${config.var.theme.colors.c12};
|
||||
@define-color color13 #${config.var.theme.colors.c13};
|
||||
@define-color color14 #${config.var.theme.colors.c14};
|
||||
@define-color color15 #${config.var.theme.colors.c15};
|
||||
@define-color selected_bg_color #${config.var.theme.colors.accent};
|
||||
@define-color selected_fg_color #${config.var.theme.colors.accentFg};
|
||||
|
||||
@define-color bg_color #${config.var.theme.colors.bg};
|
||||
@define-color fg_color #${config.var.theme.colors.fg};
|
||||
@define-color color0 ${c0};
|
||||
@define-color color1 ${c1};
|
||||
@define-color color2 ${c2};
|
||||
@define-color color3 ${c3};
|
||||
@define-color color4 ${c4};
|
||||
@define-color color5 ${c5};
|
||||
@define-color color6 ${c6};
|
||||
@define-color color7 ${c7};
|
||||
@define-color color8 ${c8};
|
||||
@define-color color9 ${c9};
|
||||
@define-color color10 ${c10};
|
||||
@define-color color11 ${c11};
|
||||
@define-color color12 ${c12};
|
||||
@define-color color13 ${c13};
|
||||
@define-color color14 ${c14};
|
||||
@define-color color15 ${c15};
|
||||
@define-color selected_bg_color ${accent};
|
||||
@define-color selected_fg_color ${foreground};
|
||||
@define-color bg_color ${background};
|
||||
@define-color fg_color ${foreground};
|
||||
@define-color base_color @bg_color;
|
||||
@define-color text_color @fg_color;
|
||||
@define-color text_color_disabled mix(@text_color, @base_color, 0.4);
|
||||
@define-color tooltip_bg_color #${config.var.theme.colors.bgalt};
|
||||
@define-color tooltip_fg_color #${config.var.theme.colors.fgalt};
|
||||
@define-color tooltip_bg_color ${background-alt};
|
||||
@define-color tooltip_fg_color ${foreground};
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
|
||||
{ pkgs, ... }: {
|
||||
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
@@ -0,0 +1,53 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
animationSpeed = config.var.theme.animation-speed;
|
||||
|
||||
animationDuration = if animationSpeed == "slow" then
|
||||
"4"
|
||||
else if animationSpeed == "medium" then
|
||||
"2.5"
|
||||
else
|
||||
"1.5";
|
||||
borderDuration = if animationSpeed == "slow" then
|
||||
"10"
|
||||
else if animationSpeed == "medium" then
|
||||
"6"
|
||||
else
|
||||
"3";
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"linear, 0, 0, 1, 1"
|
||||
"md3_standard, 0.2, 0, 0, 1"
|
||||
"md3_decel, 0.05, 0.7, 0.1, 1"
|
||||
"md3_accel, 0.3, 0, 0.8, 0.15"
|
||||
"overshot, 0.05, 0.9, 0.1, 1.1"
|
||||
"crazyshot, 0.1, 1.5, 0.76, 0.92"
|
||||
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
|
||||
"menu_decel, 0.1, 1, 0, 1"
|
||||
"menu_accel, 0.38, 0.04, 1, 0.07"
|
||||
"easeInOutCirc, 0.85, 0, 0.15, 1"
|
||||
"easeOutCirc, 0, 0.55, 0.45, 1"
|
||||
"easeOutExpo, 0.16, 1, 0.3, 1"
|
||||
"softAcDecel, 0.26, 0.26, 0.15, 1"
|
||||
"md2, 0.4, 0, 0.2, 1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"windows, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||
"windowsIn, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||
"windowsOut, 1, ${animationDuration}, md3_accel, popin 60%"
|
||||
"border, 1, ${borderDuration}, default"
|
||||
"fade, 1, ${animationDuration}, md3_decel"
|
||||
"layersIn, 1, ${animationDuration}, menu_decel, slide"
|
||||
"layersOut, 1, ${animationDuration}, menu_accel"
|
||||
"fadeLayersIn, 1, ${animationDuration}, menu_decel"
|
||||
"fadeLayersOut, 1, ${animationDuration}, menu_accel"
|
||||
"workspaces, 1, ${animationDuration}, menu_decel, slide"
|
||||
"specialWorkspace, 1, ${animationDuration}, md3_decel, slidevert"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{ pkgs, ... }: {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
bind = [
|
||||
"$mod,RETURN, exec, ${pkgs.kitty}/bin/kitty" # Kitty
|
||||
"$mod,E, exec, ${pkgs.xfce.thunar}/bin/thunar" # Thunar
|
||||
"$mod,B, exec, ${pkgs.qutebrowser}/bin/qutebrowser" # Qutebrowser
|
||||
"$mod,K, exec, ${pkgs.bitwarden}/bin/bitwarden" # Bitwarden
|
||||
"$mod,L, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock
|
||||
"$mod,X, exec, powermenu" # Powermenu
|
||||
"$mod,SPACE, exec, menu" # Launcher
|
||||
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
|
||||
|
||||
"$mod,Q, killactive," # Close window
|
||||
"$mod,T, togglefloating," # Toggle Floating
|
||||
"$mod,F, fullscreen" # Toggle Fullscreen
|
||||
"$mod,left, movefocus, l" # Move focus left
|
||||
"$mod,right, movefocus, r" # Move focus Right
|
||||
"$mod,up, movefocus, u" # Move focus Up
|
||||
"$mod,down, movefocus, d" # Move focus Down
|
||||
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
|
||||
"$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 window" # Screenshot window
|
||||
",PRINT, exec, screenshot monitor" # Screenshot monitor
|
||||
"$shiftMod,PRINT, exec, screenshot region" # Screenshot region
|
||||
"ALT,PRINT, exec, screenshot region swappy" # Screenshot region then edit
|
||||
|
||||
"$shiftMod,S, exec, ${pkgs.qutebrowser}/bin/qutebrowser :open $(wofi --show dmenu -L 1 -p ' Search on internet')" # Search on internet with wofi
|
||||
"$shiftMod,C, exec, clipboard" # Clipboard picker with wofi
|
||||
"$shiftMod,E, exec, ${pkgs.wofi-emoji}/bin/wofi-emoji" # Emoji picker with wofi
|
||||
"$mod,F2, exec, night-shift" # Toggle night shift
|
||||
"$mod,F3, exec, night-shift" # Toggle night shift
|
||||
] ++ (builtins.concatLists (builtins.genList (i:
|
||||
let ws = i + 1;
|
||||
in [
|
||||
"$mod,code:1${toString i}, workspace, ${toString ws}"
|
||||
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||
]) 9));
|
||||
|
||||
bindm = [
|
||||
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
||||
"$mod,R, resizewindow" # Resize Window (mouse)
|
||||
];
|
||||
|
||||
bindl = [
|
||||
",XF86AudioMute, exec, sound-toggle" # Toggle Mute
|
||||
",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
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user