124 Commits

Author SHA1 Message Date
Hadi
fc4dba9a75 update todos
Former-commit-id: f760d9b564
2024-10-15 15:03:50 +02:00
Hadi
2b56da08c6 change tab size for markdown
Former-commit-id: 80e52cc5c6
2024-10-15 15:02:39 +02:00
Hadi
f95f539cad Add comments to explain each file
Former-commit-id: 915a767283
2024-10-15 15:02:07 +02:00
Hadi
d8b626139a update markdown tab size
Former-commit-id: 4733414bb3
2024-10-15 14:24:58 +02:00
Hadi
477679c0a7 hyprshot -> grimblast
Former-commit-id: 3910bef1bf
2024-10-15 14:14:12 +02:00
Hadi
109ce61bbe add glib
Former-commit-id: 92dded9cc6
2024-10-15 14:05:20 +02:00
Hadi
0c50468ec2 update flake
Former-commit-id: 5e94040f34
2024-10-15 13:42:42 +02:00
Hadi
71f03bde80 update todo
Former-commit-id: 178cb469ab
2024-10-15 13:42:12 +02:00
Hadi
b568faa7f2 From flake to nixvim plugin
Former-commit-id: 59202f132e
2024-10-15 03:47:58 +02:00
Hadi
31a84fd6ff update todo
Former-commit-id: 9f98570ef4
2024-10-15 03:47:43 +02:00
Hadi
30d497fef2 update todo
Former-commit-id: bcd3bd19f0
2024-10-15 03:28:56 +02:00
github-actions
6e41aed96f Update README.md (auto)
Former-commit-id: ad13d77413
2024-10-15 01:22:40 +00:00
Hadi
9256aabe91 edit readme
Former-commit-id: 98d8e2c87d
2024-10-15 03:22:09 +02:00
github-actions
7d54322e8c Update README.md (auto)
Former-commit-id: fd87e06e20
2024-10-15 01:20:20 +00:00
Hadi
364945be45 Edit readme
Former-commit-id: 6c9e632ab8
2024-10-15 03:19:53 +02:00
Hadi
7932ba1f44 Edit github actions
Former-commit-id: 66160d6ae2
2024-10-15 03:18:22 +02:00
Hadi
4eef13d9ba Changes config screenshots
Former-commit-id: 480ae1761d
2024-10-15 03:17:17 +02:00
Hadi
80ea020322 Edit aliases
Former-commit-id: 1b41b58e68
2024-10-15 03:16:57 +02:00
Hadi
31d025a1b8 Update todolist
Former-commit-id: bbbf23b3b0
2024-10-15 02:47:32 +02:00
Hadi
b41644c69d Config lazygit
Former-commit-id: ff2d397191
2024-10-15 02:45:32 +02:00
Hadi
0ec95f82d2 Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: afe8e81bf6
2024-10-15 02:34:33 +02:00
Hadi
0df71d76df Init lazygit hm module
Former-commit-id: d097caf401
2024-10-15 02:34:18 +02:00
Hadi
d3f39e88dc Add git aliases
Former-commit-id: 4b6814ae28
2024-10-15 02:34:00 +02:00
github-actions
a8db853539 Update README.md (auto)
Former-commit-id: c76675c145
2024-10-15 00:29:21 +00:00
Hadi
ba4af473f4 Move files to .github
Former-commit-id: ff86acc8c8
2024-10-15 02:28:55 +02:00
Hadi
c272a4a8f9 Edit github actions
Former-commit-id: 7bb5c3b36c
2024-10-15 02:28:24 +02:00
Hadi
16f1aba0c1 Add transparentButtons option in hyprpanel
Former-commit-id: 1c477bacc3
2024-10-15 02:23:14 +02:00
Hadi
9be215cdea Update todo
Former-commit-id: 391d3dd58b
2024-10-15 02:18:54 +02:00
Hadi
f125369e88 Add lazygit
Former-commit-id: e6dd29dac7
2024-10-15 02:17:45 +02:00
Hadi
73d9867b9a Add info
Former-commit-id: 67bed2c355
2024-10-14 22:29:08 +02:00
Hadi
04b3882399 Update github actions
Former-commit-id: 5ec16c82c4
2024-10-14 22:27:33 +02:00
github-actions
ad0c8828cf Update README.md (auto)
Former-commit-id: 277faa310d
2024-10-14 20:21:09 +00:00
Hadi
89252b80bf Init tofi
Former-commit-id: 059acab3f9
2024-10-14 22:20:39 +02:00
Hadi
ab6ae9e7fb Update todolist
Former-commit-id: 95248322f7
2024-10-14 22:20:30 +02:00
Hadi
c84eb4e185 Update readme
Former-commit-id: 0ea82dbf32
2024-10-14 22:20:16 +02:00
Hadi
00236ad9b1 Update github actions
Former-commit-id: 65b9ab0b7e
2024-10-14 22:19:25 +02:00
Hadi
3e9f37ea04 Update readme
Former-commit-id: 4fd7e39c4e
2024-10-14 22:14:49 +02:00
Hadi
0019097d38 Update github actions
Former-commit-id: de477fd3dd
2024-10-14 22:14:30 +02:00
Hadi
90284912bc Update readme
Former-commit-id: 62e6928036
2024-10-14 22:13:13 +02:00
Hadi
f9f63657fb Update github actions
Former-commit-id: 4cfdd8f461
2024-10-14 22:12:52 +02:00
Hadi
319da87024 Update readme
Former-commit-id: 2909de8e3a
2024-10-14 22:11:18 +02:00
Hadi
b5cad0e00c Fix github action
Former-commit-id: e2f6c5e1ff
2024-10-14 22:09:29 +02:00
Hadi
892666e946 Update readme
Former-commit-id: 206de96fa2
2024-10-14 22:08:31 +02:00
Hadi
d1f5b0ea4f Update github actions
Former-commit-id: ff7f46aa5d
2024-10-14 22:07:10 +02:00
Hadi
a8980eb4dd Add white-noise app
Former-commit-id: 34cc630789
2024-10-14 21:23:59 +02:00
Hadi
8482de47b2 Update todolist
Former-commit-id: eb4cb4f4f4
2024-10-14 21:23:45 +02:00
Hadi
7faec62f69 Init KDE Connect
Former-commit-id: 52d7a9f2f0
2024-10-14 21:10:16 +02:00
Hadi
69f2ccceca Fix gtk settings key
Former-commit-id: a8dca6d1c1
2024-10-14 20:57:56 +02:00
Hadi
476d89a651 Flake update
Former-commit-id: d06355d5b7
2024-10-14 20:51:31 +02:00
Hadi
690ae53780 Add documentation per modules
Former-commit-id: 39f74ee63c
2024-10-14 16:35:57 +02:00
Hadi
58ed393097 Edit network placement
Former-commit-id: bd57c19a2b
2024-10-14 14:22:14 +02:00
Hadi
4367c39873 Edit popup font size
Former-commit-id: b9e3f09e7f
2024-10-11 22:33:29 +02:00
Hadi
f32062d541 Fix copilot completion key overlap
Former-commit-id: f5388f478b
2024-10-11 13:02:43 +02:00
Hadi
eb57aa062e Edit todo
Former-commit-id: a24167d107
2024-10-10 22:42:02 +02:00
Hadi
fce3056d8f Init zenmode
Former-commit-id: 53703c0db0
2024-10-10 22:41:39 +02:00
Hadi
42bb93093c merge gh actions updates
Former-commit-id: 6adc0d7c3c
2024-10-10 21:43:33 +02:00
Hadi
e785e84bf2 Init hyprswitch
Former-commit-id: 4969b5aa8f
2024-10-10 21:43:24 +02:00
github-actions
e2af0156c8 Update KEYBINDINGS-HYPRLAND.md (auto)
Former-commit-id: f595e67528
2024-10-10 14:33:34 +00:00
Hadi
b071daad02 Update
Former-commit-id: b5071b889b
2024-10-10 16:33:21 +02:00
Hadi
4e7a020fc4 Update
Former-commit-id: fa59c4d8c2
2024-10-10 16:31:30 +02:00
github-actions
ac53f1a812 Update README.md (auto)
Former-commit-id: 568306aade
2024-10-10 14:29:41 +00:00
Hadi
5ed0ec12ea Update
Former-commit-id: 159ce3c1c2
2024-10-10 16:29:14 +02:00
Hadi
fc0c2b0d13 Update
Former-commit-id: df52538c42
2024-10-10 15:35:23 +02:00
Hadi
aa1f99e8f4 Update
Former-commit-id: ee894aaea7
2024-10-10 15:28:25 +02:00
Hadi
2b947bd5b1 Update
Former-commit-id: bd7ff1cc20
2024-10-10 15:09:59 +02:00
Hadi
c0efbbd734 Update
Former-commit-id: 3c2157260d
2024-10-09 18:34:02 +02:00
Hadi
6379ff551d Update
Former-commit-id: 36e9281397
2024-10-09 17:09:33 +02:00
Hadi
492d257fa5 Put every variables in top of the file for easy copy to another config
Former-commit-id: 0bd55fdc10
2024-10-09 15:12:50 +02:00
Hadi
3bebb475d7 Update
Former-commit-id: 55c7c7068a
2024-10-08 21:56:44 +02:00
Hadi
4a832f376f Update
Former-commit-id: 5603871ef1
2024-10-08 20:46:56 +02:00
Hadi
a5bd556df9 Update
Former-commit-id: a554505de2
2024-10-08 20:07:56 +02:00
Hadi
c6710b1d64 Update
Former-commit-id: 3f0a694b5f
2024-10-08 20:02:45 +02:00
Hadi
731aa270b6 Update
Former-commit-id: a781a227ac
2024-10-08 13:00:40 +02:00
Hadi
8c74fa0fc8 Remove duckduckgo theme changing alert
Former-commit-id: 5e8139963f
2024-10-08 12:37:56 +02:00
Hadi
0bb41bb6dd Update the readme
Former-commit-id: 85b8874094
2024-10-08 12:35:38 +02:00
Hadi
92e9e59f02 Update the readme
Former-commit-id: d7184174cd
2024-10-08 12:34:50 +02:00
Hadi
7a177e4bb2 Update
Former-commit-id: 8d7fbd74b5
2024-10-08 12:33:38 +02:00
Hadi
e8625f81e9 Update
Former-commit-id: 36527362a7
2024-10-08 11:43:12 +02:00
Hadi
b14c343f14 Update
Former-commit-id: e83de257ad
2024-10-08 11:29:59 +02:00
Hadi
c364668759 Update
Former-commit-id: c401b9bd7f
2024-10-08 10:39:10 +02:00
Hadi
3381fe405b Update
Former-commit-id: 741a6f97ae
2024-10-08 10:17:01 +02:00
Hadi
b738189d0c Update
Former-commit-id: 52e267a436
2024-10-07 20:41:30 +02:00
Hadi
ac914caf6a Update
Former-commit-id: d11cf580f9
2024-10-07 20:27:07 +02:00
Hadi
97e2c915cd Update
Former-commit-id: d37504de7c
2024-10-07 18:34:06 +02:00
Hadi
21ed46cd7c Update
Former-commit-id: 8a41ffad2f
2024-10-07 13:13:23 +02:00
Hadi
7eb4e5ade9 Update
Former-commit-id: 3aa0fb8a22
2024-10-07 12:02:26 +02:00
Hadi
dae95bc5be Update
Former-commit-id: 75f2c2c7c6
2024-10-07 11:17:59 +02:00
Hadi
a33cf73ff1 Update
Former-commit-id: ab65fe342b
2024-10-07 10:13:21 +02:00
Hadi
18c30e5931 Update
Former-commit-id: 905cc9a885
2024-10-06 18:49:52 +02:00
Hadi
13c8f27411 Testing
Former-commit-id: 23dcfd5290
2024-10-05 11:48:16 +02:00
Hadi
a640670baa Update
Former-commit-id: 270c1b959e
2024-10-04 21:12:13 +02:00
Hadi
ae77733c71 Update
Former-commit-id: 58fa41a210
2024-10-04 21:03:01 +02:00
Hadi
6827360045 Update
Former-commit-id: 8f6b049129
2024-10-04 10:58:53 +02:00
Hadi
359e9745d6 Update
Former-commit-id: 7047ffe785
2024-10-03 10:18:49 +02:00
Hadi
56bcd3d56a Update
Former-commit-id: fe657984fe
2024-10-01 17:16:24 +02:00
Hadi
8a81c546de Update
Former-commit-id: 660c99d5ed
2024-10-01 15:05:02 +02:00
Hadi
23f0682eac Update
Former-commit-id: 7f1c7446f8
2024-10-01 14:57:15 +02:00
Hadi
418bc45bd2 Update
Former-commit-id: 804e6b255e
2024-10-01 13:58:05 +02:00
Hadi
1c4fece944 Update
Former-commit-id: 381e839dfa
2024-10-01 13:21:25 +02:00
Hadi
3716ba6b4f Update
Former-commit-id: 57c0df5d48
2024-09-30 21:15:21 +02:00
Hadi
0e56be3428 Update
Former-commit-id: c1609eefff
2024-09-23 15:12:05 +02:00
Hadi
7beef9441e Update
Former-commit-id: 22c67467c0
2024-09-20 13:35:40 +02:00
Hadi
176e3ba305 Update
Former-commit-id: f49ac89514
2024-09-18 23:54:02 +02:00
Hadi
ed045316ff Update
Former-commit-id: e47edc0c1f
2024-09-18 23:53:39 +02:00
Hadi
cfec304bbb Update
Former-commit-id: 2721d11575
2024-09-18 00:52:23 +02:00
Hadi
575bb58bfc Update
Former-commit-id: c97e51a9d2
2024-09-16 17:28:52 +02:00
Hadi
9ce3df4884 Update
Former-commit-id: ac293a378c
2024-09-16 17:24:47 +02:00
Hadi
3c9875a110 Update
Former-commit-id: 615028dcca
2024-09-15 20:58:24 +02:00
Hadi
8c69c549db update
Former-commit-id: feeb938f5e
2024-09-13 22:07:19 +02:00
Hadi
f1f919fe49 Update
Former-commit-id: b6ec38b1a1
2024-09-13 20:04:14 +02:00
Hadi
12cc080fc3 Update
Former-commit-id: 86d990f157
2024-09-12 01:36:59 +02:00
Hadi
6b4b9a9aa7 Update
Former-commit-id: a16ea9af7d
2024-09-12 00:25:37 +02:00
Hadi
6207e48d84 Update
Former-commit-id: 7904e497bd
2024-09-11 17:53:25 +02:00
Hadi
b41dfdf664 Update
Former-commit-id: 7f5e4a8e6d
2024-09-10 09:50:27 +02:00
Hadi
8155f65fb9 Update
Former-commit-id: 1a7e84a8dd
2024-09-09 13:56:45 +02:00
Hadi
b0ca6aa757 Update
Former-commit-id: 381f88cf0d
2024-09-07 17:25:21 +02:00
Hadi
fd0251afbc Update
Former-commit-id: 166c9f3139
2024-09-06 20:19:21 +02:00
Hadi
5e16ae7463 Update
Former-commit-id: 316e0cd2d3
2024-09-04 22:37:24 +02:00
Hadi
2a2f4e4b9d Update
Former-commit-id: 8fe7237409
2024-09-04 22:36:17 +02:00
Hadi
eef1d9531f Update
Former-commit-id: 2ffa7e9518
2024-09-04 22:01:48 +02:00
Hadi
b92243118d Update
Former-commit-id: cc8d0ddca3
2024-09-04 21:24:51 +02:00
Hadi
01f9894fc6 update
Former-commit-id: da2aab6f76
2024-09-04 21:07:53 +02:00
Hadi
03d202250b update
Former-commit-id: 79403b916d
2024-09-04 21:06:59 +02:00
Hadi
9cb8036b73 Update
Former-commit-id: 0489f7eaa7
2024-09-04 21:04:53 +02:00
245 changed files with 3032 additions and 3014 deletions

111
.github/assets/README_template.md vendored Normal file
View File

@@ -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
![Nixy helper, peaclock](.github/assets/nixy/1.png)
![Qutebrowser, pipes, shell](.github/assets/nixy/2.png)
![nvim, lazygit](.github/assets/nixy/3.png)
![spotify, cava](.github/assets/nixy/4.png)
## Architecture
### 🏠 home
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

BIN
.github/assets/large.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
.github/assets/logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
.github/assets/nixy/1.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

BIN
.github/assets/nixy/2.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

BIN
.github/assets/nixy/3.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

BIN
.github/assets/nixy/4.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

20
.github/scripts/create_readme.sh vendored Executable file
View File

@@ -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"

26
.github/scripts/create_scripts_docs.sh vendored Normal file
View 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

View File

@@ -4,7 +4,7 @@
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1) [[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
KEYBINDINGS_FILE="./docs/KEYBINDINGS.md" KEYBINDINGS_FILE="./docs/KEYBINDINGS-HYPRLAND.md"
function getList() { function getList() {
content=$1 content=$1
@@ -17,9 +17,9 @@ function getList() {
echo "$list" 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
bind=$(getList "$config" "bind") bind=$(getList "$config" "bind")
@@ -33,29 +33,28 @@ bindle=$(getList "$config" "bindle")
# Join the lists: # Join the lists:
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"') 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 "" >>"$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 "" >>"$KEYBINDINGS_FILE"
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE" echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
echo "| -- | -- |" >>"$KEYBINDINGS_FILE" echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE" echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "| Move app to Workspace | SHIFT + 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) comment=$(echo "$line" | cut -d\# -f2)
line=$(echo "$line" | cut -d\# -f1) line=$(echo "$line" | cut -d\# -f1)
line=${line:1:${#line}-3} line=${line:1:${#line}-3}
mod=$(echo "$line" | cut -d, -f1) mod=$(echo "$line" | cut -d, -f1)
key=$(echo "$line" | cut -d, -f2) key=$(echo "$line" | cut -d, -f2)
dispatcher=$(echo "$line" | cut -d, -f3) # dispatcher=$(echo "$line" | cut -d, -f3)
params=$(echo "$line" | cut -d, -f4) # params=$(echo "$line" | cut -d, -f4)
[[ $mod == '$mod' ]] && mod="SUPER + " [[ $mod == '$mod' ]] && mod="SUPER + "
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + " [[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
echo "| $comment | $mod$key |" >>"$KEYBINDINGS_FILE" echo "| ${comment:1} | $mod$key |" >>"$KEYBINDINGS_FILE"
done done
pandoc -t commonmark_x "$KEYBINDINGS_FILE" -o "/tmp/keybindings.md"
mv "/tmp/keybindings.md" "$KEYBINDINGS_FILE"

View 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

31
.github/workflows/update-readme.yml vendored Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -1,11 +1,6 @@
[//]: # (Title: Nixy) [//]: # (This file is autogenerated)
[//]: # (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: 09/04/24)
[//]: # (Version: v2.3.0)
<div align="center"> <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> </div>
<br> <br>
@@ -14,20 +9,17 @@
<br> <br>
<div align="center"> <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.3.0&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
</a>
<a href="https://github.com/anotherhadi/nixy/stargazers"> <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>
<a href="https://github.com/anotherhadi/nixy/"> <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>
<a href="https://nixos.org"> <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>
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE"> <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> </a>
</div> </div>
<br> <br>
@@ -35,25 +27,38 @@
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place. **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. 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](#table-of-content) - [Table of Content](#table-of-content)
- [Gallery](#gallery) - [Gallery](#gallery)
- [Architecture](#architecture) - [Architecture](#architecture)
- [🏠 `home`](#-home) - [🏠 home](#-home)
- [💻 `hosts`](#-hosts) - [🐧 nixos](#-nixos)
- [🎨 themes](#-themes)
- [💻 hosts](#-hosts)
- [Installation](#installation) - [Installation](#installation)
- [Documentation](#documentation) - [Documentation](#documentation)
## Gallery ## Gallery
![nixy1](docs/src/nixy/1.png) ![Nixy helper, peaclock](.github/assets/nixy/1.png)
![nixy2](docs/src/nixy/2.png) ![Qutebrowser, pipes, shell](.github/assets/nixy/2.png)
![nixy3](docs/src/nixy/3.png) ![nvim, lazygit](.github/assets/nixy/3.png)
![spotify, cava](.github/assets/nixy/4.png)
## Architecture ## Architecture
### 🏠 `home` ### 🏠 home
Those are the dotfiles and configuration files for user-level configuration Those are the dotfiles and configuration files for user-level configuration
@@ -62,45 +67,54 @@ Those are the dotfiles and configuration files for user-level configuration
- `programs` is a collection of apps configured with home-manager - `programs` is a collection of apps configured with home-manager
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md)) - `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- `system` is some "desktop environment" configuration - `system` is some "desktop environment" configuration
- `wallpapers` are... wallpapers
### 💻 `hosts` ### 🐧 nixos
Those are the host-specific configurations 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. 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.
**Subfolders:**
- 🎨 `themes` are the themes available *(see [THEMES.md](docs/THEMES.md))*
- 📦 `modules` are the nix modules that you can import
- `laptop` is my configuration for my laptop with Nvidia that you can copy
- `server` is for my homeserver (w/nextcloud, nginx, vaultwarden, ...)
## Installation ## Installation
1. Clone the repo
```sh ```sh
git clone https://github.com/anotherhadi/nixy ~/.config/nixos 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 2. 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 3. 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') 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 > When you add new files, don't forget to run `git add .` to add them to the git repository
5. Build the system
```sh ```sh
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
``` ```
## Documentation ## Documentation
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own - [THEMES](docs/THEMES.md): How themes work and how to create your own
- [APPS.md](docs/APPS.md): Which apps are installed - [SCRIPTS](docs/SCRIPTS.md): Scripts that are available
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available - [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
- [KEYBINDINGS.md](docs/KEYBINDINGS.md): Keybindings available in Hyprland - [WALLPAPERS](https://github.com/anotherhadi/nixy-wallpapers): A collection of wallpapers for Nixy.
- [WALLPAPERS.md](docs/WALLPAPERS.md): Preview of every wallpapers available
- [TODO.md](docs/TODO.md): What's next (feel free to contribute) - [TODO](docs/TODO.md): What's next (feel free to contribute)
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute - [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
- [LICENSE](LICENSE): MIT License - [LICENSE](LICENSE): MIT License

View File

@@ -1,41 +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 | hyprpanel |
| Terminal | kitty |
| Shell | zsh |
| | tmux |
| | starship |
| | bat |
| | eza |
| | zoxide |
| | fzf |
| Editor | neovim(nixvim) |
| File manager | thunar |
| Browser | qutebrowser |
| Music | spicetify |
| Launcher | wofi |
| DM | tuigreet |
| Secrets | sops-nix |
| 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, jellyfin, ...
I exposed some services to the internet using a reverse proxy (Nginx) and cloudflare-dyndns, others are accessed through a tailscale network

View File

@@ -9,9 +9,6 @@ The process is straight-forward.
- Write your changes (new theme, bug fixes, task in to-do, ...). - Write your changes (new theme, bug fixes, task in to-do, ...).
- Create a Pull Request against the main branch of Nixy. - 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] > [!TIP]
> To update the README, change the `./docs/src/README_template.md` and run `./docs/scripts/create_readme.sh` > To update the README, change the `./docs/src/README_template.md` and run `./docs/scripts/create_readme.sh`

View File

@@ -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 |

View File

@@ -1,42 +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 |
| Lock | SUPER + L |
| Powermenu | SUPER + X |
| Launcher | SUPER + SPACE |
| "\$shiftMod, SPACE, hyprexpo:expo, toggle" | |
| 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 |
| Search on internet with wofi | SHIFT + SUPER + S |
| Clipboard picker with wofi | SHIFT + SUPER + C |
| Emoji picker with wofi | SHIFT + SUPER + E |
| Turn off night shift | SUPER + F2 |
| Turn on 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 |

View File

@@ -1,55 +1,88 @@
[//]: # (This file is autogenerated)
# Scripts # Scripts
Scripts are located in the `home/scripts` folder. Home-manager add those in the user's path. Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path.
## Nix/NixOs shortcuts ## Brightness
> [!TIP] This module provides a set of scripts to control the brightness of the screen.
> The `hostname` variable in `hosts/yourhost/variables.nix` should be also the name of the `nixosConfiguration` in `flake.nix` file.
- `nixy` # UI - `brightness-up` increases the brightness by 5%.
- `nixy rebuild` - `brightness-down` decreases the brightness by 5%.
- `nixy update` - `brightness-set [value]` sets the brightness to the given value.
- `nixy upgrade` - `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
- `nixy gc` # garbage collection
- `nixy cb` # clean boot menu
## Brightness control
- `brightness-up`
- `brightness-down`
- `brightness-set [value]`
- `brightness-change [up/down] <increment>`
## Sound control
- `sound-up`
- `sound-down`
- `sound-toggle`
- `sound-set [value]`
- `sound-change [up/down/mute] <increment>`
## Caffeine ## Caffeine
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock). Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
- `caffeine` # Toggle caffeine - `caffeine-status` - Check if hypridle is running. (0/1)
- `caffeine-status` # Return 1/0 - `caffeine-status-icon` - Check if hypridle is running. (icon)
- `caffeine-status-icon` # Return 󰅶/󰾪 - `caffeine` - Toggle hypridle.
## Night-Shift ## Hyprfocus
Blue light filter, using wlsunset A simple script to toggle focus on few windows in Hyprland.
(disable gaps, border, shadow, opacity, etc.)
- `night-shift` # Toggle night shift - `hyprfocus-on` - Enable hyprfocus.
- `night-shift-status` # Return 1/0 - `hyprfocus-off` - Disable hyprfocus.
- `night-shift-status-icon` # Return 󰖕/󰖔 - `hyprfocus-toggle` - Toggle hyprfocus.
- `night-shift-on`
- `night-shift-off` ## Hyprpanel
Quick scripts to toggle, reload and kill hyprpanel.
- `hyprpanel-toggle` - Toggle hyprpanel.
- `hyprpanel-reload` - Reload hyprpanel.
- `hyprpanel-kill` - Kill hyprpanel.
## Nerdfont FZF ## Nerdfont FZF
Nerdfont fzf is a quick way to search for nerdfont icons locally. This module provides a script to search for Nerd Fonts icons using fzf.
It will copy the selected icon to the clipboard.
- `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.
- `nerdfont-fzf`

View File

@@ -1,7 +1,7 @@
# Themes # Themes
Themes are defined in `hosts/themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed. Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
You can change the selected theme by changing the import statement of your host's variables.nix file. You can change the selected theme by changing the import statement of your host's configuration.nix file.
> [!TIP] > [!TIP]
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js` > To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
@@ -9,12 +9,13 @@ You can change the selected theme by changing the import statement of your host'
## Create your theme ## Create your theme
Create a copy of one of the existing themes and change the variables. Create a copy of one of the existing themes and change the variables.
Wallpapers are loaded from the `home/wallpapers` folder. Wallpapers are loaded from the [nixy-wallpapers](https://github.com/anotherhadi/nixy-wallpapers) repo.
## Gallery ## Gallery
### Nixy ### Nixy
![nixy1](src/nixy/1.png) ![nixy1](../.github/assets/nixy/1.png)
![nixy2](src/nixy/2.png) ![nixy2](../.github/assets/nixy/2.png)
![nixy3](src/nixy/3.png) ![nixy3](../.github/assets/nixy/3.png)
![nixy4](../.github/assets/nixy/4.png)

View File

@@ -1,33 +1,13 @@
# Todolist { # Todolist
feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md)) feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md))
- [ ] Wofi config - [!] Qutebrowser Bitwarden integration (I need this.)
- Calculator
- [ ] Test hyprshade (replacement for gammastep)
- [ ] Qutebrowser
- [ ] !!! Bitwarden integration (I need this.)
- [ ] Hyprland
- [ ] Fix screenshots (screenshot region's border shows up in the screenshot, hyprshot jq error?) and add in the scripts doc
- [ ] Nixvim - [ ] Nixvim
- [ ] Keymaps: - [ ] Change headings foreground
- Trouble - [ ] neotest golang
- Tagbar (actually not working) - [ ] nvim dap
- [ ] Change my keyboard backlight - [ ] Tofi configuration
- Issue on nixos-hardware ig - [ ] OS Hardening with nix-mineral
- [ ] Update docs
## 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
- [ ] Adguard config

View File

@@ -1,39 +0,0 @@
# Wallpapers
Wallpapers can be found in the `/home/wallpapers` folder.
| Name | Preview |
|---------------------|----------------------------------------------------------------|
| astronaut.png | ![astronaut.png](../home/wallpapers/astronaut.png) |
| aurore.png | ![aurore.png](../home/wallpapers/aurore.png) |
| barcode.png | ![barcode.png](../home/wallpapers/barcode.png) |
| cat-leaves.png | ![cat-leaves.png](../home/wallpapers/cat-leaves.png) |
| city.png | ![city.png](../home/wallpapers/city.png) |
| cloud.png | ![cloud.png](../home/wallpapers/cloud.png) |
| clouds2.png | ![clouds2.png](../home/wallpapers/clouds2.png) |
| clouds.png | ![clouds.png](../home/wallpapers/clouds.png) |
| coffee.png | ![coffee.png](../home/wallpapers/coffee.png) |
| dark_cloud.png | ![dark_cloud.png](../home/wallpapers/dark_cloud.png) |
| dark.png | ![dark.png](../home/wallpapers/dark.png) |
| fuji-dark.png | ![fuji-dark.png](../home/wallpapers/fuji-dark.png) |
| fuji-light.png | ![fuji-light.png](../home/wallpapers/fuji-light.png) |
| galaxy.png | ![galaxy.png](../home/wallpapers/galaxy.png) |
| house-cloud.png | ![house-cloud.png](../home/wallpapers/house-cloud.png) |
| key.png | ![key.png](../home/wallpapers/key.png) |
| lavender-cat.png | ![lavender-cat.png](../home/wallpapers/lavender-cat.png) |
| lofi-computer.png | ![lofi-computer.png](../home/wallpapers/lofi-computer.png) |
| lofi-urban.png | ![lofi-urban.png](../home/wallpapers/lofi-urban.png) |
| magma.png | ![magma.png](../home/wallpapers/magma.png) |
| mountains-black.png | ![mountains-black.png](../home/wallpapers/mountains-black.png) |
| mountains.png | ![mountains.png](../home/wallpapers/mountains.png) |
| nix.png | ![nix.png](../home/wallpapers/nix.png) |
| problems.png | ![problems.png](../home/wallpapers/problems.png) |
| sea2.png | ![sea2.png](../home/wallpapers/sea2.png) |
| sea.png | ![sea.png](../home/wallpapers/sea.png) |
| space2.png | ![space2.png](../home/wallpapers/space2.png) |
| space.png | ![space.png](../home/wallpapers/space.png) |
| street.png | ![street.png](../home/wallpapers/street.png) |
| sun.png | ![sun.png](../home/wallpapers/sun.png) |
| tokyo.png | ![tokyo.png](../home/wallpapers/tokyo.png) |
| train.png | ![train.png](../home/wallpapers/train.png) |
| windows.png | ![windows.png](../home/wallpapers/windows.png) |

View File

@@ -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

View File

@@ -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 | ![$filename](../home/wallpapers/$filename) |" >>"$WALLPAPERS_MD"
done
pandoc -t commonmark_x "$WALLPAPERS_MD" -o "/tmp/wallpapers.md"
mv "/tmp/wallpapers.md" "$WALLPAPERS_MD"

View File

@@ -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"

View 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"

View File

@@ -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

View File

@@ -1,67 +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
![nixy1](docs/src/nixy/1.png)
![nixy2](docs/src/nixy/2.png)
![nixy3](docs/src/nixy/3.png)
## 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
- `wallpapers` are... wallpapers
### 💻 `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.
**Subfolders:**
- 🎨 `themes` are the themes available *(see [THEMES.md](docs/THEMES.md))*
- 📦 `modules` are the nix modules that you can import
- `laptop` is my configuration for my laptop with Nvidia that you can copy
- `server` is for my homeserver (w/nextcloud, nginx, vaultwarden, ...)
## 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

View File

@@ -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

View File

@@ -1 +0,0 @@
8c00e379ddd7f89e4bbf9f381a5721d980c8026f

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 811 KiB

705
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -15,7 +16,6 @@
url = "github:nix-community/nixvim"; url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
spicetify-nix = { spicetify-nix = {
url = "github:Gerg-L/spicetify-nix"; url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -25,17 +25,20 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
nixy-wallpapers = {
url = "github:anotherhadi/nixy-wallpapers";
flake = false;
};
stylix.url = "github:danth/stylix";
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
hyprswitch.url = "github:h3rmt/hyprswitch/release";
}; };
outputs = inputs@{ nixpkgs, ... }: { outputs = inputs@{ nixpkgs, ... }: {
nixosConfigurations = { nixosConfigurations = {
nixy = nixpkgs.lib.nixosSystem { # CHANGEME nixy = # CHANGEME
nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ {
@@ -44,20 +47,10 @@
} }
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
./hosts/laptop/configuration.nix # CHANGEME ./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
];
};
}; };
}; };
} }

View File

@@ -1,9 +0,0 @@
{
programs.btop = {
enable = true;
settings = {
color_theme = "Default";
theme_background = false;
};
};
}

View File

@@ -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}'";
};
};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, config, ... }: { { pkgs, ... }: {
home.packages = with pkgs; [ neofetch ]; home.packages = with pkgs; [ neofetch ];
xdg.configFile."neofetch/ascii.txt".text = '' xdg.configFile."neofetch/ascii.txt".text = ''
@@ -109,9 +109,6 @@
song_format="%artist% - %album% - %title%" song_format="%artist% - %album% - %title%"
song_shorthand="off" song_shorthand="off"
mpc_args=() 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" bold="on"
underline_enabled="on" underline_enabled="on"
underline_char="-" underline_char="-"

View File

@@ -1,4 +1,4 @@
{ pkgs, config, ... }: { pkgs, ... }:
let let
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" '' nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
ostype="$(uname)" ostype="$(uname)"
@@ -345,9 +345,9 @@ let
## USER VARIABLES -- YOU CAN CHANGE THESE ## USER VARIABLES -- YOU CAN CHANGE THESE
lc="$reset$bold''$${config.var.theme.colors.accentName}" # labels lc="$reset$bold$magenta" # labels
nc="$reset$bold''$${config.var.theme.colors.accentName}" # labels nc="$reset$bold$magenta" # labels
hn="$reset$bold''$${config.var.theme.colors.accentName}" # labels hn="$reset$bold$magenta" # labels
ic="$reset$white" # info ic="$reset$white" # info
c0="$reset$grey" # first color c0="$reset$grey" # first color
c1="$reset$white" # second color c1="$reset$white" # second color

View File

@@ -1,8 +1,12 @@
{ config, ... }: { { config, ... }:
let
username = config.var.git.username;
email = config.var.git.email;
in {
programs.git = { programs.git = {
enable = true; enable = true;
userName = config.var.git.username; userName = username;
userEmail = config.var.git.email; userEmail = email;
ignores = [ ignores = [
".cache/" ".cache/"
".DS_Store" ".DS_Store"

View File

@@ -1,6 +1,15 @@
{ config, pkgs, ... }: { {
programs.kitty = { programs.kitty = {
enable = true; 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 = { settings = {
scrollback_lines = 10000; scrollback_lines = 10000;
initial_window_width = 1200; initial_window_width = 1200;
@@ -10,39 +19,10 @@
confirm_os_window_close = "0"; confirm_os_window_close = "0";
remember_window_size = "no"; remember_window_size = "no";
disable_ligatures = "never"; disable_ligatures = "never";
shell = "${pkgs.tmux}/bin/tmux";
url_style = "curly"; url_style = "curly";
cursor_shape = "Underline"; cursor_shape = "Underline";
cursor_underline_thickness = config.var.theme.border-size; cursor_underline_thickness = 3;
window_padding_width = config.var.theme.gaps-in; window_padding_width = 10;
# 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;
}; };
}; };
} }

View File

@@ -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";
};
};
};
}

View File

@@ -0,0 +1,4 @@
# Work in progress on another repo
{ pkgs, ... }: {
home.packages = with pkgs; [ wkhtmltopdf ];
}

View File

@@ -1,3 +1,4 @@
# 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 = { services.nextcloud-client = {
enable = true; enable = true;

View File

@@ -1,12 +0,0 @@
{
programs.nixvim = {
enable = true;
colorschemes.catppuccin = {
enable = true;
settings = {
transparent_background = true;
flavour = "mocha";
};
};
};
}

View File

@@ -1,3 +1,4 @@
# Nixvim is a NixOS module that installs and configures Neovim
{ inputs, ... }: { { inputs, ... }: {
imports = [ imports = [
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
@@ -8,10 +9,13 @@
./plugins/tree.nix ./plugins/tree.nix
./plugins/ui.nix ./plugins/ui.nix
./plugins/utils.nix ./plugins/utils.nix
./plugins/zen-mode.nix ./plugins/dap.nix
./plugins/telescope.nix
./plugins/zenmode.nix
./options.nix ./options.nix
./colorscheme.nix
./keymaps.nix ./keymaps.nix
]; ];
programs.nixvim.enable = true;
} }

View File

@@ -1,24 +1,310 @@
{ {
programs.nixvim.keymaps = [ programs.nixvim = {
plugins.which-key = {
enable = true;
settings = {
delay = 600;
icons = {
breadcrumb = "»";
group = "+";
separator = ""; # ➜
mappings = false;
};
spec = [
# General Mappings
{ {
key = "<leader>fm"; __unkeyed-1 = "<leader>c";
action = "<cmd>lua vim.lsp.buf.format()<cr>"; mode = [ "n" "v" ];
options.desc = "LSP Format"; group = "+code";
} }
{ {
key = "<leader>w"; __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>"; action = "<cmd>set wrap!<cr>";
options.desc = "Toggle word wrapping"; options.desc = "Toggle word wrapping";
} }
{ {
key = "<leader>W"; key = "<leader>ul";
action = "<cmd>set linebreak!<cr>"; action = "<cmd>set linebreak!<cr>";
options.desc = "Toggle linebreak"; options.desc = "Toggle linebreak";
} }
{ {
key = "<leader>z"; key = "<leader>us";
action = "<cmd>ZenMode<cr>"; action = "<cmd>set spell!<cr>";
options.desc = "ZenMode"; 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";
} }
]; ];
};
} }

View File

@@ -1,5 +1,4 @@
{ {
programs.nixvim.globals.mapleader = " "; programs.nixvim.globals.mapleader = " ";
programs.nixvim.opts = { programs.nixvim.opts = {
updatetime = 50; # Faster completion updatetime = 50; # Faster completion
@@ -22,11 +21,13 @@
hlsearch = true; hlsearch = true;
smartcase = true; smartcase = true;
wildmode = "list:longest"; wildmode = "list:longest";
completeopt = [ "menuone" "noselect" ]; completeopt = [ "menuone" "noselect" "noinsert" ];
signcolumn = "yes"; signcolumn = "yes";
cursorline = false; cursorline = false;
scrolloff = 8; scrolloff = 8;
mouse = "a"; mouse = "a";
termguicolors = true;
showmode = false;
wrap = false; wrap = false;

View File

@@ -15,8 +15,12 @@
sources = [ sources = [
{ name = "nvim_lsp"; } { name = "nvim_lsp"; }
{ name = "luasnip"; } { name = "luasnip"; }
{ name = "buffer"; } {
name = "buffer";
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
}
{ name = "nvim_lua"; } { name = "nvim_lua"; }
{ name = "mkdnflow"; }
{ name = "path"; } { name = "path"; }
]; ];
@@ -80,7 +84,7 @@
completion = { completion = {
winhighlight = winhighlight =
"FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel"; "FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel";
scrollbar = true; scrollbar = false;
sidePadding = 0; sidePadding = 0;
border = [ "" "" "" "" "" "" "" "" ]; border = [ "" "" "" "" "" "" "" "" ];
}; };

View File

@@ -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; };
};
};
}

View File

@@ -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 = { programs.nixvim.highlight = {
AlphaHeaderColor.fg = "#${config.var.theme.colors.accent}"; AlphaHeaderColor.fg = accent;
AlphaTextColor.fg = "#${config.var.theme.colors.fg}"; AlphaTextColor.fg = foreground;
AlphaShortcutColor.fg = "#${config.var.theme.colors.fgalt}"; AlphaShortcutColor.fg = muted;
}; };
programs.nixvim.plugins.alpha = { programs.nixvim.plugins.alpha = {
@@ -70,8 +76,7 @@
{ {
type = "button"; type = "button";
val = " NixOs Config"; val = " NixOs Config";
on_press.__raw = on_press.__raw = "function() vim.cmd[[Neotree ${configDir}]] end";
"function() vim.cmd[[Neotree ${config.var.configDirectory}]] end";
opts = { opts = {
shortcut = "nc"; shortcut = "nc";
position = "center"; position = "center";
@@ -86,7 +91,7 @@
type = "button"; type = "button";
val = " Keybindings"; val = " Keybindings";
on_press.__raw = on_press.__raw =
"function() vim.cmd[[e ${config.var.configDirectory}/docs/KEYBINDINGS.md]] end"; "function() vim.cmd[[e ${configDir}/docs/KEYBINDINGS.md]] end";
opts = { opts = {
shortcut = "nc"; shortcut = "nc";
position = "center"; position = "center";

View File

@@ -9,16 +9,9 @@
gopls.enable = true; gopls.enable = true;
nixd.enable = true; nixd.enable = true;
tailwindcss.enable = true; tailwindcss.enable = true;
# html.enable = true; # FIXME: broken for some reason html.enable = true;
svelte.enable = true; svelte.enable = true;
marksman.enable = true; marksman.enable = true;
ltex = {
enable = false;
settings = {
enabled = false;
language = "en";
};
};
}; };
keymaps.lspBuf = { keymaps.lspBuf = {
"gd" = "definition"; "gd" = "definition";
@@ -43,6 +36,8 @@
tidy.enable = true; tidy.enable = true;
shellharden.enable = true; shellharden.enable = true;
shfmt.enable = true; shfmt.enable = true;
golines.enable = true;
gofumpt.enable = true;
}; };
}; };
}; };

View File

@@ -1,72 +1,52 @@
{ # The render-markdown.nvim plugin is a plugin that renders markdown files in a neovim in a more readable way.
programs.nixvim.plugins = { { config, ... }:
mkdnflow = { 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; enable = true;
modules = { conceal = false; };
toDo.symbols = [ " " "-" "x" "!" "/" ];
mappings = { mappings = {
# Main
MkdnEnter = {
key = "<CR>";
modes = [ "n" "v" "i" ];
};
# Links
MkdnCreateLink = false; MkdnCreateLink = false;
MkdnCreateLinkFromClipboard = { MkdnCreateLinkFromClipboard = {
key = "<leader>lc"; key = "<leader>ml";
modes = [ "n" "v" ]; 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 = { MkdnDecreaseHeading = {
key = "-"; key = "<leader>m-";
modes = "n"; modes = "n";
}; };
MkdnDestroyLink = false;
MkdnEnter = {
key = "<CR>";
modes = [ "v" ];
};
MkdnExtendList = false; MkdnExtendList = false;
MkdnFoldSection = { MkdnFoldSection = {
key = "<leader>ff"; key = "<leader>mf";
modes = "n"; modes = "n";
}; };
MkdnUnfoldSection = { MkdnUnfoldSection = {
key = "<leader>fu"; key = "<leader>mF";
modes = "n"; modes = "n";
}; };
MkdnGoBack = { MkdnFollowLink = {
key = "<BS>"; key = "gd";
modes = "n";
};
MkdnGoForward = {
key = "<Del>";
modes = "n"; modes = "n";
}; };
MkdnGoBack = false;
MkdnGoForward = false;
MkdnIncreaseHeading = { MkdnIncreaseHeading = {
key = "+"; key = "<leader>m+";
modes = "n";
};
MkdnMoveSource = {
key = "<F2>";
modes = "n"; modes = "n";
}; };
MkdnMoveSource = false;
MkdnNewListItem = false; MkdnNewListItem = false;
MkdnNewListItemAboveInsert = { MkdnNewListItemAboveInsert = {
key = "O"; key = "O";
@@ -77,56 +57,115 @@
modes = "n"; modes = "n";
}; };
MkdnNextHeading = { MkdnNextHeading = {
key = "]]"; key = "<leader>m#";
modes = "n"; modes = "n";
}; };
MkdnNextLink = false;
MkdnPrevLink = false;
MkdnPrevHeading = { MkdnPrevHeading = {
key = "[["; key = "<leader>m*";
modes = "n"; modes = "n";
}; };
MkdnSTab = false; MkdnSTab = false;
MkdnTab = false; MkdnTab = false;
MkdnTableFormat = {
key = "<leader>ft";
modes = "n";
};
MkdnTableNewColAfter = { MkdnTableNewColAfter = {
key = "<leader>ic"; key = "<leader>mc";
modes = "n"; modes = "n";
}; };
MkdnTableNewColBefore = { MkdnTableNewColBefore = {
key = "<leader>iC"; key = "<leader>mC";
modes = "n"; modes = "n";
}; };
MkdnTableNewRowAbove = { MkdnTableNewRowAbove = {
key = "<leader>iR"; key = "<leader>mR";
modes = "n"; modes = "n";
}; };
MkdnTableNewRowBelow = { MkdnTableNewRowBelow = {
key = "<leader>ir"; key = "<leader>mr";
modes = "n"; modes = "n";
}; };
MkdnTableNextCell = { MkdnTableNextCell = {
key = "<S-Tab>"; key = "<S-Tab>";
modes = "i"; modes = "n";
}; };
MkdnTableNextRow = false; MkdnTableNextRow = false;
MkdnTablePrevCell = { MkdnTablePrevCell = {
key = "<M-Tab>"; key = "<S-Tab>";
modes = "i"; modes = "n";
};
MkdnTablePrevRow = {
key = "<M-CR>";
modes = "i";
}; };
MkdnTablePrevRow = false;
MkdnToggleToDo = { MkdnToggleToDo = {
key = "<C-Space>"; key = "<C-Space>";
modes = [ "n" "v" ]; modes = [ "n" "v" ];
}; };
MkdnUpdateNumbering = { MkdnUpdateNumbering = {
key = "<leader>nn"; key = "<leader>mn";
modes = "n"; 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";
};
};
};
}; };
}; };
}; };

View File

@@ -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 = " "; };
};
};
}

View File

@@ -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";
}
];
}; };
} }

View File

@@ -1,43 +1,54 @@
{ pkgs, config, ... }: { { pkgs, ... }: {
home.packages = with pkgs; [ ctags ]; home.packages = with pkgs; [ ctags ];
programs.nixvim = { programs.nixvim = {
highlight = {
Headline.bg = "#${config.var.theme.colors.bgalt}";
Headline.bold = true;
Headline1.bg = "#${config.var.theme.colors.c0}";
Headline1.bold = true;
};
plugins = { 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; noice.enable = true;
notify = {
enable = true;
level = "warn";
};
gitsigns = { gitsigns = {
enable = true; enable = true;
settings.current_line_blame = false; settings.current_line_blame = false;
}; };
bufferline.enable = true;
trouble.enable = true; trouble.enable = true;
indent-blankline.enable = true; indent-blankline.enable = true;
which-key.enable = true;
headlines = {
enable = true;
settings = {
markdown = {
headline_highlights = [ "Headline1" "Headline" ];
fat_headlines = false;
bullets = [ "" "" "" "" ];
dash_string = "";
codeblock_highlight = "Headline";
};
};
};
nvim-colorizer.enable = true; nvim-colorizer.enable = true;
tagbar.enable = true; # FIXME: Tagbar is not working tagbar = {
enable = true;
tagsPackage = pkgs.universal-ctags;
};
}; };
keymaps = [{
key = "<leader>t";
action = "<cmd>TroubleToggle<cr>";
options.desc = "Trouble";
}];
}; };
} }

View File

@@ -1,24 +1,23 @@
{ config, ... }: { { config, ... }: {
programs.nixvim = { programs.nixvim = {
highlightOverride = { highlightOverride = {
FloatBorder.fg = "#${config.var.theme.colors.accent}"; FloatBorder.fg = "#${config.lib.stylix.colors.base0D}";
}; };
plugins = { plugins = {
copilot-vim.enable = true; copilot-vim.enable = true;
flash.enable = true; flash.enable = true;
# image.enable = true; image = {
enable = true;
integrations.markdown = {
clearInInsertMode = true;
onlyRenderImageAtCursor = true;
};
};
tmux-navigator.enable = true; tmux-navigator.enable = true;
comment.enable = true; comment.enable = true;
nvim-autopairs.enable = true; nvim-autopairs.enable = true;
friendly-snippets.enable = true; friendly-snippets.enable = true;
telescope = { todo-comments.enable = true;
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
"<leader> " = "find_files";
};
extensions.fzf-native = { enable = true; };
};
treesitter = { treesitter = {
enable = true; enable = true;
nixGrammars = true; nixGrammars = true;
@@ -27,25 +26,24 @@
highlight.enable = true; 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; 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>";
}
];
}; };
} }

View File

@@ -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;
};
};
};
}

View File

@@ -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;
};
};
};
};
}

View File

@@ -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, ... }: { pkgs, config, ... }:
let 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 = '' settings = ''
{ {
"config": { "config": {
@@ -7,10 +15,10 @@ let
"openLinksInNewTab": false, "openLinksInNewTab": false,
"locale": "fr-FR", "locale": "fr-FR",
"colors": { "colors": {
"primary": "#${config.var.theme.colors.accent}", "primary": "${accent}",
"background": "#${config.var.theme.colors.bg}", "background": "${background}",
"foreground": "#${config.var.theme.colors.fg}", "foreground": "${foreground}",
"muted": "#${config.var.theme.colors.c8}" "muted": "#${muted}"
}, },
"folders": [ "folders": [
{ {
@@ -117,98 +125,12 @@ in {
}; };
colors = { 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 = webpage.preferred_color_scheme =
"dark"; # Enable dark mode for websites that support it "dark"; # Enable dark mode for websites that support it
}; };
statusbar.show = "in-mode"; statusbar.show = "in-mode";
fonts = { default_family = "${config.var.theme.font}"; };
completion = { completion = {
height = "30%"; height = "30%";
open_categories = [ "history" ]; open_categories = [ "history" ];
@@ -235,10 +157,7 @@ in {
remove_finished = 0; remove_finished = 0;
}; };
hints = { hints = { radius = 1; };
border = "none";
radius = 1;
};
scrolling = { scrolling = {
bar = "never"; bar = "never";

View File

@@ -1,9 +1,19 @@
{ config, ... }: { # A duckduckgo colorscheme generated for the Stylix theme used.
home.file.".duckduckgo-colorscheme.js".text = '' { 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. // Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
// based on https://ddg.codingcodax.dev/ // based on https://ddg.codingcodax.dev/
// Cookies string for your theme // 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};'; const cookie = '7=${background}; j=${background}; 9=${foreground}; aa=${foreground-alt}; 8=${foreground}; x=${accent}; 21=${background-alt};';
// Converts cookie string into formatted JSON // Converts cookie string into formatted JSON
const cookieToJSON = (cookieRaw) => { const cookieToJSON = (cookieRaw) => {
@@ -25,8 +35,6 @@
}); });
}; };
alert('The Nixy theme will be applied.');
// Call set cookies, passing in formated cookie data // Call set cookies, passing in formated cookie data
setCookies(cookieToJSON(cookie)); setCookies(cookieToJSON(cookie));

View File

@@ -1,11 +1,4 @@
{ {
imports = [ imports =
./fzf.nix [ ./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./tmux.nix ./eza.nix ];
./zsh.nix
./starship.nix
./zoxide.nix
./tmux.nix
./lazygit.nix
./eza.nix
];
} }

View File

@@ -1,3 +1,4 @@
# Eza is a ls replacement
{ {
programs.eza = { programs.eza = {
enable = true; enable = true;

View File

@@ -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 = { programs.fzf = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
colors = { colors = lib.mkForce {
"fg+" = config.var.theme.colors.accentName; "fg+" = accent;
"bg+" = "-1"; "bg+" = "-1";
"fg" = "white"; "fg" = foreground;
"bg" = "-1"; "bg" = "-1";
"prompt" = "grey"; "prompt" = muted;
"pointer" = config.var.theme.colors.accentName; "pointer" = accent;
}; };
defaultOptions = [ defaultOptions = [
"--margin=1" "--margin=1"

View File

@@ -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" ];
};
};
};
}

View File

@@ -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 = { programs.starship = {
enable = true; enable = true;
settings = { settings = {
@@ -10,17 +15,18 @@
"$git_status" "$git_status"
"$character" "$character"
]; ];
directory = { style = "#${config.var.theme.colors.accent}"; }; directory = { style = accent; };
character = { character = {
success_symbol = "[](#${config.var.theme.colors.accent})"; success_symbol = "[](${accent})";
error_symbol = "[](red)"; error_symbol = "[](red)";
vimcmd_symbol = "[](cyan)"; vimcmd_symbol = "[](cyan)";
}; };
git_branch = { git_branch = {
format = "[$branch]($style)"; symbol = "[](${background-alt}) ";
style = "bright-black"; style = "fg:${accent} bg:${background-alt}";
format = "on [$symbol$branch]($style)[](${background-alt}) ";
}; };
git_status = { git_status = {

View File

@@ -1,3 +1,4 @@
# Tmux is a terminal multiplexer that allows you to run multiple terminal sessions in a single window.
{ pkgs, ... }: { { pkgs, ... }: {
programs.tmux = { programs.tmux = {
enable = true; enable = true;
@@ -12,37 +13,21 @@
bind-key j select-pane -D bind-key j select-pane -D
bind-key k select-pane -U bind-key k select-pane -U
bind-key l select-pane -R bind-key l select-pane -R
set -gq allow-passthrough on 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; [ plugins = with pkgs; [
tmuxPlugins.vim-tmux-navigator tmuxPlugins.vim-tmux-navigator
{ tmuxPlugins.resurrect
plugin = tmuxPlugins.catppuccin; tmuxPlugins.sensible
extraConfig = '' tmuxPlugins.tokyo-night-tmux
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"
'';
}
]; ];
}; };
} }

View File

@@ -1,3 +1,4 @@
# Zoxide is a cd replacement
{ {
programs.zoxide = { programs.zoxide = {
enable = true; enable = true;

View File

@@ -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" ]; home.sessionPath = [ "$HOME/go/bin" ];
@@ -13,20 +16,31 @@
initExtraFirst = '' initExtraFirst = ''
bindkey -e bindkey -e
${if config.var.theme.fetch == "neofetch" then ${if fetch == "neofetch" then
pkgs.neofetch + "/bin/neofetch" pkgs.neofetch + "/bin/neofetch"
else if config.var.theme.fetch == "nerdfetch" then else if fetch == "nerdfetch" then
"nerdfetch" "nerdfetch"
else if config.var.theme.fetch == "pfetch" then else if fetch == "pfetch" then
"echo; ${pkgs.pfetch}/bin/pfetch" "echo; ${pkgs.pfetch}/bin/pfetch"
else 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 = { history = {
ignoreDups = true; ignoreDups = true;
save = 1000000; save = 10000;
size = 1000000; size = 10000;
}; };
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) '' profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
@@ -49,17 +63,17 @@
sl = "ls"; sl = "ls";
open = "${pkgs.xdg_utils}/bin/xdg-open"; open = "${pkgs.xdg_utils}/bin/xdg-open";
icat = "${pkgs.kitty}/bin/kitty +kitten icat"; icat = "${pkgs.kitty}/bin/kitty +kitten icat";
wireguard-import = "nmcli connection import type wireguard file"; wireguard-import = "nmcli connection import type wireguard file";
neorg =
"cd ~/nextcloud/neorg && vim -c ':ZenMode' -c ':Telescope find_files' index.norg";
notes = 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"; note = "notes";
# git # git
g = "lazygit";
ga = "git add"; ga = "git add";
gc = "git commit"; gc = "git commit";
gcm = "git commit -m";
gcu = "git add . && git commit -m 'Update'"; gcu = "git add . && git commit -m 'Update'";
gp = "git push"; gp = "git push";
gpl = "git pull"; gpl = "git pull";
@@ -68,6 +82,9 @@
gco = "git checkout"; gco = "git checkout";
gcb = "git checkout -b"; gcb = "git checkout -b";
gbr = "git branch"; gbr = "git branch";
gaa = "git add .";
gcm = "git commit -m";
}; };
}; };
} }

View File

@@ -1,31 +1,26 @@
# Spicetify is a spotify client customizer
{ pkgs, config, lib, inputs, ... }: { 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 { in {
imports = [ inputs.spicetify-nix.homeManagerModules.default ]; imports = [ inputs.spicetify-nix.homeManagerModules.default ];
nixpkgs.config.allowUnfreePredicate = pkg: nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [ "spotify" ]; builtins.elem (lib.getName pkg) [ "spotify" ];
stylix.targets.spicetify.enable = false;
programs.spicetify = { programs.spicetify = {
enable = true; enable = true;
theme = spicePkgs.themes.text; theme = lib.mkForce spicePkgs.themes.text;
colorScheme = "custom"; colorScheme = "custom";
customColorScheme = { customColorScheme = {
text = "${config.var.theme.colors.fg}"; button = accent;
subtext = "${config.var.theme.colors.fgalt}"; button-active = accent;
sidebar-text = "${config.var.theme.colors.fgalt}"; tab-active = accent;
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}";
}; };
enabledExtensions = with spicePkgs.extensions; [ enabledExtensions = with spicePkgs.extensions; [

View File

@@ -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>
'';
}

View File

@@ -1,3 +1,4 @@
# Yazi is a TUI file explorer
{ {
programs.yazi = { programs.yazi = {
enable = true; enable = true;
@@ -12,28 +13,5 @@
sort_reverse = true; sort_reverse = true;
}; };
}; };
theme = {
filetype = {
rules = [
{
fg = "#7AD9E5";
mime = "image/*";
}
{
fg = "#F3D398";
mime = "video/*";
}
{
fg = "#F3D398";
mime = "audio/*";
}
{
fg = "#CD9EFC";
mime = "application/x-bzip";
}
];
};
};
}; };
} }

View File

@@ -1,3 +1,12 @@
# - ## 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, ... }: { pkgs, ... }:
let let

View File

@@ -1,3 +1,11 @@
# - ## 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, ... }: { pkgs, ... }:
let let
caffeine-status = pkgs.writeShellScriptBin "caffeine-status" '' caffeine-status = pkgs.writeShellScriptBin "caffeine-status" ''
@@ -10,11 +18,11 @@ let
caffeine = pkgs.writeShellScriptBin "caffeine" '' caffeine = pkgs.writeShellScriptBin "caffeine" ''
if [[ $(pidof "hypridle") ]]; then if [[ $(pidof "hypridle") ]]; then
pkill hypridle systemctl --user stop hypridle.service
title="󰅶 Caffeine Activated" title="󰅶 Caffeine Activated"
description="Caffeine is now active! Your screen will not turn off automatically." description="Caffeine is now active! Your screen will not turn off automatically."
else else
${pkgs.hyprland}/bin/hyprctl dispatch exec ${pkgs.hypridle}/bin/hypridle systemctl --user start hypridle.service
title="󰾪 Caffeine Deactivated" title="󰾪 Caffeine Deactivated"
description="Caffeine is now deactivated! Your screen will turn off automatically." description="Caffeine is now deactivated! Your screen will turn off automatically."
fi fi

View File

@@ -4,6 +4,8 @@
./sounds ./sounds
./brightness ./brightness
./caffeine ./caffeine
./hyprpanel
./hyprfocus
./night-shift ./night-shift
./screenshot ./screenshot
./nerdfont_fzf ./nerdfont_fzf

View File

@@ -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 ]; }

View File

@@ -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 ];
}

View File

@@ -1,28 +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, ... }: { pkgs, config, ... }:
let let
homedir = config.home.homeDirectory;
nerdfont-fzf = pkgs.writeShellScriptBin "nerdfont-fzf" '' nerdfont-fzf = pkgs.writeShellScriptBin "nerdfont-fzf" ''
# Dependencies: jq, fzf, wl-copy, wget 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}')
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" | ${pkgs.fzf}/bin/fzf --ansi --border none | awk '{print $1}')
fzf_result=$(echo "$icons" | fzf --ansi --border none | awk '{print $1}')
if [ -z "$fzf_result" ]; then if [ -z "$fzf_result" ]; then
echo "No icon selected" echo "No icon selected"
exit 1 exit 1
fi fi
echo "Copied to clipboard: $fzf_result" echo "Copied to clipboard: $fzf_result"
${pkgs.wl-clipboard}/bin/wl-copy "$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"
''; '';
in { in {
home.packages = [ nerdfont-fzf nerdfont-fzf-fetch ]; home.packages = [ nerdfont-fzf ];
xdg.configFile."nerdfont_glyphnames.json" = { 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=";
};
}; };
} }

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +1,17 @@
# - ## 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, ... }: { pkgs, ... }:
let let
default = "4000";
night-shift-on = pkgs.writeShellScriptBin "night-shift-on" '' night-shift-on = pkgs.writeShellScriptBin "night-shift-on" ''
${pkgs.hyprland}/bin/hyprctl dispatch exec "${pkgs.gammastep}/bin/gammastep -O ${default}" ${pkgs.hyprshade}/bin/hyprshade on blue-light-filter
title="󰖔 Night-Shift Activated" title="󰖔 Night-Shift Activated"
description="Night-Shift is now activated! Your screen will be warmer and easier on the eyes." description="Night-Shift is now activated! Your screen will be warmer and easier on the eyes."
@@ -12,7 +19,7 @@ let
''; '';
night-shift-off = pkgs.writeShellScriptBin "night-shift-off" '' night-shift-off = pkgs.writeShellScriptBin "night-shift-off" ''
pkill gammastep ${pkgs.hyprshade}/bin/hyprshade off
title="󰖕 Night-Shift Deactivated" title="󰖕 Night-Shift Deactivated"
description="Night-Shift is now deactivated! Your screen will return to normal." description="Night-Shift is now deactivated! Your screen will return to normal."
@@ -20,7 +27,7 @@ let
''; '';
night-shift = pkgs.writeShellScriptBin "night-shift" '' night-shift = pkgs.writeShellScriptBin "night-shift" ''
if pgrep gammastep; then if [[ $(${pkgs.hyprshade}/bin/hyprshade current) ]]; then
night-shift-off night-shift-off
else else
night-shift-on night-shift-on
@@ -28,7 +35,7 @@ let
''; '';
night-shift-status = pkgs.writeShellScriptBin "night-shift-status" '' night-shift-status = pkgs.writeShellScriptBin "night-shift-status" ''
if [[ $(pgrep gammastep) ]]; then if [[ $(${pkgs.hyprshade}/bin/hyprshade current) ]]; then
echo "1" echo "1"
else else
echo "0" echo "0"
@@ -37,7 +44,7 @@ let
night-shift-status-icon = night-shift-status-icon =
pkgs.writeShellScriptBin "night-shift-status-icon" '' pkgs.writeShellScriptBin "night-shift-status-icon" ''
if [[ $(pgrep gammastep) ]]; then if [[ $(hyprshade current) ]]; then
echo "󰖔" echo "󰖔"
else else
echo "󰖕" echo "󰖕"
@@ -45,7 +52,6 @@ let
''; '';
in { in {
home.packages = [ home.packages = [
pkgs.gammastep
night-shift-on night-shift-on
night-shift-off night-shift-off
night-shift night-shift

View File

@@ -1,6 +1,19 @@
{ 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 let
nixy = pkgs.writeShellScriptBin "nixy" ''
configDirectory = config.var.configDirectory;
hostname = config.var.hostname;
nixy = pkgs.writeShellScriptBin "nixy"
# bash
''
function exec() { function exec() {
$@ $@
} }
@@ -10,11 +23,13 @@ let
# "icon;name;command"[] # "icon;name;command"[]
apps=( apps=(
";Rebuild;nixy rebuild" "󰑓;Rebuild;nixy rebuild"
";Upgrade;nixy upgrade" "󰦗;Upgrade;nixy upgrade"
";Update;nixy update" "󰚰;Update;nixy update"
";Collect Garbage;nixy gc" ";Collect Garbage;nixy gc"
";Clean Boot Menu;nixy cb" "󰍜;Clean Boot Menu;nixy cb"
"󰌌;Hyprland Keybindings;nvim ${configDirectory}/docs/KEYBINDINGS-HYPRLAND.md"
"󰋩;Wallpapers;nvim ${inputs.nixy-wallpapers}/docs/MOBILE-VIEW.md"
) )
# Apply default icons if empty: # Apply default icons if empty:
@@ -35,13 +50,13 @@ let
[[ $1 == "" ]] && ui [[ $1 == "" ]] && ui
if [[ $1 == "rebuild" ]];then if [[ $1 == "rebuild" ]];then
sudo nixos-rebuild switch --flake ${config.var.configDirectory}#${config.var.hostname} sudo nixos-rebuild switch --flake ${configDirectory}#${hostname}
elif [[ $1 == "upgrade" ]];then elif [[ $1 == "upgrade" ]];then
sudo nixos-rebuild switch --upgrade --flake ${config.var.configDirectory}#${config.var.hostname} sudo nixos-rebuild switch --upgrade --flake ${configDirectory}#${hostname}
elif [[ $1 == "update" ]];then elif [[ $1 == "update" ]];then
cd ${config.var.configDirectory} && sudo nix flake update cd ${configDirectory} && nix flake update
elif [[ $1 == "gc" ]];then elif [[ $1 == "gc" ]];then
cd ${config.var.configDirectory} && sudo nix-collect-garbage -d cd ${configDirectory} && sudo nix-collect-garbage -d
elif [[ $1 == "cb" ]];then elif [[ $1 == "cb" ]];then
sudo /run/current-system/bin/switch-to-configuration boot sudo /run/current-system/bin/switch-to-configuration boot
elif [[ $1 == "remote" ]];then elif [[ $1 == "remote" ]];then

View File

@@ -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, ... }: { pkgs, ... }:
let let
screenshot = pkgs.writeShellScriptBin "screenshot" '' screenshot = pkgs.writeShellScriptBin "screenshot" ''
if [[ $2 == "swappy" ]];then if [[ $2 == "swappy" ]];then
folder="/tmp" folder="/tmp"
else else
folder="$HOME/Pictures/screenshots" folder="$HOME/Pictures"
fi fi
filename="$(date +%Y-%m-%d_%H:%M:%S).png" filename="$(date +%Y-%m-%d_%H:%M:%S).png"
mode="region" # Default to region
if [[ $1 == "window" ]];then if [[ $1 == "window" ]];then
mode="window" mode="active"
elif [[ $1 == "region" ]];then
mode="area"
elif [[ $1 == "monitor" ]];then elif [[ $1 == "monitor" ]];then
mode="output" mode="output"
fi 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 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 exit 0
fi 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 ];
}

View File

@@ -1,3 +1,11 @@
# - ## 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, ... }: { pkgs, ... }:
let let

View File

@@ -1,7 +1,16 @@
# - ## System
#-
#- Usefull quick scripts
#-
#- - `menu` - Open wofi with drun mode. (wofi)
#- - `powermenu` - Open power dropdown menu. (wofi)
#- - `lock` - Lock the screen. (hyprlock)
{ pkgs, ... }: { pkgs, ... }:
let let
menu = pkgs.writeShellScriptBin "menu" '' menu = pkgs.writeShellScriptBin "menu"
# bash
''
if pgrep wofi; then if pgrep wofi; then
pkill wofi pkill wofi
else else
@@ -9,15 +18,46 @@ let
fi fi
''; '';
powermenu = pkgs.writeShellScriptBin "powermenu" '' powermenu = pkgs.writeShellScriptBin "powermenu"
if pgrep wlogout; then # bash
pkill wlogout ''
if pgrep wofi; then
pkill wofi
else else
${pkgs.wlogout}/bin/wlogout 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 fi
''; '';
lock = pkgs.writeShellScriptBin "lock" '' lock = pkgs.writeShellScriptBin "lock"
# bash
''
${pkgs.hyprlock}/bin/hyprlock ${pkgs.hyprlock}/bin/hyprlock
''; '';

View File

@@ -1,6 +1,7 @@
# Batsignal is a simple utility to send battery notifications.
{ {
services.batsignal = { services.batsignal = {
enable = true; enable = true;
extraArgs = [ "-c 10" "-w 30" "-f 97" ]; extraArgs = [ "-c 10" "-w 30" "-f disabled" ];
}; };
} }

View File

@@ -1,6 +1,6 @@
# Clipman allows you to save and retrieve clipboard history.
{ pkgs, ... }: { pkgs, ... }:
let let
clipboard-clear = pkgs.writeShellScriptBin "clipboard-clear" '' clipboard-clear = pkgs.writeShellScriptBin "clipboard-clear" ''
clipman clear --all clipman clear --all
''; '';
@@ -14,5 +14,4 @@ in {
[ "${clipboard-clear}" "wl-paste -t text --watch clipman store" ]; [ "${clipboard-clear}" "wl-paste -t text --watch clipman store" ];
home.packages = with pkgs; [ clipman clipboard clipboard-clear ]; home.packages = with pkgs; [ clipman clipboard clipboard-clear ];
services.clipman.enable = true; services.clipman.enable = true;
} }

View File

@@ -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 = { qt = {
enable = true; enable = true;
@@ -9,24 +34,18 @@
gtk = { gtk = {
enable = true; enable = true;
theme = { name = "FlatColor"; }; theme = lib.mkForce { name = "FlatColor"; };
iconTheme = { iconTheme = {
package = pkgs.moka-icon-theme; package = pkgs.kora-icon-theme;
name = "Moka"; name = "Kora";
}; };
font = { font = { name = config.stylix.fonts.serif.name; };
name = config.var.theme.font;
size = config.var.theme.font-size;
};
};
home.pointerCursor = { gtk3.extraConfig = { gtk-application-prefer-dark-theme = 1; };
gtk.enable = true;
package = pkgs.bibata-cursors; gtk4.extraConfig = { gtk-application-prefer-dark-theme = 1; };
name = "Bibata-Modern-Classic";
size = 14;
}; };
home.file = { home.file = {
@@ -63,62 +82,61 @@
}; };
".local/share/themes/FlatColor/colors2".text = '' ".local/share/themes/FlatColor/colors2".text = ''
bg_color:#${config.var.theme.colors.bg} bg_color:${background}
color0:#${config.var.theme.colors.c0} color0:${c0}
color1:#${config.var.theme.colors.c1} color1:${c1}
color2:#${config.var.theme.colors.c2} color2:${c2}
color3:#${config.var.theme.colors.c3} color3:${c3}
color4:#${config.var.theme.colors.c4} color4:${c4}
color5:#${config.var.theme.colors.c5} color5:${c5}
color6:#${config.var.theme.colors.c6} color6:${c6}
color7:#${config.var.theme.colors.c7} color7:${c7}
color8:#${config.var.theme.colors.c8} color8:${c8}
color9:#${config.var.theme.colors.c9} color9:${c9}
color10:#${config.var.theme.colors.c10} color10:${c10}
color11:#${config.var.theme.colors.c11} color11:${c11}
color12:#${config.var.theme.colors.c12} color12:${c12}
color13:#${config.var.theme.colors.c13} color13:${c13}
color14:#${config.var.theme.colors.c14} color14:${c14}
color15:#${config.var.theme.colors.c15} color15:${c15}
text_color:#${config.var.theme.colors.fg} text_color:${foreground}
selected_bg_color:#${config.var.theme.colors.accent} selected_bg_color:${accent}
selected_fg_color:#${config.var.theme.colors.accentFg} selected_fg_color:${foreground}
tooltip_bg_color:#${config.var.theme.colors.bgalt} tooltip_bg_color:${background-alt}
tooltip_fg_color:#${config.var.theme.colors.fgalt} tooltip_fg_color:${foreground}
titlebar_bg_color:#${config.var.theme.colors.bgalt} titlebar_bg_color:${background}
titlebar_fg_color:#${config.var.theme.colors.fgalt} titlebar_fg_color:${foreground}
menu_bg_color:#${config.var.theme.colors.bgalt} menu_bg_color:${background-alt}
menu_fg_color:#${config.var.theme.colors.fgalt} menu_fg_color:${foreground}
link_color:#${config.var.theme.colors.accent} link_color:${accent}
''; '';
".local/share/themes/FlatColor/colors3".text = '' ".local/share/themes/FlatColor/colors3".text = ''
@define-color color0 #${config.var.theme.colors.c0}; @define-color color0 ${c0};
@define-color color1 #${config.var.theme.colors.c1}; @define-color color1 ${c1};
@define-color color2 #${config.var.theme.colors.c2}; @define-color color2 ${c2};
@define-color color3 #${config.var.theme.colors.c3}; @define-color color3 ${c3};
@define-color color4 #${config.var.theme.colors.c4}; @define-color color4 ${c4};
@define-color color5 #${config.var.theme.colors.c5}; @define-color color5 ${c5};
@define-color color6 #${config.var.theme.colors.c6}; @define-color color6 ${c6};
@define-color color7 #${config.var.theme.colors.c7}; @define-color color7 ${c7};
@define-color color8 #${config.var.theme.colors.c8}; @define-color color8 ${c8};
@define-color color9 #${config.var.theme.colors.c9}; @define-color color9 ${c9};
@define-color color10 #${config.var.theme.colors.c10}; @define-color color10 ${c10};
@define-color color11 #${config.var.theme.colors.c11}; @define-color color11 ${c11};
@define-color color12 #${config.var.theme.colors.c12}; @define-color color12 ${c12};
@define-color color13 #${config.var.theme.colors.c13}; @define-color color13 ${c13};
@define-color color14 #${config.var.theme.colors.c14}; @define-color color14 ${c14};
@define-color color15 #${config.var.theme.colors.c15}; @define-color color15 ${c15};
@define-color selected_bg_color #${config.var.theme.colors.accent}; @define-color selected_bg_color ${accent};
@define-color selected_fg_color #${config.var.theme.colors.accentFg}; @define-color selected_fg_color ${foreground};
@define-color bg_color ${background};
@define-color bg_color #${config.var.theme.colors.bg}; @define-color fg_color ${foreground};
@define-color fg_color #${config.var.theme.colors.fg};
@define-color base_color @bg_color; @define-color base_color @bg_color;
@define-color text_color @fg_color; @define-color text_color @fg_color;
@define-color text_color_disabled mix(@text_color, @base_color, 0.4); @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_bg_color ${background-alt};
@define-color tooltip_fg_color #${config.var.theme.colors.fgalt}; @define-color tooltip_fg_color ${foreground};
''; '';
}; };
} }

View File

@@ -1,7 +1,5 @@
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
{ pkgs, ... }: { { pkgs, ... }: {
# wayland.windowManager.hyprland.settings.exec-once =
# [ "${pkgs.hypridle}/bin/hypridle" ];
services.hypridle = { services.hypridle = {
enable = true; enable = true;
settings = { settings = {

View File

@@ -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"
];
};
};
}

View File

@@ -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
];
};
}

Some files were not shown because too many files have changed in this diff Show More