94 Commits

Author SHA1 Message Date
Hadi 4875fce088 Release v2.2.0
Former-commit-id: e6f66110f0
2024-08-19 20:32:10 +02:00
Hadi 6ff18b7d15 Update
Former-commit-id: caaa500232
2024-08-19 19:42:20 +02:00
Hadi a6526de2a4 Update
Former-commit-id: e27d43df71
2024-08-19 19:41:24 +02:00
Hadi bf04dce6d5 Update
Former-commit-id: 79a69d245c
2024-08-19 19:36:21 +02:00
Hadi fdabd7edf9 Update
Former-commit-id: 849eb5dd11
2024-08-19 00:38:27 +02:00
Hadi a13ea2b8da Update
Former-commit-id: 31ac58592e
2024-08-19 00:15:43 +02:00
Hadi 0473880942 Update
Former-commit-id: b9fda769bc
2024-08-18 23:57:00 +02:00
Hadi c2afa515ee Update
Former-commit-id: 94c88e04f2
2024-08-18 23:56:48 +02:00
Hadi ecee3e4daa Update
Former-commit-id: 9d74ac9d82
2024-08-18 23:52:21 +02:00
Hadi 39c70d2152 Update
Former-commit-id: a64c79ae22
2024-08-18 23:43:17 +02:00
Hadi c6cc2b3e2b Release v2.1.0
Former-commit-id: a134abdea3
2024-08-18 23:40:47 +02:00
Hadi 61eac2f021 Update
Former-commit-id: 957b148656
2024-08-18 23:29:31 +02:00
Hadi 55cfb67493 Update
Former-commit-id: 7fab715859
2024-08-18 23:29:08 +02:00
Hadi 082fbb2130 Update
Former-commit-id: 246b5b6c8e
2024-08-11 12:02:11 +02:00
Hadi 207caa7ba5 Update
Former-commit-id: a318562aa7
2024-08-10 13:28:07 +02:00
Hadi 9d03a16364 Update
Former-commit-id: 4ec671e6b4
2024-08-02 20:53:58 +02:00
Hadi 7832f5f750 Update
Former-commit-id: e3f4493865
2024-07-29 19:34:43 +02:00
Hadi c9775af4ea Update
Former-commit-id: 5c5a2796f6
2024-07-25 23:23:11 +02:00
Hadi 146afb1de5 Update
Former-commit-id: a7bd5ad28b
2024-07-24 23:38:16 +02:00
Hadi e9e7d4f06f Update
Former-commit-id: 830dc909e2
2024-07-22 22:32:10 +02:00
Hadi 273fd77b86 Update
Former-commit-id: 351dc0ebb3
2024-07-22 21:49:19 +02:00
Hadi cf04176b10 Update
Former-commit-id: aff363f37d
2024-07-21 22:20:55 +02:00
Hadi eb3083346f Update
Former-commit-id: fdd41cf848
2024-07-19 13:03:34 +02:00
Hadi 5078a34ee3 Update
Former-commit-id: 308cbfcb19
2024-07-13 12:04:41 +02:00
Hadi b5f27c6ed6 Update
Former-commit-id: 1dc5190c43
2024-07-11 16:07:04 +02:00
Hadi cb7c2f3c40 Update
Former-commit-id: 8412b4dd93
2024-07-09 16:20:53 +02:00
Hadi 3e6f8b856d Update
Former-commit-id: 04d2e91dd5
2024-07-09 15:01:41 +02:00
Hadi 38b516453a Update
Former-commit-id: 70459117ed
2024-07-09 14:16:50 +02:00
Hadi 2e9fd1710f Update
Former-commit-id: 87ee1c7738
2024-07-09 14:00:14 +02:00
Hadi 4b8593b097 Update
Former-commit-id: 0509eba07f
2024-07-09 13:41:42 +02:00
Hadi fd5dfea2c4 Update
Former-commit-id: 9142814f8f
2024-07-09 12:05:04 +02:00
Hadi b623474fc0 Update
Former-commit-id: 33a9386356
2024-07-09 11:44:32 +02:00
Hadi ffcd2c0c19 Update
Former-commit-id: fb73cce28a
2024-07-09 11:12:41 +02:00
Hadi aa1a9c25d7 Update
Former-commit-id: e0c24bf068
2024-07-09 09:47:29 +02:00
Hadi cd837e208e Update
Former-commit-id: 8e63ef0b46
2024-07-09 09:38:51 +02:00
Hadi eca9b216ba Merge branch 'main' of github.com:anotherhadi/nixy
Update


Former-commit-id: e107b25a2f
2024-07-09 09:33:49 +02:00
Hadi f1bff29cd9 Update
Former-commit-id: 841f9625e9
2024-07-09 09:33:21 +02:00
Hadi e452d79f0c update
Former-commit-id: ddddd3b4a4
2024-07-08 07:45:56 +00:00
Hadi 0fb184e8d3 Update
Former-commit-id: a73a50aa1f
2024-07-06 00:37:24 +02:00
Hadi 5b337e5e94 Update
Former-commit-id: cd7db37ccd
2024-07-06 00:35:41 +02:00
Hadi 498c03decc Update
Former-commit-id: 9931071846
2024-07-05 14:56:19 +02:00
Hadi 5f6fb011a2 Update
Former-commit-id: de4347765c
2024-07-05 10:16:16 +02:00
Hadi 46b913a7d3 Update
Former-commit-id: 5bee2d6931
2024-07-05 09:20:58 +02:00
Hadi 0ecb821342 Update
Former-commit-id: 7dc7cfcaba
2024-07-05 09:09:43 +02:00
Hadi f7d23ddee9 Update
Former-commit-id: a8d37c3fcd
2024-07-05 08:49:18 +02:00
Hadi fb63d4c0e9 Update
Former-commit-id: fa6d5d50bd
2024-07-02 12:18:49 +02:00
Hadi 9bddf6dab9 update
Former-commit-id: fdff88cc9d
2024-07-01 13:15:24 +00:00
Hadi 2f39827f03 nixvim refactor
Former-commit-id: 55caf123df
2024-07-01 13:07:12 +00:00
Hadi 41a6417a2d Update
Former-commit-id: 88ae1d29a5
2024-07-01 13:04:32 +02:00
Hadi 02331d9deb update todos
Former-commit-id: 51739ac610
2024-07-01 08:41:07 +00:00
Hadi 742aa325aa update
Former-commit-id: 76a6f6cd6e
2024-07-01 08:34:04 +00:00
Hadi 6d487ab9f0 update
Former-commit-id: 7ef2c71725
2024-07-01 08:32:49 +00:00
Hadi a0f7128a28 update
Former-commit-id: 81574fd7bc
2024-07-01 08:31:12 +00:00
Hadi fdd5d685d6 Add wallpapers
Former-commit-id: ba9dde2c1a
2024-07-01 10:13:17 +02:00
Hadi 62213109f7 update
Former-commit-id: 93837b6bea
2024-06-30 18:01:52 +02:00
Hadi 9c43c89a3f Update
Former-commit-id: 8b76bf48a6
2024-06-30 17:59:39 +02:00
Hadi 9c1fc992e2 update
Former-commit-id: c80ddff8eb
2024-06-30 17:46:32 +02:00
Hadi cc2b0989d3 update
Former-commit-id: c4d436b434
2024-06-30 17:42:09 +02:00
Hadi 3ee5f2097d update
Former-commit-id: dae8755b59
2024-06-30 17:35:58 +02:00
Hadi 5657e0b24c Update
Former-commit-id: 7c0216b1fb
2024-06-30 17:32:42 +02:00
Hadi b51725e7cd Update
Former-commit-id: 40ffce6605
2024-06-29 00:18:07 +02:00
Hadi 86f8c99554 Update
Former-commit-id: 56c2c41b68
2024-06-28 16:35:49 +02:00
Hadi c256b870aa Update
Former-commit-id: 06f5e03e66
2024-06-28 16:32:52 +02:00
Hadi 94103e9dfb Update
Former-commit-id: 921c359693
2024-06-28 15:02:53 +02:00
Hadi af6319c8ec update
Former-commit-id: 1f35859f2c
2024-06-28 14:35:35 +02:00
Hadi 6edda0e6e1 Update
Former-commit-id: 71f405e633
2024-06-28 01:24:27 +02:00
Hadi 3ba7648eb0 update
Former-commit-id: 84b645e181
2024-06-28 01:11:49 +02:00
Hadi 484d82a788 update
Former-commit-id: 5857299c20
2024-06-28 01:10:09 +02:00
Hadi be0d934622 update
Former-commit-id: ec24cde14f
2024-06-28 01:07:53 +02:00
Hadi abab0d1b96 update
Former-commit-id: 3f79044a2a
2024-06-28 01:07:24 +02:00
Hadi 9dd462b0b8 Update
Former-commit-id: cf6ea202e1
2024-06-28 00:58:12 +02:00
Hadi 28404f07cd Update
Former-commit-id: 84f87f9833
2024-06-27 19:42:08 +02:00
Hadi eb0e205e99 Update
Former-commit-id: ae6818ed65
2024-06-27 18:32:17 +02:00
Hadi 0c856fe2d2 update
Former-commit-id: cd7b35389e
2024-06-27 09:49:24 +00:00
Hadi 26452fbf23 update
Former-commit-id: c8c81e20ae
2024-06-27 09:20:44 +00:00
Hadi 6f2ad22139 golang bin to $PATH
Former-commit-id: 2972b4238c
2024-06-27 08:45:21 +00:00
Hadi e79b8ac14c update
Former-commit-id: b35d35f3d5
2024-06-27 08:42:42 +00:00
Hadi 9826faa7d0 update
Former-commit-id: bde31a4934
2024-06-27 08:32:24 +00:00
Hadi 68e5393f5d update
Former-commit-id: 170287e948
2024-06-27 08:31:28 +00:00
Hadi f3e7766229 create keybindings doc
Former-commit-id: 5d14ec00b5
2024-06-27 08:24:13 +00:00
Hadi 76f7b763cf Merge branch 'main' of https://github.com/anotherhadi/nixy
Former-commit-id: f6209d0754
2024-06-27 07:50:31 +00:00
Hadi 51191f82c7 update todo
Former-commit-id: 9e906c161a
2024-06-27 07:46:24 +00:00
Hadi e86c831653 Update
Former-commit-id: 071ce93f11
2024-06-27 00:11:54 +02:00
Hadi 91f8e392ef Update
Former-commit-id: a9939a0f54
2024-06-27 00:10:09 +02:00
Hadi 7ce04c1ae9 Update
Former-commit-id: 9cf68648eb
2024-06-26 22:18:39 +02:00
Hadi 1aff187d21 Update
Former-commit-id: 652377bd9b
2024-06-26 22:17:03 +02:00
Hadi 856c0c3212 Update
Former-commit-id: dd9c61b9ff
2024-06-26 22:13:14 +02:00
Hadi acfaa9d9e8 update
Former-commit-id: c00458c02a
2024-06-26 21:30:04 +02:00
Hadi 20307f9096 Update
Former-commit-id: 1df0f31dbc
2024-06-26 21:19:04 +02:00
Hadi ff1d70ba79 add md-table-of-contents source
Former-commit-id: 6a8382c79e
2024-06-26 14:46:22 +00:00
Hadi 188e34a575 update
Former-commit-id: 1ed7675095
2024-06-26 14:44:08 +00:00
Hadi 373c2d4546 Update
Former-commit-id: 57cab5fa52
2024-06-26 12:31:58 +02:00
Hadi ae1335d4d2 update
Former-commit-id: 3cfb9e733a
2024-06-26 10:32:58 +02:00
Hadi 70e9831d3a Update
Former-commit-id: bb4617160c
2024-06-25 22:22:26 +02:00
177 changed files with 1780 additions and 1232 deletions
+2 -2
View File
@@ -1,11 +1,11 @@
keys:
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
creation_rules:
- path_regex: secrets/laptop.yaml$
- path_regex: hosts/laptop/secrets/laptop.yaml$
key_groups:
- age:
- *primary
- path_regex: secrets/server.yaml$
- path_regex: hosts/server/secrets/server.yaml$
key_groups:
- age:
- *primary
+16 -11
View File
@@ -1,8 +1,8 @@
[//]: # (Title: Nixy)
[//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
[//]: # (Author: Hadi)
[//]: # (Date: 06/25/24)
[//]: # (Version: v2.0.0)
[//]: # (Date: 08/19/24)
[//]: # (Version: v2.1.0)
<div align="center">
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
@@ -15,7 +15,7 @@
<br>
<div align="center">
<a href="https://github.com/anotherhadi/nixy">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message=v2.0.0&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message=v2.1.0&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
</a>
<a href="https://github.com/anotherhadi/nixy/stargazers">
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=starship&logoColor=89b4fa">
@@ -51,14 +51,16 @@ It's a simple way to manage your system configuration and dotfiles.
## Architecture
- 🏠 `home` are the dotfiles and configuration files for the user
- 🏠 `home` are the dotfiles and configuration files for the users
- 'programs' is a collection of apps configured with home-manager
- 'scripts' is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- 'system' is some "desktop environment" configuration
- 'wallpapers' are... wallpapers
- 💻 `hosts` are the system configuration files
- 'laptop' is my configuration for my laptop with Nvidia
- 'server' is for my Nixos server (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
- 'guest' is a *template* that you can copy and modify for *your own system*
- 'laptop' is my configuration for my laptop with Nvidia that you can copy
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
- 🤫 `secrets` are the secrets files encrypted with sops-nix
## Installation
@@ -66,9 +68,9 @@ It's a simple way to manage your system configuration and dotfiles.
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
```
- Copy the `hosts/guest` folder, rename it to your system name, and change the variables inside the `variables.nix` file
- 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 the "yourhostname" one and change the lines containing '# CHANGEME')
- 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
@@ -82,6 +84,9 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
- [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 Licensey
- [LICENSE](LICENSE): MIT License
+32 -33
View File
@@ -4,45 +4,45 @@
## Laptop
The laptop configuration is used by a Omen 16 laptop w/ nvidia and an amd gpu running NixOS.
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 |
| | wlogout |
| Bar | waybar |
| Terminal | kitty |
| Shell | zsh |
| | tmux |
| | starship |
| | bat |
| | eza |
| | zoxide |
| | fzf |
| Editor | neovim(nixvim)|
| File manager | lf |
| | thunar |
| Browser | qutebrowser |
| Music | spicetify |
| Notifications | dunst |
| Launcher | wofi |
| DM | tuigreet |
| Secrets | sops-nix |
| Misc | lazygit |
| | neofetch |
| | cava |
| See [hosts/laptop](../hosts/laptop/)... | |
| Category | Name |
| --------------------------------------- | -------------- |
| WM | Hyprland |
| | hyprlock |
| | hyprpaper |
| | hypridle |
| | hyprcursor |
| | wlogout |
| Bar | waybar |
| Terminal | kitty |
| Shell | zsh |
| | tmux |
| | starship |
| | bat |
| | eza |
| | zoxide |
| | fzf |
| Editor | neovim(nixvim) |
| File manager | lf |
| | thunar |
| Browser | qutebrowser |
| Music | spicetify |
| Notifications | dunst |
| Launcher | wofi |
| DM | tuigreet |
| Secrets | sops-nix |
| Misc | lazygit |
| | neofetch |
| | cava |
| See [hosts/laptop](../hosts/laptop/)... | |
## Server
The server configuration is used by a home server running NixOS.
The configurations files can be found in the `hosts/server` directory.
I mainly use it for self hosting websites and services such as Nextcloud, Vaultwarden, ...
I mainly use it for self-hosting websites and services such as Nextcloud, Vaultwarden, ...
I exposed some services to the internet using a reverse proxy (Nginx) and cloudflare-dyndns, others are accessed through a tailscale network
### Apps
@@ -50,7 +50,6 @@ I exposed some services to the internet using a reverse proxy (Nginx) and cloudf
- Nextcloud
- Vaultwarden
- Adguard Home
- Unifi Controler
- Uptime Kuma
- "Jackflix"
- Jellyfin, Transmission, *arr
+10 -4
View File
@@ -1,13 +1,19 @@
# Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the `docs/TODO.md` file!
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the [TODO.md](./TODO.md) file!
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, task in todo, ...).
- Write your changes (new theme, bug fixes, task in to-do, ...).
- Create a Pull Request against the main branch of Nixy.
> [!WARNING]
> Don't push your host's files, secrets, or home configuration
> [!TIP]
> When wallpapers are added, run `./docs/scripts/compress_png.sh` and `./docs/scripts/create_preview_wallpapers.sh`
> [!TIP]
> To update the README, change the `./docs/src/README_template.md` and run `./docs/scripts/create_readme.sh`
> [!IMPORTANT]
> Don't push your host's folder
+38
View File
@@ -0,0 +1,38 @@
# Keybindings
The list of the keybindings working on Hyprland:
| Description | Keybinding |
|-----------------------------|--------------------------|
| Switch Workspace | SUPER + {Number} |
| Move app to Workspace | SHIFT + SUPER + {Number} |
| Kitty | SUPER + RETURN |
| Thunar | SUPER + E |
| Qutebrowser | SUPER + B |
| Bitwarden | SUPER + K |
| Peaclock | SUPER + C |
| Lock | SUPER + L |
| Powermenu | SUPER + X |
| Launcher | SUPER + SPACE |
| Close window | SUPER + Q |
| Toggle Floating | SUPER + T |
| Toggle Fullscreen | SUPER + F |
| Move focus left | SUPER + left |
| Move focus Right | SUPER + right |
| Move focus Up | SUPER + up |
| Move focus Down | SUPER + down |
| Screenshot window | SUPER + PRINT |
| Screenshot monitor | PRINT |
| Screenshot region | SHIFT + SUPER + PRINT |
| Screenshot region then edit | ALT PRINT |
| Turn off night shift | SUPER + F2 |
| Turn on night shift | SUPER + F3 |
| Choose sound output | SUPER + F5 |
| Move Window (mouse) | SUPER + mouse:272 |
| Resize Window (mouse) | SUPER + R |
| Toggle Mute | XF86AudioMute |
| Lock when closing Lid | switch:Lid Switch |
| Sound Up | XF86AudioRaiseVolume |
| Sound Down | XF86AudioLowerVolume |
| Brightness Up | XF86MonBrightnessUp |
| Brightness Down | XF86MonBrightnessDown |
+2
View File
@@ -39,6 +39,8 @@ Caffeine is a simple script that toggles hypridle (disable suspend & screenlock)
Blue light filter, using wlsunset
- `night-shift` # Toggle night shift
- `night-shift-status` # Return active/inactive
- `night-shift-on`
- `night-shift-off`
+1 -1
View File
@@ -4,7 +4,7 @@ Themes are defined in `hosts/themes`. Those themes define the colors, fonts, ico
You can change the selected theme by changing the import statement of your host's variables.nix file.
> [!TIP]
> To apply the theme to Duckduckgo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
## Create your theme
+21 -29
View File
@@ -3,40 +3,32 @@
feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md))
- [ ] Nixy
- [ ] Installation script ([install.sh](./scripts/install.sh) to test on a fresh install)
- [ ] Variables-template with defaults
- [ ] Themes
- [ ] Upload new wallpapers
- [ ] MacOS theme
- [ ] GithubFetch: Neofetch like, github calendar in the terminal
- [ ] Write a hyprland shortcuts markdown file (Parse the hyprland settings conf)
- [ ] Tofi (Wofi but terminal based)
- [ ] Waybar
- [ ] Caffeine status
- [ ] Night-shift status
- [ ] Qutebrowser
- [ ] !!! Bitwarden integration (I need this.)
- [ ] Hyprland
- [ ] Make hyprcursor work
- [ ] Animations based on app name
- [ ] Wofi: popin
- [ ] Wlogout: fade in
- [ ] Fix screenshots
- [ ] Implement Hyprcursor
echo "Compresing png files..."
- [ ] wofi: popin
- [ ] wlogout: fade in
- [ ] Fix screenshots (screenshot region's border shows up in the screenshot, hyprshot jq error?)
- [ ] Hyprlock themes
- [ ] Hypridle fix: suspend not working?
- [ ] Nixvim
- [ ] Telescope: find with file content
- [ ] Markdown snippets
- [ ] Whichkey: Description for keybindings
- [ ] Spelling
- [ ] Keymaps:
- Trouble
- Tagbar (actually not working)
- [ ] Disable background color for headlines.nvim for titles
- [ ] Backup system for some folders ($home/dev, $home/pictures, ...)
- [ ] Exclude file pattern (nodes modules, ...)
- [ ] Auto backup when a specific usb key is plugged
## Server
- [ ] Usb security for laptop & server, variable in variables.nix, disable for guest
- [ ] Server
- [ ] Bitcoin-git
- [ ] ServerFetch: Neofetch like, but for server: CPU, RAM, Disk, Network, Uptime, status (check with uptime kuma API)
- [ ] Ntfy auth file
- [ ] Launch transmission-openvpn on boot (see hosts/server/modules/jackflix/transmission.nix)
- [ ] Server configuration is actually broken, need to update with the new modules
- [ ] Jackflix V2
- Backup Radarr, Prowlarr, Sonarr config
- Take a look into buildarr
- [ ] Bitcoin-git: to test
- [ ] Ntfy auth file
- [ ] Secrets mode 0444: not secure
+39
View File
@@ -0,0 +1,39 @@
# 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) |
+2 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Compress png files in ./docs/src
# Compress png files in ./docs/src and ./home/wallpapers
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
@@ -14,6 +14,7 @@ for file in ./docs/src/*/*.png; do
optipng "$file"
done
# Wallpapers
for file in ./home/wallpapers/*.png; do
optipng "$file"
done
-29
View File
@@ -1,29 +0,0 @@
#!/usr/bin/env bash
# This script is used to copy my own configuration to the `./hosts/guest` one, and changing some settings
[[ -d "./hosts" ]] || (
echo "Folder ./hosts not found"
exit 1
)
LAPTOP_CONFIG="./hosts/laptop"
GUEST_CONFIG="./hosts/guest"
cp "$LAPTOP_CONFIG/configuration.nix" "$GUEST_CONFIG/configuration.nix"
cp "$LAPTOP_CONFIG/variables.nix" "$GUEST_CONFIG/variables.nix"
# Remove the NVIDIA driver import
config=$(cat "$LAPTOP_CONFIG/configuration.nix")
config=$(echo "$config" | sed 's/..\/shared\/nvidia/# ..\/shared\/nvidia/')
config=$(echo "$config" | sed 's/..\/shared\/prime/# ..\/shared\/prime/')
echo "$config" >"$GUEST_CONFIG/configuration.nix"
variables=$(cat "$LAPTOP_CONFIG/variables.nix")
variables=$(echo "$variables" | sed 's/112569860+anotherhadi@users.noreply.github.com/your_email/')
variables=$(echo "$variables" | sed 's/hadi/your_username/')
variables=$(echo "$variables" | sed 's/Hadi/your_username/')
variables=$(echo "$variables" | sed 's/sops = true/sops = false/')
variables=$(echo "$variables" | sed 's/obsidian = true/obsidian = false/')
variables=$(echo "$variables" | sed 's/tailscale = true/tailscale = false/')
echo "$variables" >"$GUEST_CONFIG/variables.nix"
+24
View File
@@ -0,0 +1,24 @@
#!/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"
+5 -1
View File
@@ -7,14 +7,18 @@
README_FILE="./README.md"
header=$(cat "./docs/src/header.md")
table_of_content=$(~/go/bin/md-table-of-contents ./docs/src/README_template.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"
-21
View File
@@ -1,21 +0,0 @@
#!/usr/bin/env bash
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
config=$( cat "./home/system/hyprland/default.nix")
# get text between
# bind = [
# and next ]
# Example:
# "$mod, E, exec, ${pkgs.xfce.thunar}/bin/thunar" # Description
# Steps:
# We should remove the ""
# $mod replace by Super key
# $shiftMod replace by "Super Shift"
# Concat with key
# Remove , exec,
# Remove variables and /bin/ if present
# Create a markdown table with everything
-78
View File
@@ -1,78 +0,0 @@
#!/usr/bin/env bash
# https://github.com/anotherhadi/nixy
# Installation script: Should be run on fresh nixos install.
printf "\n\e[0;92m- \e[0m\e[1;77mNixy's Installation Script\e[0;96m [anotherhadi/nixy]\e[0m"
# Check if we're on the good directory
[[ -f "./docs/scripts/install.sh" ]] || (
printf "\n\e[0;91mx \e[0m\e[1;77mNot in the project root directory\e[0m"
exit 1
)
DIR=$PWD
# Create a new configuration
read -rp $'\n\e[0;92m+\e[0m\e[1;77m Username: \e[0;96m' username
read -rp $'\n\e[0;92m+\e[0m\e[1;77m Hostname: \e[0;96m' hostname
HOST_DIR="./hosts/$hostname"
mkdir "$HOST_DIR"
nixos-generate-config --show-hardware-config >"$HOST_DIR/hardware-configuration.nix"
printf "\n\e[0;92m? \e[0m\e[1;77mInstall Nvidia drivers?\e[0;96m [y/N]\e[0m"
read -r yn
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
if [[ $yn == "y" || $yn == "yes" ]]; then
nvidia=true
else
nvidia=false
fi
printf "\n\e[0;92m? \e[0m\e[1;77mInstall prime?\e[0;96m [y/N]\e[0m"
read -r yn
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
if [[ $yn == "y" || $yn == "yes" ]]; then
prime=true
else
prime=false
fi
cp "$LAPTOP_CONFIG/configuration.nix" "$HOST_DIR/configuration.nix"
cp "$LAPTOP_CONFIG/variables.nix" "$HOST_DIR/variables.nix"
config=$(cat "$LAPTOP_CONFIG/configuration.nix")
if [[ $nvidia == false ]]; then
config=$(echo "$config" | sed 's/..\/shared\/nvidia/# ..\/shared\/nvidia/')
fi
if [[ $prime == false ]]; then
config=$(echo "$config" | sed 's/..\/shared\/prime/# ..\/shared\/prime/')
fi
echo "$config" >"$HOST_DIR/configuration.nix"
variables=$(cat "$LAPTOP_CONFIG/variables.nix")
variables=$(echo "$variables" | sed 's/112569860+anotherhadi@users.noreply.github.com/your_email/')
variables=$(echo "$variables" | sed "s/hadi/$username/")
variables=$(echo "$variables" | sed "s/nixy/$hostname/") # FIXME: Host name can be mixed with themes
variables=$(echo "$variables" | sed "s/Hadi/$username/")
variables=$(echo "$variables" | sed 's/sops = true/sops = false/')
variables=$(echo "$variables" | sed 's/obsidian = true/obsidian = false/')
variables=$(echo "$variables" | sed 's/tailscale = true/tailscale = false/')
echo "$variables" >"$HOST_DIR/variables.nix"
# Add it to the git index
git add .
printf "\n\e[0;92m+ \e[0m\e[1;77mHost added!\e[0m"
# REBUILD
printf "\n\e[0;92m? \e[0m\e[1;77mDo you want to rebuild?\e[0;96m [y/N]\e[0m"
read -r yn
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
if [[ $yn == "y" || $yn == "yes" ]]; then
sudo nixos-rebuild switch --flake "$DIR"#"$hostname"
fi
printf "\n\e[0;92m✓ \e[0m\e[1;77mDone!\e[0m"
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# A script to parse the Hyprland configuration to store keybindings in a table
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
KEYBINDINGS_FILE="./docs/KEYBINDINGS.md"
function getList() {
content=$1
name=$2
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
list=$(echo "$content" | tail +"$list_start")
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
list=$(echo "$list" | head -n"$list_end")
echo "$list"
}
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
config=$(cat "./home/system/hyprland/default.nix")
# Bind
bind=$(getList "$config" "bind")
# Bindm (mouse)
bindm=$(getList "$config" "bindm")
# Bindl (lock)
bindl=$(getList "$config" "bindl")
# Bindle (lock, repetition)
bindle=$(getList "$config" "bindle")
# Join the lists:
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
echo "# Keybindings" >"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "The list of the keybindings working on Hyprland:" >>"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "| Move app to Workspace | SHIFT + SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "$keybindings" | while read line; do
comment=$(echo "$line" | cut -d\# -f2)
line=$(echo "$line" | cut -d\# -f1)
line=${line:1:${#line}-3}
mod=$(echo "$line" | cut -d, -f1)
key=$(echo "$line" | cut -d, -f2)
dispatcher=$(echo "$line" | cut -d, -f3)
params=$(echo "$line" | cut -d, -f4)
[[ $mod == '$mod' ]] && mod="SUPER + "
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
echo "| $comment | $mod$key |" >>"$KEYBINDINGS_FILE"
done
pandoc -t commonmark_x "$KEYBINDINGS_FILE" -o "/tmp/keybindings.md"
mv "/tmp/keybindings.md" "$KEYBINDINGS_FILE"
+26
View File
@@ -0,0 +1,26 @@
#!/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"
+12 -7
View File
@@ -14,14 +14,16 @@ It's a simple way to manage your system configuration and dotfiles.
## Architecture
- 🏠 `home` are the dotfiles and configuration files for the user
- 🏠 `home` are the dotfiles and configuration files for the users
- 'programs' is a collection of apps configured with home-manager
- 'scripts' is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- 'system' is some "desktop environment" configuration
- 'wallpapers' are... wallpapers
- 💻 `hosts` are the system configuration files
- 'laptop' is my configuration for my laptop with Nvidia
- 'laptop' is my configuration for my laptop with Nvidia that you can copy
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
- 'guest' is a *template* that you can copy and modify for *your own system*
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
- 🤫 `secrets` are the secrets files encrypted with sops-nix
## Installation
@@ -29,9 +31,9 @@ It's a simple way to manage your system configuration and dotfiles.
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
```
- Copy the `hosts/guest` folder, rename it to your system name, and change the variables inside the `variables.nix` file
- 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 the "yourhostname" one and change the lines containing '# CHANGEME')
- 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
@@ -45,6 +47,9 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
- [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 Licensey
- [LICENSE](LICENSE): MIT License
+1 -1
View File
@@ -1,5 +1,5 @@
[//]: # (Title: Nixy)
[//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
[//]: # (Description: {description})
[//]: # (Author: Hadi)
[//]: # (Date: {date})
[//]: # (Version: {version})
Generated
+131 -150
View File
@@ -11,11 +11,11 @@
"sf-pro": "sf-pro"
},
"locked": {
"lastModified": 1718062482,
"narHash": "sha256-bGWs6XRVgzm1Uagx/EAnz9wnMQVImR1ZlVpAy+SDXCw=",
"lastModified": 1719591391,
"narHash": "sha256-sVTFewitXIYe5vBihbCFQGdBPdnT26kES1T05umBBnE=",
"owner": "Lyndeno",
"repo": "apple-fonts.nix",
"rev": "eeb3521706bfe21206b1301ff8e0876defa1b6dd",
"rev": "0e21619dad5b0d9ca2e050155e32448380547b06",
"type": "github"
},
"original": {
@@ -24,20 +24,52 @@
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1723920171,
"narHash": "sha256-dVCMrAe+D/5S91erhwQj2DSzHOVzAanWqoy+vPWB9DY=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "71d49670fe246cdaff4860b0effba0ab9f163b72",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"devshell": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1717408969,
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
"lastModified": 1722113426,
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"owner": "numtide",
"repo": "devshell",
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"type": "github"
},
"original": {
@@ -84,11 +116,11 @@
]
},
"locked": {
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"lastModified": 1722555600,
"narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github"
},
"original": {
@@ -120,29 +152,11 @@
"systems": "systems_3"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@@ -153,7 +167,10 @@
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-compat": [
"nixvim",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
@@ -165,11 +182,11 @@
]
},
"locked": {
"lastModified": 1718879355,
"narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=",
"lastModified": 1723202784,
"narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "8cd35b9496d21a6c55164d8547d9d5280162b07a",
"rev": "c7012d0c18567c889b948781bc74a501e92275d1",
"type": "github"
},
"original": {
@@ -207,11 +224,11 @@
]
},
"locked": {
"lastModified": 1719180626,
"narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=",
"lastModified": 1723986931,
"narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb",
"rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671",
"type": "github"
},
"original": {
@@ -228,11 +245,11 @@
]
},
"locked": {
"lastModified": 1719037157,
"narHash": "sha256-aOKd8+mhBsLQChCu1mn/W5ww79ta5cXVE59aJFrifM8=",
"lastModified": 1723399884,
"narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "cd886711998fe5d9ff7979fdd4b4cbd17b1f1511",
"rev": "086f619dd991a4d355c07837448244029fc2d9ab",
"type": "github"
},
"original": {
@@ -257,11 +274,11 @@
]
},
"locked": {
"lastModified": 1718450675,
"narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=",
"lastModified": 1722623071,
"narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6",
"rev": "912d56025f03d41b1ad29510c423757b4379eb1c",
"type": "github"
},
"original": {
@@ -272,6 +289,7 @@
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
@@ -281,11 +299,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1719338642,
"narHash": "sha256-oy2IpTiMTof5rUqdmUMYzn6Xugc8kTh629soVCyC3L4=",
"lastModified": 1724014641,
"narHash": "sha256-ub/HCvrxuvvqmnWpNdcyi/mp0G9+rNjtKHrA7cwyuis=",
"ref": "refs/heads/main",
"rev": "95782de966ec9e182d49b2f032b74a1101f423e8",
"revCount": 4889,
"rev": "f4045ab8d032186b7c5409cd9f05eeaa813320ba",
"revCount": 5109,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@@ -310,11 +328,11 @@
]
},
"locked": {
"lastModified": 1714869498,
"narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=",
"lastModified": 1721326555,
"narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "e06482e0e611130cd1929f75e8c1cf679e57d161",
"rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84",
"type": "github"
},
"original": {
@@ -339,11 +357,11 @@
]
},
"locked": {
"lastModified": 1717881852,
"narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=",
"lastModified": 1721324361,
"narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "ec6938c66253429192274d612912649a0cfe4d28",
"rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086",
"type": "github"
},
"original": {
@@ -364,11 +382,11 @@
]
},
"locked": {
"lastModified": 1719316102,
"narHash": "sha256-dmRz128j/lJmMuTYeCYPfSBRHHQO3VeH4PbmoyAhHzw=",
"lastModified": 1722869141,
"narHash": "sha256-0KU4qhyMp441qfwbirNg3+wbm489KnEjXOz2I/RbeFs=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "1f6bbec5954f623ff8d68e567bddcce97cd2f085",
"rev": "0252fd13e78e60fb0da512a212e56007515a49f7",
"type": "github"
},
"original": {
@@ -389,11 +407,11 @@
]
},
"locked": {
"lastModified": 1719067853,
"narHash": "sha256-mAnZG/eQy72Fp1ImGtqCgUrDumnR1rMZv2E/zgP4U74=",
"lastModified": 1721324119,
"narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "914f083741e694092ee60a39d31f693d0a6dc734",
"rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30",
"type": "github"
},
"original": {
@@ -410,11 +428,11 @@
]
},
"locked": {
"lastModified": 1719128254,
"narHash": "sha256-I7jMpq0CAOZA/i70+HDQO/ulLttyQu/K70cSESiMX7A=",
"lastModified": 1722924007,
"narHash": "sha256-+CQDamNwqO33REJLft8c26NbUi2Td083hq6SvAm2xkU=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "50581970f37f06a4719001735828519925ef8310",
"rev": "91010a5613ffd7ee23ee9263213157a1c422b705",
"type": "github"
},
"original": {
@@ -425,11 +443,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1719322773,
"narHash": "sha256-BqPxtFwXrpJQDh65NOIHX99pz2rtIMshG9Mt2xnnc5c=",
"lastModified": 1723310128,
"narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "caabc425565bbd5c8640630b0bf6974961a49242",
"rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
"type": "github"
},
"original": {
@@ -457,27 +475,27 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1719099622,
"narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=",
"lastModified": 1721524707,
"narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5e8e3b89adbd0be63192f6e645e0a54080004924",
"rev": "556533a23879fc7e5f98dd2e0b31a6911a213171",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.11",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1719075281,
"narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=",
"lastModified": 1723637854,
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af",
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github"
},
"original": {
@@ -489,11 +507,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1719254875,
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
"lastModified": 1723637854,
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github"
},
"original": {
@@ -503,22 +521,6 @@
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1686020360,
"narHash": "sha256-Wee7lIlZ6DIZHHLiNxU5KdYZQl0iprENXa/czzI6Cj4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4729ffac6fd12e26e5a8de002781ffc49b0e94b7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"devshell": "devshell",
@@ -530,14 +532,15 @@
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1719334058,
"narHash": "sha256-5uhWaoHhUYEPNC42NVW+srBgldwQKQE6dvW45rg0K3Q=",
"lastModified": 1724010176,
"narHash": "sha256-26fas5WqF8w1PMrMuJNde4bH6WSXFfRbh+L4krgPOzY=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "76a8790764ec983ca0659c952c4b6924c4e9bf1a",
"rev": "c52ba6785661f095221aa1e1eb24f57e89d7b2de",
"type": "github"
},
"original": {
@@ -546,32 +549,25 @@
"type": "github"
}
},
"nur": {
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1719337524,
"narHash": "sha256-bYp4//+XM+J1Y23sW6VjXAiCHUdq3aqgXue/tVeCxLw=",
"owner": "nix-community",
"repo": "NUR",
"rev": "37ae43594731d4d801f53dffe465006421c7c292",
"lastModified": 1723367906,
"narHash": "sha256-v1qA4WBGDI2uH/TVqRwuXSBP341W681psbzYJ8zrjog=",
"owner": "NuschtOS",
"repo": "search",
"rev": "6ca2c3ae05a915c160512bd41f6810f456c9b30d",
"type": "github"
},
"original": {
"id": "nur",
"type": "indirect"
}
},
"nurpkgs": {
"locked": {
"lastModified": 1719337524,
"narHash": "sha256-bYp4//+XM+J1Y23sW6VjXAiCHUdq3aqgXue/tVeCxLw=",
"owner": "nix-community",
"repo": "NUR",
"rev": "37ae43594731d4d801f53dffe465006421c7c292",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
@@ -595,8 +591,6 @@
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nixvim": "nixvim",
"nur": "nur",
"nurpkgs": "nurpkgs",
"sops-nix": "sops-nix",
"spicetify-nix": "spicetify-nix"
}
@@ -657,11 +651,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1719268571,
"narHash": "sha256-pcUk2Fg5vPXLUEnFI97qaB8hto/IToRfqskFqsjvjb8=",
"lastModified": 1723501126,
"narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3",
"rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
"type": "github"
},
"original": {
@@ -672,19 +666,21 @@
},
"spicetify-nix": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_4"
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1704167711,
"narHash": "sha256-kFDq+kf/Di/P8bq5sUP8pVwRkrSVrABksBjMPmLic3s=",
"owner": "the-argus",
"lastModified": 1723954588,
"narHash": "sha256-ZTy0Cfv0WLmsZJnFw3OPefzpFogIZU196twuv2B4iLU=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "1325416f951d6a82cfddb1289864ad782e2b87c4",
"rev": "e8c7709abf6fa96b42b8a175583703d6bad07f21",
"type": "github"
},
"original": {
"owner": "the-argus",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"type": "github"
}
@@ -734,21 +730,6 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
@@ -757,11 +738,11 @@
]
},
"locked": {
"lastModified": 1718522839,
"narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=",
"lastModified": 1723454642,
"narHash": "sha256-S0Gvsenh0II7EAaoc9158ZB4vYyuycvMGKGxIbERNAM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "68eb1dc333ce82d0ab0c0357363ea17c31ea1f81",
"rev": "349de7bc435bdff37785c2466f054ed1766173be",
"type": "github"
},
"original": {
@@ -787,11 +768,11 @@
]
},
"locked": {
"lastModified": 1718619174,
"narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=",
"lastModified": 1722365976,
"narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623",
"rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341",
"type": "github"
},
"original": {
+11 -37
View File
@@ -16,35 +16,28 @@
inputs.nixpkgs.follows = "nixpkgs";
};
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
spicetify-nix.url = "github:the-argus/spicetify-nix";
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
nurpkgs.url = "github:nix-community/NUR";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
};
outputs = inputs@{ nixpkgs, nur, ... }: {
outputs = inputs@{ nixpkgs, ... }: {
nixosConfigurations = {
nixy = nixpkgs.lib.nixosSystem {
nixy = nixpkgs.lib.nixosSystem { # CHANGEME
system = "x86_64-linux";
modules = [
./hosts/laptop/configuration.nix
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
{ _module.args = { inherit inputs; }; }
inputs.nixos-hardware.nixosModules.omen-16-n0280nd # CHANGEME
inputs.home-manager.nixosModules.home-manager
{
nixpkgs.overlays = [ nur.overlay ];
_module.args = { inherit inputs; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users."hadi" = import ./home/laptop.nix;
extraSpecialArgs = { inherit inputs; };
};
}
./hosts/laptop/configuration.nix # CHANGEME
];
};
@@ -55,31 +48,12 @@
./hosts/server/configuration.nix
inputs.home-manager.nixosModules.home-manager
{
nixpkgs.overlays = [ nur.overlay ];
nixpkgs.overlays = [ inputs.nurpkgs.overlay ];
_module.args = { inherit inputs; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users."hadi" = import ./home/server.nix;
extraSpecialArgs = { inherit inputs; };
};
}
];
};
yourhostname = nixpkgs.lib.nixosSystem { # CHANGEME
system = "x86_64-linux";
modules = [
./hosts/yourhostname/configuration.nix # CHANGEME
inputs.home-manager.nixosModules.home-manager
{
nixpkgs.overlays = [ nur.overlay ];
_module.args = { inherit inputs; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users."yourusername" = import # CHANGEME
./home/laptop.nix; # you can also create a new ./home/yourhostname.nix
users."hadi" = import ./hosts/server/home.nix;
extraSpecialArgs = { inherit inputs; };
};
}
+4 -1
View File
@@ -3,7 +3,10 @@
enable = true;
colorschemes.catppuccin = {
enable = true;
settings = { transparent_background = true; };
settings = {
transparent_background = true;
flavour = "mocha";
};
};
};
}
+8 -22
View File
@@ -1,31 +1,17 @@
{ inputs, ... }: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
./plugins/auto-pairs.nix
./plugins/bufferline.nix
./plugins/lazygit.nix
./plugins/telescope.nix
./plugins/nvim-tree.nix
./plugins/lightline.nix
./plugins/git.nix
./plugins/cmp.nix
./plugins/none-ls.nix
./plugins/wilder.nix
./plugins/dashboard.nix
./plugins/lsp.nix
./plugins/treesitter.nix
./plugins/toggleterm.nix
./plugins/copilot.nix
./plugins/whichkey.nix
./plugins/alpha.nix
./plugins/keymaps.nix
./plugins/comment.nix
./plugins/oil.nix
./plugins/trouble.nix
./plugins/tmux-navigator.nix
./plugins/noice.nix
./plugins/obsidian.nix
./plugins/image.nix
./plugins/markdown.nix
./plugins/tree.nix
./plugins/ui.nix
./plugins/utils.nix
./plugins/zen-mode.nix
./options.nix
./colorscheme.nix
./keymaps.nix
];
}
+24
View File
@@ -0,0 +1,24 @@
{
programs.nixvim.keymaps = [
{
key = "<leader>fm";
action = "<cmd>lua vim.lsp.buf.format()<cr>";
options.desc = "LSP Format";
}
{
key = "<leader>w";
action = "<cmd>set wrap!<cr>";
options.desc = "Toggle word wrapping";
}
{
key = "<leader>W";
action = "<cmd>set linebreak!<cr>";
options.desc = "Toggle linebreak";
}
{
key = "<leader>z";
action = "<cmd>ZenMode<cr>";
options.desc = "ZenMode";
}
];
}
+2 -2
View File
@@ -24,7 +24,7 @@
wildmode = "list:longest";
completeopt = [ "menuone" "noselect" ];
signcolumn = "yes";
cursorline = true;
cursorline = false;
scrolloff = 8;
mouse = "a";
@@ -32,6 +32,6 @@
swapfile = false;
undofile = true;
conceallevel = 2;
conceallevel = 3;
};
}
@@ -1 +0,0 @@
{ programs.nixvim.plugins.nvim-autopairs = { enable = true; }; }
@@ -1 +0,0 @@
{ programs.nixvim.plugins.bufferline = { enable = true; }; }
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.comment = { enable = true; }; }
-5
View File
@@ -1,5 +0,0 @@
{
programs.nixvim.plugins.copilot-vim = {
enable = true;
};
}
@@ -71,7 +71,22 @@
type = "button";
val = " NixOs Config";
on_press.__raw =
"function() vim.cmd[[e ${config.var.configDirectory}]] end";
"function() vim.cmd[[Neotree ${config.var.configDirectory}]] end";
opts = {
shortcut = "nc";
position = "center";
cursor = 3;
width = 50;
align_shortcut = "right";
hl_shortcut = "AlphaShortcutColor";
hl = "AlphaTextColor";
};
}
{
type = "button";
val = " Keybindings";
on_press.__raw =
"function() vim.cmd[[e ${config.var.configDirectory}/docs/KEYBINDINGS.md]] end";
opts = {
shortcut = "nc";
position = "center";
-6
View File
@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.gitsigns = {
enable = true;
settings = { current_line_blame = false; };
};
}
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.image = { enable = true; }; }
-71
View File
@@ -1,71 +0,0 @@
{
programs.nixvim.keymaps = [
{
key = "<leader>e";
action = "<CMD>Neotree toggle<CR>";
}
{
key = "<space>fm";
action = "<CMD>lua vim.lsp.buf.format()<CR>";
}
{
key = "<leader>ot";
action = "<cmd>lua require('obsidian').util.toggle_checkbox()<cr>";
}
{
key = "<leader>oo";
action = "<cmd>ObsidianQuickSwitch<cr>";
}
{
key = "<leader>on";
action = "<cmd>ObsidianNew<cr>";
}
{
key = "<leader>of";
action = "<cmd>ObsidianSearch<cr>";
}
{
key = "<leader>oi";
action = "<cmd>ObsidianPasteImg<cr>";
}
{
key = "<leader>E";
action = "<cmd>Oil<cr>";
}
{
key = "<leader>t";
action = "<cmd>TroubleToggle<cr>";
}
{
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>";
}
# Terminal Mappings
{
mode = "t";
key = "<esc>";
action = "<C-\\><C-n>";
}
];
}
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.lazygit = { enable = true; }; }
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.lualine = { enable = true; }; }
+26
View File
@@ -11,6 +11,14 @@
tailwindcss.enable = true;
html.enable = true;
svelte.enable = true;
marksman.enable = true;
ltex = {
enable = false;
settings = {
enabled = false;
language = "en";
};
};
};
keymaps.lspBuf = {
"gd" = "definition";
@@ -20,5 +28,23 @@
"K" = "hover";
};
};
none-ls = {
enable = true;
sources = {
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
tidy.enable = true;
shellharden.enable = true;
shfmt.enable = true;
};
};
};
};
}
+133
View File
@@ -0,0 +1,133 @@
{
programs.nixvim.plugins = {
mkdnflow = {
enable = true;
mappings = {
# Main
MkdnEnter = {
key = "<CR>";
modes = [ "n" "v" "i" ];
};
# Links
MkdnCreateLink = false;
MkdnCreateLinkFromClipboard = {
key = "<leader>lc";
modes = [ "n" "v" ];
};
MkdnDestroyLink = {
key = "<leader>dl";
modes = "n";
};
MkdnFollowLink = false;
MkdnNextLink = {
key = "<Tab>";
modes = "n";
};
MkdnYankAnchorLink = {
key = "ya";
modes = "n";
};
MkdnYankFileAnchorLink = {
key = "yfa";
modes = "n";
};
MkdnPrevLink = {
key = "<S-Tab>";
modes = "n";
};
MkdnDecreaseHeading = {
key = "-";
modes = "n";
};
MkdnExtendList = false;
MkdnFoldSection = {
key = "<leader>ff";
modes = "n";
};
MkdnUnfoldSection = {
key = "<leader>fu";
modes = "n";
};
MkdnGoBack = {
key = "<BS>";
modes = "n";
};
MkdnGoForward = {
key = "<Del>";
modes = "n";
};
MkdnIncreaseHeading = {
key = "+";
modes = "n";
};
MkdnMoveSource = {
key = "<F2>";
modes = "n";
};
MkdnNewListItem = false;
MkdnNewListItemAboveInsert = {
key = "O";
modes = "n";
};
MkdnNewListItemBelowInsert = {
key = "o";
modes = "n";
};
MkdnNextHeading = {
key = "]]";
modes = "n";
};
MkdnPrevHeading = {
key = "[[";
modes = "n";
};
MkdnSTab = false;
MkdnTab = false;
MkdnTableFormat = {
key = "<leader>ft";
modes = "n";
};
MkdnTableNewColAfter = {
key = "<leader>ic";
modes = "n";
};
MkdnTableNewColBefore = {
key = "<leader>iC";
modes = "n";
};
MkdnTableNewRowAbove = {
key = "<leader>iR";
modes = "n";
};
MkdnTableNewRowBelow = {
key = "<leader>ir";
modes = "n";
};
MkdnTableNextCell = {
key = "<S-Tab>";
modes = "i";
};
MkdnTableNextRow = false;
MkdnTablePrevCell = {
key = "<M-Tab>";
modes = "i";
};
MkdnTablePrevRow = {
key = "<M-CR>";
modes = "i";
};
MkdnToggleToDo = {
key = "<C-Space>";
modes = [ "n" "v" ];
};
MkdnUpdateNumbering = {
key = "<leader>nn";
modes = "n";
};
};
};
};
}
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.noice = { enable = true; }; }
-20
View File
@@ -1,20 +0,0 @@
{
programs.nixvim.plugins.none-ls = {
enable = true;
sources = {
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
tidy.enable = true;
shellharden.enable = true;
shfmt.enable = true;
};
};
};
}
-5
View File
@@ -1,5 +0,0 @@
{
programs.nixvim.plugins.neo-tree = {
enable = true;
};
}
-9
View File
@@ -1,9 +0,0 @@
{ config, ... }: {
programs.nixvim.plugins.obsidian = {
enable = config.var.obsidian;
settings = {
dir = "~/nextcloud/Notes";
disable_frontmatter = true;
};
};
}
-6
View File
@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.oil = {
enable = true;
settings = { default_file_explorer = false; };
};
}
-13
View File
@@ -1,13 +0,0 @@
{
programs.nixvim.plugins.telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
#"<C-p>" = {
# action = "git_files";
# desc = "Telescope Git Files";
#};
};
extensions.fzf-native = { enable = true; };
};
}
@@ -1 +0,0 @@
{ programs.nixvim.plugins.tmux-navigator = { enable = true; }; }
@@ -1,9 +0,0 @@
{
programs.nixvim.plugins.toggleterm = {
enable = true;
settings = {
open_mapping = "[[<c-t>]]";
direction = "horizontal";
};
};
}
+61
View File
@@ -0,0 +1,61 @@
{
programs.nixvim = {
plugins = {
neo-tree.enable = true;
oil = {
enable = true;
settings = {
default_file_explorer = false;
skip_confirm_for_simple_edits = true;
win_options = {
concealcursor = "ncv";
conceallevel = 3;
cursorcolumn = false;
foldcolumn = "0";
list = false;
signcolumn = "no";
spell = false;
wrap = false;
};
float = { padding = 5; };
keymaps = {
"-" = "actions.parent";
"b" = "actions.parent";
"<C-c>" = "actions.close";
"<C-h>" = "actions.select_split";
"<C-l>" = "actions.refresh";
"<C-p>" = "actions.preview";
"<C-s>" = "actions.select_vsplit";
"<C-t>" = "actions.select_tab";
"<CR>" = "actions.select";
_ = "actions.open_cwd";
"`" = "actions.cd";
"g." = "actions.toggle_hidden";
"g?" = "actions.show_help";
"g\\" = "actions.toggle_trash";
gs = "actions.change_sort";
gx = "actions.open_external";
"~" = "actions.tcd";
};
};
};
};
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";
}
];
};
}
-10
View File
@@ -1,10 +0,0 @@
{
programs.nixvim.plugins = {
treesitter = {
enable = true;
nixGrammars = true;
indent = true;
};
treesitter-context.enable = true;
};
}
-1
View File
@@ -1 +0,0 @@
{ programs.nixvim.plugins.trouble = { enable = true; }; }
+31
View File
@@ -0,0 +1,31 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ ctags ];
programs.nixvim = {
plugins = {
lualine.enable = true;
noice.enable = true;
gitsigns = {
enable = true;
settings.current_line_blame = false;
};
bufferline.enable = true;
trouble.enable = true;
which-key.enable = true;
headlines = {
enable = true;
settings = {
markdown = {
codeblock_highlight = false;
};
};
};
nvim-colorizer.enable = true;
# tagbar.enable = true;
};
keymaps = [{
key = "<leader>t";
action = "<cmd>TroubleToggle<cr>";
options.desc = "Trouble";
}];
};
}
+51
View File
@@ -0,0 +1,51 @@
{ config, ... }: {
programs.nixvim = {
highlightOverride = {
FloatBorder.fg = "#${config.var.theme.colors.accent}";
};
plugins = {
copilot-vim.enable = true;
flash.enable = true;
# image.enable = true;
tmux-navigator.enable = true;
comment.enable = true;
nvim-autopairs.enable = true;
friendly-snippets.enable = true;
telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
"<leader> " = "find_files";
};
extensions.fzf-native = { enable = true; };
};
treesitter = {
enable = true;
nixGrammars = true;
settings = {
indent.enable = true;
highlight.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>";
}
];
};
}
-3
View File
@@ -1,3 +0,0 @@
{
programs.nixvim.plugins.which-key.enable=true;
}
-6
View File
@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.wilder = {
enable = true;
modes = [ ":" "/" "?" ];
};
}
+31
View File
@@ -0,0 +1,31 @@
{
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;
};
};
};
}
+11 -4
View File
@@ -23,8 +23,8 @@ let
{"title": "Chat GPT", "url": "https://chat.openai.com/", "icon": "󰭹"},
{"title": "Nixvim", "url": "https://nix-community.github.io/nixvim/", "icon": ""},
{"title": "Hyprland Wiki", "url": "https://wiki.hyprland.org/", "icon": "󰖬"},
{"title": "Nerdfont", "url": "https://www.nerdfonts.com/cheat-sheet", "icon": ""},
{"title": "Youtube", "url": "https://youtube.com", "icon": "󰗃"},
{"title": "Figma", "url": "https://figma.com", "icon": ""},
{"title": "Server", "url": "https://home.anotherhadi.com", "icon": ""}
]
},
@@ -48,8 +48,8 @@ let
src = pkgs.fetchFromGitHub {
owner = "anotherhadi";
repo = "homepage";
rev = "40286c5e03bcfb9993cce354b4f12c00a1b4966d";
hash = "sha256-zlJ/bzFWE64HpUCxiRT5E9wrjVVwSTSgIOrifWKxphU=";
rev = "b77d35ed3596eb451bd2ec78063d7cc6e73c773d";
hash = "sha256-j/40922kfAh6zqJ4IRYpr66YXNNYsxuXwZ0aiJFJea0=";
};
# npmDepsHash = lib.fakeHash;
@@ -73,7 +73,10 @@ let
in {
imports = [ ./duckduckgo-colorscheme.nix ];
imports = [
./duckduckgo-colorscheme.nix
# ./userscripts.nix
];
programs.qutebrowser = {
enable = true;
@@ -205,6 +208,8 @@ in {
"dark"; # Enable dark mode for websites that support it
};
statusbar.show = "in-mode";
fonts = { default_family = "${config.var.theme.font}"; };
completion = {
@@ -224,6 +229,7 @@ in {
autoplay = false;
javascript.clipboard = "access";
javascript.enabled = true;
webgl = true;
pdfjs = true;
};
@@ -328,6 +334,7 @@ in {
config.unbind("gt")
c.tabs.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
c.statusbar.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
config.load_autoconfig(True)
'';
+14
View File
@@ -0,0 +1,14 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
keyutils
python3
python311Packages.pyperclip
python312Packages.tldextract
];
xdg.configFile."qutebrowser/userscripts/bitwarden" = {
source = ./userscripts/qute-bitwarden.py;
executable = true;
};
}
@@ -0,0 +1,291 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: Chris Braun (cryzed) <cryzed@googlemail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""
Insert login information using Bitwarden CLI and a dmenu-compatible application
(e.g. dmenu, rofi -dmenu, ...).
"""
USAGE = """The domain of the site has to be in the name of the Bitwarden entry, for example: "github.com/cryzed" or
"websites/github.com". The login information is inserted by emulating key events using qutebrowser's fake-key command in this manner:
[USERNAME]<Tab>[PASSWORD], which is compatible with almost all login forms.
If enabled, with the `--totp` flag, it will also move the TOTP code to the
clipboard, much like the Firefox add-on.
You must log into Bitwarden CLI using `bw login` prior to use of this script.
The session key will be stored using keyctl for the number of seconds passed to
the --auto-lock option.
To use in qutebrowser, run: `spawn --userscript qute-bitwarden`
"""
EPILOG = """Dependencies: tldextract (Python 3 module), pyperclip (optional
Python module, used for TOTP codes), Bitwarden CLI (1.7.4 is known to work
but older versions may well also work)
WARNING: The login details are viewable as plaintext in qutebrowser's debug log
(qute://log) and might be shared if you decide to submit a crash report!"""
import argparse
import enum
import functools
import os
import shlex
import subprocess
import sys
import json
import tldextract
argument_parser = argparse.ArgumentParser(
description=__doc__,
usage=USAGE,
epilog=EPILOG,
)
argument_parser.add_argument('url', nargs='?', default=os.getenv('QUTE_URL'))
argument_parser.add_argument('--dmenu-invocation', '-d', default='wofi --dmenu -i',
help='Invocation used to execute a dmenu-provider')
argument_parser.add_argument('--password-prompt-invocation', '-p', default='rofi -dmenu -p "Master Password" -password -lines 0',
help='Invocation used to prompt the user for their Bitwarden password')
argument_parser.add_argument('--no-insert-mode', '-n', dest='insert_mode', action='store_false',
help="Don't automatically enter insert mode")
argument_parser.add_argument('--totp', '-t', action='store_true',
help="Copy TOTP key to clipboard")
argument_parser.add_argument('--io-encoding', '-i', default='UTF-8',
help='Encoding used to communicate with subprocesses')
argument_parser.add_argument('--merge-candidates', '-m', action='store_true',
help='Merge pass candidates for fully-qualified and registered domain name')
argument_parser.add_argument('--auto-lock', type=int, default=900,
help='Automatically lock the vault after this many seconds')
group = argument_parser.add_mutually_exclusive_group()
group.add_argument('--username-only', '-e',
action='store_true', help='Only insert username')
group.add_argument('--password-only', '-w',
action='store_true', help='Only insert password')
group.add_argument('--totp-only', '-T',
action='store_true', help='Only insert totp code')
stderr = functools.partial(print, file=sys.stderr)
class ExitCodes(enum.IntEnum):
SUCCESS = 0
FAILURE = 1
# 1 is automatically used if Python throws an exception
NO_PASS_CANDIDATES = 2
COULD_NOT_MATCH_USERNAME = 3
COULD_NOT_MATCH_PASSWORD = 4
def qute_command(command):
with open(os.environ['QUTE_FIFO'], 'w') as fifo:
fifo.write(command + '\n')
fifo.flush()
def ask_password(password_prompt_invocation):
process = subprocess.run(
shlex.split(password_prompt_invocation),
text=True,
stdout=subprocess.PIPE,
)
if process.returncode > 0:
raise Exception('Could not unlock vault')
master_pass = process.stdout.strip()
return subprocess.check_output(
['bw', 'unlock', '--raw', master_pass],
text=True,
).strip()
def get_session_key(auto_lock, password_prompt_invocation):
if auto_lock == 0:
subprocess.call(['keyctl', 'purge', 'user', 'bw_session'])
return ask_password(password_prompt_invocation)
else:
process = subprocess.run(
['keyctl', 'request', 'user', 'bw_session'],
text=True,
stdout=subprocess.PIPE,
)
key_id = process.stdout.strip()
if process.returncode > 0:
session = ask_password(password_prompt_invocation)
if not session:
raise Exception('Could not unlock vault')
key_id = subprocess.check_output(
['keyctl', 'add', 'user', 'bw_session', session, '@u'],
text=True,
).strip()
if auto_lock > 0:
subprocess.call(['keyctl', 'timeout', str(key_id), str(auto_lock)])
return subprocess.check_output(
['keyctl', 'pipe', str(key_id)],
text=True,
).strip()
def pass_(domain, encoding, auto_lock, password_prompt_invocation):
session_key = get_session_key(auto_lock, password_prompt_invocation)
process = subprocess.run(
['bw', 'list', 'items', '--session', session_key, '--url', domain],
capture_output=True,
)
err = process.stderr.decode(encoding).strip()
if err:
msg = 'Bitwarden CLI returned for {:s} - {:s}'.format(domain, err)
stderr(msg)
if process.returncode:
return '[]'
out = process.stdout.decode(encoding).strip()
return out
def get_totp_code(selection_id, domain_name, encoding, auto_lock, password_prompt_invocation):
session_key = get_session_key(auto_lock, password_prompt_invocation)
process = subprocess.run(
['bw', 'get', 'totp', '--session', session_key, selection_id],
capture_output=True,
)
err = process.stderr.decode(encoding).strip()
if err:
# domain_name instead of selection_id to make it more user-friendly
msg = 'Bitwarden CLI returned for {:s} - {:s}'.format(domain_name, err)
stderr(msg)
if process.returncode:
return '[]'
out = process.stdout.decode(encoding).strip()
return out
def dmenu(items, invocation, encoding):
command = shlex.split(invocation)
process = subprocess.run(command, input='\n'.join(
items).encode(encoding), stdout=subprocess.PIPE)
return process.stdout.decode(encoding).strip()
def fake_key_raw(text):
for character in text:
# Escape all characters by default, space requires special handling
sequence = '" "' if character == ' ' else r'\{}'.format(character)
qute_command('fake-key {}'.format(sequence))
def main(arguments):
if not arguments.url:
argument_parser.print_help()
return ExitCodes.FAILURE
extract_result = tldextract.extract(arguments.url)
# Try to find candidates using targets in the following order: fully-qualified domain name (includes subdomains),
# the registered domain name and finally: the IPv4 address if that's what
# the URL represents
candidates = []
for target in filter(None, [
extract_result.fqdn,
extract_result.registered_domain,
extract_result.subdomain + '.' + extract_result.domain,
extract_result.domain,
extract_result.ipv4]):
target_candidates = json.loads(
pass_(
target,
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
if not target_candidates:
continue
candidates = candidates + target_candidates
if not arguments.merge_candidates:
break
else:
if not candidates:
stderr('No pass candidates for URL {!r} found!'.format(
arguments.url))
return ExitCodes.NO_PASS_CANDIDATES
if len(candidates) == 1:
selection = candidates.pop()
else:
choices = ['{:s} | {:s}'.format(c['name'], c['login']['username']) for c in candidates]
choice = dmenu(choices, arguments.dmenu_invocation, arguments.io_encoding)
choice_tokens = choice.split('|')
choice_name = choice_tokens[0].strip()
choice_username = choice_tokens[1].strip()
selection = next((c for (i, c) in enumerate(candidates)
if c['name'] == choice_name
and c['login']['username'] == choice_username),
None)
# Nothing was selected, simply return
if not selection:
return ExitCodes.SUCCESS
username = selection['login']['username']
password = selection['login']['password']
totp = selection['login']['totp']
if arguments.username_only:
fake_key_raw(username)
elif arguments.password_only:
fake_key_raw(password)
elif arguments.totp_only:
# No point in moving it to the clipboard in this case
fake_key_raw(
get_totp_code(
selection['id'],
selection['name'],
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
else:
# Enter username and password using fake-key and <Tab> (which seems to work almost universally), then switch
# back into insert-mode, so the form can be directly submitted by
# hitting enter afterwards
fake_key_raw(username)
qute_command('fake-key <Tab>')
fake_key_raw(password)
if arguments.insert_mode:
qute_command('mode-enter insert')
# If it finds a TOTP code, it copies it to the clipboard,
# which is the same behavior as the Firefox add-on.
if not arguments.totp_only and totp and arguments.totp:
# The import is done here, to make pyperclip an optional dependency
import pyperclip
pyperclip.copy(
get_totp_code(
selection['id'],
selection['name'],
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
return ExitCodes.SUCCESS
if __name__ == '__main__':
arguments = argument_parser.parse_args()
sys.exit(main(arguments))
-2
View File
@@ -7,7 +7,5 @@
./tmux.nix
./lazygit.nix
./eza.nix
./fetch
./lf
];
}
+1
View File
@@ -40,6 +40,7 @@
set -g @catppuccin_directory_text "#{pane_current_path}"
set -g @catppuccin_status_background "default"
set-option -g default-terminal "screen-256color"
'';
}
];
+8 -4
View File
@@ -2,6 +2,8 @@
home.packages = with pkgs; [ bat ripgrep tldr ];
home.sessionPath = [ "$HOME/go/bin" ];
programs.zsh = {
enable = true;
enableCompletion = true;
@@ -47,16 +49,18 @@
sl = "ls";
open = "${pkgs.xdg_utils}/bin/xdg-open";
icat = "${pkgs.kitty}/bin/kitty +kitten icat";
note = "vim ~/Nextcloud/obsidian";
obs = "vim ~/Nextcloud/obsidian";
wireguard-import = "nmcli connection import type wireguard file";
vault = "nvim $HOME/nextcloud/Notes/";
neorg =
"cd ~/nextcloud/neorg && vim -c ':ZenMode' -c ':Telescope find_files' index.norg";
notes =
"cd ~/nextcloud/Notes && vim -c ':ZenMode' -c ':Telescope find_files' index.md";
note = "notes";
# git
ga = "git add";
gc = "git commit";
gcm = "git commit -m";
gcu = "git commit -am 'Update'";
gcu = "git add . && git commit -m 'Update'";
gp = "git push";
gpl = "git pull";
gs = "git status";
+2 -1
View File
@@ -1,5 +1,5 @@
{ pkgs, config, lib, inputs, ... }:
let spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default;
let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in {
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
@@ -33,6 +33,7 @@ in {
lastfm
historyShortcut
hidePodcasts
adblock
fullAppDisplay
shuffle
];
+39
View File
@@ -0,0 +1,39 @@
{
programs.yazi = {
enable = true;
enableZshIntegration = true;
settings = {
log = { enabled = false; };
manager = {
show_hidden = false;
sort_by = "modified";
sort_dir_first = 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";
}
];
};
};
};
}
+11 -2
View File
@@ -1,7 +1,7 @@
{ pkgs, ... }:
let
caffeine-status = pkgs.writeShellScriptBin "caffeine-status" ''
[[ -f /tmp/caffeine ]] && echo "active" || echo "inactive"
[[ -f /tmp/caffeine ]] && echo "1" || echo "0"
'';
caffeine = pkgs.writeShellScriptBin "caffeine" ''
@@ -17,4 +17,13 @@ let
notif "caffeine" "$message"
'';
in { home.packages = [ caffeine-status caffeine ]; }
caffeine-status-icon = pkgs.writeShellScriptBin "caffeine-status-icon" ''
status=$(caffeine-status)
if [[ $status == "1" ]]; then
echo "󰅶"
else
echo "󰾪"
fi
'';
in { home.packages = [ caffeine-status caffeine caffeine-status-icon ]; }
-1
View File
@@ -12,6 +12,5 @@
./battery
./compress
./misc
./tofi
];
}
+19 -3
View File
@@ -15,7 +15,7 @@ let
notif "night-shift" "$message"
'';
night-shift-toggle = pkgs.writeShellScriptBin "night-shift-toggle" ''
night-shift = pkgs.writeShellScriptBin "night-shift" ''
if pgrep wlsunset; then
night-shift-off
else
@@ -24,11 +24,27 @@ let
'';
night-shift-status = pkgs.writeShellScriptBin "night-shift-status" ''
if pgrep wlsunset; then
if [[ $(pgrep wlsunset) ]]; then
echo "1"
else
echo "0"
fi
'';
in { home.packages = [ night-shift-on night-shift-off night-shift-toggle night-shift-status ]; }
night-shift-status-icon =
pkgs.writeShellScriptBin "night-shift-status-icon" ''
if [[ $(pgrep wlsunset) ]]; then
echo "󰖔"
else
echo "󰖕"
fi
'';
in {
home.packages = [
night-shift-on
night-shift-off
night-shift
night-shift-status
night-shift-status-icon
];
}
+6 -9
View File
@@ -12,11 +12,11 @@ let
# "icon;name;command"[]
apps=(
";Rebuild;nixy-rebuild"
";Upgrade;nixy-upgrade"
";Update;nixy-update"
";Collect Garbage;nixy-gc"
";Clean Boot Menu;nixy-cb"
";Rebuild;nixy rebuild"
";Upgrade;nixy upgrade"
";Update;nixy update"
";Collect Garbage;nixy gc"
";Clean Boot Menu;nixy cb"
)
# Apply default icons if empty:
@@ -54,7 +54,4 @@ let
fi
'';
in {
home.packages =
[ nixy ];
}
in { home.packages = [ nixy ]; }
-1
View File
@@ -1,7 +1,6 @@
{ pkgs, ... }:
let
# TODO: Broken - hypshot not working (jq error)
screenshot = pkgs.writeShellScriptBin "screenshot" ''
if [[ $2 == "swappy" ]];then
folder="/tmp"
-62
View File
@@ -1,62 +0,0 @@
{ pkgs, config, ... }:
let
tofi = pkgs.writeShellScriptBin "tofi" ''
hyprexec="hyprctl dispatch exec"
function exec() {
$@
}
function ui(){
DEFAULT_ICON="󰘳"
# "icon;name;command"[]
apps=(
";Nixy;nixy"
";Nerdfont FZF;nerdfont-fzf"
";Brightness Up;brightness-up"
";Brightness Down;brightness-down"
";Sound Up;sound-up"
";Sound Down;sound-down"
";Sound Toggle Mute;sound-toggle"
";Sound Change Output;sound-output"
";Caffeine;caffeine"
";Night Shift Toggle;night-shift-toggle"
";Firefox;$hyprexec firefox"
";Qutebrowser;$hyprexec qutebrowser"
";Kitty;$hyprexec kitty"
";Thunar;$hyprexec thunar"
";Powermenu;powermenu"
";Wofi;menu"
";Lock;lock"
";Bitwarden;$hyprexec bitwarden"
";Clock; peaclock"
";Nextcloud;$hyprexec nextcloud"
";Spotify;$hyprexec spotify"
";Btop;btop"
";Cava;cava"
";Discord;$hyprexec discord"
";Vlc;$hyprexec vlc"
";Obsidian;$hyprexec obsidian"
)
# Apply default icons if empty:
for i in "''${!apps[@]}"; do
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
done
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
[[ -z $fzf_result ]] && exit 0
fzf_result=''${fzf_result/ /;}
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
exec "$command"
exit 0
}
ui
'';
in { home.packages = [ tofi ]; }
+2 -2
View File
@@ -5,8 +5,8 @@
services.dunst = {
enable = true;
iconTheme = {
name = "Adwaita-Dark";
package = pkgs.gnome.adwaita-icon-theme;
name = "Moka";
package = pkgs.moka-icon-theme;
};
settings = {
global = {

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