Compare commits
175 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cf9d5acd95 | |||
| 98fed47741 | |||
| ed57391eb0 | |||
| fc4a44c023 | |||
| c158f17c63 | |||
| e61bd9ae14 | |||
| 4f6b899643 | |||
| 5d2cf3e5dd | |||
| befddfe476 | |||
| 204cb03922 | |||
| eebbb9f5e6 | |||
| ad76bb3451 | |||
| 0564357a9c | |||
| b44672d16c | |||
| 1164bebee4 | |||
| 29129215a5 | |||
| bc08dc1949 | |||
| 6e825eef7f | |||
| 6ae4d4ba80 | |||
| c34911ba26 | |||
| 82819ff091 | |||
| 12ef055135 | |||
| 5beb15c165 | |||
| cf6584ea71 | |||
| 3bbe86cb55 | |||
| 18c6e79d0c | |||
| 6fbefd0a67 | |||
| d502490bf6 | |||
| 3f6b5b321a | |||
| 2d06846467 | |||
| baac168826 | |||
| 78e5053ae5 | |||
| 25ac706450 | |||
| edff2bdc6c | |||
| 337f67109e | |||
| 450389400a | |||
| f52d604d42 | |||
| d12e3b979a | |||
| 7b482f8cfa | |||
| de1bc12b1b | |||
| a6fb453c9e | |||
| 32429619ab | |||
| cc6e5ea071 | |||
| ba29d32d80 | |||
| 0f08976902 | |||
| b3ac7784ca | |||
| b271e43df4 | |||
| 3dff682ceb | |||
| 8d05c3a204 | |||
| 887825d254 | |||
| 8061e07a00 | |||
| fa1cf24af5 | |||
| 1ab318b6db | |||
| 59493d03fa | |||
| c06504032c | |||
| cf80c7549e | |||
| e6b7e24a36 | |||
| 1b5a415d7a | |||
| 95d9cd0a27 | |||
| cca05de49b | |||
| fa9f23751c | |||
| cf33721ec1 | |||
| 52c72bd45d | |||
| c6e736d64b | |||
| c90d1c0208 | |||
| 5ed0ece058 | |||
| 8684376b98 | |||
| 03cee6582f | |||
| 86291af053 | |||
| 54bb672d9e | |||
| f34bf79884 | |||
| db9ebd5ffd | |||
| 64e384c18a | |||
| 1e325739b1 | |||
| 2bf5d295d4 | |||
| 040d8a210c | |||
| df63bce926 | |||
| b5707d8457 | |||
| cd4ed3679c | |||
| 55b6aadf00 | |||
| 849ecfd6b7 | |||
| ca60e962f0 | |||
| 7bf52e7a75 | |||
| 872caa0407 | |||
| 580a08841f | |||
| ff6442e588 | |||
| 271846703f | |||
| 298affd460 | |||
| d718c8084a | |||
| 39d35091d6 | |||
| cf9b184c9f | |||
| 4abe5d7b8d | |||
| 54ebad9151 | |||
| 3234d0db2e | |||
| c9b5a1d39b | |||
| fc8d43982b | |||
| c4a47b9e53 | |||
| 34182f3e45 | |||
| 87de22fec4 | |||
| 787010ac34 | |||
| 874a1ab939 | |||
| 95df12c59e | |||
| 25c0938a64 | |||
| 5731b52d3c | |||
| c7d88c1f57 | |||
| 678016e391 | |||
| e14d6f8405 | |||
| 588cbabbc2 | |||
| 7cc49c29f1 | |||
| 21b3d4ad37 | |||
| b6629a38a1 | |||
| a88afaaab3 | |||
| 2acda6e977 | |||
| d1dd9bfdd6 | |||
| 027d819860 | |||
| 7e02cc8566 | |||
| bacc1bf9cd | |||
| 6e7815ce22 | |||
| 0193f84847 | |||
| bb2c967981 | |||
| 8d24a094bf | |||
| cb0dc30c7e | |||
| 190d409992 | |||
| acd7f8308c | |||
| 4af3fa88dd | |||
| e90d2eca1e | |||
| 462f671a76 | |||
| 5d2371dda4 | |||
| 379032a40b | |||
| 65b5146dcb | |||
| 4c53b59e89 | |||
| 9bd5cac675 | |||
| 2e65d0aa03 | |||
| afc74dcf68 | |||
| e7e3d0040a | |||
| 14c174890e | |||
| dd472488b6 | |||
| ec4d00509e | |||
| aa0c789b6e | |||
| 016115faa5 | |||
| f6ade7c612 | |||
| 0bfd154437 | |||
| 9a752121ba | |||
| 3ea707245b | |||
| e31ae3f553 | |||
| c38db38207 | |||
| 6b364e19de | |||
| dae0504f5c | |||
| d53ed4ef7e | |||
| 530f8498a1 | |||
| ef3c903582 | |||
| 8314b91324 | |||
| ccd4752d04 | |||
| 1bfeeacf2f | |||
| bfac95b71e | |||
| b91508af5f | |||
| e51486a796 | |||
| 897af2712f | |||
| ed5b4d121c | |||
| 45a7973553 | |||
| a5f0922ba7 | |||
| 792a7e7bfc | |||
| 8f512eb0bd | |||
| 4936c0c46e | |||
| fe54e220e4 | |||
| 0c5b01b5f0 | |||
| 0024dff048 | |||
| 7c42d4d950 | |||
| dc0fc97cb9 | |||
| 86114a4db1 | |||
| 24ef3ed105 | |||
| be437c3417 | |||
| e2e75407c9 | |||
| b99f77e0de | |||
| 909409ff29 |
@@ -1,2 +1,3 @@
|
|||||||
result
|
result
|
||||||
result/
|
result/
|
||||||
|
.DS_Store
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Ryan Yin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -1,8 +1,26 @@
|
|||||||
deploy:
|
#
|
||||||
sudo nixos-rebuild switch --flake .
|
# NOTE: Makefile's target name should not be the same as one of the file or directory in the current directory,
|
||||||
|
# otherwise the target will not be executed!
|
||||||
|
#
|
||||||
|
|
||||||
debug:
|
|
||||||
sudo nixos-rebuild switch --flake . --show-trace --verbose
|
############################################################################
|
||||||
|
#
|
||||||
|
# Nix commands related to the local machine
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
i3:
|
||||||
|
nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo
|
||||||
|
|
||||||
|
hypr:
|
||||||
|
nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo
|
||||||
|
|
||||||
|
i3-debug:
|
||||||
|
nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo --show-trace --verbose
|
||||||
|
|
||||||
|
hypr-debug:
|
||||||
|
nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo --show-trace --verbose
|
||||||
|
|
||||||
update:
|
update:
|
||||||
nix flake update
|
nix flake update
|
||||||
@@ -14,24 +32,87 @@ gc:
|
|||||||
# remove all generations older than 7 days
|
# remove all generations older than 7 days
|
||||||
sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d
|
sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d
|
||||||
|
|
||||||
# garbage collect all unused nix store entries older than 14 days
|
# garbage collect all unused nix store entries
|
||||||
sudo nix store gc --debug
|
sudo nix store gc --debug
|
||||||
|
|
||||||
|
# adjust brightness(x11)
|
||||||
|
# usage: make bright b=0.9
|
||||||
|
bright:
|
||||||
|
xrandr --output DP-2 --brightness $(b)
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
#
|
||||||
|
# Darwin related commands, harmonica is my macbook pro's hostname
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
darwin-set-proxy:
|
darwin-set-proxy:
|
||||||
sudo python3 scripts/darwin_set_proxy.py
|
sudo python3 scripts/darwin_set_proxy.py
|
||||||
|
|
||||||
darwin: darwin-set-proxy
|
ha: darwin-set-proxy
|
||||||
nix build .#darwinConfigurations.harmonica.system \
|
nix build .#darwinConfigurations.harmonica.system
|
||||||
--extra-experimental-features 'nix-command flakes'
|
|
||||||
./result/sw/bin/darwin-rebuild switch --flake .
|
./result/sw/bin/darwin-rebuild switch --flake .
|
||||||
|
|
||||||
darwin-debug: darwin-set-proxy
|
ha-debug: darwin-set-proxy
|
||||||
nix build .#darwinConfigurations.harmonica.system \
|
nix build .#darwinConfigurations.harmonica.system --show-trace --verbose
|
||||||
--show-trace --verbose \
|
./result/sw/bin/darwin-rebuild switch --flake .#harmonica --show-trace --verbose
|
||||||
--extra-experimental-features 'nix-command flakes'
|
|
||||||
./result/sw/bin/darwin-rebuild switch --flake . --show-trace --verbose
|
|
||||||
|
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
#
|
||||||
|
# Idols, Commands related to my remote distributed building cluster
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
add-idols-ssh-key:
|
||||||
|
ssh-add ~/.ssh/ai-idols
|
||||||
|
|
||||||
|
aqua: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo
|
||||||
|
|
||||||
|
aqua-debug: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo --show-trace --verbose
|
||||||
|
|
||||||
|
ruby: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo
|
||||||
|
|
||||||
|
ruby-debug: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo --show-trace --verbose
|
||||||
|
|
||||||
|
kana: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo
|
||||||
|
|
||||||
|
kana-debug: add-idols-ssh-key
|
||||||
|
nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo --show-trace --verbose
|
||||||
|
|
||||||
|
idols: aqua ruby kana
|
||||||
|
|
||||||
|
idols-debug: aqua-debug ruby-debug kana-debug
|
||||||
|
|
||||||
|
# only used once to setup the virtual machines
|
||||||
|
idols-image:
|
||||||
|
# take image for idols, and upload the image to proxmox nodes.
|
||||||
|
nom build .#aquamarine
|
||||||
|
scp result/vzdump-qemu-*.vma.zst root@gtr5:/var/lib/vz/dump
|
||||||
|
|
||||||
|
nom build .#ruby
|
||||||
|
scp result/vzdump-qemu-*.vma.zst root@s500plus:/var/lib/vz/dump
|
||||||
|
|
||||||
|
nom build .#kana
|
||||||
|
scp result/vzdump-qemu-*.vma.zst root@um560:/var/lib/vz/dump
|
||||||
|
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
#
|
||||||
|
# Misc, other useful commands
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
# format the nix files in this repo
|
||||||
|
nix fmt
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -rf result
|
rm -rf result
|
||||||
|
|||||||
@@ -1,58 +1,102 @@
|
|||||||
# Nix Configuration
|
<h2 align="center">:snowflake: Ryan4Yin's Nix Config :snowflake:</h2>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/palette/macchiato.png" width="400" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/ryan4yin/nix-config/stargazers">
|
||||||
|
<img alt="Stargazers" src="https://img.shields.io/github/stars/ryan4yin/nix-config?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41"></a>
|
||||||
|
<a href="https://nixos.org/">
|
||||||
|
<img src="https://img.shields.io/badge/NixOS-23.05-informational.svg?style=for-the-badge&logo=nixos&color=F2CDCD&logoColor=D9E0EE&labelColor=302D41"></a>
|
||||||
|
<a href="https://github.com/ryan4yin/nixos-and-flakes-book">
|
||||||
|
<img src="https://img.shields.io/static/v1?label=Nix Flakes&message=learning&style=for-the-badge&logo=nixos&color=DDB6F2&logoColor=D9E0EE&labelColor=302D41"></a>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
This repository is home to the nix code that builds my systems.
|
This repository is home to the nix code that builds my systems.
|
||||||
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## TODO
|
|
||||||
|
|
||||||
- enable disk encryption to enhance data security
|
|
||||||
- make fcitx5-rime work in vscode/chrome/telegram on wayland
|
|
||||||
- auto unlock with `ssh-agent` after login
|
|
||||||
- [People using ssh-agent, how do you unlock it on login? - reddit](https://www.reddit.com/r/NixOS/comments/lsbo9a/people_using_sshagent_how_do_you_unlock_it_on/)
|
|
||||||
- update scripts for i3wm, especially rofi & screenshot
|
|
||||||
- fix `xdg-open`: after set `firefox.desktop` as defaultApplication, NixOS returned error `no apps installed that can open "https://baidu.com"`
|
|
||||||
- `Xcursor.size` do not take effect in i3
|
|
||||||
|
|
||||||
## Why Nix?
|
## Why Nix?
|
||||||
|
|
||||||
Nix allows for easy to manage, collaborative, reproducible deployments. This means that once something is setup and configured once, it works forever. If someone else shares their configuration, anyone can make use of it.
|
Nix allows for easy-to-manage, collaborative, reproducible deployments. This means that once something is setup and configured once, it works forever. If someone else shares their configuration, anyone can make use of it.
|
||||||
|
|
||||||
**Want to know Nix in details? Looking for a beginner-friendly tutorial? Check out [NixOS & Nix Flakes - A Guide for Beginners](https://thiscute.world/en/posts/nixos-and-flake-basics/)!**
|
**Want to know Nix in detail? Looking for a beginner-friendly tutorial or best practices? Check out [NixOS & Nix Flakes Book - 🛠️ ❤️ An unofficial & opinionated :book: for beginners](https://github.com/ryan4yin/nixos-and-flakes-book)!**
|
||||||
|
|
||||||
|
> If you're using macOS, you can also check out [ryan4yin/nix-darwin-kickstarter](https://github.com/ryan4yin/nix-darwin-kickstarter) for a quick start.
|
||||||
|
|
||||||
|
## Components
|
||||||
|
|
||||||
|
| | NixOS(Wayland) | NixOS(Xorg) |
|
||||||
|
| --------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||||
|
| **Window Manager** | [Hyprland][Hyprland] | [i3][i3] |
|
||||||
|
| **Terminal Emulator** | [Kitty][Kitty] | [Kitty][Kitty] |
|
||||||
|
| **Bar** | [Waybar][Waybar] | [i3block][i3block] |
|
||||||
|
| **Application Launcher** | [wofi][wofi] | [rofi][rofi] |
|
||||||
|
| **Notification Daemon** | [Mako][Mako] | [Dunst][Dunst] |
|
||||||
|
| **Display Manager** | [GDM][GDM] | [GDM][GDM] |
|
||||||
|
| **network management tool** | [NetworkManager][NetworkManager] | [NetworkManager][NetworkManager] |
|
||||||
|
| **Input method framework** | [Fcitx5][Fcitx5] | [Fcitx5][Fcitx5] |
|
||||||
|
| **System resource monitor** | [Btop][Btop] | [Btop][Btop] |
|
||||||
|
| **File Manager** | [thunar][thunar] | [thunar][thunar] |
|
||||||
|
| **Shell** | [Nushell][Nushell] | [Nushell][Nushell] |
|
||||||
|
| **Music Player** | [mpd][mpd], [ncmpcpp][ncmpcpp], [mpc][mpc], [Netease-cloud-music-gtk][netease-cloud-music-gtk] | [Netease-cloud-music-gtk][netease-cloud-music-gtk] |
|
||||||
|
| **Media Player** | [mpv][mpv] | [mpv][mpv] |
|
||||||
|
| **Text Editor** | [Neovim][Neovim] | [Neovim][Neovim] |
|
||||||
|
| **Fonts** | [Nerd fonts][Nerd fonts] | [Nerd fonts][Nerd fonts] |
|
||||||
|
| **Image Viewer** | [imv][imv] | [feh][feh] |
|
||||||
|
| **Screenshot Software** | [grim][grim] | [flameshot](https://github.com/flameshot-org/flameshot) |
|
||||||
|
| **Screen Recording** | [OBS][OBS] | [OBS][OBS] |
|
||||||
|
|
||||||
|
## Hyprland + AstroNvim
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## I3 + AstroNvim
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Hosts
|
||||||
|
|
||||||
|
```shell
|
||||||
|
› tree hosts
|
||||||
|
hosts
|
||||||
|
├── harmonica # my MacBook Pro 2020 13-inch, for work.
|
||||||
|
└── idols
|
||||||
|
├── ai # my main computer, with NixOS + I5-13600KF + RTX 4090 GPU, for gaming & daily use.
|
||||||
|
├── aquamarine # my NixOS virtual machine with R9-5900HX(8C16T), for distributed building & testing.
|
||||||
|
├── kana # yet another NixOS vm on another physical machine with R5-5625U(6C12T).
|
||||||
|
└── ruby # another NixOS vm on another physical machine with R7-5825U(8C16T).
|
||||||
|
```
|
||||||
|
|
||||||
## How to Deploy this Flake?
|
## How to Deploy this Flake?
|
||||||
|
|
||||||
> Note: you should NOT deploy this flake directly on your machine, it contains my hardware information and personal information which is not suitable for you. You may use this repo as a reference to build your own configuration.
|
> Note: you should NOT deploy this flake directly on your machine, it contains my hardware information and personal information which is not suitable for you. You may use this repo as a reference to build your own configuration.
|
||||||
|
|
||||||
After installed NixOS with `nix-command` & `flake` enabled, flow the steps below to deploy this flake.
|
After installing NixOS with `nix-command` & `flake` enabled, follow the steps below to deploy this flake.
|
||||||
|
|
||||||
For NixOS, use the following commands:
|
For NixOS, use the following commands:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# deploy my test configuration
|
# deploy one of the configuration based on the hostname
|
||||||
sudo nixos-rebuild switch --flake .#nixos-test
|
sudo nixos-rebuild switch --flake .#ai_i3
|
||||||
|
|
||||||
|
# we can also deploy using `make`, which is defined in Makefile
|
||||||
|
make i3
|
||||||
|
|
||||||
# deploy my PC's configuration
|
# or we can deploy with details
|
||||||
sudo nixos-rebuild switch --flake .#msi-rtx4090
|
make i3-debug
|
||||||
|
|
||||||
# or just deploy with hostname
|
|
||||||
sudo nixos-rebuild switch
|
|
||||||
|
|
||||||
# we can also deploy using make, which is defined in Makefile
|
|
||||||
make deploy
|
|
||||||
```
|
```
|
||||||
|
|
||||||
For MacOS, use the following commands:
|
For MacOS, use the following commands:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# deploy the darwin configuration(harmonicia)
|
# deploy the darwin configuration(harmonicia)
|
||||||
make darwin
|
make ha
|
||||||
|
|
||||||
# deploy with details
|
# deploy with details
|
||||||
make darwin-debug
|
make ha-debug
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install Apps from Flatpak
|
## Install Apps from Flatpak
|
||||||
@@ -74,17 +118,88 @@ flatpak search <keyword>
|
|||||||
# search on website is also supported: https://flathub.org/
|
# search on website is also supported: https://flathub.org/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Other Interesting Dotfiles
|
## How to create & managage VM from this flake?
|
||||||
|
|
||||||
Other configurations that inspired me:
|
use `aquamarine` as an example, we can create a virtual machine with the following command:
|
||||||
|
|
||||||
- [notwidow/hyprland](https://github.com/notwidow/hyprland): hyprland configuration
|
```shell
|
||||||
- [denisse-dev/dotfiles](https://github.com/denisse-dev/dotfiles)
|
# 1. generate a proxmox vma image file
|
||||||
|
nom build .#aquamarine # `nom`(nix-output-monitor) can be replaced by the standard command `nix`
|
||||||
|
|
||||||
|
# 2. upload the genereated image to proxmox server's backup directory `/var/lib/vz/dump`
|
||||||
|
# please replace the vma file name with the one you generated in step 1.
|
||||||
|
scp result/vzdump-qemu-aquamarine-nixos-23.11.20230603.dd49825.vma.zst root@192.168.5.174:/var/lib/vz/dump
|
||||||
|
|
||||||
|
# 3. the image we uploaded will be listed in proxmox web ui's this page: [storage 'local'] -> [backups], we can restore a vm from it via the web ui now.
|
||||||
|
```
|
||||||
|
|
||||||
|
Once the virtual machine `aquamarine` is created, we can deploy updates to it with the following commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 1. add the ssh key to ssh-agent
|
||||||
|
ssh-add ~/.ssh/ai-idols
|
||||||
|
|
||||||
|
# 2. deploy the configuration to the remote host, using the ssh key we added in step 1
|
||||||
|
# and the username defaults to `$USER`, it's `ryan` in my case.
|
||||||
|
nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo --verbose
|
||||||
|
|
||||||
|
# or we can replace the command above with the following command, which is defined in Makefile
|
||||||
|
make aqua
|
||||||
|
```
|
||||||
|
|
||||||
|
The commands above will build & deploy the configuration to `aquamarine`, the build process will be executed on `aquamarine` too, and the `--use-remote-sudo` option indicates that we will use `sudo` on the remote host.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
Other dotfiles that inspired me:
|
||||||
|
|
||||||
|
- Nix Flakes
|
||||||
|
- [NixOS-CN/NixOS-CN-telegram](https://github.com/NixOS-CN/NixOS-CN-telegram)
|
||||||
- [notusknot/dotfiles-nix](https://github.com/notusknot/dotfiles-nix)
|
- [notusknot/dotfiles-nix](https://github.com/notusknot/dotfiles-nix)
|
||||||
- [xddxdd/nixos-config](https://github.com/xddxdd/nixos-config)
|
- [xddxdd/nixos-config](https://github.com/xddxdd/nixos-config)
|
||||||
- [bobbbay/dotfiles](https://github.com/bobbbay/dotfiles)
|
- [bobbbay/dotfiles](https://github.com/bobbbay/dotfiles)
|
||||||
- [gytis-ivaskevicius/nixfiles](https://github.com/gytis-ivaskevicius/nixfiles)
|
- [gytis-ivaskevicius/nixfiles](https://github.com/gytis-ivaskevicius/nixfiles)
|
||||||
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles)
|
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles)
|
||||||
- [davidtwco/veritas](https://github.com/davidtwco/veritas)
|
- [davidtwco/veritas](https://github.com/davidtwco/veritas)
|
||||||
- [NixOS-CN/NixOS-CN-telegram](https://github.com/NixOS-CN/NixOS-CN-telegram)
|
- [gvolpe/nix-config](https://github.com/gvolpe/nix-config)
|
||||||
- [Tips&Tricks for NixOS Desktop](https://discourse.nixos.org/t/tips-tricks-for-nixos-desktop/28488/2)
|
- [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes)
|
||||||
|
- Hyprland
|
||||||
|
- [HeinzDev/Hyprland-dotfiles](https://github.com/HeinzDev/Hyprland-dotfiles)
|
||||||
|
- [notwidow/hyprland](https://github.com/notwidow/hyprland)
|
||||||
|
- I3 Window Manager
|
||||||
|
- [denisse-dev/dotfiles](https://github.com/denisse-dev/dotfiles)
|
||||||
|
- Neovim/AstroNvim
|
||||||
|
- [maxbrunet/dotfiles](https://github.com/maxbrunet/dotfiles): astronvim with nix flakes.
|
||||||
|
- Misc
|
||||||
|
- [1amSimp1e/dots](https://github.com/1amSimp1e/dots)
|
||||||
|
|
||||||
|
[Hyprland]: https://github.com/hyprwm/Hyprland
|
||||||
|
[i3]: https://github.com/i3/i3
|
||||||
|
[Kitty]: https://github.com/kovidgoyal/kitty
|
||||||
|
[Nushell]: https://github.com/nushell/nushell
|
||||||
|
[Waybar]: https://github.com/Alexays/Waybar
|
||||||
|
[i3block]: https://github.com/vivien/i3blocks
|
||||||
|
[rofi]: https://github.com/davatorium/rofi
|
||||||
|
[wofi]: https://hg.sr.ht/~scoopta/wofi
|
||||||
|
[Dunst]: https://github.com/dunst-project/dunst
|
||||||
|
[Fcitx5]: https://github.com/fcitx/fcitx5
|
||||||
|
[Btop]: https://github.com/aristocratos/btop
|
||||||
|
[mpv]: https://github.com/mpv-player/mpv
|
||||||
|
[Neovim]: https://github.com/neovim/neovim
|
||||||
|
[AstroNvim]: https://github.com/AstroNvim/AstroNvim
|
||||||
|
[flameshot]: https://github.com/flameshot-org/flameshot
|
||||||
|
[grim]: https://github.com/emersion/grim
|
||||||
|
[feh]: https://github.com/derf/feh
|
||||||
|
[imv]: https://sr.ht/~exec64/imv/
|
||||||
|
[OBS]: https://obsproject.com
|
||||||
|
[Mako]: https://github.com/emersion/mako
|
||||||
|
[Nerd fonts]: https://github.com/ryanoasis/nerd-fonts
|
||||||
|
[catppuccin]: https://github.com/catppuccin/catppuccin
|
||||||
|
[mpd]: https://github.com/MusicPlayerDaemon/MPD
|
||||||
|
[ncmpcpp]: https://github.com/ncmpcpp/ncmpcpp
|
||||||
|
[mpc]: https://github.com/MusicPlayerDaemon/mpc
|
||||||
|
[Netease-cloud-music-gtk]: https://github.com/gmg137/netease-cloud-music-gtk
|
||||||
|
[NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager
|
||||||
|
[wl-clipboard]: https://github.com/bugaevc/wl-clipboard
|
||||||
|
[GDM]: https://wiki.archlinux.org/title/GDM
|
||||||
|
[thunar]: https://gitlab.xfce.org/xfce/thunar
|
||||||
|
|||||||
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 417 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 243 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 841 KiB |
|
Before Width: | Height: | Size: 336 KiB |
@@ -7,17 +7,34 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1684153753,
|
"lastModified": 1689334118,
|
||||||
"narHash": "sha256-PVbWt3qrjYAK+T5KplFcO+h7aZWfEj1UtyoKlvcDxh0=",
|
"narHash": "sha256-djk5AZv1yU84xlKFaVHqFWvH73U7kIRstXwUAnDJPsk=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "db5637d10f797bb251b94ef9040b237f4702cde3",
|
"rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "db5637d10f797bb251b94ef9040b237f4702cde3",
|
"rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"astronvim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689614566,
|
||||||
|
"narHash": "sha256-LG9eSOmX902EK3KEAkEwqGa4sBkxkK3qOHaWcykv6OA=",
|
||||||
|
"owner": "AstroNvim",
|
||||||
|
"repo": "AstroNvim",
|
||||||
|
"rev": "215b5605337f32d3e92ba7608e269fe90c1208f6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "AstroNvim",
|
||||||
|
"ref": "v3.33.3",
|
||||||
|
"repo": "AstroNvim",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -43,71 +60,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"darwin_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-darwin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685559570,
|
|
||||||
"narHash": "sha256-MNIQvLRoq92isMLR/ordKNCl+aXNiuwBM4QyqmS8d00=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "4338bc869e9874d54a4c89539af72f16666b2abe",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devenv": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"nix": "nix",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"pre-commit-hooks": "pre-commit-hooks"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1678113758,
|
|
||||||
"narHash": "sha256-mD3SkN43b1s5CJ8Rx3l2oK3Dqgs+6Ze0FfWrdMcrrYk=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "devenv",
|
|
||||||
"rev": "6455f319fc90e0be2071327093c5458f9afc61bf",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"ref": "v0.6.2",
|
|
||||||
"repo": "devenv",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1688025799,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1680531544,
|
|
||||||
"narHash": "sha256-8qbiDTYb1kGaDADRXTItpcMKQ1TeQVkuof6oEwHUvVA=",
|
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "95e78dc12268c5e4878621845c511077f3798729",
|
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -125,11 +84,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1680392223,
|
"lastModified": 1688466019,
|
||||||
"narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
|
"narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
|
"rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -139,30 +98,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1667395993,
|
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_2": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681202837,
|
"lastModified": 1689068808,
|
||||||
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -171,46 +115,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_3": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685518550,
|
|
||||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"devenv",
|
|
||||||
"pre-commit-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1660459072,
|
|
||||||
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -239,11 +143,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685599623,
|
"lastModified": 1687871164,
|
||||||
"narHash": "sha256-Tob4CMOVHue0D3RzguDBCtUmX5ji2PsdbQDbIOIKvsc=",
|
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "93db05480c0c0f30382d3e80779e8386dcb4f9dd",
|
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -256,21 +160,21 @@
|
|||||||
"hyprland": {
|
"hyprland": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"wlroots": "wlroots",
|
"wlroots": "wlroots",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1683130508,
|
"lastModified": 1689766295,
|
||||||
"narHash": "sha256-Npf48UUfywneFYGEc7NQ59xudwvw7EJjwweT4tHguIY=",
|
"narHash": "sha256-2OuPIcw2WOUc/zjrH7JZHWe1byuMjqP6Zz7D4qsi10s=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "f27873a6f06dc2f87600edb890f3c38298bfb55f",
|
"rev": "b08b72358ad549fd066e5be0fc3aa4c9df367607",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"ref": "v0.25.0",
|
"ref": "v0.27.2",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -283,11 +187,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681065697,
|
"lastModified": 1684265364,
|
||||||
"narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=",
|
"narHash": "sha256-AxNnWbthsuNx73HDQr0eBxrcE3+yfl/WsaXZqUFmkpQ=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-protocols",
|
"repo": "hyprland-protocols",
|
||||||
"rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd",
|
"rev": "8c279b9fb0f2b031427dc5ef4eab53f2ed835530",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -298,15 +202,15 @@
|
|||||||
},
|
},
|
||||||
"lib-aggregate": {
|
"lib-aggregate": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_3",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685621386,
|
"lastModified": 1690114105,
|
||||||
"narHash": "sha256-QxSbJ/deTW8r9DCveOr5N/TpiUqBAmGXsKdqmnVNW8s=",
|
"narHash": "sha256-QOY9FXZ4pWjlDPdZKkLNNMHS+ct1+4wu8lrcua7+chw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "lib-aggregate",
|
"repo": "lib-aggregate",
|
||||||
"rev": "5b7f85fd4ee671b013f2c1935abf4cb5499ad3b5",
|
"rev": "d923660039d7e793712ba93f633778046f5e6087",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -315,78 +219,55 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lowdown-src": {
|
"mysecrets": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1633514407,
|
"lastModified": 1689587139,
|
||||||
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
|
"narHash": "sha256-D3PDgAvBe6FKbrDIoBW/+wRgZc7RtqIVKcnQ6hwqEh8=",
|
||||||
"owner": "kristapsdz",
|
"ref": "refs/heads/main",
|
||||||
"repo": "lowdown",
|
"rev": "a136d8dacc58115edec9edaf6f201c5496e423e3",
|
||||||
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
|
"shallow": true,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "ssh://git@github.com/ryan4yin/nix-secrets.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "kristapsdz",
|
"shallow": true,
|
||||||
"repo": "lowdown",
|
"type": "git",
|
||||||
"type": "github"
|
"url": "ssh://git@github.com/ryan4yin/nix-secrets.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nil": {
|
"nix-darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
|
||||||
"nixpkgs": "nixpkgs_4",
|
|
||||||
"rust-overlay": "rust-overlay"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1683653883,
|
|
||||||
"narHash": "sha256-Xg3Cux5wQDatXRvQWsVD0YPfmxfijjG8+gxYqgoT6JE=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "nil",
|
|
||||||
"rev": "18de045d7788df2343aec58df7b85c10d1f5d5dd",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"ref": "2023-05-09",
|
|
||||||
"repo": "nil",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix": {
|
|
||||||
"inputs": {
|
|
||||||
"lowdown-src": "lowdown-src",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"devenv",
|
"nixpkgs-darwin"
|
||||||
"nixpkgs"
|
]
|
||||||
],
|
|
||||||
"nixpkgs-regression": "nixpkgs-regression"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676545802,
|
"lastModified": 1690368313,
|
||||||
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
|
"narHash": "sha256-1MG/pU2riawknpYaTfaynKJPaIKFnQiYTTCFJAjXM5Q=",
|
||||||
"owner": "domenkozar",
|
"owner": "lnl7",
|
||||||
"repo": "nix",
|
"repo": "nix-darwin",
|
||||||
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
|
"rev": "94212ebe32948471a1aa11baa5c576ce60d54589",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "domenkozar",
|
"owner": "lnl7",
|
||||||
"ref": "relaxed-flakes",
|
"repo": "nix-darwin",
|
||||||
"repo": "nix",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-eval-jobs": {
|
"nix-eval-jobs": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685435187,
|
"lastModified": 1689903701,
|
||||||
"narHash": "sha256-2tSrjl16iHdG6FYMNKS+MdsIDrCWXuKQ0XRWcdbMdFg=",
|
"narHash": "sha256-kW1Rke5wLqw8XHVyiWw7qIKZR911GCsbOg5SkgKH1Uc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-eval-jobs",
|
"repo": "nix-eval-jobs",
|
||||||
"rev": "a0e0808280535bc22ffde7d34ecad11014edd6a9",
|
"rev": "fcaf7773e3a6713b78dacfd442339a96cfab405f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -397,11 +278,11 @@
|
|||||||
},
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681001314,
|
"lastModified": 1689469483,
|
||||||
"narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=",
|
"narHash": "sha256-2SBhY7rZQ/iNCxe04Eqxlz9YK9KgbaTMBssq3/BgdWY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4",
|
"rev": "02fea408f27186f139153e1ae88f8ab2abd9c22c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -418,11 +299,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685446848,
|
"lastModified": 1690133435,
|
||||||
"narHash": "sha256-vEU1jynjDXwOJESHeJyABqbY/Y+DoihZq9iDVtYgrMg=",
|
"narHash": "sha256-YNZiefETggroaTLsLJG2M+wpF0pJPwiauKG4q48ddNU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "b6114e214e5b546c4cceccd33ee6b72294a76b60",
|
"rev": "b1171de4d362c022130c92d7c8adc4bf2b83d586",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -449,11 +330,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-darwin": {
|
"nixpkgs-darwin": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685865905,
|
"lastModified": 1690298576,
|
||||||
"narHash": "sha256-XJZ/o17eOd2sEsGif+/MQBnfa2DKmndWgJyc7CWajFc=",
|
"narHash": "sha256-RLgIGS04t4Rd0viqsx2e9dGViKB6nVsGmO11EagCWmM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e7603eba51f2c7820c0a182c6bbb351181caa8e7",
|
"rev": "88f63d511092e95d28e9a7c98534595c53de1048",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -465,11 +346,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685561605,
|
"lastModified": 1690073998,
|
||||||
"narHash": "sha256-LqEu1IWP8UWKxwwrpPtp1/p+JRCaUI0hl8e4hht5YdI=",
|
"narHash": "sha256-qmK+VMvflwUzQSQl4XVP5kbodYLAKThNzq6mZrOM2Mo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "75aeea15ee4971c52c56bbbee84066e74d53d858",
|
"rev": "d0545f65611a9625f161d0ff02627bc364e024f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -478,67 +359,35 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-regression": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1643052045,
|
"lastModified": 1690179384,
|
||||||
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
"narHash": "sha256-+arbgqFTAtoeKtepW9wCnA0njCOyoiDFyl0Q0SBSOtE=",
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1673800717,
|
|
||||||
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-22.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685801374,
|
|
||||||
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
|
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
|
"rev": "b12803b6d90e2e583429bb79b859ca53c348b39a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-23.05",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-wayland": {
|
"nixpkgs-wayland": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat",
|
||||||
"lib-aggregate": "lib-aggregate",
|
"lib-aggregate": "lib-aggregate",
|
||||||
"nix-eval-jobs": "nix-eval-jobs",
|
"nix-eval-jobs": "nix-eval-jobs",
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685650687,
|
"lastModified": 1690384532,
|
||||||
"narHash": "sha256-RhZ2Ih8t0Q0RFfBp3+/a65ncGwaeYsDVEFWbjdv5jOU=",
|
"narHash": "sha256-Nc9d6GPajVdSj02aBDkAAq93fdLUtRXP9EIfwKn3Uq4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs-wayland",
|
"repo": "nixpkgs-wayland",
|
||||||
"rev": "217783e46fd199a033af8d488551c77b7019c752",
|
"rev": "729cabdcc73e84963751dd65163048e9ff1a1a75",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -549,75 +398,43 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677534593,
|
"lastModified": 1688500189,
|
||||||
"narHash": "sha256-PuZSAHeq4/9pP/uYH1FcagQ3nLm/DrDrvKi/xC9glvw=",
|
"narHash": "sha256-djYYiY4lzJOlXOnTHytH6BUugrxHDZjuGxTSrU4gt4M=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3ad64d9e2d5bf80c877286102355b1625891ae9a",
|
"rev": "78419edadf0fabbe5618643bd850b2f2198ed060",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1683014792,
|
"lastModified": 1690271650,
|
||||||
"narHash": "sha256-6Va9iVtmmsw4raBc3QKvQT2KT/NGRWlvUlJj46zN8B8=",
|
"narHash": "sha256-qwdsW8DBY1qH+9luliIH7VzgwvL+ZGI3LZWC0LTiDMI=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1a411f23ba299db155a5b45d5e145b85a7aafc42",
|
"rev": "6dc93f0daec55ee2f441da385aaf143863e3d671",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-23.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682929865,
|
"lastModified": 1688951312,
|
||||||
"narHash": "sha256-jxVrgnf5QNjO+XoxDxUWtN2G5xyJSGZ5SWDQFxMuHxc=",
|
"narHash": "sha256-0oG4uv60m5+oOMqgYYQ3ao3OK3YP3n3t7nWFtuyR/uQ=",
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "f2e9a130461950270f87630b11132323706b4d91",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685836261,
|
|
||||||
"narHash": "sha256-rpxEPGeW4JZJcH58SQApJUtJ7w78VPtkF6Cut/Pq6Kg=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "dd4982554e18b936790da07c4ea2db7c7600f283",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681347147,
|
|
||||||
"narHash": "sha256-B+hTioRc3Jdf4SJyeCiO0fW5ShIznJk2OTiW2vOV+mc=",
|
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1a9d9175ecc48ecd033062fa09b1834d13ae9c69",
|
"rev": "2a5f6cac357616d2596167d0631b4ca729e9a3ea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -627,13 +444,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685383865,
|
"lastModified": 1690179384,
|
||||||
"narHash": "sha256-3uQytfnotO6QJv3r04ajSXbEFMII0dUtw0uqYlZ4dbk=",
|
"narHash": "sha256-+arbgqFTAtoeKtepW9wCnA0njCOyoiDFyl0Q0SBSOtE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5e871d8aa6f57cc8e0dc087d1c5013f6e212b4ce",
|
"rev": "b12803b6d90e2e583429bb79b859ca53c348b39a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -643,88 +460,19 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685880642,
|
|
||||||
"narHash": "sha256-jQNe2IAL7qPdwCk8HnwlfJN790YjIoRu4EfjfI6y0qk=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "NUR",
|
|
||||||
"rev": "65b4ce84312de2fec2e26315bad06278e3e4acd5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "NUR",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": [
|
|
||||||
"devenv",
|
|
||||||
"flake-compat"
|
|
||||||
],
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"devenv",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677160285,
|
|
||||||
"narHash": "sha256-tBzpCjMP+P3Y3nKLYvdBkXBg3KvTMo3gvi8tLQaqXVY=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"rev": "2bd861ab81469428d9c823ef72c4bb08372dd2c4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"darwin": "darwin_2",
|
"astronvim": "astronvim",
|
||||||
"devenv": "devenv",
|
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"nil": "nil",
|
"mysecrets": "mysecrets",
|
||||||
|
"nix-darwin": "nix-darwin",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nixpkgs-darwin": "nixpkgs-darwin",
|
"nixpkgs-darwin": "nixpkgs-darwin",
|
||||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixpkgs-wayland": "nixpkgs-wayland",
|
"nixpkgs-wayland": "nixpkgs-wayland"
|
||||||
"nur": "nur"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": [
|
|
||||||
"nil",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nil",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1682907601,
|
|
||||||
"narHash": "sha256-FfUAYvRJ+6s9WWjXNPdRzuuvAeu2VHIXIbUkPJr4t14=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "5eaff055dd57128c53ae373dc96af944f5849daa",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -742,18 +490,25 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-wayland",
|
||||||
|
"nix-eval-jobs",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1689620039,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-BtNwghr05z7k5YMdq+6nbue+nEalvDepuA7qdQMAKoQ=",
|
||||||
"owner": "nix-systems",
|
"owner": "numtide",
|
||||||
"repo": "default",
|
"repo": "treefmt-nix",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "719c2977f958c41fa60a928e2fbc50af14844114",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "numtide",
|
||||||
"repo": "default",
|
"repo": "treefmt-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -761,11 +516,11 @@
|
|||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"host": "gitlab.freedesktop.org",
|
"host": "gitlab.freedesktop.org",
|
||||||
"lastModified": 1682436395,
|
"lastModified": 1689611045,
|
||||||
"narHash": "sha256-GGEjkQO9m7YLYIXIXM76HWdhjg4Ye+oafOtyaFAYKI4=",
|
"narHash": "sha256-3RTOlQabkNetQ4O4UzSf57JPco9VGVHhSU1ls5uKBeE=",
|
||||||
"owner": "wlroots",
|
"owner": "wlroots",
|
||||||
"repo": "wlroots",
|
"repo": "wlroots",
|
||||||
"rev": "6830bfc17fd94709e2cdd4da0af989f102a26e59",
|
"rev": "7791ffe0584c4ac13c170e1661ce33bdbd4a9b9e",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -787,11 +542,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682439384,
|
"lastModified": 1685385764,
|
||||||
"narHash": "sha256-zHDa8LCZs05TZHQSIZ3ucwyMPglBGHcqTBzfkLjYXTM=",
|
"narHash": "sha256-r+XMyOoRXq+hlfjayb+fyi9kq2JK48TrwuNIAXqlj7U=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "c0e233955568fbea4e859336f6d3d14d51294d7c",
|
"rev": "4d9ff0c17716936e0b5ca577a39e263633901ed1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
{
|
{
|
||||||
description = "NixOS configuration of Ryan Yin";
|
description = "NixOS & macOS configuration of Ryan Yin";
|
||||||
|
|
||||||
|
##################################################################################################################
|
||||||
|
#
|
||||||
|
# Want to know Nix in details? Looking for a beginner-friendly tutorial?
|
||||||
|
# Check out https://github.com/ryan4yin/nixos-and-flakes-book !
|
||||||
|
#
|
||||||
|
##################################################################################################################
|
||||||
|
|
||||||
# the nixConfig here only affects the flake itself, not the system configuration!
|
# the nixConfig here only affects the flake itself, not the system configuration!
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
@@ -7,7 +14,6 @@
|
|||||||
|
|
||||||
substituters = [
|
substituters = [
|
||||||
# replace official cache with a mirror located in China
|
# replace official cache with a mirror located in China
|
||||||
"https://mirrors.bfsu.edu.cn/nix-channels/store"
|
|
||||||
"https://mirrors.ustc.edu.cn/nix-channels/store"
|
"https://mirrors.ustc.edu.cn/nix-channels/store"
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
];
|
];
|
||||||
@@ -16,40 +22,31 @@
|
|||||||
extra-substituters = [
|
extra-substituters = [
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://nixpkgs-wayland.cachix.org"
|
"https://nixpkgs-wayland.cachix.org"
|
||||||
"https://xddxdd.cachix.org"
|
|
||||||
];
|
];
|
||||||
extra-trusted-public-keys = [
|
extra-trusted-public-keys = [
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
||||||
"xddxdd.cachix.org-1:ay1HJyNDYmlSwj5NXQG065C8LfoqqKaTNCyzeixGjf8="
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# This is the standard format for flake.nix. `inputs` are the dependencies of the flake,
|
# This is the standard format for flake.nix. `inputs` are the dependencies of the flake,
|
||||||
# and `outputs` function will return all the build results of the flake.
|
|
||||||
# Each item in `inputs` will be passed as a parameter to the `outputs` function after being pulled and built.
|
# Each item in `inputs` will be passed as a parameter to the `outputs` function after being pulled and built.
|
||||||
inputs = {
|
inputs = {
|
||||||
# There are many ways to reference flake inputs. The most widely used is github:owner/name/reference,
|
# There are many ways to reference flake inputs. The most widely used is github:owner/name/reference,
|
||||||
# which represents the GitHub repository URL + branch/commit-id/tag.
|
# which represents the GitHub repository URL + branch/commit-id/tag.
|
||||||
|
|
||||||
# Official NixOS package source, using nixos-unstable branch here
|
# Official NixOS package source, using nixos's stable branch by default
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.05";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# for macos
|
# for macos
|
||||||
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-23.05-darwin";
|
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-23.05-darwin";
|
||||||
darwin = {
|
nix-darwin = {
|
||||||
url = "github:lnl7/nix-darwin";
|
url = "github:lnl7/nix-darwin";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
||||||
};
|
};
|
||||||
|
|
||||||
# nix users repository
|
|
||||||
# used to install some packages not in nixpkgs
|
|
||||||
# e.g. wechat-uos/qqmusic/dingtalk
|
|
||||||
nur.url = "github:nix-community/NUR";
|
|
||||||
|
|
||||||
# home-manager, used for managing user configuration
|
# home-manager, used for managing user configuration
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-23.05";
|
url = "github:nix-community/home-manager/release-23.05";
|
||||||
@@ -60,7 +57,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# modern window compositor
|
# modern window compositor
|
||||||
hyprland.url = "github:hyprwm/Hyprland/v0.25.0";
|
hyprland.url = "github:hyprwm/Hyprland/v0.27.2";
|
||||||
# community wayland nixpkgs
|
# community wayland nixpkgs
|
||||||
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
|
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
|
||||||
|
|
||||||
@@ -70,143 +67,168 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# use devenv to manage my development environment
|
# secrets management, lock with git commit at 2023/7/15
|
||||||
devenv.url = "github:cachix/devenv/v0.6.2";
|
agenix.url = "github:ryantm/agenix/0d8c5325fc81daf00532e3e26c6752f7bcde1143";
|
||||||
|
|
||||||
# secrets management, lock with git commit at 2023/5/15
|
# AstroNvim is an aesthetic and feature-rich neovim config.
|
||||||
agenix.url = "github:ryantm/agenix/db5637d10f797bb251b94ef9040b237f4702cde3";
|
astronvim = {
|
||||||
|
url = "github:AstroNvim/AstroNvim/v3.33.3";
|
||||||
# nix language server, used by vscode & neovim
|
flake = false;
|
||||||
nil.url = "github:oxalica/nil/2023-05-09";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# `outputs` are all the build result of the flake.
|
# my private secrets, it's a private repository, you need to replace it with your own.
|
||||||
# A flake can have many use cases and different types of outputs.
|
# use ssh protocol to authenticate via ssh-agent/ssh-key, and shallow clone to save time
|
||||||
|
mysecrets = {
|
||||||
|
url = "git+ssh://git@github.com/ryan4yin/nix-secrets.git?shallow=1";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# The `outputs` function will return all the build results of the flake.
|
||||||
|
# A flake can have many use cases and different types of outputs,
|
||||||
# parameters in `outputs` are defined in `inputs` and can be referenced by their names.
|
# parameters in `outputs` are defined in `inputs` and can be referenced by their names.
|
||||||
# However, `self` is an exception, This special parameter points to the `outputs` itself (self-reference)
|
# However, `self` is an exception, this special parameter points to the `outputs` itself (self-reference)
|
||||||
# The `@` syntax here is used to alias the attribute set of the inputs's parameter, making it convenient to use inside the function.
|
# The `@` syntax here is used to alias the attribute set of the inputs's parameter, making it convenient to use inside the function.
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
darwin,
|
nixpkgs-unstable,
|
||||||
|
nix-darwin,
|
||||||
home-manager,
|
home-manager,
|
||||||
|
nixos-generators,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
nixosConfigurations = {
|
username = "ryan";
|
||||||
# By default, NixOS will try to refer the nixosConfiguration with its hostname.
|
userfullname = "Ryan Yin";
|
||||||
# so the system named `msi-rtx4090` will use this configuration.
|
useremail = "xiaoyin_c@qq.com";
|
||||||
# However, the configuration name can also be specified using `sudo nixos-rebuild switch --flake /path/to/flakes/directory#<name>`.
|
|
||||||
# The `nixpkgs.lib.nixosSystem` function is used to build this configuration, the following attribute set is its parameter.
|
|
||||||
# Run `sudo nixos-rebuild switch --flake .#msi-rtx4090` in the flake's directory to deploy this configuration on any NixOS system
|
|
||||||
msi-rtx4090 = nixpkgs.lib.nixosSystem rec {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
|
|
||||||
# The Nix module system can modularize configurations, improving the maintainability of configurations.
|
x64_system = "x86_64-linux";
|
||||||
#
|
x64_darwin = "x86_64-darwin";
|
||||||
# Each parameter in the `modules` is a Nix Module, and there is a partial introduction to it in the nixpkgs manual:
|
allSystems = [x64_system x64_darwin];
|
||||||
# <https://nixos.org/manual/nixpkgs/unstable/#module-system-introduction>
|
|
||||||
# It is said to be partial because the documentation is not complete, only some simple introductions
|
nixosSystem = import ./lib/nixosSystem.nix;
|
||||||
# (such is the current state of Nix documentation...)
|
macosSystem = import ./lib/macosSystem.nix;
|
||||||
# A Nix Module can be an attribute set, or a function that returns an attribute set.
|
in {
|
||||||
# If a Module is a function, according to the Nix Wiki description, this function can have up to four parameters:
|
nixosConfigurations = let
|
||||||
#
|
# 星野 アイ, Hoshino Ai
|
||||||
# config: The configuration of the entire system
|
idol_ai_modules_i3 = {
|
||||||
# options: All option declarations refined with all definition and declaration references.
|
nixos-modules = [
|
||||||
# pkgs: The attribute set extracted from the Nix package collection and enhanced with the nixpkgs.config option.
|
./hosts/idols/ai
|
||||||
# modulesPath: The location of the module directory of Nix.
|
./modules/nixos/i3.nix
|
||||||
#
|
];
|
||||||
# Only these four parameters can be passed by default.
|
home-module = import ./home/linux/desktop-i3.nix;
|
||||||
# If you need to pass other parameters, you must use `specialArgs` by uncomment the following line
|
};
|
||||||
specialArgs = {
|
idol_ai_modules_hyprland = {
|
||||||
pkgs-stable = import inputs.nixpkgs-stable {
|
nixos-modules = [
|
||||||
system = system; # refer the `system` parameter form outer scope recursively
|
./hosts/idols/ai
|
||||||
|
./modules/nixos/hyprland.nix
|
||||||
|
];
|
||||||
|
home-module = import ./home/linux/desktop-hyprland.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
# 星野 愛久愛海, Hoshino Akuamarin
|
||||||
|
idol_aquamarine_modules = {
|
||||||
|
nixos-modules = [
|
||||||
|
./hosts/idols/aquamarine
|
||||||
|
];
|
||||||
|
home-module = import ./home/linux/server.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
# 星野 瑠美衣, Hoshino Rubii
|
||||||
|
idol_ruby_modules = {
|
||||||
|
nixos-modules = [
|
||||||
|
./hosts/idols/ruby
|
||||||
|
];
|
||||||
|
home-module = import ./home/linux/server.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
# 有馬 かな, Arima Kana
|
||||||
|
idol_kana_modules = {
|
||||||
|
nixos-modules = [
|
||||||
|
./hosts/idols/kana
|
||||||
|
];
|
||||||
|
home-module = import ./home/linux/server.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
system = x64_system;
|
||||||
|
specialArgs =
|
||||||
|
{
|
||||||
|
inherit username userfullname useremail;
|
||||||
|
# use unstable branch for some packages to get the latest updates
|
||||||
|
pkgs-unstable = import nixpkgs-unstable {
|
||||||
|
system = x64_system; # refer the `system` parameter form outer scope recursively
|
||||||
# To use chrome, we need to allow the installation of non-free software
|
# To use chrome, we need to allow the installation of non-free software
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
} // inputs;
|
|
||||||
modules = [
|
|
||||||
./hosts/msi-rtx4090
|
|
||||||
|
|
||||||
# make home-manager as a module of nixos
|
|
||||||
# so that home-manager configuration will be deployed automatically when executing `nixos-rebuild switch`
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
|
|
||||||
# pass all inputs into home manager's all sub modules
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
home-manager.users.ryan = import ./home/linux/x11.nix;
|
|
||||||
}
|
}
|
||||||
];
|
// inputs;
|
||||||
|
base_args = {
|
||||||
|
inherit home-manager nixos-generators system specialArgs;
|
||||||
|
};
|
||||||
|
stable_args = base_args // {inherit nixpkgs;};
|
||||||
|
unstable_args = base_args // {nixpkgs = nixpkgs-unstable;};
|
||||||
|
in {
|
||||||
|
# ai with i3 window manager
|
||||||
|
ai_i3 = nixosSystem (idol_ai_modules_i3 // stable_args);
|
||||||
|
# ai with hyprland compositor
|
||||||
|
ai_hyprland = nixosSystem (idol_ai_modules_hyprland // stable_args);
|
||||||
|
|
||||||
|
aquamarine = nixosSystem (idol_aquamarine_modules // stable_args);
|
||||||
|
ruby = nixosSystem (idol_ruby_modules // stable_args);
|
||||||
|
kana = nixosSystem (idol_kana_modules // stable_args);
|
||||||
};
|
};
|
||||||
|
|
||||||
nixos-test = nixpkgs.lib.nixosSystem rec {
|
# take system images for idols
|
||||||
system = "x86_64-linux";
|
# https://github.com/nix-community/nixos-generators
|
||||||
specialArgs = {
|
packages."${x64_system}" =
|
||||||
pkgs-stable = import inputs.nixpkgs-stable {
|
# genAttrs returns an attribute set with the given keys and values(host => image).
|
||||||
system = system;
|
nixpkgs.lib.genAttrs [
|
||||||
|
"ai_i3"
|
||||||
|
"ai_hyprland"
|
||||||
|
] (
|
||||||
|
host:
|
||||||
|
self.nixosConfigurations.${host}.config.formats.iso
|
||||||
|
)
|
||||||
|
// nixpkgs.lib.genAttrs [
|
||||||
|
"aquamarine"
|
||||||
|
"ruby"
|
||||||
|
"kana"
|
||||||
|
] (
|
||||||
|
host:
|
||||||
|
self.nixosConfigurations.${host}.config.formats.proxmox
|
||||||
|
);
|
||||||
|
|
||||||
|
# macOS's configuration, for work.
|
||||||
|
darwinConfigurations = let
|
||||||
|
system = x64_darwin;
|
||||||
|
specialArgs =
|
||||||
|
{
|
||||||
|
inherit username userfullname useremail;
|
||||||
|
# use unstable branch for some packages to get the latest updates
|
||||||
|
pkgs-unstable = import nixpkgs-unstable {
|
||||||
|
inherit system; # refer the `system` parameter form outer scope recursively
|
||||||
|
# To use chrome, we need to allow the installation of non-free software
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
} // inputs;
|
|
||||||
modules = [
|
|
||||||
./hosts/nixos-test
|
|
||||||
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
home-manager.users.ryan = import ./home/linux/wayland.nix;
|
|
||||||
}
|
}
|
||||||
];
|
// inputs;
|
||||||
|
base_args = {
|
||||||
|
inherit nix-darwin home-manager system specialArgs;
|
||||||
};
|
};
|
||||||
};
|
in {
|
||||||
|
harmonica = macosSystem (base_args // {
|
||||||
# configurations for MacOS
|
darwin-modules = [
|
||||||
darwinConfigurations."harmonica" = darwin.lib.darwinSystem {
|
|
||||||
system = "x86_64-darwin";
|
|
||||||
|
|
||||||
specialArgs = inputs;
|
|
||||||
modules = [
|
|
||||||
./hosts/harmonica
|
./hosts/harmonica
|
||||||
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
|
|
||||||
home-manager.extraSpecialArgs = inputs;
|
|
||||||
home-manager.users.admin = import ./home/darwin;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
home-module = import ./home/darwin;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
# generate qcow2 & iso image from nixos configuration
|
# format the nix code in this flake
|
||||||
# https://github.com/nix-community/nixos-generators
|
# alejandra is a nix formatter with a beautiful output
|
||||||
# packages.x86_64-linux = {
|
formatter = nixpkgs.lib.genAttrs allSystems (
|
||||||
# qcow2 = nixos-generators.nixosGenerate {
|
system:
|
||||||
# system = "x86_64-linux";
|
nixpkgs.legacyPackages.${system}.alejandra
|
||||||
# modules = [
|
);
|
||||||
# # you can include your own nixos configuration here, i.e.
|
|
||||||
# # ./configuration.nix
|
|
||||||
# ];
|
|
||||||
# format = "qcow";
|
|
||||||
|
|
||||||
# # you can also define your own custom formats
|
|
||||||
# # customFormats = { "myFormat" = <myFormatModule>; ... };
|
|
||||||
# # format = "myFormat";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# iso = nixos-generators.nixosGenerate {
|
|
||||||
# system = "x86_64-linux";
|
|
||||||
# modules = [
|
|
||||||
# # you can include your own nixos configuration here, i.e.
|
|
||||||
# # ./configuration.nix
|
|
||||||
# ];
|
|
||||||
# format = "iso";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
{ lib, stdenvNoCC, fetchgit }:
|
|
||||||
|
|
||||||
stdenvNoCC.mkDerivation rec {
|
|
||||||
pname = "archcraft-font";
|
|
||||||
version = "2023-05-07";
|
|
||||||
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://github.com/archcraft-os/archcraft-packages.git";
|
|
||||||
rev = "88030ee6d2df80db958541b53bd3673e081720cf"; # git commit id
|
|
||||||
sparseCheckout = [ "archcraft-fonts/files/icon-fonts/archcraft.ttf" ]; # only fetch the feather.ttf file
|
|
||||||
|
|
||||||
# the sha256 is used to verify the integrity of the downloaded source, and alse cache the build result.
|
|
||||||
# so if you copy other package src's sha256, you will get a cached build result of that package, and all configs in this file will be ignored.
|
|
||||||
# specify sha256 to empty and build it, then an error will indicate the correct sha256
|
|
||||||
sha256 = "sha256-DrGN8lN4Yr1RTyCUZhJjzKgCuC0vTnSWjOKovNg3T/U=";
|
|
||||||
};
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
install -Dm644 archcraft-fonts/files/icon-fonts/archcraft.ttf -t $out/share/fonts/truetype/
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
homepage = "https://github.com/archcraft-os/archcraft-packages";
|
|
||||||
description = "Archcraft icon font";
|
|
||||||
version = version;
|
|
||||||
longDescription = ''Archcraft icon font'';
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ maintainers.ryan4yin ];
|
|
||||||
platforms = platforms.all;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
{ lib, stdenvNoCC, fetchgit }:
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchgit,
|
||||||
|
}:
|
||||||
stdenvNoCC.mkDerivation rec {
|
stdenvNoCC.mkDerivation rec {
|
||||||
pname = "icomoon-feather-font";
|
pname = "icomoon-feather-font";
|
||||||
version = "2023-05-06";
|
version = "2023-05-06";
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
###########################################################
|
||||||
|
#
|
||||||
|
# Alacritty Configuration
|
||||||
|
#
|
||||||
|
# Useful Hot Keys for macOS:
|
||||||
|
# 1. Multi-Window: `command + N`
|
||||||
|
# 2. Increase Font Size: `command + =` | `command + +`
|
||||||
|
# 3. Decrease Font Size: `command + -` | `command + _`
|
||||||
|
# 4. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||||
|
#
|
||||||
|
# Useful Hot Keys for Linux:
|
||||||
|
# 1. Increase Font Size: `ctrl + shift + =` | `ctrl + shift + +`
|
||||||
|
# 2. Decrease Font Size: `ctrl + shift + -` | `ctrl + shift + _`
|
||||||
|
# 3. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||||
|
#
|
||||||
|
# Note: Alacritty do not have support for Tabs, and any graphic protocol.
|
||||||
|
#
|
||||||
|
###########################################################
|
||||||
|
{
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."alacritty/alacritty.yml".text =
|
||||||
|
''
|
||||||
|
import:
|
||||||
|
# all alacritty themes can be found at
|
||||||
|
# https://github.com/alacritty/alacritty-theme
|
||||||
|
- ~/.config/alacritty/theme_catppuccino.yml
|
||||||
|
|
||||||
|
window:
|
||||||
|
# Background opacity
|
||||||
|
#
|
||||||
|
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||||
|
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||||
|
opacity: 0.95
|
||||||
|
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
startup_mode: Windowed
|
||||||
|
|
||||||
|
# Allow terminal applications to change Alacritty's window title.
|
||||||
|
dynamic_title: true
|
||||||
|
|
||||||
|
# Make `Option` key behave as `Alt` (macOS only):
|
||||||
|
# - OnlyLeft
|
||||||
|
# - OnlyRight
|
||||||
|
# - Both
|
||||||
|
# - None (default)
|
||||||
|
option_as_alt: Both
|
||||||
|
|
||||||
|
scrolling:
|
||||||
|
# Maximum number of lines in the scrollback buffer.
|
||||||
|
# Specifying '0' will disable scrolling.
|
||||||
|
history: 10000
|
||||||
|
|
||||||
|
# Scrolling distance multiplier.
|
||||||
|
#multiplier: 3
|
||||||
|
|
||||||
|
# Font configuration
|
||||||
|
font:
|
||||||
|
# Normal (roman) font face
|
||||||
|
bold:
|
||||||
|
family: JetBrainsMono Nerd Font
|
||||||
|
italic:
|
||||||
|
family: JetBrainsMono Nerd Font
|
||||||
|
normal:
|
||||||
|
family: JetBrainsMono Nerd Font
|
||||||
|
bold_italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: JetBrainsMono Nerd Font
|
||||||
|
''
|
||||||
|
+ (
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then ''
|
||||||
|
# Point size
|
||||||
|
size: 14
|
||||||
|
shell: # force nushell as default shell on macOS
|
||||||
|
program: /run/current-system/sw/bin/nu
|
||||||
|
''
|
||||||
|
else ''
|
||||||
|
# holder identation
|
||||||
|
# Point size
|
||||||
|
size: 13
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
xdg.configFile."alacritty/theme_catppuccino.yml".source = ./theme_catppuccino.yml;
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# Catppuccino theme scheme for Alacritty
|
||||||
|
|
||||||
|
colors:
|
||||||
|
primary:
|
||||||
|
background: '#1E1E2E'
|
||||||
|
foreground: '0xd6d6d6'
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
text: '#CDD6F4'
|
||||||
|
cursor: '#D9D9D9'
|
||||||
|
|
||||||
|
normal:
|
||||||
|
black: '#181A1F'
|
||||||
|
red: '#E86671'
|
||||||
|
green: '#98C379'
|
||||||
|
yellow: '#E5C07B'
|
||||||
|
blue: '#61AFEF'
|
||||||
|
magenta: '#C678DD'
|
||||||
|
cyan: '#54AFBC'
|
||||||
|
white: '#ABB2BF'
|
||||||
|
|
||||||
|
bright:
|
||||||
|
black: '#5C6370'
|
||||||
|
red: '#E86671'
|
||||||
|
green: '#98C379'
|
||||||
|
yellow: '#E5C07B'
|
||||||
|
blue: '#61AFEF'
|
||||||
|
magenta: '#C678DD'
|
||||||
|
cyan: '#54AFBC'
|
||||||
|
white: '0xf7f7f7'
|
||||||
|
|
||||||
|
dim:
|
||||||
|
black: '#5C6370'
|
||||||
|
red: '0x74423f'
|
||||||
|
green: '#98C379'
|
||||||
|
yellow: '#E5C07B'
|
||||||
|
blue: '#61AFEF'
|
||||||
|
magenta: '0x6e4962'
|
||||||
|
cyan: '0x5c8482'
|
||||||
|
white: '0x828282'
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./alacritty
|
||||||
|
../server
|
||||||
|
./neovim
|
||||||
|
|
||||||
|
./development.nix
|
||||||
|
./kitty.nix
|
||||||
|
./media.nix
|
||||||
|
./shell.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
# Basic settings for development environment
|
||||||
|
#
|
||||||
|
# Please avoid to install language specific packages here(globally),
|
||||||
|
# instead, install them independently using dev-templates:
|
||||||
|
# https://github.com/the-nix-way/dev-templates
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pkgs-unstable.devbox
|
||||||
|
|
||||||
|
# cloud native
|
||||||
|
skopeo
|
||||||
|
docker-compose
|
||||||
|
dive # explore docker layers
|
||||||
|
kubectl
|
||||||
|
kubernetes-helm
|
||||||
|
terraform
|
||||||
|
# terraformer # generate terraform configs from existing cloud resources
|
||||||
|
pulumi
|
||||||
|
pulumictl
|
||||||
|
k9s
|
||||||
|
# istioctl
|
||||||
|
|
||||||
|
# cloud provider
|
||||||
|
awscli2
|
||||||
|
aws-iam-authenticator
|
||||||
|
eksctl
|
||||||
|
|
||||||
|
# DO NOT install build tools for C/C++, set it per project by devShell instead
|
||||||
|
gnumake # used by this repo, to simplify the deployment
|
||||||
|
|
||||||
|
# python
|
||||||
|
(python311.withPackages (ps:
|
||||||
|
with ps; [
|
||||||
|
ipython
|
||||||
|
pandas
|
||||||
|
requests
|
||||||
|
pyquery
|
||||||
|
pyyaml
|
||||||
|
]))
|
||||||
|
|
||||||
|
# db related
|
||||||
|
dbeaver
|
||||||
|
mycli
|
||||||
|
pgcli
|
||||||
|
mongosh
|
||||||
|
sqlite
|
||||||
|
|
||||||
|
# embedded development
|
||||||
|
minicom
|
||||||
|
|
||||||
|
# other tools
|
||||||
|
k6 # load testing tool
|
||||||
|
mitmproxy # http/https proxy tool
|
||||||
|
protobuf # protocol buffer compiler
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
###########################################################
|
||||||
|
#
|
||||||
|
# Kitty Configuration
|
||||||
|
#
|
||||||
|
# Useful Hot Keys for macOS:
|
||||||
|
# 1. New Tab: `command + t`
|
||||||
|
# 2. Close Tab: `command + w`
|
||||||
|
# 3. Switch Tab: `shift + command + [` | `shift + command + ]`
|
||||||
|
# 4. Increase Font Size: `command + =` | `command + +`
|
||||||
|
# 5. Decrease Font Size: `command + -` | `command + _`
|
||||||
|
# 6. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||||
|
#
|
||||||
|
# Useful Hot Keys for Linux:
|
||||||
|
# 1. New Tab: `ctrl + shift + t`
|
||||||
|
# 2. Close Tab: `ctrl + shift + q`
|
||||||
|
# 3. Switch Tab: `ctrl + shift + right` | `ctrl + shift + left`
|
||||||
|
# 4. Increase Font Size: `ctrl + shift + =` | `ctrl + shift + +`
|
||||||
|
# 5. Decrease Font Size: `ctrl + shift + -` | `ctrl + shift + _`
|
||||||
|
# 6. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||||
|
#
|
||||||
|
###########################################################
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
theme = "Catppuccin-Mocha";
|
||||||
|
font = {
|
||||||
|
name = "JetBrainsMono Nerd Font";
|
||||||
|
# use different font size on macOS
|
||||||
|
size =
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then 14
|
||||||
|
else 13;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings =
|
||||||
|
{
|
||||||
|
background_opacity = "0.95";
|
||||||
|
macos_option_as_alt = true; # Option key acts as Alt on macOS
|
||||||
|
scrollback_lines = 10000;
|
||||||
|
enable_audio_bell = false;
|
||||||
|
}
|
||||||
|
// (
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then {
|
||||||
|
# macOS specific settings, force kitty to use nushell as default shell
|
||||||
|
shell = "/run/current-system/sw/bin/nu";
|
||||||
|
}
|
||||||
|
else {}
|
||||||
|
);
|
||||||
|
|
||||||
|
# macOS specific settings
|
||||||
|
darwinLaunchOptions = ["--start-as=fullscreen"];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
ffmpeg-full
|
ffmpeg-full
|
||||||
|
|
||||||
# images
|
# images
|
||||||
viu # terminal image viewer
|
viu # Terminal image viewer with native support for iTerm and Kitty
|
||||||
imagemagick
|
imagemagick
|
||||||
graphviz
|
graphviz
|
||||||
];
|
];
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# AstroNvim
|
||||||
|
|
||||||
|
My Neovim config based on [AstroNvim](https://github.com/AstroNvim/AstroNvim).
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
return {
|
||||||
|
colorscheme = "catppuccin",
|
||||||
|
|
||||||
|
options = {
|
||||||
|
opt = {
|
||||||
|
relativenumber = true, -- Show relative numberline
|
||||||
|
signcolumn = "auto", -- Show sign column when used only
|
||||||
|
spell = false, -- Spell checking
|
||||||
|
swapfile = false, -- Swapfile
|
||||||
|
smartindent = false; -- fix https://github.com/ryan4yin/nix-config/issues/4
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
"AstroNvim/astrocommunity",
|
||||||
|
-- colorscheme - catppuccin
|
||||||
|
{ import = "astrocommunity.colorscheme.catppuccin" },
|
||||||
|
-- Highly experimental plugin that completely replaces
|
||||||
|
-- the UI for messages, cmdline and the popupmenu.
|
||||||
|
{ import = "astrocommunity.utility.noice-nvim" },
|
||||||
|
-- Fully featured & enhanced replacement for copilot.vim
|
||||||
|
-- <Tab> work with both auto completion in cmp and copilot
|
||||||
|
{ import = "astrocommunity.media.vim-wakatime" },
|
||||||
|
{ import = "astrocommunity.motion.leap-nvim" },
|
||||||
|
{ import = "astrocommunity.motion.flit-nvim" },
|
||||||
|
{ import = "astrocommunity.scrolling.nvim-scrollbar" },
|
||||||
|
{ import = "astrocommunity.editing-support.auto-save-nvim" },
|
||||||
|
{ import = "astrocommunity.editing-support.todo-comments-nvim" },
|
||||||
|
-- Language Support
|
||||||
|
---- Frontend & NodeJS
|
||||||
|
{ import = "astrocommunity.pack.typescript-all-in-one" },
|
||||||
|
{ import = "astrocommunity.pack.tailwindcss" },
|
||||||
|
{ import = "astrocommunity.pack.html-css" },
|
||||||
|
{ import = "astrocommunity.pack.prisma" },
|
||||||
|
{ import = "astrocommunity.pack.vue" },
|
||||||
|
---- Configuration Language
|
||||||
|
{ import = "astrocommunity.pack.markdown" },
|
||||||
|
{ import = "astrocommunity.markdown-and-latex.glow-nvim" },
|
||||||
|
{ import = "astrocommunity.pack.json" },
|
||||||
|
{ import = "astrocommunity.pack.yaml" },
|
||||||
|
{ import = "astrocommunity.pack.toml" },
|
||||||
|
---- Backend
|
||||||
|
{ import = "astrocommunity.pack.lua" },
|
||||||
|
{ import = "astrocommunity.pack.go" },
|
||||||
|
{ import = "astrocommunity.pack.rust" },
|
||||||
|
{ import = "astrocommunity.pack.python" },
|
||||||
|
{ import = "astrocommunity.pack.java" },
|
||||||
|
-- { import = "astrocommunity.pack.nix" }, -- manually add config for nix, comment this one.
|
||||||
|
{ import = "astrocommunity.pack.proto" },
|
||||||
|
---- Operation & Cloud Native
|
||||||
|
{ import = "astrocommunity.pack.terraform" },
|
||||||
|
{ import = "astrocommunity.pack.bash" },
|
||||||
|
{ import = "astrocommunity.pack.cmake" },
|
||||||
|
{ import = "astrocommunity.pack.cpp" },
|
||||||
|
{ import = "astrocommunity.pack.docker" },
|
||||||
|
-- AI Assistant
|
||||||
|
{ import = "astrocommunity.completion.copilot-lua-cmp" },
|
||||||
|
-- Custom copilot-lua to enable filtypes: markdown
|
||||||
|
{
|
||||||
|
"zbirenbaum/copilot.lua",
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.filetypes = {
|
||||||
|
yaml = true;
|
||||||
|
markdown = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
---- Nushell
|
||||||
|
{
|
||||||
|
"LhKipp/nvim-nu",
|
||||||
|
config = function()
|
||||||
|
require'nu'.setup({
|
||||||
|
use_lsp_features = true, -- requires https://github.com/jose-elias-alvarez/null-ls.nvim
|
||||||
|
-- lsp_feature: all_cmd_names is the source for the cmd name completion.
|
||||||
|
-- It can be
|
||||||
|
-- * a string, which is interpreted as a shell command and the returned list is the source for completions (requires plenary.nvim)
|
||||||
|
-- * a list, which is the direct source for completions (e.G. all_cmd_names = {"echo", "to csv", ...})
|
||||||
|
-- * a function, returning a list of strings and the return value is used as the source for completions
|
||||||
|
all_cmd_names = [[nu -c 'help commands | get name | str join "\n"']]
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
dependencies = {
|
||||||
|
{"nvim-treesitter/nvim-treesitter"},
|
||||||
|
{ "jose-elias-alvarez/null-ls.nvim"},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- File explorer(Custom configs)
|
||||||
|
{
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
opts = {
|
||||||
|
filesystem = {
|
||||||
|
filtered_items = {
|
||||||
|
visible = true, -- visible by default
|
||||||
|
hide_dotfiles = false,
|
||||||
|
hide_gitignored = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- The plugin offers the `:Refactor` command to refactor code.
|
||||||
|
-- TODO not work yet
|
||||||
|
{
|
||||||
|
"ThePrimeagen/refactoring.nvim",
|
||||||
|
dependencies = {
|
||||||
|
{"nvim-lua/plenary.nvim"},
|
||||||
|
{"nvim-treesitter/nvim-treesitter"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- The plugin offers the `:Spectre` command to search and replace.
|
||||||
|
-- TODO not work yet
|
||||||
|
{
|
||||||
|
"nvim-pack/nvim-spectre",
|
||||||
|
dependencies = {
|
||||||
|
{"nvim-lua/plenary.nvim"},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Language Parser for syntax highlighting / indentation / folding / Incremental selection
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = function(_, opts)
|
||||||
|
local utils = require "astronvim.utils";
|
||||||
|
opts.indent.enable = false;
|
||||||
|
opts.ensure_installed = utils.list_insert_unique(opts.ensure_installed, {
|
||||||
|
-- neovim
|
||||||
|
"vim",
|
||||||
|
"lua",
|
||||||
|
-- operation & cloud native
|
||||||
|
"dockerfile",
|
||||||
|
"hcl",
|
||||||
|
"jsonnet",
|
||||||
|
"regex",
|
||||||
|
"terraform",
|
||||||
|
"nix",
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Install lsp, formmatter and others via home manager instead of Mason.nvim
|
||||||
|
-- LSP installations
|
||||||
|
{
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
-- overwrite ensure_installed to install lsp via home manager(except emmet_ls)
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.ensure_installed = {
|
||||||
|
"emmet_ls", -- not exist in nixpkgs, so install it via mason
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Formatters/Linter installation
|
||||||
|
{
|
||||||
|
"jay-babu/mason-null-ls.nvim",
|
||||||
|
-- ensure_installed nothing
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.ensure_installed = nil
|
||||||
|
opts.automatic_installation = false
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jose-elias-alvarez/null-ls.nvim",
|
||||||
|
opts = function(_, opts)
|
||||||
|
local null_ls = require "null-ls"
|
||||||
|
local code_actions = null_ls.builtins.code_actions
|
||||||
|
local diagnostics = null_ls.builtins.diagnostics
|
||||||
|
local formatting = null_ls.builtins.formatting
|
||||||
|
local hover = null_ls.builtins.hover
|
||||||
|
local completion = null_ls.builtins.completion
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md
|
||||||
|
if type(opts.sources) == "table" then
|
||||||
|
vim.list_extend(opts.sources, {
|
||||||
|
-- Common Code Actions
|
||||||
|
code_actions.gitsigns,
|
||||||
|
-- common refactoring actions based off the Refactoring book by Martin Fowler
|
||||||
|
code_actions.refactoring,
|
||||||
|
code_actions.gomodifytags, -- Go - modify struct field tags
|
||||||
|
code_actions.impl, -- Go - generate interface method stubs
|
||||||
|
code_actions.shellcheck,
|
||||||
|
code_actions.proselint, -- English prose linter
|
||||||
|
code_actions.statix, -- Lints and suggestions for Nix.
|
||||||
|
|
||||||
|
-- Completion
|
||||||
|
completion.luasnip,
|
||||||
|
|
||||||
|
-- Diagnostic
|
||||||
|
diagnostics.actionlint, -- GitHub Actions workflow syntax checking
|
||||||
|
diagnostics.buf, -- check text in current buffer
|
||||||
|
diagnostics.checkmake, -- check Makefiles
|
||||||
|
diagnostics.deadnix, -- Scan Nix files for dead code.
|
||||||
|
|
||||||
|
-- Formatting
|
||||||
|
formatting.prettier, -- js/ts/vue/css/html/json/... formatter
|
||||||
|
diagnostics.hadolint, -- Dockerfile linter
|
||||||
|
formatting.black, -- Python formatter
|
||||||
|
formatting.ruff, -- extremely fast Python linter
|
||||||
|
formatting.goimports, -- Go formatter
|
||||||
|
formatting.shfmt, -- Shell formatter
|
||||||
|
formatting.rustfmt, -- Rust formatter
|
||||||
|
formatting.taplo, -- TOML formatteautoindentr
|
||||||
|
formatting.terraform_fmt, -- Terraform formatter
|
||||||
|
formatting.stylua, -- Lua formatter
|
||||||
|
formatting.alejandra, -- Nix formatter
|
||||||
|
formatting.sqlfluff.with({ -- SQL formatter
|
||||||
|
extra_args = { "--dialect", "postgres" }, -- change to your dialect
|
||||||
|
}),
|
||||||
|
formatting.nginx_beautifier, -- Nginx formatter
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Debugger installation
|
||||||
|
{
|
||||||
|
"jay-babu/mason-nvim-dap.nvim",
|
||||||
|
-- overrides `require("mason-nvim-dap").setup(...)`
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.ensure_installed = nil
|
||||||
|
opts.automatic_installation = false
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Configure require("lazy").setup() options
|
||||||
|
lazy = {
|
||||||
|
defaults = { lazy = true },
|
||||||
|
performance = {
|
||||||
|
rtp = {
|
||||||
|
-- customize default disabled vim plugins
|
||||||
|
disabled_plugins = { };
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
config = {
|
||||||
|
-- the offset_enconding of clangd will confilicts whit null-ls
|
||||||
|
-- so we need to manually set it to utf-8
|
||||||
|
clangd = {
|
||||||
|
capabilities = {
|
||||||
|
offsetEncoding = "utf-8",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- enable servers that installed by home-manager instead of mason
|
||||||
|
servers = {
|
||||||
|
---- Frontend & NodeJS
|
||||||
|
"tsserver", -- typescript/javascript language server
|
||||||
|
"tailwindcss", -- tailwindcss language server
|
||||||
|
"html", -- html language server
|
||||||
|
"cssls", -- css language server
|
||||||
|
"prismals", -- prisma language server
|
||||||
|
"volar", -- vue language server
|
||||||
|
---- Configuration Language
|
||||||
|
"marksman", -- markdown ls
|
||||||
|
"jsonls", -- json language server
|
||||||
|
"yamlls", -- yaml language server
|
||||||
|
"taplo", -- toml language server
|
||||||
|
---- Backend
|
||||||
|
"lua_ls", -- lua
|
||||||
|
"gopls", -- go
|
||||||
|
"rust_analyzer", -- rust
|
||||||
|
"pyright", -- python
|
||||||
|
"ruff_lsp", -- extremely fast Python linter and code transformation
|
||||||
|
"jdtls", -- java
|
||||||
|
"nil_ls", -- nix language server
|
||||||
|
"bufls", -- protocol buffer language server
|
||||||
|
"zls", -- zig language server
|
||||||
|
---- Operation & Cloud Nativautoindente
|
||||||
|
"bashls", -- bash
|
||||||
|
"cmake", -- cmake language server
|
||||||
|
"clangd", -- c/c++
|
||||||
|
"dockerls", -- dockerfile
|
||||||
|
"jsonnet_ls", -- jsonnet language server
|
||||||
|
"terraformls", -- terraform hcl
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
disabled = {},
|
||||||
|
format_on_save = {
|
||||||
|
enabled = true,
|
||||||
|
allow_filetypes = {
|
||||||
|
"go",
|
||||||
|
"jsonnet",
|
||||||
|
"rust",
|
||||||
|
"terraform",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
-- Mapping data with "desc" stored directly by vim.keymap.set().
|
||||||
|
--
|
||||||
|
-- Please use this mappings table to set keyboard mapping since this is the
|
||||||
|
-- lower level configuration and more robust one. (which-key will
|
||||||
|
-- automatically pick-up stored data by this setting.)
|
||||||
|
local utils = require "astronvim.utils"
|
||||||
|
return {
|
||||||
|
-- first key is the mode
|
||||||
|
n = {
|
||||||
|
-- second key is the lefthand side of the map
|
||||||
|
-- mappings seen under group name "Buffer"
|
||||||
|
["<leader>bn"] = { "<cmd>tabnew<cr>", desc = "New tab" },
|
||||||
|
-- quick save
|
||||||
|
["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
|
||||||
|
["<leader>tp"] = { function() utils.toggle_term_cmd("ipython") end, desc = "ToggleTerm python" },
|
||||||
|
},
|
||||||
|
t = {
|
||||||
|
-- setting a mapping to false will disable it
|
||||||
|
-- ["<esc>"] = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,223 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
astronvim,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# AstroNvim's configuration and all its dependencies
|
||||||
|
#
|
||||||
|
# Related folders:
|
||||||
|
# nvim's config: `~/.config/nvim`
|
||||||
|
# astronvim's user configuration: `$XDG_CONFIG_HOME/astronvim/lua/user`
|
||||||
|
# all plugins will be installed into(by lazy.nvim): `~/.local/share/nvim/`
|
||||||
|
#
|
||||||
|
# For details: https://astronvim.com/
|
||||||
|
#
|
||||||
|
# Toggle visual mode: `v`
|
||||||
|
# Toggle visual block mode: `<Ctrl> + v` (select a block(vertically) of text)
|
||||||
|
#
|
||||||
|
# Commands & shortcuts in AstroNvim
|
||||||
|
# Learn Neovim's Basics: `:Tutor`
|
||||||
|
# Opening file explorer: `<Space> + e`
|
||||||
|
# Focus Neotree to current file: `<Space> + o`
|
||||||
|
# Floating Terminal: `<Space> + tf`
|
||||||
|
# Horizontal Split Terminal: `<Space> + th`
|
||||||
|
# Vertical Split Terminal: `<Space> + tv`
|
||||||
|
# Open IPython REPL: `<Space> + tp`
|
||||||
|
# Opening LSP symbols: `<Space> + lS`
|
||||||
|
# Show line diagnostics: `gl`
|
||||||
|
# Go to definition: `gd`
|
||||||
|
#
|
||||||
|
# Switching between windows: `<Ctrl> + h/j/k/l`
|
||||||
|
# Resizing windows: `<Ctrl> + Up/Down/Left/Right`
|
||||||
|
# Note that on macOS, this is conflict with system's default shortcuts.
|
||||||
|
# You need disable them in System Preferences -> Keyboard -> Shortcuts -> Mission Control.
|
||||||
|
# Horizontal Split: `\`
|
||||||
|
# Vertical Split: `|`
|
||||||
|
# Next Buffer(Tab): `]b`
|
||||||
|
# Previous Buffer(Tab): `[b`
|
||||||
|
# Close Buffer: `<Space> + c`
|
||||||
|
#
|
||||||
|
# Toggle buffer auto formatting: `<Space> + uf`
|
||||||
|
# Format Document: `<Space> + lf`
|
||||||
|
# Comment Line: `<Space> + /`
|
||||||
|
# Can be used in visual mode
|
||||||
|
# Code Actions: `<Space> + la`
|
||||||
|
# Rename: `<Space> + lr`
|
||||||
|
# Open filepath/URL at cursor: `gx`
|
||||||
|
# This is a neovim builtin command
|
||||||
|
# Find files by name(fzf): `<Space> + ff`
|
||||||
|
# Grep string in files(repgrep): `<Space> + fw`
|
||||||
|
#
|
||||||
|
# Save Session: `<Space> + Ss`
|
||||||
|
# Last Session: `<Space> + Sl`
|
||||||
|
# Delete Session: `<Space> + Sd`
|
||||||
|
# Search Session: `<Space> + Sf`
|
||||||
|
# Load Current Directory Session:`<Space> + S.`
|
||||||
|
#
|
||||||
|
# Debugging: press `<Space> + D` to see the available bindings and options.
|
||||||
|
#
|
||||||
|
# Replace in the selected area: `:s/old/new/g` (will show `:'<,'>s/old/new/g`)
|
||||||
|
# Replace in the current line: The same as above
|
||||||
|
# Replace in the whole file: `:% s/old/new/g`
|
||||||
|
# Replace with regex: `:% s@\vhttp://(\w+)@https://\1@gc`
|
||||||
|
# 1. `\v` means means that in the regex pattern after it can be used without backslash escaping(similar to python's raw string).
|
||||||
|
# 2. `\1` means the first matched group in the pattern.
|
||||||
|
# Replace in the specific lines:
|
||||||
|
# 1. From the 10th line to the end of the file: `:10,$ s/old/new/g`
|
||||||
|
# or `:10,$ s@^@#@g`
|
||||||
|
# 2. From the 10th line to the 20th line: `:10,20 s/old/new/g`
|
||||||
|
#
|
||||||
|
# The postfix(flgas) in the above commands:
|
||||||
|
# 1. `g` means replace all the matched strings in the current line/file.
|
||||||
|
# 2. `c` means ask for confirmation before replacing.
|
||||||
|
# 3. `i` means ignore case.
|
||||||
|
#
|
||||||
|
# Joining a Selection of Lines With Space: `:join`
|
||||||
|
# Joining without spaces: `:join!`
|
||||||
|
#
|
||||||
|
# Toggle text's case: `~`
|
||||||
|
# Convert to uppercase: `U`
|
||||||
|
# Convert to lowercase: `u`
|
||||||
|
#
|
||||||
|
# Save the selected text to a file: `:w filename` (will show `:'<,'>w filename`)
|
||||||
|
#
|
||||||
|
# Search key pattern and Replace in Multiple Files:
|
||||||
|
# sed -ri "s/pattern_str/replace_str/g" $(grep "key_pattern" 'path_pattern' -rl)
|
||||||
|
#
|
||||||
|
# Search file name pattern and Replace in Multiple Files:
|
||||||
|
# sed -ri "s/pattern_str/replace_str/g" $(find . -name "pattern")
|
||||||
|
#
|
||||||
|
# ......
|
||||||
|
# See https://astronvim.com/Basic%20Usage/walkthrough
|
||||||
|
#
|
||||||
|
#e#############################################################################
|
||||||
|
{
|
||||||
|
xdg.configFile = {
|
||||||
|
# base config
|
||||||
|
"nvim" = {
|
||||||
|
# update AstroNvim
|
||||||
|
onChange = "${pkgs.neovim}/bin/nvim --headless +quitall";
|
||||||
|
source = astronvim;
|
||||||
|
};
|
||||||
|
# my cusotom astronvim config, astronvim will load it after base config
|
||||||
|
# https://github.com/AstroNvim/AstroNvim/blob/v3.32.0/lua/astronvim/bootstrap.lua#L15-L16
|
||||||
|
"astronvim/lua/user" = {
|
||||||
|
# update AstroNvim
|
||||||
|
onChange = "${pkgs.neovim}/bin/nvim --headless +quitall";
|
||||||
|
source = ./astronvim_user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
programs.npm.npmrc = ''
|
||||||
|
prefix = ''${HOME}/.npm-global
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
|
||||||
|
viAlias = false;
|
||||||
|
vimAlias = true;
|
||||||
|
|
||||||
|
withPython3 = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
extraPackages = [];
|
||||||
|
|
||||||
|
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
# search all the plugins using https://search.nixos.org/packages
|
||||||
|
luasnip
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
#-- c/c++
|
||||||
|
cmake
|
||||||
|
cmake-language-server
|
||||||
|
gnumake
|
||||||
|
checkmake
|
||||||
|
gcc # c/c++ compiler, required by nvim-treesitter!
|
||||||
|
llvmPackages.clang-unwrapped # c/c++ tools with clang-tools such as clangd
|
||||||
|
gdb
|
||||||
|
lldb
|
||||||
|
|
||||||
|
#-- python
|
||||||
|
nodePackages.pyright # python language server
|
||||||
|
python311Packages.black # python formatter
|
||||||
|
python311Packages.ruff-lsp
|
||||||
|
|
||||||
|
#-- rust
|
||||||
|
rust-analyzer
|
||||||
|
cargo # rust package manager
|
||||||
|
rustfmt
|
||||||
|
|
||||||
|
#-- zig
|
||||||
|
zls
|
||||||
|
|
||||||
|
#-- nix
|
||||||
|
nil
|
||||||
|
rnix-lsp
|
||||||
|
# nixd
|
||||||
|
statix # Lints and suggestions for the nix programming language
|
||||||
|
deadnix # Find and remove unused code in .nix source files
|
||||||
|
alejandra # Nix Code Formatter
|
||||||
|
|
||||||
|
#-- golang
|
||||||
|
go
|
||||||
|
gomodifytags
|
||||||
|
iferr # generate error handling code for go
|
||||||
|
impl # generate function implementation for go
|
||||||
|
gotools # contains tools like: godoc, goimports, etc.
|
||||||
|
gopls # go language server
|
||||||
|
delve # go debugger
|
||||||
|
|
||||||
|
#-- lua
|
||||||
|
stylua
|
||||||
|
lua-language-server
|
||||||
|
|
||||||
|
#-- bash
|
||||||
|
nodePackages.bash-language-server
|
||||||
|
shellcheck
|
||||||
|
shfmt
|
||||||
|
|
||||||
|
#-- javascript/typescript --#
|
||||||
|
nodePackages.typescript
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
# HTML/CSS/JSON/ESLint language servers extracted from vscode
|
||||||
|
nodePackages.vscode-langservers-extracted
|
||||||
|
nodePackages."@tailwindcss/language-server"
|
||||||
|
|
||||||
|
#-- CloudNative
|
||||||
|
nodePackages.dockerfile-language-server-nodejs
|
||||||
|
terraform
|
||||||
|
terraform-ls
|
||||||
|
jsonnet
|
||||||
|
jsonnet-language-server
|
||||||
|
hadolint # Dockerfile linter
|
||||||
|
|
||||||
|
#-- Others
|
||||||
|
taplo # TOML language server / formatter / validator
|
||||||
|
nodePackages.yaml-language-server
|
||||||
|
sqlfluff # SQL linter
|
||||||
|
actionlint # GitHub Actions linter
|
||||||
|
buf # protoc plugin for linting and formatting
|
||||||
|
proselint # English prose linter
|
||||||
|
|
||||||
|
#-- Misc
|
||||||
|
tree-sitter # common language parser/highlighter
|
||||||
|
nodePackages.prettier # common code formatter
|
||||||
|
marksman # language server for markdown
|
||||||
|
glow # markdown previewer
|
||||||
|
|
||||||
|
#-- Optional Requirements:
|
||||||
|
gdu # disk usage analyzer, required by AstroNvim
|
||||||
|
ripgrep # fast search tool, required by AstroNvim's '<leader>fw'(<leader> is space key)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.bash = {
|
||||||
|
# load the alias file for work
|
||||||
|
bashrcExtra = ''
|
||||||
|
alias_for_work=/etc/agenix/alias-for-work.bash
|
||||||
|
if [ -f $alias_for_work ]; then
|
||||||
|
. $alias_for_work
|
||||||
|
else
|
||||||
|
echo "No alias file found for work"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nushell = {
|
||||||
|
# load the alias file for work
|
||||||
|
# the file must exist, otherwise nushell will complain about it!
|
||||||
|
#
|
||||||
|
# currently, nushell does not support conditional sourcing of files
|
||||||
|
# https://github.com/nushell/nushell/issues/8214
|
||||||
|
extraConfig = ''
|
||||||
|
source /etc/agenix/alias-for-work.nushell
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
bashrcExtra = ''
|
||||||
|
export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
k = "kubectl";
|
||||||
|
|
||||||
|
urldecode = "python3 -c 'import sys, urllib.parse as ul; print(ul.unquote_plus(sys.stdin.read()))'";
|
||||||
|
urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,959 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Catppuccin</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cdd6f4</string>
|
||||||
|
<key>background</key>
|
||||||
|
<string>#1e1e2e</string>
|
||||||
|
<key>caret</key>
|
||||||
|
<string>#bac2de</string>
|
||||||
|
<key>invisibles</key>
|
||||||
|
<string>#a6adc8</string>
|
||||||
|
<key>gutterForeground</key>
|
||||||
|
<string>#9399b2</string>
|
||||||
|
<key>gutterForegroundHighlight</key>
|
||||||
|
<string>#a6e3a1</string>
|
||||||
|
<key>lineHighlight</key>
|
||||||
|
<string>#585b70</string>
|
||||||
|
<key>selection</key>
|
||||||
|
<string>#6c7086</string>
|
||||||
|
<key>selectionBorder</key>
|
||||||
|
<string>#1e1e2e</string>
|
||||||
|
<key>activeGuide</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>findHighlightForeground</key>
|
||||||
|
<string>#181825</string>
|
||||||
|
<key>findHighlight</key>
|
||||||
|
<string>#f9e2af</string>
|
||||||
|
<key>bracketsForeground</key>
|
||||||
|
<string>#9399b2</string>
|
||||||
|
<key>bracketContentsForeground</key>
|
||||||
|
<string>#9399b2</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Comment</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>comment</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#6c7086</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>String</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>string</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#a6e3a1</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>String regex</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>string.regexp</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Number</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>constant.numeric</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Boolean</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>constant.language.boolean</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Built-in constant</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>constant.language</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#b4befe</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Built-in function</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.function.builtin</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>User-defined constant</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.other.constant</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict></dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Keyword</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Conditional/loop</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.control.loop, keyword.control.conditional, keyword.control.c++</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cba6f7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Return</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.control.return, keyword.control.flow.return</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5c2e7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Exception</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.type.exception</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Operator</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.operator, punctuation.accessor</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89dceb</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Punctuation separator</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>punctuation.separator</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Punctuation terminator</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>punctuation.terminator</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Punctuation bracket</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>punctuation.section</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#9399b2</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Include</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.control.import.include</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>storage</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage type</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>storage.type</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f9e2af</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage modifier</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>storage.modifier</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage type namespace</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.namespace, meta.path</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage type class</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>storage.type.class</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Label</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.label</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Keyword class</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.declaration.class</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Class name</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.class, meta.toc-list.full-identifier</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89dceb</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Inherited class</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.other.inherited-class</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89dceb</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Function name</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.function, variable.function</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Function macro</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.function.preprocessor</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Macro directive - ifdef</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.control.import</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Constructor</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.function.constructor, entity.name.function.destructor</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#b4befe</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Function argument</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.parameter.function</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Function declaration</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>keyword.declaration.function</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#eba0ac</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Library function</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.function</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89dceb</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Library constant</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.constant</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Library class/type</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.type, support.class</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Library variable</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.other.variable</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable function</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.function</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable parameter</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.parameter</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable other</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.other</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cdd6f4</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable field</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.other.member</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Variable language</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.language</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Tag name</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.tag</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#fab387</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Tag attribute</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.other.attribute-name</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cba6f7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Tag delimiter</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>punctuation.definition.tag</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#eba0ac</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown URL</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.underline.link.markdown</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5e0dc</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic underline</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown reference</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>meta.link.inline.description</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#b4befe</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown literal</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>comment.block.markdown, meta.code-fence, markup.raw.code-fence, markup.raw.inline</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown title</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>punctuation.definition.heading, entity.name.section</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#89b4fa</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown emphasis</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.italic</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#eba0ac</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown strong</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.bold</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#eba0ac</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>bold</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Escape</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>constant.character.escape</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5c2e7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Bash built-in function</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>source.shell.bash meta.function.shell meta.compound.shell meta.function-call.identifier.shell</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f5c2e7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Bash parameter</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.language.shell</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Lua field</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>source.lua meta.function.lua meta.block.lua meta.mapping.value.lua meta.mapping.key.lua string.unquoted.key.lua</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#b4befe</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Lua constructor</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>source.lua meta.function.lua meta.block.lua meta.mapping.key.lua string.unquoted.key.lua</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f2cdcd</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Java constant</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.constant.java</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>CSS property</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.type.property-name.css</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f2cdcd</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>CSS constant</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>support.constant.property-value.css</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cdd6f4</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>CSS suffix</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>constant.numeric.suffix.css, keyword.other.unit.css</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string>italic</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>CSS variable property</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.other.custom-property.name.css, support.type.custom-property.name.css, punctuation.definition.custom-property.css</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>SCSS tag</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>entity.name.tag.css</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#b4befe</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>SASS variable</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>variable.other.sass</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#94e2d5</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Invalid</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>invalid</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cdd6f4</string>
|
||||||
|
<key>background</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Invalid deprecated</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>invalid.deprecated</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#cdd6f4</string>
|
||||||
|
<key>background</key>
|
||||||
|
<string>#cba6f7</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Diff header</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>meta.diff, meta.diff.header</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#6c7086</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Diff deleted</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.deleted</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Diff inserted</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.inserted</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#a6e3a1</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Diff changed</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>markup.changed</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f9e2af</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Message error</string>
|
||||||
|
<key>scope</key>
|
||||||
|
<string>message.error</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
<string>#f38ba8</string>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
<string></string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>uuid</key>
|
||||||
|
<string>4d0379b5-ef82-467b-b8b8-365889420646</string>
|
||||||
|
<key>colorSpaceName</key>
|
||||||
|
<string>sRGB</string>
|
||||||
|
<key>semanticClass</key>
|
||||||
|
<string>theme.dark.Catppuccin</string>
|
||||||
|
<key>author</key>
|
||||||
|
<string>BrunDerSchwarzmagier</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{...}: {
|
||||||
|
# a cat(1) clone with syntax highlighting and Git integration.
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
pager = "less -FR";
|
||||||
|
theme = "Catppuccin-mocha";
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
# https://raw.githubusercontent.com/catppuccin/bat/main/Catppuccin-mocha.tmTheme
|
||||||
|
Catppuccin-mocha = builtins.readFile ./Catppuccin-mocha.tmTheme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
neofetch
|
||||||
|
nnn # terminal file manager
|
||||||
|
|
||||||
|
# archives
|
||||||
|
zip
|
||||||
|
xz
|
||||||
|
unzip
|
||||||
|
p7zip
|
||||||
|
|
||||||
|
# utils
|
||||||
|
ripgrep # recursively searches directories for a regex pattern
|
||||||
|
jq # A lightweight and flexible command-line JSON processor
|
||||||
|
yq-go # yaml processer https://github.com/mikefarah/yq
|
||||||
|
fzf # A command-line fuzzy finder
|
||||||
|
|
||||||
|
# networking tools
|
||||||
|
mtr # A network diagnostic tool
|
||||||
|
iperf3
|
||||||
|
dnsutils # `dig` + `nslookup`
|
||||||
|
ldns # replacement of `dig`, it provide the command `drill`
|
||||||
|
aria2 # A lightweight multi-protocol & multi-source command-line download utility
|
||||||
|
socat # replacement of openbsd-netcat
|
||||||
|
nmap # A utility for network discovery and security auditing
|
||||||
|
ipcalc # it is a calculator for the IPv4/v6 addresses
|
||||||
|
|
||||||
|
# misc
|
||||||
|
cowsay
|
||||||
|
file
|
||||||
|
which
|
||||||
|
tree
|
||||||
|
gnused
|
||||||
|
gnutar
|
||||||
|
gawk
|
||||||
|
zstd
|
||||||
|
caddy
|
||||||
|
gnupg
|
||||||
|
|
||||||
|
# nix related
|
||||||
|
#
|
||||||
|
# it provides the command `nom` works just like `nix
|
||||||
|
# with more details log output
|
||||||
|
nix-output-monitor
|
||||||
|
nodePackages.node2nix
|
||||||
|
|
||||||
|
# productivity
|
||||||
|
hugo # static site generator
|
||||||
|
glow # markdown previewer in terminal
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
# modern vim
|
||||||
|
neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
vimAlias = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# A modern replacement for ‘ls’
|
||||||
|
# useful in bash/zsh prompt, not in nushell.
|
||||||
|
exa = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# skim provides a single executable: sk.
|
||||||
|
# Basically anywhere you would want to use grep, try sk instead.
|
||||||
|
skim = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{config, pkgs, ...}:
|
{...}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
|
./bat
|
||||||
./nushell
|
./nushell
|
||||||
|
./tmux
|
||||||
|
./zellij
|
||||||
|
|
||||||
|
./bash.nix
|
||||||
./core.nix
|
./core.nix
|
||||||
./development.nix
|
|
||||||
./git.nix
|
./git.nix
|
||||||
./media.nix
|
|
||||||
./starship.nix
|
./starship.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,9 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
|
||||||
|
userfullname,
|
||||||
|
useremail,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
# `programs.git` will generate the config file: ~/.config/git/config
|
# `programs.git` will generate the config file: ~/.config/git/config
|
||||||
@@ -16,8 +19,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
|
|
||||||
userName = "Ryan Yin";
|
userName = userfullname;
|
||||||
userEmail = "xiaoyin_c@qq.com";
|
userEmail = useremail;
|
||||||
|
|
||||||
includes = [
|
includes = [
|
||||||
{
|
{
|
||||||
@@ -28,9 +31,9 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
pull = {
|
init.defaultBranch = "main";
|
||||||
rebase = true;
|
push.autoSetupRemote = true;
|
||||||
};
|
pull.rebase = true;
|
||||||
|
|
||||||
# replace https with ssh
|
# replace https with ssh
|
||||||
url = {
|
url = {
|
||||||
@@ -57,5 +60,22 @@
|
|||||||
features = "side-by-side";
|
features = "side-by-side";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
# common aliases
|
||||||
|
br = "branch";
|
||||||
|
co = "checkout";
|
||||||
|
st = "status";
|
||||||
|
ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate";
|
||||||
|
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
|
||||||
|
cm = "commit -m";
|
||||||
|
ca = "commit -am";
|
||||||
|
dc = "diff --cached";
|
||||||
|
amend = "commit --amend -m";
|
||||||
|
|
||||||
|
# aliases for submodule
|
||||||
|
update = "submodule update --init --recursive";
|
||||||
|
foreach = "submodule foreach";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# Nushell Config File
|
||||||
|
#
|
||||||
|
# version = 0.81.1
|
||||||
|
|
||||||
|
# The default config record. This is where much of your global configuration is setup.
|
||||||
|
let-env config = {
|
||||||
|
# true or false to enable or disable the welcome banner at startup
|
||||||
|
show_banner: false
|
||||||
|
|
||||||
|
table: {
|
||||||
|
mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
|
||||||
|
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
|
||||||
|
show_empty: true # show 'empty list' and 'empty record' placeholders for command output
|
||||||
|
trim: {
|
||||||
|
methodology: wrapping # wrapping or truncating
|
||||||
|
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
|
||||||
|
truncating_suffix: "..." # A suffix used by the 'truncating' methodology
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
completions: {
|
||||||
|
case_sensitive: false # set to true to enable case-sensitive completions
|
||||||
|
quick: true # set this to false to prevent auto-selecting completions when only one remains
|
||||||
|
partial: true # set this to false to prevent partial filling of the prompt
|
||||||
|
algorithm: "prefix" # prefix or fuzzy
|
||||||
|
external: {
|
||||||
|
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow
|
||||||
|
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
|
||||||
|
completer: null # check 'carapace_completer' above as an example
|
||||||
|
}
|
||||||
|
}
|
||||||
|
filesize: {
|
||||||
|
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
|
||||||
|
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto
|
||||||
|
}
|
||||||
|
cursor_shape: {
|
||||||
|
emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line (line is the default)
|
||||||
|
vi_insert: block # block, underscore, line , blink_block, blink_underscore, blink_line (block is the default)
|
||||||
|
vi_normal: underscore # block, underscore, line, blink_block, blink_underscore, blink_line (underscore is the default)
|
||||||
|
}
|
||||||
|
use_grid_icons: true
|
||||||
|
footer_mode: "25" # always, never, number_of_rows, auto
|
||||||
|
float_precision: 2 # the precision for displaying floats in tables
|
||||||
|
# buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
||||||
|
use_ansi_coloring: true
|
||||||
|
bracketed_paste: true # enable bracketed paste, currently useless on windows
|
||||||
|
edit_mode: emacs # emacs, vi
|
||||||
|
shell_integration: true # enables terminal markers and a workaround to arrow keys stop working issue
|
||||||
|
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.nushell = {
|
||||||
|
enable = true;
|
||||||
|
configFile.source = ./config.nu;
|
||||||
|
|
||||||
|
# home-manager will merge the cotent in `environmentVariables` with the `envFile.source`
|
||||||
|
# but basically, I set all environment variables via the shell-independent way, so I don't need to use those two options
|
||||||
|
#
|
||||||
|
# envFile.source = ./env.nu;
|
||||||
|
# environmentVariables = { FOO="bar"; };
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
k = "kubectl";
|
||||||
|
|
||||||
|
urldecode = "python3 -c 'import sys, urllib.parse as ul; print(ul.unquote_plus(sys.stdin.read()))'";
|
||||||
|
urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
character = {
|
||||||
|
success_symbol = "[›](bold green)";
|
||||||
|
error_symbol = "[›](bold red)";
|
||||||
|
};
|
||||||
|
aws = {
|
||||||
|
symbol = "🅰 ";
|
||||||
|
};
|
||||||
|
gcloud = {
|
||||||
|
# do not show the account/project's info
|
||||||
|
# to avoid the leak of sensitive information when sharing the terminal
|
||||||
|
format = "on [$symbol$active(\($region\))]($style) ";
|
||||||
|
symbol = "🅶 ️";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
buildTmuxPlugin = pkgs.tmuxPlugins.mkTmuxPlugin;
|
||||||
|
in {
|
||||||
|
draculaTheme = buildTmuxPlugin {
|
||||||
|
pluginName = "dracula";
|
||||||
|
version = "v2.2.0";
|
||||||
|
src = builtins.fetchTarball {
|
||||||
|
name = "dracula-tmux-v2.2.0";
|
||||||
|
url = "https://github.com/dracula/tmux/archive/refs/tags/v2.2.0.tar.gz";
|
||||||
|
sha256 = "sha256:0v2k994yy4xx2iw8qxg7qphw46gq2qmg496i3a3h9b6jgwxqm7zn";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
plugins = pkgs.tmuxPlugins // pkgs.callPackage ./custom-plugins.nix {};
|
||||||
|
in {
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
shell = "${pkgs.nushell}/bin/nu";
|
||||||
|
|
||||||
|
# Resize the window to the size of the smallest session for which it is the current window.
|
||||||
|
#
|
||||||
|
aggressiveResize = true;
|
||||||
|
|
||||||
|
# https://github.com/tmux-plugins/tmux-sensible
|
||||||
|
# tmux-sensible overwrites default tmux shortcuts, makes them more sane.
|
||||||
|
sensibleOnTop = true;
|
||||||
|
|
||||||
|
# extraConfig = builtins.readFile ./tmux.conf;
|
||||||
|
# keyMode = "vi"; # default is emacs
|
||||||
|
|
||||||
|
baseIndex = 1; # start index from 1
|
||||||
|
escapeTime = 0; # do not wait for escape key
|
||||||
|
terminal = "xterm-256color";
|
||||||
|
|
||||||
|
plugins = with plugins; [
|
||||||
|
draculaTheme # theme
|
||||||
|
{
|
||||||
|
# https://github.com/tmux-plugins/tmux-continuum
|
||||||
|
# Continuous saving of tmux environment. Automatic restore when tmux is started.
|
||||||
|
plugin = continuum;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @continuum-save-interval '15'
|
||||||
|
|
||||||
|
# Option to display current status of tmux continuum in tmux status line.
|
||||||
|
set -g status-right 'Continuum status: #{continuum_status}'
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# https://github.com/tmux-plugins/tmux-resurrect
|
||||||
|
# Manually persists tmux environment across system restarts.
|
||||||
|
# prefix + Ctrl-s - save
|
||||||
|
# prefix + Ctrl-r - restore
|
||||||
|
#
|
||||||
|
plugin = resurrect;
|
||||||
|
# Restore Neovim sessions
|
||||||
|
extraConfig = "set -g @resurrect-strategy-nvim 'session'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# https://github.com/tmux-plugins/tmux-yank
|
||||||
|
# Enables copying to system clipboard.
|
||||||
|
plugin = yank;
|
||||||
|
}
|
||||||
|
# set -g @plugin 'tmux-plugins/tmux-cpu'
|
||||||
|
{
|
||||||
|
plugin = cpu;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g status-right '#{cpu_bg_color} CPU: #{cpu_icon} #{cpu_percentage} | %a %h-%d %H:%M '
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,355 @@
|
|||||||
|
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
|
||||||
|
keybinds {
|
||||||
|
normal {
|
||||||
|
// uncomment this and adjust key if using copy_on_select=false
|
||||||
|
// bind "Alt c" { Copy; }
|
||||||
|
}
|
||||||
|
locked {
|
||||||
|
bind "Ctrl g" { SwitchToMode "Normal"; }
|
||||||
|
}
|
||||||
|
resize {
|
||||||
|
bind "Ctrl n" { SwitchToMode "Normal"; }
|
||||||
|
bind "h" "Left" { Resize "Increase Left"; }
|
||||||
|
bind "j" "Down" { Resize "Increase Down"; }
|
||||||
|
bind "k" "Up" { Resize "Increase Up"; }
|
||||||
|
bind "l" "Right" { Resize "Increase Right"; }
|
||||||
|
bind "H" { Resize "Decrease Left"; }
|
||||||
|
bind "J" { Resize "Decrease Down"; }
|
||||||
|
bind "K" { Resize "Decrease Up"; }
|
||||||
|
bind "L" { Resize "Decrease Right"; }
|
||||||
|
bind "=" "+" { Resize "Increase"; }
|
||||||
|
bind "-" { Resize "Decrease"; }
|
||||||
|
}
|
||||||
|
pane {
|
||||||
|
bind "Ctrl p" { SwitchToMode "Normal"; }
|
||||||
|
bind "h" "Left" { MoveFocus "Left"; }
|
||||||
|
bind "l" "Right" { MoveFocus "Right"; }
|
||||||
|
bind "j" "Down" { MoveFocus "Down"; }
|
||||||
|
bind "k" "Up" { MoveFocus "Up"; }
|
||||||
|
bind "p" { SwitchFocus; }
|
||||||
|
bind "n" { NewPane; SwitchToMode "Normal"; }
|
||||||
|
bind "d" { NewPane "Down"; SwitchToMode "Normal"; }
|
||||||
|
bind "r" { NewPane "Right"; SwitchToMode "Normal"; }
|
||||||
|
bind "x" { CloseFocus; SwitchToMode "Normal"; }
|
||||||
|
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
||||||
|
bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
|
||||||
|
bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
|
||||||
|
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
|
||||||
|
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;}
|
||||||
|
}
|
||||||
|
move {
|
||||||
|
bind "Ctrl h" { SwitchToMode "Normal"; }
|
||||||
|
bind "n" "Tab" { MovePane; }
|
||||||
|
bind "p" { MovePaneBackwards; }
|
||||||
|
bind "h" "Left" { MovePane "Left"; }
|
||||||
|
bind "j" "Down" { MovePane "Down"; }
|
||||||
|
bind "k" "Up" { MovePane "Up"; }
|
||||||
|
bind "l" "Right" { MovePane "Right"; }
|
||||||
|
}
|
||||||
|
tab {
|
||||||
|
bind "Ctrl t" { SwitchToMode "Normal"; }
|
||||||
|
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||||
|
bind "h" "Left" "Up" "k" { GoToPreviousTab; }
|
||||||
|
bind "l" "Right" "Down" "j" { GoToNextTab; }
|
||||||
|
bind "n" { NewTab; SwitchToMode "Normal"; }
|
||||||
|
bind "x" { CloseTab; SwitchToMode "Normal"; }
|
||||||
|
bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
|
||||||
|
bind "1" { GoToTab 1; SwitchToMode "Normal"; }
|
||||||
|
bind "2" { GoToTab 2; SwitchToMode "Normal"; }
|
||||||
|
bind "3" { GoToTab 3; SwitchToMode "Normal"; }
|
||||||
|
bind "4" { GoToTab 4; SwitchToMode "Normal"; }
|
||||||
|
bind "5" { GoToTab 5; SwitchToMode "Normal"; }
|
||||||
|
bind "6" { GoToTab 6; SwitchToMode "Normal"; }
|
||||||
|
bind "7" { GoToTab 7; SwitchToMode "Normal"; }
|
||||||
|
bind "8" { GoToTab 8; SwitchToMode "Normal"; }
|
||||||
|
bind "9" { GoToTab 9; SwitchToMode "Normal"; }
|
||||||
|
bind "Tab" { ToggleTab; }
|
||||||
|
}
|
||||||
|
scroll {
|
||||||
|
bind "Ctrl s" { SwitchToMode "Normal"; }
|
||||||
|
bind "e" { EditScrollback; SwitchToMode "Normal"; }
|
||||||
|
bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
||||||
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
||||||
|
bind "j" "Down" { ScrollDown; }
|
||||||
|
bind "k" "Up" { ScrollUp; }
|
||||||
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
// uncomment this and adjust key if using copy_on_select=false
|
||||||
|
// bind "Alt c" { Copy; }
|
||||||
|
}
|
||||||
|
search {
|
||||||
|
bind "Ctrl s" { SwitchToMode "Normal"; }
|
||||||
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
||||||
|
bind "j" "Down" { ScrollDown; }
|
||||||
|
bind "k" "Up" { ScrollUp; }
|
||||||
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
bind "n" { Search "down"; }
|
||||||
|
bind "p" { Search "up"; }
|
||||||
|
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||||
|
bind "w" { SearchToggleOption "Wrap"; }
|
||||||
|
bind "o" { SearchToggleOption "WholeWord"; }
|
||||||
|
}
|
||||||
|
entersearch {
|
||||||
|
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
|
||||||
|
bind "Enter" { SwitchToMode "Search"; }
|
||||||
|
}
|
||||||
|
renametab {
|
||||||
|
bind "Ctrl c" { SwitchToMode "Normal"; }
|
||||||
|
bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
|
||||||
|
}
|
||||||
|
renamepane {
|
||||||
|
bind "Ctrl c" { SwitchToMode "Normal"; }
|
||||||
|
bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
|
||||||
|
}
|
||||||
|
session {
|
||||||
|
bind "Ctrl o" { SwitchToMode "Normal"; }
|
||||||
|
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
||||||
|
bind "d" { Detach; }
|
||||||
|
}
|
||||||
|
tmux {
|
||||||
|
bind "[" { SwitchToMode "Scroll"; }
|
||||||
|
bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
|
||||||
|
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
|
||||||
|
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
|
||||||
|
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
||||||
|
bind "c" { NewTab; SwitchToMode "Normal"; }
|
||||||
|
bind "," { SwitchToMode "RenameTab"; }
|
||||||
|
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
|
||||||
|
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
|
||||||
|
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
||||||
|
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
||||||
|
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
||||||
|
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
||||||
|
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
||||||
|
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
||||||
|
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
||||||
|
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
||||||
|
bind "o" { FocusNextPane; }
|
||||||
|
bind "d" { Detach; }
|
||||||
|
bind "Space" { NextSwapLayout; }
|
||||||
|
bind "x" { CloseFocus; SwitchToMode "Normal"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" {
|
||||||
|
bind "Ctrl g" { SwitchToMode "Locked"; }
|
||||||
|
bind "Ctrl q" { Quit; }
|
||||||
|
bind "Alt n" { NewPane; }
|
||||||
|
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
|
||||||
|
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
|
||||||
|
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
|
||||||
|
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
|
||||||
|
bind "Alt =" "Alt +" { Resize "Increase"; }
|
||||||
|
bind "Alt -" { Resize "Decrease"; }
|
||||||
|
bind "Alt [" { PreviousSwapLayout; }
|
||||||
|
bind "Alt ]" { NextSwapLayout; }
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" {
|
||||||
|
bind "Enter" "Esc" { SwitchToMode "Normal"; }
|
||||||
|
}
|
||||||
|
shared_except "pane" "locked" {
|
||||||
|
bind "Ctrl p" { SwitchToMode "Pane"; }
|
||||||
|
}
|
||||||
|
shared_except "resize" "locked" {
|
||||||
|
bind "Ctrl n" { SwitchToMode "Resize"; }
|
||||||
|
}
|
||||||
|
shared_except "scroll" "locked" {
|
||||||
|
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
||||||
|
}
|
||||||
|
shared_except "session" "locked" {
|
||||||
|
bind "Ctrl o" { SwitchToMode "Session"; }
|
||||||
|
}
|
||||||
|
shared_except "tab" "locked" {
|
||||||
|
bind "Ctrl t" { SwitchToMode "Tab"; }
|
||||||
|
}
|
||||||
|
shared_except "move" "locked" {
|
||||||
|
bind "Ctrl h" { SwitchToMode "Move"; }
|
||||||
|
}
|
||||||
|
shared_except "tmux" "locked" {
|
||||||
|
bind "Ctrl b" { SwitchToMode "Tmux"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
tab-bar { path "tab-bar"; }
|
||||||
|
status-bar { path "status-bar"; }
|
||||||
|
strider { path "strider"; }
|
||||||
|
compact-bar { path "compact-bar"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||||
|
// eg. when terminal window with an active zellij session is closed
|
||||||
|
// Options:
|
||||||
|
// - detach (Default)
|
||||||
|
// - quit
|
||||||
|
//
|
||||||
|
// on_force_close "quit"
|
||||||
|
|
||||||
|
// Send a request for a simplified ui (without arrow fonts) to plugins
|
||||||
|
// Options:
|
||||||
|
// - true
|
||||||
|
// - false (Default)
|
||||||
|
//
|
||||||
|
// simplified_ui true
|
||||||
|
|
||||||
|
// Choose the path to the default shell that zellij will use for opening new panes
|
||||||
|
// Default: $SHELL
|
||||||
|
// Change to nushell
|
||||||
|
//
|
||||||
|
default_shell "nu"
|
||||||
|
|
||||||
|
// Toggle between having pane frames around the panes
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// pane_frames true
|
||||||
|
|
||||||
|
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// auto_layout true
|
||||||
|
|
||||||
|
// Define color themes for Zellij
|
||||||
|
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||||
|
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
|
||||||
|
//
|
||||||
|
themes {
|
||||||
|
// https://github.com/zellij-org/zellij/blob/main/zellij-utils/assets/themes/catppuccin.kdl
|
||||||
|
catppuccin-latte {
|
||||||
|
bg "#acb0be" // Surface2
|
||||||
|
fg "#acb0be" // Surface2
|
||||||
|
red "#d20f39"
|
||||||
|
green "#40a02b"
|
||||||
|
blue "#1e66f5"
|
||||||
|
yellow "#df8e1d"
|
||||||
|
magenta "#ea76cb" // Pink
|
||||||
|
orange "#fe640b" // Peach
|
||||||
|
cyan "#04a5e5" // Sky
|
||||||
|
black "#dce0e8" // Crust
|
||||||
|
white "#4c4f69" // Text
|
||||||
|
}
|
||||||
|
|
||||||
|
catppuccin-frappe {
|
||||||
|
bg "#626880" // Surface2
|
||||||
|
fg "#c6d0f5"
|
||||||
|
red "#e78284"
|
||||||
|
green "#a6d189"
|
||||||
|
blue "#8caaee"
|
||||||
|
yellow "#e5c890"
|
||||||
|
magenta "#f4b8e4" // Pink
|
||||||
|
orange "#ef9f76" // Peach
|
||||||
|
cyan "#99d1db" // Sky
|
||||||
|
black "#292c3c" // Mantle
|
||||||
|
white "#c6d0f5"
|
||||||
|
}
|
||||||
|
|
||||||
|
catppuccin-macchiato {
|
||||||
|
bg "#5b6078" // Surface2
|
||||||
|
fg "#cad3f5"
|
||||||
|
red "#ed8796"
|
||||||
|
green "#a6da95"
|
||||||
|
blue "#8aadf4"
|
||||||
|
yellow "#eed49f"
|
||||||
|
magenta "#f5bde6" // Pink
|
||||||
|
orange "#f5a97f" // Peach
|
||||||
|
cyan "#91d7e3" // Sky
|
||||||
|
black "#1e2030" // Mantle
|
||||||
|
white "#cad3f5"
|
||||||
|
}
|
||||||
|
|
||||||
|
catppuccin-mocha {
|
||||||
|
bg "#585b70" // Surface2
|
||||||
|
fg "#cdd6f4"
|
||||||
|
red "#f38ba8"
|
||||||
|
green "#a6e3a1"
|
||||||
|
blue "#89b4fa"
|
||||||
|
yellow "#f9e2af"
|
||||||
|
magenta "#f5c2e7" // Pink
|
||||||
|
orange "#fab387" // Peach
|
||||||
|
cyan "#89dceb" // Sky
|
||||||
|
black "#181825" // Mantle
|
||||||
|
white "#cdd6f4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Choose the theme that is specified in the themes section.
|
||||||
|
// Default: default
|
||||||
|
//
|
||||||
|
theme "catppuccin-mocha"
|
||||||
|
|
||||||
|
// The name of the default layout to load on startup
|
||||||
|
// Default: "default"
|
||||||
|
//
|
||||||
|
// default_layout "compact"
|
||||||
|
|
||||||
|
// Choose the mode that zellij uses when starting up.
|
||||||
|
// Default: normal
|
||||||
|
//
|
||||||
|
// default_mode "locked"
|
||||||
|
|
||||||
|
// Toggle enabling the mouse mode.
|
||||||
|
// On certain configurations, or terminals this could
|
||||||
|
// potentially interfere with copying text.
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// mouse_mode false
|
||||||
|
|
||||||
|
// Configure the scroll back buffer size
|
||||||
|
// This is the number of lines zellij stores for each pane in the scroll back
|
||||||
|
// buffer. Excess number of lines are discarded in a FIFO fashion.
|
||||||
|
// Valid values: positive integers
|
||||||
|
// Default value: 10000
|
||||||
|
//
|
||||||
|
// scroll_buffer_size 10000
|
||||||
|
|
||||||
|
// Provide a command to execute when copying text. The text will be piped to
|
||||||
|
// the stdin of the program to perform the copy. This can be used with
|
||||||
|
// terminal emulators which do not support the OSC 52 ANSI control sequence
|
||||||
|
// that will be used by default if this option is not set.
|
||||||
|
// Examples:
|
||||||
|
//
|
||||||
|
// copy_command "xclip -selection clipboard" // x11
|
||||||
|
// copy_command "wl-copy" // wayland
|
||||||
|
// copy_command "pbcopy" // osx
|
||||||
|
|
||||||
|
// Choose the destination for copied text
|
||||||
|
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
||||||
|
// Does not apply when using copy_command.
|
||||||
|
// Options:
|
||||||
|
// - system (default)
|
||||||
|
// - primary
|
||||||
|
//
|
||||||
|
// copy_clipboard "primary"
|
||||||
|
|
||||||
|
// Enable or disable automatic copy (and clear) of selection when releasing mouse
|
||||||
|
// Default: true
|
||||||
|
//
|
||||||
|
// copy_on_select false
|
||||||
|
|
||||||
|
// Path to the default editor to use to edit pane scrollbuffer
|
||||||
|
// Default: $EDITOR or $VISUAL
|
||||||
|
//
|
||||||
|
// scrollback_editor "/usr/bin/vim"
|
||||||
|
|
||||||
|
// When attaching to an existing session with other users,
|
||||||
|
// should the session be mirrored (true)
|
||||||
|
// or should each user have their own cursor (false)
|
||||||
|
// Default: false
|
||||||
|
//
|
||||||
|
// mirror_session true
|
||||||
|
|
||||||
|
// The folder in which Zellij will look for layouts
|
||||||
|
//
|
||||||
|
// layout_dir "/path/to/my/layout_dir"
|
||||||
|
|
||||||
|
// The folder in which Zellij will look for themes
|
||||||
|
//
|
||||||
|
// theme_dir "/path/to/my/theme_dir"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.zellij = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".config/zellij/config.kdl".source = ./config.kdl;
|
||||||
|
}
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
{config, pkgs, ...}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
neofetch
|
|
||||||
nnn # terminal file manager
|
|
||||||
|
|
||||||
# archives
|
|
||||||
zip
|
|
||||||
xz
|
|
||||||
unzip
|
|
||||||
p7zip
|
|
||||||
|
|
||||||
# utils
|
|
||||||
ripgrep # recursively searches directories for a regex pattern
|
|
||||||
jq # A lightweight and flexible command-line JSON processor
|
|
||||||
yq-go # yaml processer https://github.com/mikefarah/yq
|
|
||||||
exa # A modern replacement for ‘ls’
|
|
||||||
fzf # A command-line fuzzy finder
|
|
||||||
|
|
||||||
# networking tools
|
|
||||||
mtr # A network diagnostic tool
|
|
||||||
iperf3
|
|
||||||
ldns # replacement of dig, it provide the command `drill`
|
|
||||||
aria2 # A lightweight multi-protocol & multi-source command-line download utility
|
|
||||||
socat # replacement of openbsd-netcat
|
|
||||||
nmap # A utility for network discovery and security auditing
|
|
||||||
|
|
||||||
# misc
|
|
||||||
cowsay
|
|
||||||
file
|
|
||||||
which
|
|
||||||
tree
|
|
||||||
gnused
|
|
||||||
gnutar
|
|
||||||
gawk
|
|
||||||
zstd
|
|
||||||
caddy
|
|
||||||
gnupg
|
|
||||||
|
|
||||||
# nix related
|
|
||||||
#
|
|
||||||
# it provides the command `nom` works just like `nix
|
|
||||||
# with more details log output
|
|
||||||
nix-output-monitor
|
|
||||||
|
|
||||||
# productivity
|
|
||||||
hugo # static site generator
|
|
||||||
glow # markdown previewer in terminal
|
|
||||||
];
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
# A terminal multiplexer
|
|
||||||
tmux = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# a cat(1) clone with syntax highlighting and Git integration.
|
|
||||||
bat = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
pager = "less -FR";
|
|
||||||
theme = "Catppuccin-mocha";
|
|
||||||
};
|
|
||||||
themes = {
|
|
||||||
Catppuccin-mocha = builtins.readFile (pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/catppuccin/bat/main/Catppuccin-mocha.tmTheme";
|
|
||||||
hash = "sha256-qMQNJGZImmjrqzy7IiEkY5IhvPAMZpq0W6skLLsng/w=";
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# skim provides a single executable: sk.
|
|
||||||
# Basically anywhere you would want to use grep, try sk instead.
|
|
||||||
skim = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.bash = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
bashrcExtra = ''
|
|
||||||
export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
k = "kubectl";
|
|
||||||
vim = "nvim";
|
|
||||||
|
|
||||||
urldecode = "python3 -c 'import sys, urllib.parse as ul; print(ul.unquote_plus(sys.stdin.read()))'";
|
|
||||||
urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'";
|
|
||||||
httpproxy = "export https_proxy=http://127.0.0.1:7890; export http_proxy=http://127.0.0.1:7890;";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
{config, pkgs, nil, ...}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nil.packages."${pkgs.system}".default # nix language server
|
|
||||||
|
|
||||||
# IDE
|
|
||||||
jetbrains.pycharm-community
|
|
||||||
jetbrains.idea-community
|
|
||||||
|
|
||||||
# cloud native
|
|
||||||
skopeo
|
|
||||||
docker-compose
|
|
||||||
dive # explore docker layers
|
|
||||||
kubectl
|
|
||||||
kubernetes-helm
|
|
||||||
terraform
|
|
||||||
# terraformer # generate terraform configs from existing cloud resources
|
|
||||||
pulumi
|
|
||||||
pulumictl
|
|
||||||
k9s
|
|
||||||
# istioctl
|
|
||||||
|
|
||||||
# cloud provider
|
|
||||||
awscli
|
|
||||||
aws-iam-authenticator
|
|
||||||
eksctl
|
|
||||||
|
|
||||||
# DO NOT install build tools for C/C++, set it per project by devShell instead
|
|
||||||
gnumake # used by this repo, to simplify the deployment
|
|
||||||
clang-tools
|
|
||||||
clang-analyzer
|
|
||||||
# lldb
|
|
||||||
# cmake
|
|
||||||
# autoconf
|
|
||||||
# automake
|
|
||||||
# bison
|
|
||||||
# cppcheck
|
|
||||||
# fakeroot
|
|
||||||
# flex
|
|
||||||
# gettext
|
|
||||||
# groff
|
|
||||||
# libtool
|
|
||||||
# m4
|
|
||||||
# patch
|
|
||||||
# pkgconf
|
|
||||||
# texinfo
|
|
||||||
# binutils
|
|
||||||
|
|
||||||
# Golang
|
|
||||||
delve
|
|
||||||
go
|
|
||||||
go-outline
|
|
||||||
go-tools
|
|
||||||
go2nix
|
|
||||||
gomodifytags
|
|
||||||
gopls
|
|
||||||
gotests
|
|
||||||
impl
|
|
||||||
|
|
||||||
# Rust
|
|
||||||
rustup
|
|
||||||
|
|
||||||
# python
|
|
||||||
(python310.withPackages(ps: with ps; [
|
|
||||||
ipython
|
|
||||||
pandas
|
|
||||||
requests
|
|
||||||
pyquery
|
|
||||||
]))
|
|
||||||
|
|
||||||
# db related
|
|
||||||
dbeaver
|
|
||||||
mycli
|
|
||||||
pgcli
|
|
||||||
mongosh
|
|
||||||
sqlite
|
|
||||||
|
|
||||||
# embedded development
|
|
||||||
minicom
|
|
||||||
|
|
||||||
# other languages
|
|
||||||
# julia
|
|
||||||
zig
|
|
||||||
# elixir
|
|
||||||
# solidity
|
|
||||||
|
|
||||||
# java
|
|
||||||
# adoptopenjdk-openj9-bin-17
|
|
||||||
|
|
||||||
# other tools
|
|
||||||
k6 # load testing tool
|
|
||||||
mitmproxy # http/https proxy tool
|
|
||||||
protobuf # protocol buffer compiler
|
|
||||||
];
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
# modern vim
|
|
||||||
neovim = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
set number relativenumber
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# GitHub CLI tool
|
|
||||||
programs.gh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
programs.nushell = {
|
|
||||||
enable = true;
|
|
||||||
# configFile.source = ./config.nu;
|
|
||||||
# envFile.source = ./env.nu;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{config, ...}: {
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
enableBashIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
character = {
|
|
||||||
success_symbol = "[›](bold green)";
|
|
||||||
error_symbol = "[›](bold red)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,730 +0,0 @@
|
|||||||
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
|
||||||
|
|
||||||
# Import additional configuration files
|
|
||||||
#
|
|
||||||
# Imports are loaded in order, skipping all missing files, with the importing
|
|
||||||
# file being loaded last. If a field is already present in a previous import, it
|
|
||||||
# will be replaced.
|
|
||||||
#
|
|
||||||
# All imports must either be absolute paths starting with `/`, or paths relative
|
|
||||||
# to the user's home directory starting with `~/`.
|
|
||||||
import:
|
|
||||||
# all alacritty themes can be found at
|
|
||||||
# https://github.com/alacritty/alacritty-theme
|
|
||||||
- ~/.config/alacritty/theme_github_dark.yml
|
|
||||||
|
|
||||||
# Any items in the `env` entry below will be added as
|
|
||||||
# environment variables. Some entries may override variables
|
|
||||||
# set by alacritty itself.
|
|
||||||
#env:
|
|
||||||
# TERM variable
|
|
||||||
#
|
|
||||||
# This value is used to set the `$TERM` environment variable for
|
|
||||||
# each instance of Alacritty. If it is not present, alacritty will
|
|
||||||
# check the local terminfo database and use `alacritty` if it is
|
|
||||||
# available, otherwise `xterm-256color` is used.
|
|
||||||
#TERM: alacritty
|
|
||||||
|
|
||||||
window:
|
|
||||||
# Window dimensions (changes require restart)
|
|
||||||
#
|
|
||||||
# Number of lines/columns (not pixels) in the terminal. Both lines and columns
|
|
||||||
# must be non-zero for this to take effect. The number of columns must be at
|
|
||||||
# least `2`, while using a value of `0` for columns and lines will fall back
|
|
||||||
# to the window manager's recommended size
|
|
||||||
#dimensions:
|
|
||||||
# columns: 0
|
|
||||||
# lines: 0
|
|
||||||
|
|
||||||
# Window position (changes require restart)
|
|
||||||
#
|
|
||||||
# Specified in number of pixels.
|
|
||||||
# If the position is not set, the window manager will handle the placement.
|
|
||||||
#position:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Window padding (changes require restart)
|
|
||||||
#
|
|
||||||
# Blank space added around the window in pixels. This padding is scaled
|
|
||||||
# by DPI and the specified value is always added at both opposing sides.
|
|
||||||
padding:
|
|
||||||
x: 5
|
|
||||||
y: 5
|
|
||||||
|
|
||||||
# Spread additional padding evenly around the terminal content.
|
|
||||||
dynamic_padding: true
|
|
||||||
|
|
||||||
# Window decorations
|
|
||||||
#
|
|
||||||
# Values for `decorations`:
|
|
||||||
# - full: Borders and title bar
|
|
||||||
# - none: Neither borders nor title bar
|
|
||||||
#
|
|
||||||
# Values for `decorations` (macOS only):
|
|
||||||
# - transparent: Title bar, transparent background and title bar buttons
|
|
||||||
# - buttonless: Title bar, transparent background and no title bar buttons
|
|
||||||
#decorations: full
|
|
||||||
|
|
||||||
# Background opacity
|
|
||||||
#
|
|
||||||
# Window opacity as a floating point number from `0.0` to `1.0`.
|
|
||||||
# The value `0.0` is completely transparent and `1.0` is opaque.
|
|
||||||
opacity: 0.98
|
|
||||||
|
|
||||||
# Startup Mode (changes require restart)
|
|
||||||
#
|
|
||||||
# Values for `startup_mode`:
|
|
||||||
# - Windowed
|
|
||||||
# - Maximized
|
|
||||||
# - Fullscreen
|
|
||||||
#
|
|
||||||
# Values for `startup_mode` (macOS only):
|
|
||||||
# - SimpleFullscreen
|
|
||||||
startup_mode: Windowed
|
|
||||||
|
|
||||||
# Window title
|
|
||||||
title: Alacritty
|
|
||||||
|
|
||||||
# Allow terminal applications to change Alacritty's window title.
|
|
||||||
dynamic_title: true
|
|
||||||
|
|
||||||
# Window class (Linux/BSD only):
|
|
||||||
#class:
|
|
||||||
# Application instance name
|
|
||||||
#instance: Alacritty
|
|
||||||
# General application class
|
|
||||||
#general: Alacritty
|
|
||||||
|
|
||||||
# Decorations theme variant
|
|
||||||
#
|
|
||||||
# Override the variant of the System theme/GTK theme/Wayland client side
|
|
||||||
# decorations. Commonly supported values are `Dark`, `Light`, and `None` for
|
|
||||||
# auto pick-up. Set this to `None` to use the default theme variant.
|
|
||||||
#decorations_theme_variant: None
|
|
||||||
|
|
||||||
# Resize increments
|
|
||||||
#
|
|
||||||
# Prefer resizing window by discrete steps equal to cell dimensions.
|
|
||||||
#resize_increments: false
|
|
||||||
|
|
||||||
# Make `Option` key behave as `Alt` (macOS only):
|
|
||||||
# - OnlyLeft
|
|
||||||
# - OnlyRight
|
|
||||||
# - Both
|
|
||||||
# - None (default)
|
|
||||||
#option_as_alt: None
|
|
||||||
|
|
||||||
scrolling:
|
|
||||||
# Maximum number of lines in the scrollback buffer.
|
|
||||||
# Specifying '0' will disable scrolling.
|
|
||||||
history: 10000
|
|
||||||
|
|
||||||
# Scrolling distance multiplier.
|
|
||||||
#multiplier: 3
|
|
||||||
|
|
||||||
# Font configuration
|
|
||||||
font:
|
|
||||||
# Normal (roman) font face
|
|
||||||
bold:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
italic:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
normal:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
bold_italic:
|
|
||||||
# Font family
|
|
||||||
#
|
|
||||||
# If the bold italic family is not specified, it will fall back to the
|
|
||||||
# value specified for the normal font.
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
# Point size
|
|
||||||
size: 14
|
|
||||||
|
|
||||||
# Offset is the extra space around each character. `offset.y` can be thought
|
|
||||||
# of as modifying the line spacing, and `offset.x` as modifying the letter
|
|
||||||
# spacing.
|
|
||||||
#offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Glyph offset determines the locations of the glyphs within their cells with
|
|
||||||
# the default being at the bottom. Increasing `x` moves the glyph to the
|
|
||||||
# right, increasing `y` moves the glyph upward.
|
|
||||||
#glyph_offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Use built-in font for box drawing characters.
|
|
||||||
#
|
|
||||||
# If `true`, Alacritty will use a custom built-in font for box drawing
|
|
||||||
# characters (Unicode points 2500 - 259f).
|
|
||||||
#
|
|
||||||
#builtin_box_drawing: true
|
|
||||||
|
|
||||||
# If `true`, bold text is drawn using the bright color variants.
|
|
||||||
#draw_bold_text_with_bright_colors: false
|
|
||||||
|
|
||||||
# Bell
|
|
||||||
#
|
|
||||||
# The bell is rung every time the BEL control character is received.
|
|
||||||
#bell:
|
|
||||||
# Visual Bell Animation
|
|
||||||
#
|
|
||||||
# Animation effect for flashing the screen when the visual bell is rung.
|
|
||||||
#
|
|
||||||
# Values for `animation`:
|
|
||||||
# - Ease
|
|
||||||
# - EaseOut
|
|
||||||
# - EaseOutSine
|
|
||||||
# - EaseOutQuad
|
|
||||||
# - EaseOutCubic
|
|
||||||
# - EaseOutQuart
|
|
||||||
# - EaseOutQuint
|
|
||||||
# - EaseOutExpo
|
|
||||||
# - EaseOutCirc
|
|
||||||
# - Linear
|
|
||||||
#animation: EaseOutExpo
|
|
||||||
|
|
||||||
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
|
|
||||||
# disable the visual bell animation.
|
|
||||||
#duration: 0
|
|
||||||
|
|
||||||
# Visual bell animation color.
|
|
||||||
#color: '#ffffff'
|
|
||||||
|
|
||||||
# Bell Command
|
|
||||||
#
|
|
||||||
# This program is executed whenever the bell is rung.
|
|
||||||
#
|
|
||||||
# When set to `command: None`, no command will be executed.
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# command:
|
|
||||||
# program: notify-send
|
|
||||||
# args: ["Hello, World!"]
|
|
||||||
#
|
|
||||||
#command: None
|
|
||||||
|
|
||||||
#selection:
|
|
||||||
# This string contains all characters that are used as separators for
|
|
||||||
# "semantic words" in Alacritty.
|
|
||||||
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
|
|
||||||
|
|
||||||
# When set to `true`, selected text will be copied to the primary clipboard.
|
|
||||||
#save_to_clipboard: false
|
|
||||||
|
|
||||||
#cursor:
|
|
||||||
# Cursor style
|
|
||||||
#style:
|
|
||||||
# Cursor shape
|
|
||||||
#
|
|
||||||
# Values for `shape`:
|
|
||||||
# - ▇ Block
|
|
||||||
# - _ Underline
|
|
||||||
# - | Beam
|
|
||||||
#shape: Block
|
|
||||||
|
|
||||||
# Cursor blinking state
|
|
||||||
#
|
|
||||||
# Values for `blinking`:
|
|
||||||
# - Never: Prevent the cursor from ever blinking
|
|
||||||
# - Off: Disable blinking by default
|
|
||||||
# - On: Enable blinking by default
|
|
||||||
# - Always: Force the cursor to always blink
|
|
||||||
#blinking: Off
|
|
||||||
|
|
||||||
# Vi mode cursor style
|
|
||||||
#
|
|
||||||
# If the vi mode cursor style is `None` or not specified, it will fall back to
|
|
||||||
# the style of the active value of the normal cursor.
|
|
||||||
#
|
|
||||||
# See `cursor.style` for available options.
|
|
||||||
#vi_mode_style: None
|
|
||||||
|
|
||||||
# Cursor blinking interval in milliseconds.
|
|
||||||
#blink_interval: 750
|
|
||||||
|
|
||||||
# Time after which cursor stops blinking, in seconds.
|
|
||||||
#
|
|
||||||
# Specifying '0' will disable timeout for blinking.
|
|
||||||
#blink_timeout: 5
|
|
||||||
|
|
||||||
# If this is `true`, the cursor will be rendered as a hollow box when the
|
|
||||||
# window is not focused.
|
|
||||||
#unfocused_hollow: true
|
|
||||||
|
|
||||||
# Thickness of the cursor relative to the cell width as floating point number
|
|
||||||
# from `0.0` to `1.0`.
|
|
||||||
#thickness: 0.15
|
|
||||||
|
|
||||||
# Live config reload (changes require restart)
|
|
||||||
live_config_reload: true
|
|
||||||
# Shell
|
|
||||||
#
|
|
||||||
# You can set `shell.program` to the path of your favorite shell, e.g.
|
|
||||||
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
|
|
||||||
# shell.
|
|
||||||
#
|
|
||||||
# Default:
|
|
||||||
# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
|
|
||||||
# - (Windows) powershell
|
|
||||||
# shell:
|
|
||||||
# program: /bin/bash
|
|
||||||
# args:
|
|
||||||
# - --login
|
|
||||||
|
|
||||||
# Startup directory
|
|
||||||
#
|
|
||||||
# Directory the shell is started in. If this is unset, or `None`, the working
|
|
||||||
# directory of the parent process will be used.
|
|
||||||
#working_directory: None
|
|
||||||
|
|
||||||
# Offer IPC using `alacritty msg` (unix only)
|
|
||||||
#ipc_socket: true
|
|
||||||
|
|
||||||
#mouse:
|
|
||||||
# Click settings
|
|
||||||
#
|
|
||||||
# The `double_click` and `triple_click` settings control the time
|
|
||||||
# alacritty should wait for accepting multiple clicks as one double
|
|
||||||
# or triple click.
|
|
||||||
#double_click: { threshold: 300 }
|
|
||||||
#triple_click: { threshold: 300 }
|
|
||||||
|
|
||||||
# If this is `true`, the cursor is temporarily hidden when typing.
|
|
||||||
#hide_when_typing: false
|
|
||||||
|
|
||||||
# Hints
|
|
||||||
#
|
|
||||||
# Terminal hints can be used to find text or hyperlink in the visible part of
|
|
||||||
# the terminal and pipe it to other applications.
|
|
||||||
#hints:
|
|
||||||
# Keys used for the hint labels.
|
|
||||||
#alphabet: "jfkdls;ahgurieowpq"
|
|
||||||
|
|
||||||
# List with all available hints
|
|
||||||
#
|
|
||||||
# Each hint must have any of `regex` or `hyperlinks` field and either an
|
|
||||||
# `action` or a `command` field. The fields `mouse`, `binding` and
|
|
||||||
# `post_processing` are optional.
|
|
||||||
#
|
|
||||||
# The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
|
|
||||||
# highlighted.
|
|
||||||
#
|
|
||||||
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
|
|
||||||
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
|
|
||||||
#
|
|
||||||
# The `mouse.enabled` field controls if the hint should be underlined while
|
|
||||||
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
|
|
||||||
#
|
|
||||||
# If the `post_processing` field is set to `true`, heuristics will be used to
|
|
||||||
# shorten the match if there are characters likely not to be part of the hint
|
|
||||||
# (e.g. a trailing `.`). This is most useful for URIs and applies only to
|
|
||||||
# `regex` matches.
|
|
||||||
#
|
|
||||||
# Values for `action`:
|
|
||||||
# - Copy
|
|
||||||
# Copy the hint's text to the clipboard.
|
|
||||||
# - Paste
|
|
||||||
# Paste the hint's text to the terminal or search.
|
|
||||||
# - Select
|
|
||||||
# Select the hint's text.
|
|
||||||
# - MoveViModeCursor
|
|
||||||
# Move the vi mode cursor to the beginning of the hint.
|
|
||||||
#enabled:
|
|
||||||
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
|
|
||||||
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
|
|
||||||
# hyperlinks: true
|
|
||||||
# command: xdg-open
|
|
||||||
# post_processing: true
|
|
||||||
# mouse:
|
|
||||||
# enabled: true
|
|
||||||
# mods: None
|
|
||||||
# binding:
|
|
||||||
# key: U
|
|
||||||
# mods: Control|Shift
|
|
||||||
|
|
||||||
# Mouse bindings
|
|
||||||
#
|
|
||||||
# Mouse bindings are specified as a list of objects, much like the key
|
|
||||||
# bindings further below.
|
|
||||||
#
|
|
||||||
# To trigger mouse bindings when an application running within Alacritty
|
|
||||||
# captures the mouse, the `Shift` modifier is automatically added as a
|
|
||||||
# requirement.
|
|
||||||
#
|
|
||||||
# Each mouse binding will specify a:
|
|
||||||
#
|
|
||||||
# - `mouse`:
|
|
||||||
#
|
|
||||||
# - Middle
|
|
||||||
# - Left
|
|
||||||
# - Right
|
|
||||||
# - Numeric identifier such as `5`
|
|
||||||
#
|
|
||||||
# - `action` (see key bindings for actions not exclusive to mouse mode)
|
|
||||||
#
|
|
||||||
# - Mouse exclusive actions:
|
|
||||||
#
|
|
||||||
# - ExpandSelection
|
|
||||||
# Expand the selection to the current mouse cursor location.
|
|
||||||
#
|
|
||||||
# And optionally:
|
|
||||||
#
|
|
||||||
# - `mods` (see key bindings)
|
|
||||||
#mouse_bindings:
|
|
||||||
# - { mouse: Right, action: ExpandSelection }
|
|
||||||
# - { mouse: Right, mods: Control, action: ExpandSelection }
|
|
||||||
# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
#
|
|
||||||
# Key bindings are specified as a list of objects. For example, this is the
|
|
||||||
# default paste binding:
|
|
||||||
#
|
|
||||||
# `- { key: V, mods: Control|Shift, action: Paste }`
|
|
||||||
#
|
|
||||||
# Each key binding will specify a:
|
|
||||||
#
|
|
||||||
# - `key`: Identifier of the key pressed
|
|
||||||
#
|
|
||||||
# - A-Z
|
|
||||||
# - F1-F24
|
|
||||||
# - Key0-Key9
|
|
||||||
#
|
|
||||||
# A full list with available key codes can be found here:
|
|
||||||
# https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants
|
|
||||||
#
|
|
||||||
# Instead of using the name of the keys, the `key` field also supports using
|
|
||||||
# the scancode of the desired key. Scancodes have to be specified as a
|
|
||||||
# decimal number. This command will allow you to display the hex scancodes
|
|
||||||
# for certain keys:
|
|
||||||
#
|
|
||||||
# `showkey --scancodes`.
|
|
||||||
#
|
|
||||||
# Then exactly one of:
|
|
||||||
#
|
|
||||||
# - `chars`: Send a byte sequence to the running application
|
|
||||||
#
|
|
||||||
# The `chars` field writes the specified string to the terminal. This makes
|
|
||||||
# it possible to pass escape sequences. To find escape codes for bindings
|
|
||||||
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
|
|
||||||
# of tmux. Note that applications use terminfo to map escape sequences back
|
|
||||||
# to keys. It is therefore required to update the terminfo when changing an
|
|
||||||
# escape sequence.
|
|
||||||
#
|
|
||||||
# - `action`: Execute a predefined action
|
|
||||||
#
|
|
||||||
# - ToggleViMode
|
|
||||||
# - SearchForward
|
|
||||||
# Start searching toward the right of the search origin.
|
|
||||||
# - SearchBackward
|
|
||||||
# Start searching toward the left of the search origin.
|
|
||||||
# - Copy
|
|
||||||
# - Paste
|
|
||||||
# - IncreaseFontSize
|
|
||||||
# - DecreaseFontSize
|
|
||||||
# - ResetFontSize
|
|
||||||
# - ScrollPageUp
|
|
||||||
# - ScrollPageDown
|
|
||||||
# - ScrollHalfPageUp
|
|
||||||
# - ScrollHalfPageDown
|
|
||||||
# - ScrollLineUp
|
|
||||||
# - ScrollLineDown
|
|
||||||
# - ScrollToTop
|
|
||||||
# - ScrollToBottom
|
|
||||||
# - ClearHistory
|
|
||||||
# Remove the terminal's scrollback history.
|
|
||||||
# - Hide
|
|
||||||
# Hide the Alacritty window.
|
|
||||||
# - Minimize
|
|
||||||
# Minimize the Alacritty window.
|
|
||||||
# - Quit
|
|
||||||
# Quit Alacritty.
|
|
||||||
# - ToggleFullscreen
|
|
||||||
# - ToggleMaximized
|
|
||||||
# - SpawnNewInstance
|
|
||||||
# Spawn a new instance of Alacritty.
|
|
||||||
# - CreateNewWindow
|
|
||||||
# Create a new Alacritty window from the current process.
|
|
||||||
# - ClearLogNotice
|
|
||||||
# Clear Alacritty's UI warning and error notice.
|
|
||||||
# - ClearSelection
|
|
||||||
# Remove the active selection.
|
|
||||||
# - ReceiveChar
|
|
||||||
# - None
|
|
||||||
#
|
|
||||||
# - Vi mode exclusive actions:
|
|
||||||
#
|
|
||||||
# - Open
|
|
||||||
# Perform the action of the first matching hint under the vi mode cursor
|
|
||||||
# with `mouse.enabled` set to `true`.
|
|
||||||
# - ToggleNormalSelection
|
|
||||||
# - ToggleLineSelection
|
|
||||||
# - ToggleBlockSelection
|
|
||||||
# - ToggleSemanticSelection
|
|
||||||
# Toggle semantic selection based on `selection.semantic_escape_chars`.
|
|
||||||
# - CenterAroundViCursor
|
|
||||||
# Center view around vi mode cursor
|
|
||||||
#
|
|
||||||
# - Vi mode exclusive cursor motion actions:
|
|
||||||
#
|
|
||||||
# - Up
|
|
||||||
# One line up.
|
|
||||||
# - Down
|
|
||||||
# One line down.
|
|
||||||
# - Left
|
|
||||||
# One character left.
|
|
||||||
# - Right
|
|
||||||
# One character right.
|
|
||||||
# - First
|
|
||||||
# First column, or beginning of the line when already at the first column.
|
|
||||||
# - Last
|
|
||||||
# Last column, or beginning of the line when already at the last column.
|
|
||||||
# - FirstOccupied
|
|
||||||
# First non-empty cell in this terminal row, or first non-empty cell of
|
|
||||||
# the line when already at the first cell of the row.
|
|
||||||
# - High
|
|
||||||
# Top of the screen.
|
|
||||||
# - Middle
|
|
||||||
# Center of the screen.
|
|
||||||
# - Low
|
|
||||||
# Bottom of the screen.
|
|
||||||
# - SemanticLeft
|
|
||||||
# Start of the previous semantically separated word.
|
|
||||||
# - SemanticRight
|
|
||||||
# Start of the next semantically separated word.
|
|
||||||
# - SemanticLeftEnd
|
|
||||||
# End of the previous semantically separated word.
|
|
||||||
# - SemanticRightEnd
|
|
||||||
# End of the next semantically separated word.
|
|
||||||
# - WordLeft
|
|
||||||
# Start of the previous whitespace separated word.
|
|
||||||
# - WordRight
|
|
||||||
# Start of the next whitespace separated word.
|
|
||||||
# - WordLeftEnd
|
|
||||||
# End of the previous whitespace separated word.
|
|
||||||
# - WordRightEnd
|
|
||||||
# End of the next whitespace separated word.
|
|
||||||
# - Bracket
|
|
||||||
# Character matching the bracket at the cursor's location.
|
|
||||||
# - SearchNext
|
|
||||||
# Beginning of the next match.
|
|
||||||
# - SearchPrevious
|
|
||||||
# Beginning of the previous match.
|
|
||||||
# - SearchStart
|
|
||||||
# Start of the match to the left of the vi mode cursor.
|
|
||||||
# - SearchEnd
|
|
||||||
# End of the match to the right of the vi mode cursor.
|
|
||||||
#
|
|
||||||
# - Search mode exclusive actions:
|
|
||||||
# - SearchFocusNext
|
|
||||||
# Move the focus to the next search match.
|
|
||||||
# - SearchFocusPrevious
|
|
||||||
# Move the focus to the previous search match.
|
|
||||||
# - SearchConfirm
|
|
||||||
# - SearchCancel
|
|
||||||
# - SearchClear
|
|
||||||
# Reset the search regex.
|
|
||||||
# - SearchDeleteWord
|
|
||||||
# Delete the last word in the search regex.
|
|
||||||
# - SearchHistoryPrevious
|
|
||||||
# Go to the previous regex in the search history.
|
|
||||||
# - SearchHistoryNext
|
|
||||||
# Go to the next regex in the search history.
|
|
||||||
#
|
|
||||||
# - macOS exclusive actions:
|
|
||||||
# - ToggleSimpleFullscreen
|
|
||||||
# Enter fullscreen without occupying another space.
|
|
||||||
#
|
|
||||||
# - Linux/BSD exclusive actions:
|
|
||||||
#
|
|
||||||
# - CopySelection
|
|
||||||
# Copy from the selection buffer.
|
|
||||||
# - PasteSelection
|
|
||||||
# Paste from the selection buffer.
|
|
||||||
#
|
|
||||||
# - `command`: Fork and execute a specified command plus arguments
|
|
||||||
#
|
|
||||||
# The `command` field must be a map containing a `program` string and an
|
|
||||||
# `args` array of command line parameter strings. For example:
|
|
||||||
# `{ program: "alacritty", args: ["-e", "vttest"] }`
|
|
||||||
#
|
|
||||||
# And optionally:
|
|
||||||
#
|
|
||||||
# - `mods`: Key modifiers to filter binding actions
|
|
||||||
#
|
|
||||||
# - Command
|
|
||||||
# - Control
|
|
||||||
# - Option
|
|
||||||
# - Super
|
|
||||||
# - Shift
|
|
||||||
# - Alt
|
|
||||||
#
|
|
||||||
# Multiple `mods` can be combined using `|` like this:
|
|
||||||
# `mods: Control|Shift`.
|
|
||||||
# Whitespace and capitalization are relevant and must match the example.
|
|
||||||
#
|
|
||||||
# - `mode`: Indicate a binding for only specific terminal reported modes
|
|
||||||
#
|
|
||||||
# This is mainly used to send applications the correct escape sequences
|
|
||||||
# when in different modes.
|
|
||||||
#
|
|
||||||
# - AppCursor
|
|
||||||
# - AppKeypad
|
|
||||||
# - Search
|
|
||||||
# - Alt
|
|
||||||
# - Vi
|
|
||||||
#
|
|
||||||
# A `~` operator can be used before a mode to apply the binding whenever
|
|
||||||
# the mode is *not* active, e.g. `~Alt`.
|
|
||||||
#
|
|
||||||
# Bindings are always filled by default, but will be replaced when a new
|
|
||||||
# binding with the same triggers is defined. To unset a default binding, it can
|
|
||||||
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
|
|
||||||
# a no-op if you do not wish to receive input characters for that binding.
|
|
||||||
#
|
|
||||||
# If the same trigger is assigned to multiple actions, all of them are executed
|
|
||||||
# in the order they were defined in.
|
|
||||||
#key_bindings:
|
|
||||||
#- { key: Paste, action: Paste }
|
|
||||||
#- { key: Copy, action: Copy }
|
|
||||||
#- { key: L, mods: Control, action: ClearLogNotice }
|
|
||||||
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
|
|
||||||
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp }
|
|
||||||
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
|
|
||||||
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop }
|
|
||||||
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
|
|
||||||
|
|
||||||
# Vi Mode
|
|
||||||
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
|
|
||||||
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
|
|
||||||
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
|
|
||||||
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
|
|
||||||
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
|
|
||||||
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
|
|
||||||
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
|
|
||||||
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
|
|
||||||
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
|
|
||||||
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
|
|
||||||
#- { key: Y, mode: Vi|~Search, action: Copy }
|
|
||||||
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
|
|
||||||
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
|
|
||||||
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
|
|
||||||
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
|
|
||||||
#- { key: Return, mode: Vi|~Search, action: Open }
|
|
||||||
#- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor }
|
|
||||||
#- { key: K, mode: Vi|~Search, action: Up }
|
|
||||||
#- { key: J, mode: Vi|~Search, action: Down }
|
|
||||||
#- { key: H, mode: Vi|~Search, action: Left }
|
|
||||||
#- { key: L, mode: Vi|~Search, action: Right }
|
|
||||||
#- { key: Up, mode: Vi|~Search, action: Up }
|
|
||||||
#- { key: Down, mode: Vi|~Search, action: Down }
|
|
||||||
#- { key: Left, mode: Vi|~Search, action: Left }
|
|
||||||
#- { key: Right, mode: Vi|~Search, action: Right }
|
|
||||||
#- { key: Key0, mode: Vi|~Search, action: First }
|
|
||||||
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
|
|
||||||
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
|
|
||||||
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
|
|
||||||
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
|
|
||||||
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
|
|
||||||
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
|
|
||||||
#- { key: W, mode: Vi|~Search, action: SemanticRight }
|
|
||||||
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
|
|
||||||
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
|
|
||||||
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
|
|
||||||
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
|
|
||||||
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
|
|
||||||
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
|
|
||||||
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
|
|
||||||
#- { key: N, mode: Vi|~Search, action: SearchNext }
|
|
||||||
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
|
|
||||||
|
|
||||||
# Search Mode
|
|
||||||
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
|
|
||||||
#- { key: Escape, mode: Search, action: SearchCancel }
|
|
||||||
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
|
|
||||||
#- { key: U, mods: Control, mode: Search, action: SearchClear }
|
|
||||||
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
|
|
||||||
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
|
|
||||||
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
|
|
||||||
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
|
|
||||||
#- { key: Down, mode: Search, action: SearchHistoryNext }
|
|
||||||
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
|
|
||||||
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
|
|
||||||
|
|
||||||
# (Windows, Linux, and BSD only)
|
|
||||||
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
|
|
||||||
#- { key: C, mods: Control|Shift, action: Copy }
|
|
||||||
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
|
|
||||||
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
|
|
||||||
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: Insert, mods: Shift, action: PasteSelection }
|
|
||||||
#- { key: Key0, mods: Control, action: ResetFontSize }
|
|
||||||
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: Plus, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
|
||||||
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
|
||||||
|
|
||||||
# (Windows only)
|
|
||||||
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
|
||||||
|
|
||||||
# (macOS only)
|
|
||||||
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
|
|
||||||
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
|
|
||||||
#- { key: Key0, mods: Command, action: ResetFontSize }
|
|
||||||
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: Plus, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
|
||||||
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
|
|
||||||
#- { key: V, mods: Command, action: Paste }
|
|
||||||
#- { key: C, mods: Command, action: Copy }
|
|
||||||
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: H, mods: Command, action: Hide }
|
|
||||||
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
|
|
||||||
#- { key: M, mods: Command, action: Minimize }
|
|
||||||
#- { key: Q, mods: Command, action: Quit }
|
|
||||||
#- { key: W, mods: Command, action: Quit }
|
|
||||||
#- { key: N, mods: Command, action: CreateNewWindow }
|
|
||||||
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
|
||||||
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
|
|
||||||
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
|
|
||||||
|
|
||||||
#debug:
|
|
||||||
# Display the time it takes to redraw each frame.
|
|
||||||
#render_timer: false
|
|
||||||
|
|
||||||
# Keep the log file after quitting Alacritty.
|
|
||||||
#persistent_logging: false
|
|
||||||
|
|
||||||
# Log level
|
|
||||||
#
|
|
||||||
# Values for `log_level`:
|
|
||||||
# - Off
|
|
||||||
# - Error
|
|
||||||
# - Warn
|
|
||||||
# - Info
|
|
||||||
# - Debug
|
|
||||||
# - Trace
|
|
||||||
#log_level: Warn
|
|
||||||
|
|
||||||
# Renderer override.
|
|
||||||
# - glsl3
|
|
||||||
# - gles2
|
|
||||||
# - gles2_pure
|
|
||||||
#renderer: None
|
|
||||||
|
|
||||||
# Print all received window events.
|
|
||||||
#print_events: false
|
|
||||||
|
|
||||||
# Highlight window damage information.
|
|
||||||
#highlight_damage: false
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."alacritty/alacritty.yml".source = ./alacritty.yml;
|
|
||||||
xdg.configFile."alacritty/theme_github_dark.yml".source = ./theme_github_dark.yml;
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# github Alacritty Colors
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x24292e'
|
|
||||||
foreground: '0xd1d5da'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x586069'
|
|
||||||
red: '0xea4a5a'
|
|
||||||
green: '0x34d058'
|
|
||||||
yellow: '0xffea7f'
|
|
||||||
blue: '0x2188ff'
|
|
||||||
magenta: '0xb392f0'
|
|
||||||
cyan: '0x39c5cf'
|
|
||||||
white: '0xd1d5da'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x959da5'
|
|
||||||
red: '0xf97583'
|
|
||||||
green: '0x85e89d'
|
|
||||||
yellow: '0xffea7f'
|
|
||||||
blue: '0x79b8ff'
|
|
||||||
magenta: '0xb392f0'
|
|
||||||
cyan: '0x56d4dd'
|
|
||||||
white: '0xfafbfc'
|
|
||||||
|
|
||||||
indexed_colors:
|
|
||||||
- { index: 16, color: '0xd18616' }
|
|
||||||
- { index: 17, color: '0xf97583' }
|
|
||||||
@@ -1,23 +1,10 @@
|
|||||||
# Install those apps using brew, instead of nix
|
{pkgs, ...}: {
|
||||||
# because they are not available in nixpkgs with the support of darwin
|
##########################################################################
|
||||||
# ==> Brew Casks
|
#
|
||||||
# jdk-mission-control
|
# MacOS specific home configuration
|
||||||
# anki firefox iina openinterminal-lite
|
#
|
||||||
# insomnia orbstack
|
##########################################################################
|
||||||
# clashx google-chrome
|
programs.zsh = {
|
||||||
# google-cloud-sdk telegram wireshark
|
|
||||||
|
|
||||||
|
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
|
||||||
# MacOS specific configuration
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
mpv
|
|
||||||
discord
|
|
||||||
];
|
|
||||||
|
|
||||||
# stable version of vscode
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -32,6 +19,9 @@
|
|||||||
# format in details:
|
# format in details:
|
||||||
# https://www.ssh.com/academy/ssh/config
|
# https://www.ssh.com/academy/ssh/config
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
# a private key that is used during authentication will be added to ssh-agent if it is running
|
||||||
|
AddKeysToAgent yes
|
||||||
|
|
||||||
Host 192.168.*
|
Host 192.168.*
|
||||||
# allow to securely use local SSH agent to authenticate on the remote machine.
|
# allow to securely use local SSH agent to authenticate on the remote machine.
|
||||||
# It has the same effect as adding cli option `ssh -A user@host`
|
# It has the same effect as adding cli option `ssh -A user@host`
|
||||||
|
|||||||
@@ -1,25 +1,18 @@
|
|||||||
{ pkgs, ... }:
|
{ username, ... }: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
../common/nushell
|
../base/desktop
|
||||||
|
|
||||||
../common/core.nix
|
|
||||||
../common/git.nix
|
|
||||||
../common/development.nix
|
|
||||||
../common/media.nix
|
|
||||||
../common/starship.nix
|
|
||||||
|
|
||||||
./alacritty
|
|
||||||
./core.nix
|
./core.nix
|
||||||
|
./nushell.nix
|
||||||
|
./rime-squirrel.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
# Home Manager needs a bit of information about you and the
|
||||||
# paths it should manage.
|
# paths it should manage.
|
||||||
home = {
|
home = {
|
||||||
username = "admin";
|
username = username;
|
||||||
# set homeDirectory make build fail
|
# set homeDirectory make build fail
|
||||||
homeDirectory = "/Users/admin";
|
homeDirectory = "/Users/${username}";
|
||||||
|
|
||||||
# This value determines the Home Manager release that your
|
# This value determines the Home Manager release that your
|
||||||
# configuration is compatible with. This helps avoid breakage
|
# configuration is compatible with. This helps avoid breakage
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
# nix-darwin do not set PATH for nushell! so we need to do it manually
|
||||||
|
# this is a workaround to add nix's PATH to nushell
|
||||||
|
programs.nushell.extraConfig = ''
|
||||||
|
let-env PATH = ([
|
||||||
|
"${config.home.homeDirectory}/bin"
|
||||||
|
"${config.home.homeDirectory}/.local/bin"
|
||||||
|
"${config.home.homeDirectory}/go/bin"
|
||||||
|
"/usr/local/bin"
|
||||||
|
"${config.home.homeDirectory}/.nix-profile/bin"
|
||||||
|
"/etc/profiles/per-user/${config.home.username}/bin"
|
||||||
|
"/run/current-system/sw/bin"
|
||||||
|
"/nix/var/nix/profiles/default/bin"
|
||||||
|
|
||||||
|
($env.PATH | split row (char esep))
|
||||||
|
] | flatten)
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# remove existing rime data (squirrel)
|
||||||
|
home.activation.removeExistingRimeData = lib.hm.dag.entryBefore ["checkLinkTargets"] ''
|
||||||
|
rm -rf "~/Library/Rime/build/flypy.prism.bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Squirrel Input Method
|
||||||
|
home.file."Library/Rime" = {
|
||||||
|
# my custom squirrel data (flypy input method)
|
||||||
|
source = "${pkgs.flypy-squirrel}/share/rime-data";
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./shell.nix
|
||||||
|
./system-tools.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
{config, ...}:
|
{config, ...}: let
|
||||||
|
|
||||||
let
|
|
||||||
d = config.xdg.dataHome;
|
d = config.xdg.dataHome;
|
||||||
c = config.xdg.configHome;
|
c = config.xdg.configHome;
|
||||||
cache = config.xdg.cacheHome;
|
cache = config.xdg.cacheHome;
|
||||||
@@ -19,7 +17,6 @@ in rec {
|
|||||||
|
|
||||||
# set default applications
|
# set default applications
|
||||||
BROWSER = "firefox";
|
BROWSER = "firefox";
|
||||||
TERMINAL = "alacritty";
|
|
||||||
TERM = "xterm-256color";
|
TERM = "xterm-256color";
|
||||||
|
|
||||||
# enable scrolling in git diff
|
# enable scrolling in git diff
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
# Linux Only Packages, not available on Darwin
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
btop # replacement of htop/nmon
|
||||||
|
htop
|
||||||
|
nmon
|
||||||
|
iotop
|
||||||
|
iftop
|
||||||
|
|
||||||
|
# misc
|
||||||
|
libnotify
|
||||||
|
wireguard-tools # manage wireguard vpn manually, via wg-quick
|
||||||
|
|
||||||
|
# need to run `conda-install` before using it
|
||||||
|
# need to run `conda-shell` before using command `conda`
|
||||||
|
# conda is not available for MacOS
|
||||||
|
conda
|
||||||
|
|
||||||
|
# system call monitoring
|
||||||
|
strace # system call monitoring
|
||||||
|
ltrace # library call monitoring
|
||||||
|
lsof # list open files
|
||||||
|
|
||||||
|
# system tools
|
||||||
|
sysstat
|
||||||
|
lm_sensors # for `sensors` command
|
||||||
|
ethtool
|
||||||
|
pciutils # lspci
|
||||||
|
usbutils # lsusb
|
||||||
|
hdparm # for disk performance, command
|
||||||
|
dmidecode # a tool that reads information about your system's hardware from the BIOS according to the SMBIOS/DMI standard
|
||||||
|
];
|
||||||
|
|
||||||
|
# auto mount usb drives
|
||||||
|
services = {
|
||||||
|
udiskie.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
# syncthing.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,730 +0,0 @@
|
|||||||
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
|
||||||
|
|
||||||
# Import additional configuration files
|
|
||||||
#
|
|
||||||
# Imports are loaded in order, skipping all missing files, with the importing
|
|
||||||
# file being loaded last. If a field is already present in a previous import, it
|
|
||||||
# will be replaced.
|
|
||||||
#
|
|
||||||
# All imports must either be absolute paths starting with `/`, or paths relative
|
|
||||||
# to the user's home directory starting with `~/`.
|
|
||||||
import:
|
|
||||||
# all alacritty themes can be found at
|
|
||||||
# https://github.com/alacritty/alacritty-theme
|
|
||||||
- ~/.config/alacritty/theme_github_dark.yml
|
|
||||||
|
|
||||||
# Any items in the `env` entry below will be added as
|
|
||||||
# environment variables. Some entries may override variables
|
|
||||||
# set by alacritty itself.
|
|
||||||
#env:
|
|
||||||
# TERM variable
|
|
||||||
#
|
|
||||||
# This value is used to set the `$TERM` environment variable for
|
|
||||||
# each instance of Alacritty. If it is not present, alacritty will
|
|
||||||
# check the local terminfo database and use `alacritty` if it is
|
|
||||||
# available, otherwise `xterm-256color` is used.
|
|
||||||
#TERM: alacritty
|
|
||||||
|
|
||||||
window:
|
|
||||||
# Window dimensions (changes require restart)
|
|
||||||
#
|
|
||||||
# Number of lines/columns (not pixels) in the terminal. Both lines and columns
|
|
||||||
# must be non-zero for this to take effect. The number of columns must be at
|
|
||||||
# least `2`, while using a value of `0` for columns and lines will fall back
|
|
||||||
# to the window manager's recommended size
|
|
||||||
#dimensions:
|
|
||||||
# columns: 0
|
|
||||||
# lines: 0
|
|
||||||
|
|
||||||
# Window position (changes require restart)
|
|
||||||
#
|
|
||||||
# Specified in number of pixels.
|
|
||||||
# If the position is not set, the window manager will handle the placement.
|
|
||||||
#position:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Window padding (changes require restart)
|
|
||||||
#
|
|
||||||
# Blank space added around the window in pixels. This padding is scaled
|
|
||||||
# by DPI and the specified value is always added at both opposing sides.
|
|
||||||
padding:
|
|
||||||
x: 5
|
|
||||||
y: 5
|
|
||||||
|
|
||||||
# Spread additional padding evenly around the terminal content.
|
|
||||||
dynamic_padding: true
|
|
||||||
|
|
||||||
# Window decorations
|
|
||||||
#
|
|
||||||
# Values for `decorations`:
|
|
||||||
# - full: Borders and title bar
|
|
||||||
# - none: Neither borders nor title bar
|
|
||||||
#
|
|
||||||
# Values for `decorations` (macOS only):
|
|
||||||
# - transparent: Title bar, transparent background and title bar buttons
|
|
||||||
# - buttonless: Title bar, transparent background and no title bar buttons
|
|
||||||
#decorations: full
|
|
||||||
|
|
||||||
# Background opacity
|
|
||||||
#
|
|
||||||
# Window opacity as a floating point number from `0.0` to `1.0`.
|
|
||||||
# The value `0.0` is completely transparent and `1.0` is opaque.
|
|
||||||
opacity: 0.98
|
|
||||||
|
|
||||||
# Startup Mode (changes require restart)
|
|
||||||
#
|
|
||||||
# Values for `startup_mode`:
|
|
||||||
# - Windowed
|
|
||||||
# - Maximized
|
|
||||||
# - Fullscreen
|
|
||||||
#
|
|
||||||
# Values for `startup_mode` (macOS only):
|
|
||||||
# - SimpleFullscreen
|
|
||||||
startup_mode: Windowed
|
|
||||||
|
|
||||||
# Window title
|
|
||||||
title: Alacritty
|
|
||||||
|
|
||||||
# Allow terminal applications to change Alacritty's window title.
|
|
||||||
dynamic_title: true
|
|
||||||
|
|
||||||
# Window class (Linux/BSD only):
|
|
||||||
#class:
|
|
||||||
# Application instance name
|
|
||||||
#instance: Alacritty
|
|
||||||
# General application class
|
|
||||||
#general: Alacritty
|
|
||||||
|
|
||||||
# Decorations theme variant
|
|
||||||
#
|
|
||||||
# Override the variant of the System theme/GTK theme/Wayland client side
|
|
||||||
# decorations. Commonly supported values are `Dark`, `Light`, and `None` for
|
|
||||||
# auto pick-up. Set this to `None` to use the default theme variant.
|
|
||||||
#decorations_theme_variant: None
|
|
||||||
|
|
||||||
# Resize increments
|
|
||||||
#
|
|
||||||
# Prefer resizing window by discrete steps equal to cell dimensions.
|
|
||||||
#resize_increments: false
|
|
||||||
|
|
||||||
# Make `Option` key behave as `Alt` (macOS only):
|
|
||||||
# - OnlyLeft
|
|
||||||
# - OnlyRight
|
|
||||||
# - Both
|
|
||||||
# - None (default)
|
|
||||||
#option_as_alt: None
|
|
||||||
|
|
||||||
scrolling:
|
|
||||||
# Maximum number of lines in the scrollback buffer.
|
|
||||||
# Specifying '0' will disable scrolling.
|
|
||||||
history: 10000
|
|
||||||
|
|
||||||
# Scrolling distance multiplier.
|
|
||||||
#multiplier: 3
|
|
||||||
|
|
||||||
# Font configuration
|
|
||||||
font:
|
|
||||||
# Normal (roman) font face
|
|
||||||
bold:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
italic:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
normal:
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
bold_italic:
|
|
||||||
# Font family
|
|
||||||
#
|
|
||||||
# If the bold italic family is not specified, it will fall back to the
|
|
||||||
# value specified for the normal font.
|
|
||||||
family: JetBrainsMono Nerd Font
|
|
||||||
# Point size
|
|
||||||
size: 12
|
|
||||||
|
|
||||||
# Offset is the extra space around each character. `offset.y` can be thought
|
|
||||||
# of as modifying the line spacing, and `offset.x` as modifying the letter
|
|
||||||
# spacing.
|
|
||||||
#offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Glyph offset determines the locations of the glyphs within their cells with
|
|
||||||
# the default being at the bottom. Increasing `x` moves the glyph to the
|
|
||||||
# right, increasing `y` moves the glyph upward.
|
|
||||||
#glyph_offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Use built-in font for box drawing characters.
|
|
||||||
#
|
|
||||||
# If `true`, Alacritty will use a custom built-in font for box drawing
|
|
||||||
# characters (Unicode points 2500 - 259f).
|
|
||||||
#
|
|
||||||
#builtin_box_drawing: true
|
|
||||||
|
|
||||||
# If `true`, bold text is drawn using the bright color variants.
|
|
||||||
#draw_bold_text_with_bright_colors: false
|
|
||||||
|
|
||||||
# Bell
|
|
||||||
#
|
|
||||||
# The bell is rung every time the BEL control character is received.
|
|
||||||
#bell:
|
|
||||||
# Visual Bell Animation
|
|
||||||
#
|
|
||||||
# Animation effect for flashing the screen when the visual bell is rung.
|
|
||||||
#
|
|
||||||
# Values for `animation`:
|
|
||||||
# - Ease
|
|
||||||
# - EaseOut
|
|
||||||
# - EaseOutSine
|
|
||||||
# - EaseOutQuad
|
|
||||||
# - EaseOutCubic
|
|
||||||
# - EaseOutQuart
|
|
||||||
# - EaseOutQuint
|
|
||||||
# - EaseOutExpo
|
|
||||||
# - EaseOutCirc
|
|
||||||
# - Linear
|
|
||||||
#animation: EaseOutExpo
|
|
||||||
|
|
||||||
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
|
|
||||||
# disable the visual bell animation.
|
|
||||||
#duration: 0
|
|
||||||
|
|
||||||
# Visual bell animation color.
|
|
||||||
#color: '#ffffff'
|
|
||||||
|
|
||||||
# Bell Command
|
|
||||||
#
|
|
||||||
# This program is executed whenever the bell is rung.
|
|
||||||
#
|
|
||||||
# When set to `command: None`, no command will be executed.
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# command:
|
|
||||||
# program: notify-send
|
|
||||||
# args: ["Hello, World!"]
|
|
||||||
#
|
|
||||||
#command: None
|
|
||||||
|
|
||||||
#selection:
|
|
||||||
# This string contains all characters that are used as separators for
|
|
||||||
# "semantic words" in Alacritty.
|
|
||||||
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
|
|
||||||
|
|
||||||
# When set to `true`, selected text will be copied to the primary clipboard.
|
|
||||||
#save_to_clipboard: false
|
|
||||||
|
|
||||||
#cursor:
|
|
||||||
# Cursor style
|
|
||||||
#style:
|
|
||||||
# Cursor shape
|
|
||||||
#
|
|
||||||
# Values for `shape`:
|
|
||||||
# - ▇ Block
|
|
||||||
# - _ Underline
|
|
||||||
# - | Beam
|
|
||||||
#shape: Block
|
|
||||||
|
|
||||||
# Cursor blinking state
|
|
||||||
#
|
|
||||||
# Values for `blinking`:
|
|
||||||
# - Never: Prevent the cursor from ever blinking
|
|
||||||
# - Off: Disable blinking by default
|
|
||||||
# - On: Enable blinking by default
|
|
||||||
# - Always: Force the cursor to always blink
|
|
||||||
#blinking: Off
|
|
||||||
|
|
||||||
# Vi mode cursor style
|
|
||||||
#
|
|
||||||
# If the vi mode cursor style is `None` or not specified, it will fall back to
|
|
||||||
# the style of the active value of the normal cursor.
|
|
||||||
#
|
|
||||||
# See `cursor.style` for available options.
|
|
||||||
#vi_mode_style: None
|
|
||||||
|
|
||||||
# Cursor blinking interval in milliseconds.
|
|
||||||
#blink_interval: 750
|
|
||||||
|
|
||||||
# Time after which cursor stops blinking, in seconds.
|
|
||||||
#
|
|
||||||
# Specifying '0' will disable timeout for blinking.
|
|
||||||
#blink_timeout: 5
|
|
||||||
|
|
||||||
# If this is `true`, the cursor will be rendered as a hollow box when the
|
|
||||||
# window is not focused.
|
|
||||||
#unfocused_hollow: true
|
|
||||||
|
|
||||||
# Thickness of the cursor relative to the cell width as floating point number
|
|
||||||
# from `0.0` to `1.0`.
|
|
||||||
#thickness: 0.15
|
|
||||||
|
|
||||||
# Live config reload (changes require restart)
|
|
||||||
live_config_reload: true
|
|
||||||
# Shell
|
|
||||||
#
|
|
||||||
# You can set `shell.program` to the path of your favorite shell, e.g.
|
|
||||||
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
|
|
||||||
# shell.
|
|
||||||
#
|
|
||||||
# Default:
|
|
||||||
# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
|
|
||||||
# - (Windows) powershell
|
|
||||||
# shell:
|
|
||||||
# program: /bin/bash
|
|
||||||
# args:
|
|
||||||
# - --login
|
|
||||||
|
|
||||||
# Startup directory
|
|
||||||
#
|
|
||||||
# Directory the shell is started in. If this is unset, or `None`, the working
|
|
||||||
# directory of the parent process will be used.
|
|
||||||
#working_directory: None
|
|
||||||
|
|
||||||
# Offer IPC using `alacritty msg` (unix only)
|
|
||||||
#ipc_socket: true
|
|
||||||
|
|
||||||
#mouse:
|
|
||||||
# Click settings
|
|
||||||
#
|
|
||||||
# The `double_click` and `triple_click` settings control the time
|
|
||||||
# alacritty should wait for accepting multiple clicks as one double
|
|
||||||
# or triple click.
|
|
||||||
#double_click: { threshold: 300 }
|
|
||||||
#triple_click: { threshold: 300 }
|
|
||||||
|
|
||||||
# If this is `true`, the cursor is temporarily hidden when typing.
|
|
||||||
#hide_when_typing: false
|
|
||||||
|
|
||||||
# Hints
|
|
||||||
#
|
|
||||||
# Terminal hints can be used to find text or hyperlink in the visible part of
|
|
||||||
# the terminal and pipe it to other applications.
|
|
||||||
#hints:
|
|
||||||
# Keys used for the hint labels.
|
|
||||||
#alphabet: "jfkdls;ahgurieowpq"
|
|
||||||
|
|
||||||
# List with all available hints
|
|
||||||
#
|
|
||||||
# Each hint must have any of `regex` or `hyperlinks` field and either an
|
|
||||||
# `action` or a `command` field. The fields `mouse`, `binding` and
|
|
||||||
# `post_processing` are optional.
|
|
||||||
#
|
|
||||||
# The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
|
|
||||||
# highlighted.
|
|
||||||
#
|
|
||||||
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
|
|
||||||
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
|
|
||||||
#
|
|
||||||
# The `mouse.enabled` field controls if the hint should be underlined while
|
|
||||||
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
|
|
||||||
#
|
|
||||||
# If the `post_processing` field is set to `true`, heuristics will be used to
|
|
||||||
# shorten the match if there are characters likely not to be part of the hint
|
|
||||||
# (e.g. a trailing `.`). This is most useful for URIs and applies only to
|
|
||||||
# `regex` matches.
|
|
||||||
#
|
|
||||||
# Values for `action`:
|
|
||||||
# - Copy
|
|
||||||
# Copy the hint's text to the clipboard.
|
|
||||||
# - Paste
|
|
||||||
# Paste the hint's text to the terminal or search.
|
|
||||||
# - Select
|
|
||||||
# Select the hint's text.
|
|
||||||
# - MoveViModeCursor
|
|
||||||
# Move the vi mode cursor to the beginning of the hint.
|
|
||||||
#enabled:
|
|
||||||
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
|
|
||||||
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
|
|
||||||
# hyperlinks: true
|
|
||||||
# command: xdg-open
|
|
||||||
# post_processing: true
|
|
||||||
# mouse:
|
|
||||||
# enabled: true
|
|
||||||
# mods: None
|
|
||||||
# binding:
|
|
||||||
# key: U
|
|
||||||
# mods: Control|Shift
|
|
||||||
|
|
||||||
# Mouse bindings
|
|
||||||
#
|
|
||||||
# Mouse bindings are specified as a list of objects, much like the key
|
|
||||||
# bindings further below.
|
|
||||||
#
|
|
||||||
# To trigger mouse bindings when an application running within Alacritty
|
|
||||||
# captures the mouse, the `Shift` modifier is automatically added as a
|
|
||||||
# requirement.
|
|
||||||
#
|
|
||||||
# Each mouse binding will specify a:
|
|
||||||
#
|
|
||||||
# - `mouse`:
|
|
||||||
#
|
|
||||||
# - Middle
|
|
||||||
# - Left
|
|
||||||
# - Right
|
|
||||||
# - Numeric identifier such as `5`
|
|
||||||
#
|
|
||||||
# - `action` (see key bindings for actions not exclusive to mouse mode)
|
|
||||||
#
|
|
||||||
# - Mouse exclusive actions:
|
|
||||||
#
|
|
||||||
# - ExpandSelection
|
|
||||||
# Expand the selection to the current mouse cursor location.
|
|
||||||
#
|
|
||||||
# And optionally:
|
|
||||||
#
|
|
||||||
# - `mods` (see key bindings)
|
|
||||||
#mouse_bindings:
|
|
||||||
# - { mouse: Right, action: ExpandSelection }
|
|
||||||
# - { mouse: Right, mods: Control, action: ExpandSelection }
|
|
||||||
# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
#
|
|
||||||
# Key bindings are specified as a list of objects. For example, this is the
|
|
||||||
# default paste binding:
|
|
||||||
#
|
|
||||||
# `- { key: V, mods: Control|Shift, action: Paste }`
|
|
||||||
#
|
|
||||||
# Each key binding will specify a:
|
|
||||||
#
|
|
||||||
# - `key`: Identifier of the key pressed
|
|
||||||
#
|
|
||||||
# - A-Z
|
|
||||||
# - F1-F24
|
|
||||||
# - Key0-Key9
|
|
||||||
#
|
|
||||||
# A full list with available key codes can be found here:
|
|
||||||
# https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants
|
|
||||||
#
|
|
||||||
# Instead of using the name of the keys, the `key` field also supports using
|
|
||||||
# the scancode of the desired key. Scancodes have to be specified as a
|
|
||||||
# decimal number. This command will allow you to display the hex scancodes
|
|
||||||
# for certain keys:
|
|
||||||
#
|
|
||||||
# `showkey --scancodes`.
|
|
||||||
#
|
|
||||||
# Then exactly one of:
|
|
||||||
#
|
|
||||||
# - `chars`: Send a byte sequence to the running application
|
|
||||||
#
|
|
||||||
# The `chars` field writes the specified string to the terminal. This makes
|
|
||||||
# it possible to pass escape sequences. To find escape codes for bindings
|
|
||||||
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
|
|
||||||
# of tmux. Note that applications use terminfo to map escape sequences back
|
|
||||||
# to keys. It is therefore required to update the terminfo when changing an
|
|
||||||
# escape sequence.
|
|
||||||
#
|
|
||||||
# - `action`: Execute a predefined action
|
|
||||||
#
|
|
||||||
# - ToggleViMode
|
|
||||||
# - SearchForward
|
|
||||||
# Start searching toward the right of the search origin.
|
|
||||||
# - SearchBackward
|
|
||||||
# Start searching toward the left of the search origin.
|
|
||||||
# - Copy
|
|
||||||
# - Paste
|
|
||||||
# - IncreaseFontSize
|
|
||||||
# - DecreaseFontSize
|
|
||||||
# - ResetFontSize
|
|
||||||
# - ScrollPageUp
|
|
||||||
# - ScrollPageDown
|
|
||||||
# - ScrollHalfPageUp
|
|
||||||
# - ScrollHalfPageDown
|
|
||||||
# - ScrollLineUp
|
|
||||||
# - ScrollLineDown
|
|
||||||
# - ScrollToTop
|
|
||||||
# - ScrollToBottom
|
|
||||||
# - ClearHistory
|
|
||||||
# Remove the terminal's scrollback history.
|
|
||||||
# - Hide
|
|
||||||
# Hide the Alacritty window.
|
|
||||||
# - Minimize
|
|
||||||
# Minimize the Alacritty window.
|
|
||||||
# - Quit
|
|
||||||
# Quit Alacritty.
|
|
||||||
# - ToggleFullscreen
|
|
||||||
# - ToggleMaximized
|
|
||||||
# - SpawnNewInstance
|
|
||||||
# Spawn a new instance of Alacritty.
|
|
||||||
# - CreateNewWindow
|
|
||||||
# Create a new Alacritty window from the current process.
|
|
||||||
# - ClearLogNotice
|
|
||||||
# Clear Alacritty's UI warning and error notice.
|
|
||||||
# - ClearSelection
|
|
||||||
# Remove the active selection.
|
|
||||||
# - ReceiveChar
|
|
||||||
# - None
|
|
||||||
#
|
|
||||||
# - Vi mode exclusive actions:
|
|
||||||
#
|
|
||||||
# - Open
|
|
||||||
# Perform the action of the first matching hint under the vi mode cursor
|
|
||||||
# with `mouse.enabled` set to `true`.
|
|
||||||
# - ToggleNormalSelection
|
|
||||||
# - ToggleLineSelection
|
|
||||||
# - ToggleBlockSelection
|
|
||||||
# - ToggleSemanticSelection
|
|
||||||
# Toggle semantic selection based on `selection.semantic_escape_chars`.
|
|
||||||
# - CenterAroundViCursor
|
|
||||||
# Center view around vi mode cursor
|
|
||||||
#
|
|
||||||
# - Vi mode exclusive cursor motion actions:
|
|
||||||
#
|
|
||||||
# - Up
|
|
||||||
# One line up.
|
|
||||||
# - Down
|
|
||||||
# One line down.
|
|
||||||
# - Left
|
|
||||||
# One character left.
|
|
||||||
# - Right
|
|
||||||
# One character right.
|
|
||||||
# - First
|
|
||||||
# First column, or beginning of the line when already at the first column.
|
|
||||||
# - Last
|
|
||||||
# Last column, or beginning of the line when already at the last column.
|
|
||||||
# - FirstOccupied
|
|
||||||
# First non-empty cell in this terminal row, or first non-empty cell of
|
|
||||||
# the line when already at the first cell of the row.
|
|
||||||
# - High
|
|
||||||
# Top of the screen.
|
|
||||||
# - Middle
|
|
||||||
# Center of the screen.
|
|
||||||
# - Low
|
|
||||||
# Bottom of the screen.
|
|
||||||
# - SemanticLeft
|
|
||||||
# Start of the previous semantically separated word.
|
|
||||||
# - SemanticRight
|
|
||||||
# Start of the next semantically separated word.
|
|
||||||
# - SemanticLeftEnd
|
|
||||||
# End of the previous semantically separated word.
|
|
||||||
# - SemanticRightEnd
|
|
||||||
# End of the next semantically separated word.
|
|
||||||
# - WordLeft
|
|
||||||
# Start of the previous whitespace separated word.
|
|
||||||
# - WordRight
|
|
||||||
# Start of the next whitespace separated word.
|
|
||||||
# - WordLeftEnd
|
|
||||||
# End of the previous whitespace separated word.
|
|
||||||
# - WordRightEnd
|
|
||||||
# End of the next whitespace separated word.
|
|
||||||
# - Bracket
|
|
||||||
# Character matching the bracket at the cursor's location.
|
|
||||||
# - SearchNext
|
|
||||||
# Beginning of the next match.
|
|
||||||
# - SearchPrevious
|
|
||||||
# Beginning of the previous match.
|
|
||||||
# - SearchStart
|
|
||||||
# Start of the match to the left of the vi mode cursor.
|
|
||||||
# - SearchEnd
|
|
||||||
# End of the match to the right of the vi mode cursor.
|
|
||||||
#
|
|
||||||
# - Search mode exclusive actions:
|
|
||||||
# - SearchFocusNext
|
|
||||||
# Move the focus to the next search match.
|
|
||||||
# - SearchFocusPrevious
|
|
||||||
# Move the focus to the previous search match.
|
|
||||||
# - SearchConfirm
|
|
||||||
# - SearchCancel
|
|
||||||
# - SearchClear
|
|
||||||
# Reset the search regex.
|
|
||||||
# - SearchDeleteWord
|
|
||||||
# Delete the last word in the search regex.
|
|
||||||
# - SearchHistoryPrevious
|
|
||||||
# Go to the previous regex in the search history.
|
|
||||||
# - SearchHistoryNext
|
|
||||||
# Go to the next regex in the search history.
|
|
||||||
#
|
|
||||||
# - macOS exclusive actions:
|
|
||||||
# - ToggleSimpleFullscreen
|
|
||||||
# Enter fullscreen without occupying another space.
|
|
||||||
#
|
|
||||||
# - Linux/BSD exclusive actions:
|
|
||||||
#
|
|
||||||
# - CopySelection
|
|
||||||
# Copy from the selection buffer.
|
|
||||||
# - PasteSelection
|
|
||||||
# Paste from the selection buffer.
|
|
||||||
#
|
|
||||||
# - `command`: Fork and execute a specified command plus arguments
|
|
||||||
#
|
|
||||||
# The `command` field must be a map containing a `program` string and an
|
|
||||||
# `args` array of command line parameter strings. For example:
|
|
||||||
# `{ program: "alacritty", args: ["-e", "vttest"] }`
|
|
||||||
#
|
|
||||||
# And optionally:
|
|
||||||
#
|
|
||||||
# - `mods`: Key modifiers to filter binding actions
|
|
||||||
#
|
|
||||||
# - Command
|
|
||||||
# - Control
|
|
||||||
# - Option
|
|
||||||
# - Super
|
|
||||||
# - Shift
|
|
||||||
# - Alt
|
|
||||||
#
|
|
||||||
# Multiple `mods` can be combined using `|` like this:
|
|
||||||
# `mods: Control|Shift`.
|
|
||||||
# Whitespace and capitalization are relevant and must match the example.
|
|
||||||
#
|
|
||||||
# - `mode`: Indicate a binding for only specific terminal reported modes
|
|
||||||
#
|
|
||||||
# This is mainly used to send applications the correct escape sequences
|
|
||||||
# when in different modes.
|
|
||||||
#
|
|
||||||
# - AppCursor
|
|
||||||
# - AppKeypad
|
|
||||||
# - Search
|
|
||||||
# - Alt
|
|
||||||
# - Vi
|
|
||||||
#
|
|
||||||
# A `~` operator can be used before a mode to apply the binding whenever
|
|
||||||
# the mode is *not* active, e.g. `~Alt`.
|
|
||||||
#
|
|
||||||
# Bindings are always filled by default, but will be replaced when a new
|
|
||||||
# binding with the same triggers is defined. To unset a default binding, it can
|
|
||||||
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
|
|
||||||
# a no-op if you do not wish to receive input characters for that binding.
|
|
||||||
#
|
|
||||||
# If the same trigger is assigned to multiple actions, all of them are executed
|
|
||||||
# in the order they were defined in.
|
|
||||||
#key_bindings:
|
|
||||||
#- { key: Paste, action: Paste }
|
|
||||||
#- { key: Copy, action: Copy }
|
|
||||||
#- { key: L, mods: Control, action: ClearLogNotice }
|
|
||||||
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
|
|
||||||
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp }
|
|
||||||
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
|
|
||||||
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop }
|
|
||||||
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
|
|
||||||
|
|
||||||
# Vi Mode
|
|
||||||
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
|
|
||||||
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
|
|
||||||
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
|
|
||||||
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
|
|
||||||
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
|
|
||||||
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
|
|
||||||
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
|
|
||||||
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
|
|
||||||
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
|
|
||||||
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
|
|
||||||
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
|
|
||||||
#- { key: Y, mode: Vi|~Search, action: Copy }
|
|
||||||
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
|
|
||||||
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
|
|
||||||
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
|
|
||||||
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
|
|
||||||
#- { key: Return, mode: Vi|~Search, action: Open }
|
|
||||||
#- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor }
|
|
||||||
#- { key: K, mode: Vi|~Search, action: Up }
|
|
||||||
#- { key: J, mode: Vi|~Search, action: Down }
|
|
||||||
#- { key: H, mode: Vi|~Search, action: Left }
|
|
||||||
#- { key: L, mode: Vi|~Search, action: Right }
|
|
||||||
#- { key: Up, mode: Vi|~Search, action: Up }
|
|
||||||
#- { key: Down, mode: Vi|~Search, action: Down }
|
|
||||||
#- { key: Left, mode: Vi|~Search, action: Left }
|
|
||||||
#- { key: Right, mode: Vi|~Search, action: Right }
|
|
||||||
#- { key: Key0, mode: Vi|~Search, action: First }
|
|
||||||
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
|
|
||||||
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
|
|
||||||
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
|
|
||||||
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
|
|
||||||
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
|
|
||||||
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
|
|
||||||
#- { key: W, mode: Vi|~Search, action: SemanticRight }
|
|
||||||
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
|
|
||||||
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
|
|
||||||
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
|
|
||||||
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
|
|
||||||
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
|
|
||||||
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
|
|
||||||
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
|
|
||||||
#- { key: N, mode: Vi|~Search, action: SearchNext }
|
|
||||||
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
|
|
||||||
|
|
||||||
# Search Mode
|
|
||||||
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
|
|
||||||
#- { key: Escape, mode: Search, action: SearchCancel }
|
|
||||||
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
|
|
||||||
#- { key: U, mods: Control, mode: Search, action: SearchClear }
|
|
||||||
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
|
|
||||||
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
|
|
||||||
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
|
|
||||||
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
|
|
||||||
#- { key: Down, mode: Search, action: SearchHistoryNext }
|
|
||||||
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
|
|
||||||
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
|
|
||||||
|
|
||||||
# (Windows, Linux, and BSD only)
|
|
||||||
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
|
|
||||||
#- { key: C, mods: Control|Shift, action: Copy }
|
|
||||||
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
|
|
||||||
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
|
|
||||||
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: Insert, mods: Shift, action: PasteSelection }
|
|
||||||
#- { key: Key0, mods: Control, action: ResetFontSize }
|
|
||||||
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: Plus, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
|
||||||
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
|
||||||
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
|
||||||
|
|
||||||
# (Windows only)
|
|
||||||
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
|
||||||
|
|
||||||
# (macOS only)
|
|
||||||
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
|
|
||||||
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
|
|
||||||
#- { key: Key0, mods: Command, action: ResetFontSize }
|
|
||||||
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: Plus, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
|
|
||||||
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
|
||||||
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
|
|
||||||
#- { key: V, mods: Command, action: Paste }
|
|
||||||
#- { key: C, mods: Command, action: Copy }
|
|
||||||
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
|
|
||||||
#- { key: H, mods: Command, action: Hide }
|
|
||||||
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
|
|
||||||
#- { key: M, mods: Command, action: Minimize }
|
|
||||||
#- { key: Q, mods: Command, action: Quit }
|
|
||||||
#- { key: W, mods: Command, action: Quit }
|
|
||||||
#- { key: N, mods: Command, action: CreateNewWindow }
|
|
||||||
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
|
||||||
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
|
|
||||||
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
|
|
||||||
|
|
||||||
#debug:
|
|
||||||
# Display the time it takes to redraw each frame.
|
|
||||||
#render_timer: false
|
|
||||||
|
|
||||||
# Keep the log file after quitting Alacritty.
|
|
||||||
#persistent_logging: false
|
|
||||||
|
|
||||||
# Log level
|
|
||||||
#
|
|
||||||
# Values for `log_level`:
|
|
||||||
# - Off
|
|
||||||
# - Error
|
|
||||||
# - Warn
|
|
||||||
# - Info
|
|
||||||
# - Debug
|
|
||||||
# - Trace
|
|
||||||
#log_level: Warn
|
|
||||||
|
|
||||||
# Renderer override.
|
|
||||||
# - glsl3
|
|
||||||
# - gles2
|
|
||||||
# - gles2_pure
|
|
||||||
#renderer: None
|
|
||||||
|
|
||||||
# Print all received window events.
|
|
||||||
#print_events: false
|
|
||||||
|
|
||||||
# Highlight window damage information.
|
|
||||||
#highlight_damage: false
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."alacritty/alacritty.yml".source = ./alacritty.yml;
|
|
||||||
xdg.configFile."alacritty/theme_github_dark.yml".source = ./theme_github_dark.yml;
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# github Alacritty Colors
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x24292e'
|
|
||||||
foreground: '0xd1d5da'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x586069'
|
|
||||||
red: '0xea4a5a'
|
|
||||||
green: '0x34d058'
|
|
||||||
yellow: '0xffea7f'
|
|
||||||
blue: '0x2188ff'
|
|
||||||
magenta: '0xb392f0'
|
|
||||||
cyan: '0x39c5cf'
|
|
||||||
white: '0xd1d5da'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x959da5'
|
|
||||||
red: '0xf97583'
|
|
||||||
green: '0x85e89d'
|
|
||||||
yellow: '0xffea7f'
|
|
||||||
blue: '0x79b8ff'
|
|
||||||
magenta: '0xb392f0'
|
|
||||||
cyan: '0x56d4dd'
|
|
||||||
white: '0xfafbfc'
|
|
||||||
|
|
||||||
indexed_colors:
|
|
||||||
- { index: 16, color: '0xd18616' }
|
|
||||||
- { index: 17, color: '0xf97583' }
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
{config, pkgs, nil, ...}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nil.packages."${pkgs.system}".default # nix language server
|
|
||||||
|
|
||||||
# GUI IDE
|
|
||||||
insomnia # REST client
|
|
||||||
|
|
||||||
# need to run `conda-install` before using it
|
|
||||||
# need to run `conda-shell` before using command `conda`
|
|
||||||
# conda is not available for MacOS
|
|
||||||
conda
|
|
||||||
];
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
# modern vim
|
|
||||||
neovim = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
set number relativenumber
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# GitHub CLI tool
|
|
||||||
programs.gh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
{pkgs, config, ...}:
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
# Linux Only Packages, not available on Darwin
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
btop # replacement of htop/nmon
|
|
||||||
htop
|
|
||||||
iotop
|
|
||||||
nmon
|
|
||||||
|
|
||||||
## networking tools
|
|
||||||
wireguard-tools # manage wireguard vpn manually, via wg-quick
|
|
||||||
iftop
|
|
||||||
|
|
||||||
# misc
|
|
||||||
libnotify
|
|
||||||
|
|
||||||
# system call monitoring
|
|
||||||
strace
|
|
||||||
ltrace # library call monitoring
|
|
||||||
lsof
|
|
||||||
|
|
||||||
# system tools
|
|
||||||
ethtool
|
|
||||||
sysstat
|
|
||||||
lm_sensors # for `sensors` command
|
|
||||||
cifs-utils # for mounting windows shares
|
|
||||||
];
|
|
||||||
|
|
||||||
# auto mount usb drives
|
|
||||||
services = {
|
|
||||||
udiskie.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
# syncthing.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
# XDG stands for "Cross-Desktop Group", with X used to mean "cross".
|
|
||||||
# It's a bunch of specifications from freedesktop.org intended to standardize desktops and
|
|
||||||
# other GUI applications on various systems (primarily Unix-like) to be interoperable:
|
|
||||||
# https://www.freedesktop.org/wiki/Specifications/
|
|
||||||
{config, pkgs, ...}:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
xdg-utils # provides cli tools such as `xdg-mime` `xdg-open`
|
|
||||||
xdg-user-dirs
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
cacheHome = config.home.homeDirectory + "/.local/cache";
|
|
||||||
|
|
||||||
# manage $XDG_CONFIG_HOME/mimeapps.list
|
|
||||||
# xdg search all desktop entries from $XDG_DATA_DIRS, check it by command:
|
|
||||||
# echo $XDG_DATA_DIRS
|
|
||||||
# the system-level desktop entries can be list by command:
|
|
||||||
# ls -l /run/current-system/sw/share/applications/
|
|
||||||
# the user-level desktop entries can be list by command(user ryan):
|
|
||||||
# ls /etc/profiles/per-user/ryan/share/applications/
|
|
||||||
mimeApps = {
|
|
||||||
enable = true;
|
|
||||||
defaultApplications =
|
|
||||||
let
|
|
||||||
browser = ["firefox.desktop"];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"application/json" = browser;
|
|
||||||
"application/pdf" = browser; # TODO: pdf viewer
|
|
||||||
|
|
||||||
"text/html" = browser;
|
|
||||||
"text/xml" = browser;
|
|
||||||
"application/xml" = browser;
|
|
||||||
"application/xhtml+xml" = browser;
|
|
||||||
"application/xhtml_xml" = browser;
|
|
||||||
"application/rdf+xml" = browser;
|
|
||||||
"application/rss+xml" = browser;
|
|
||||||
"application/x-extension-htm" = browser;
|
|
||||||
"application/x-extension-html" = browser;
|
|
||||||
"application/x-extension-shtml" = browser;
|
|
||||||
"application/x-extension-xht" = browser;
|
|
||||||
"application/x-extension-xhtml" = browser;
|
|
||||||
|
|
||||||
"x-scheme-handler/about" = browser;
|
|
||||||
"x-scheme-handler/ftp" = browser;
|
|
||||||
"x-scheme-handler/http" = browser;
|
|
||||||
"x-scheme-handler/https" = browser;
|
|
||||||
"x-scheme-handler/unknown" = browser;
|
|
||||||
|
|
||||||
"x-scheme-handler/discord" = ["discord.desktop"];
|
|
||||||
"x-scheme-handler/tg" = ["telegramdesktop.desktop"];
|
|
||||||
|
|
||||||
"audio/*" = ["mpv.desktop"];
|
|
||||||
"video/*" = ["mpv.dekstop"];
|
|
||||||
"image/*" = ["imv.desktop"];
|
|
||||||
};
|
|
||||||
|
|
||||||
associations.removed =
|
|
||||||
let
|
|
||||||
browser = ["google-chrome.desktop"];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"text/html" = browser;
|
|
||||||
"text/xml" = browser;
|
|
||||||
"application/xml" = browser;
|
|
||||||
"application/xhtml+xml" = browser;
|
|
||||||
"application/xhtml_xml" = browser;
|
|
||||||
"application/rdf+xml" = browser;
|
|
||||||
"application/rss+xml" = browser;
|
|
||||||
"image/gif" = browser;
|
|
||||||
"image/jpeg" = browser;
|
|
||||||
"image/png" = browser;
|
|
||||||
"image/webp" = browser;
|
|
||||||
"x-scheme-handler/http" = browser;
|
|
||||||
"x-scheme-handler/https" = browser;
|
|
||||||
"application/pdf" = browser;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
extraConfig = {
|
|
||||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,27 +1,19 @@
|
|||||||
{ config, pkgs, ... }:
|
{ username, ... }: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
../common
|
../base/desktop
|
||||||
|
|
||||||
./hyprland
|
|
||||||
|
|
||||||
|
./base
|
||||||
./fcitx5
|
./fcitx5
|
||||||
./desktop
|
./desktop
|
||||||
|
|
||||||
./common/alacritty
|
./hyprland
|
||||||
./common/development.nix
|
|
||||||
./common/shell.nix
|
|
||||||
./common/ssh.nix
|
|
||||||
./common/system-tools.nix
|
|
||||||
./common/xdg.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
# Home Manager needs a bit of information about you and the
|
||||||
# paths it should manage.
|
# paths it should manage.
|
||||||
home = {
|
home = {
|
||||||
username = "ryan";
|
username = username;
|
||||||
homeDirectory = "/home/ryan";
|
homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
# This value determines the Home Manager release that your
|
# This value determines the Home Manager release that your
|
||||||
# configuration is compatible with. This helps avoid breakage
|
# configuration is compatible with. This helps avoid breakage
|
||||||
@@ -1,27 +1,19 @@
|
|||||||
{ config, pkgs, ... }:
|
{ username, ... }: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
../common
|
../base/desktop
|
||||||
|
|
||||||
./i3
|
|
||||||
|
|
||||||
|
./base
|
||||||
./fcitx5
|
./fcitx5
|
||||||
./desktop
|
./desktop
|
||||||
|
|
||||||
./common/alacritty
|
./i3
|
||||||
./common/development.nix
|
|
||||||
./common/shell.nix
|
|
||||||
./common/ssh.nix
|
|
||||||
./common/system-tools.nix
|
|
||||||
./common/xdg.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
# Home Manager needs a bit of information about you and the
|
||||||
# paths it should manage.
|
# paths it should manage.
|
||||||
home = {
|
home = {
|
||||||
username = "ryan";
|
username = username;
|
||||||
homeDirectory = "/home/ryan";
|
homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
# This value determines the Home Manager release that your
|
# This value determines the Home Manager release that your
|
||||||
# configuration is compatible with. This helps avoid breakage
|
# configuration is compatible with. This helps avoid breakage
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# creative
|
# creative
|
||||||
# blender # 3d modeling
|
# blender # 3d modeling
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./creative.nix
|
./creative.nix
|
||||||
|
./immutable-file.nix
|
||||||
./media.nix
|
./media.nix
|
||||||
|
./ssh.nix
|
||||||
|
./xdg.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# networking
|
# GUI apps
|
||||||
wireshark
|
insomnia # REST client
|
||||||
|
wireshark # network analyzer
|
||||||
|
|
||||||
# e-book viewer(.epub/.mobi/...)
|
# e-book viewer(.epub/.mobi/...)
|
||||||
# do not support .pdf
|
# do not support .pdf
|
||||||
@@ -25,4 +28,9 @@
|
|||||||
# misc
|
# misc
|
||||||
flameshot
|
flameshot
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# GitHub CLI tool
|
||||||
|
programs.gh = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
##############################################################################################
|
||||||
|
#
|
||||||
|
# Provide a option `home.immutable-file`, it works like `home.file` but make the generated file immutable.
|
||||||
|
#
|
||||||
|
# Copy from https://github.com/iosmanthus/nixos-config/blob/349917b/modules/immutable-file.nix
|
||||||
|
#
|
||||||
|
# this module use the `chattr +i` to make the file immutable, `i` indicates `immutable`,
|
||||||
|
# it's a i-node flags only works on Linux.
|
||||||
|
#
|
||||||
|
# TODO not used yet, need to test it.
|
||||||
|
#
|
||||||
|
##############################################################################################
|
||||||
|
with lib; let
|
||||||
|
cfg = config.home.immutable-file;
|
||||||
|
immutableFileOpts = {...}: {
|
||||||
|
options = {
|
||||||
|
src = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
dst = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mkImmutableFile = pkgs.writeScript "make_immutable_file" ''
|
||||||
|
# $1: dst
|
||||||
|
# $2: src
|
||||||
|
if [ ! -d "$(dirname $1)" ]; then
|
||||||
|
mkdir -p $1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $1 ]; then
|
||||||
|
sudo chattr -i $1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo cp $2 $1
|
||||||
|
sudo chattr +i $1
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
options.home.immutable-file = mkOption {
|
||||||
|
type = with types; attrsOf (submodule immutableFileOpts);
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg != {}) {
|
||||||
|
home.activation =
|
||||||
|
mapAttrs'
|
||||||
|
(name: {
|
||||||
|
src,
|
||||||
|
dst,
|
||||||
|
}:
|
||||||
|
nameValuePair
|
||||||
|
"make-immutable-${name}"
|
||||||
|
(lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
|
${mkImmutableFile} ${dst} ${src}
|
||||||
|
''))
|
||||||
|
cfg;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -13,6 +10,9 @@
|
|||||||
# format in details:
|
# format in details:
|
||||||
# https://www.ssh.com/academy/ssh/config
|
# https://www.ssh.com/academy/ssh/config
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
# a private key that is used during authentication will be added to ssh-agent if it is running
|
||||||
|
AddKeysToAgent yes
|
||||||
|
|
||||||
Host 192.168.*
|
Host 192.168.*
|
||||||
# allow to securely use local SSH agent to authenticate on the remote machine.
|
# allow to securely use local SSH agent to authenticate on the remote machine.
|
||||||
# It has the same effect as adding cli option `ssh -A user@host`
|
# It has the same effect as adding cli option `ssh -A user@host`
|
||||||
@@ -29,6 +29,18 @@
|
|||||||
# Specifies that ssh should only use the identity file explicitly configured above
|
# Specifies that ssh should only use the identity file explicitly configured above
|
||||||
# required to prevent sending default identity files first.
|
# required to prevent sending default identity files first.
|
||||||
IdentitiesOnly yes
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host gtr5
|
||||||
|
HostName 192.168.5.172
|
||||||
|
Port 22
|
||||||
|
|
||||||
|
Host um560
|
||||||
|
HostName 192.168.5.173
|
||||||
|
Port 22
|
||||||
|
|
||||||
|
Host s500plus
|
||||||
|
HostName 192.168.5.174
|
||||||
|
Port 22
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# use ssh-agent so we only need to input passphrase once
|
# use ssh-agent so we only need to input passphrase once
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# XDG stands for "Cross-Desktop Group", with X used to mean "cross".
|
||||||
|
# It's a bunch of specifications from freedesktop.org intended to standardize desktops and
|
||||||
|
# other GUI applications on various systems (primarily Unix-like) to be interoperable:
|
||||||
|
# https://www.freedesktop.org/wiki/Specifications/
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xdg-utils # provides cli tools such as `xdg-mime` `xdg-open`
|
||||||
|
xdg-user-dirs
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
cacheHome = config.home.homeDirectory + "/.local/cache";
|
||||||
|
|
||||||
|
# manage $XDG_CONFIG_HOME/mimeapps.list
|
||||||
|
# xdg search all desktop entries from $XDG_DATA_DIRS, check it by command:
|
||||||
|
# echo $XDG_DATA_DIRS
|
||||||
|
# the system-level desktop entries can be list by command:
|
||||||
|
# ls -l /run/current-system/sw/share/applications/
|
||||||
|
# the user-level desktop entries can be list by command(user ryan):
|
||||||
|
# ls /etc/profiles/per-user/ryan/share/applications/
|
||||||
|
mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = let
|
||||||
|
browser = ["firefox.desktop"];
|
||||||
|
in {
|
||||||
|
"application/json" = browser;
|
||||||
|
"application/pdf" = browser; # TODO: pdf viewer
|
||||||
|
|
||||||
|
"text/html" = browser;
|
||||||
|
"text/xml" = browser;
|
||||||
|
"application/xml" = browser;
|
||||||
|
"application/xhtml+xml" = browser;
|
||||||
|
"application/xhtml_xml" = browser;
|
||||||
|
"application/rdf+xml" = browser;
|
||||||
|
"application/rss+xml" = browser;
|
||||||
|
"application/x-extension-htm" = browser;
|
||||||
|
"application/x-extension-html" = browser;
|
||||||
|
"application/x-extension-shtml" = browser;
|
||||||
|
"application/x-extension-xht" = browser;
|
||||||
|
"application/x-extension-xhtml" = browser;
|
||||||
|
|
||||||
|
"x-scheme-handler/about" = browser;
|
||||||
|
"x-scheme-handler/ftp" = browser;
|
||||||
|
"x-scheme-handler/http" = browser;
|
||||||
|
"x-scheme-handler/https" = browser;
|
||||||
|
"x-scheme-handler/unknown" = browser;
|
||||||
|
|
||||||
|
"x-scheme-handler/discord" = ["discord.desktop"];
|
||||||
|
"x-scheme-handler/tg" = ["telegramdesktop.desktop"];
|
||||||
|
|
||||||
|
"audio/*" = ["mpv.desktop"];
|
||||||
|
"video/*" = ["mpv.dekstop"];
|
||||||
|
"image/*" = ["imv.desktop"];
|
||||||
|
"image/gif" = ["imv.desktop"];
|
||||||
|
"image/jpeg" = ["imv.desktop"];
|
||||||
|
"image/png" = ["imv.desktop"];
|
||||||
|
"image/webp" = ["imv.desktop"];
|
||||||
|
};
|
||||||
|
|
||||||
|
associations.removed =
|
||||||
|
{
|
||||||
|
# ......
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,15 @@
|
|||||||
{pkgs, config, lib, ... }: {
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home.file.".config/fcitx5/profile".source = ./profile;
|
home.file.".config/fcitx5/profile".source = ./profile;
|
||||||
home.file.".config/fcitx5/profile-bak".source = ./profile; # used for backup
|
home.file.".config/fcitx5/profile-bak".source = ./profile; # used for backup
|
||||||
# fcitx5 每次切换输入法,就会修改 ~/.config/fcitx5/profile 文件,导致我用 hm 管理的配置被覆盖
|
|
||||||
# 解决方法是通过如下内置,每次 rebuild 前都先删除下 profile 文件
|
# every time fcitx5 switch input method, it will modify ~/.config/fcitx5/profile file,
|
||||||
|
# which will override my config managed by home-manager
|
||||||
|
# so we need to remove it before everytime we rebuild the config
|
||||||
home.activation.removeExistingFcitx5Profile = lib.hm.dag.entryBefore ["checkLinkTargets"] ''
|
home.activation.removeExistingFcitx5Profile = lib.hm.dag.entryBefore ["checkLinkTargets"] ''
|
||||||
rm -f "${config.xdg.configHome}/fcitx5/profile"
|
rm -f "${config.xdg.configHome}/fcitx5/profile"
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
./wayland-apps.nix
|
./wayland-apps.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Only available on home-manager's master branch(2023/7/25)
|
||||||
|
# wayland.windowManager.hyprland = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
# hyprland configs, based on https://github.com/notwidow/hyprland
|
# hyprland configs, based on https://github.com/notwidow/hyprland
|
||||||
home.file.".config/hypr" = {
|
home.file.".config/hypr" = {
|
||||||
source = ./hypr-conf;
|
source = ./hypr-conf;
|
||||||
@@ -21,6 +21,12 @@
|
|||||||
home.file.".gtkrc-2.0".source = ./gtkrc-2.0;
|
home.file.".gtkrc-2.0".source = ./gtkrc-2.0;
|
||||||
home.file.".config/hypr/wallpapers/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
home.file.".config/hypr/wallpapers/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
||||||
|
|
||||||
|
# music player - mpd
|
||||||
|
home.file.".config/mpd" = {
|
||||||
|
source = ./mpd;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
@@ -50,6 +56,4 @@
|
|||||||
package = pkgs.qogir-theme;
|
package = pkgs.qogir-theme;
|
||||||
size = 64;
|
size = 64;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
## Hyprland configuration file for Archcraft
|
## Hyprland configuration file
|
||||||
|
|
||||||
#-- Output ----------------------------------------------------
|
#-- Output ----------------------------------------------------
|
||||||
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
||||||
@@ -91,7 +91,7 @@ windowrule=size 100% 100%,wlogout
|
|||||||
windowrule=animation slide,wlogout
|
windowrule=animation slide,wlogout
|
||||||
|
|
||||||
#-- Keybindings ----------------------------------------------------
|
#-- Keybindings ----------------------------------------------------
|
||||||
$term = alacritty
|
$term = kitty
|
||||||
$app_launcher = ~/.config/hypr/scripts/menu
|
$app_launcher = ~/.config/hypr/scripts/menu
|
||||||
$volume = ~/.config/hypr/scripts/volume
|
$volume = ~/.config/hypr/scripts/volume
|
||||||
$backlight = ~/.config/hypr/scripts/brightness
|
$backlight = ~/.config/hypr/scripts/brightness
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
## Script To Manage Brightness For Archcraft (in Wayland).
|
## Script To Manage Brightness (in Wayland).
|
||||||
|
|
||||||
iDIR="$HOME/.config/hypr/mako/icons"
|
iDIR="$HOME/.config/hypr/mako/icons"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## launch waybar with alt config
|
## launch waybar with alt config
|
||||||
|
|
||||||
CONFIG="$HOME/.config/hypr/waybar/config"
|
CONFIG="$HOME/.config/hypr/waybar/config.json"
|
||||||
STYLE="$HOME/.config/hypr/waybar/style.css"
|
STYLE="$HOME/.config/hypr/waybar/style.css"
|
||||||
|
|
||||||
if [[ ! $(pidof waybar) ]]; then
|
if [[ ! $(pidof waybar) ]]; then
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
## Script To Manage Speaker Volume For Archcraft (in Wayland).
|
## Script To Manage Speaker Volume(in Wayland).
|
||||||
|
|
||||||
iDIR="$HOME/.config/hypr/mako/icons"
|
iDIR="$HOME/.config/hypr/mako/icons"
|
||||||
|
|
||||||
|
|||||||
@@ -1,120 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import subprocess
|
|
||||||
from pyquery import PyQuery # install using `pip install pyquery`
|
|
||||||
import json
|
|
||||||
|
|
||||||
# weather icons
|
|
||||||
weather_icons = {
|
|
||||||
"sunnyDay": "滛",
|
|
||||||
"clearNight": "望",
|
|
||||||
"cloudyFoggyDay": "",
|
|
||||||
"cloudyFoggyNight": "",
|
|
||||||
"rainyDay": "",
|
|
||||||
"rainyNight": "",
|
|
||||||
"snowyIcyDay": "",
|
|
||||||
"snowyIcyNight": "",
|
|
||||||
"severe": "",
|
|
||||||
"default": "",
|
|
||||||
}
|
|
||||||
|
|
||||||
# get location_id
|
|
||||||
# to get your own location_id, go to https://weather.com & search your location.
|
|
||||||
# once you choose your location, you can see the location_id in the URL(64 chars long hex string)
|
|
||||||
# Shenzen, Guangdong's location id: https://weather.com/en-IN/weather/today/l/7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3
|
|
||||||
location_id = "7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3"
|
|
||||||
|
|
||||||
# get html page
|
|
||||||
url = "https://weather.com/en-IN/weather/today/l/" + location_id
|
|
||||||
html_data = PyQuery(url=url)
|
|
||||||
|
|
||||||
# current temperature
|
|
||||||
temp = html_data("span[data-testid='TemperatureValue']").eq(0).text()
|
|
||||||
# print(temp)
|
|
||||||
|
|
||||||
# current status phrase
|
|
||||||
status = html_data("div[data-testid='wxPhrase']").text()
|
|
||||||
status = f"{status[:16]}.." if len(status) > 17 else status
|
|
||||||
# print(status)
|
|
||||||
|
|
||||||
# status code
|
|
||||||
status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2]
|
|
||||||
# print(status_code)
|
|
||||||
|
|
||||||
# status icon
|
|
||||||
icon = (
|
|
||||||
weather_icons[status_code]
|
|
||||||
if status_code in weather_icons
|
|
||||||
else weather_icons["default"]
|
|
||||||
)
|
|
||||||
# print(icon)
|
|
||||||
|
|
||||||
# temperature feels like
|
|
||||||
temp_feel = html_data(
|
|
||||||
"div[data-testid='FeelsLikeSection'] > span[data-testid='TemperatureValue']"
|
|
||||||
).text()
|
|
||||||
temp_feel_text = f"Feels like {temp_feel}c"
|
|
||||||
# print(temp_feel_text)
|
|
||||||
|
|
||||||
# min-max temperature
|
|
||||||
temp_min = (
|
|
||||||
html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
|
|
||||||
.eq(0)
|
|
||||||
.text()
|
|
||||||
)
|
|
||||||
temp_max = (
|
|
||||||
html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
|
|
||||||
.eq(1)
|
|
||||||
.text()
|
|
||||||
)
|
|
||||||
temp_min_max = f" {temp_min}\t\t {temp_max}"
|
|
||||||
# print(temp_min_max)
|
|
||||||
|
|
||||||
# wind speed
|
|
||||||
wind_speed = html_data("span[data-testid='Wind']").text().split("\n")[1]
|
|
||||||
wind_text = f"煮 {wind_speed}"
|
|
||||||
# print(wind_text)
|
|
||||||
|
|
||||||
# humidity
|
|
||||||
humidity = html_data("span[data-testid='PercentageValue']").text()
|
|
||||||
humidity_text = f" {humidity}"
|
|
||||||
# print(humidity_text)
|
|
||||||
|
|
||||||
# visibility
|
|
||||||
visbility = html_data("span[data-testid='VisibilityValue']").text()
|
|
||||||
visbility_text = f" {visbility}"
|
|
||||||
# print(visbility_text)
|
|
||||||
|
|
||||||
# air quality index
|
|
||||||
air_quality_index = html_data("text[data-testid='DonutChartValue']").text()
|
|
||||||
# print(air_quality_index)
|
|
||||||
|
|
||||||
# hourly rain prediction
|
|
||||||
prediction = html_data("section[aria-label='Hourly Forecast']")(
|
|
||||||
"div[data-testid='SegmentPrecipPercentage'] > span"
|
|
||||||
).text()
|
|
||||||
prediction = prediction.replace("Chance of Rain", "")
|
|
||||||
prediction = f"\n\n (hourly) {prediction}" if len(prediction) > 0 else prediction
|
|
||||||
# print(prediction)
|
|
||||||
|
|
||||||
# tooltip text
|
|
||||||
tooltip_text = str.format(
|
|
||||||
"\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}",
|
|
||||||
f'<span size="xx-large">{temp}</span>',
|
|
||||||
f"<big>{icon}</big>",
|
|
||||||
f"<big>{status}</big>",
|
|
||||||
f"<small>{temp_feel_text}</small>",
|
|
||||||
f"<big>{temp_min_max}</big>",
|
|
||||||
f"{wind_text}\t{humidity_text}",
|
|
||||||
f"{visbility_text}\tAQI {air_quality_index}",
|
|
||||||
f"<i>{prediction}</i>",
|
|
||||||
)
|
|
||||||
|
|
||||||
# print waybar module data
|
|
||||||
out_data = {
|
|
||||||
"text": f"{icon} {temp}",
|
|
||||||
"alt": status,
|
|
||||||
"tooltip": tooltip_text,
|
|
||||||
"class": status_code,
|
|
||||||
}
|
|
||||||
print(json.dumps(out_data))
|
|
||||||
@@ -1,222 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "main-bar",
|
|
||||||
"id": "main-bar",
|
|
||||||
"layer": "top",
|
|
||||||
"mode": "dock",
|
|
||||||
"exclusive": true,
|
|
||||||
"passthrough": false,
|
|
||||||
"height": 32,
|
|
||||||
"spacing": 6,
|
|
||||||
"margin": 0,
|
|
||||||
"margin-top": 0,
|
|
||||||
"margin-bottom": 0,
|
|
||||||
"margin-left": 0,
|
|
||||||
"margin-right": 0,
|
|
||||||
"fixed-center": true,
|
|
||||||
"ipc": true,
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"custom/menu",
|
|
||||||
"wlr/workspaces",
|
|
||||||
"cpu",
|
|
||||||
"memory",
|
|
||||||
"disk"
|
|
||||||
],
|
|
||||||
"modules-center": [
|
|
||||||
"mpd",
|
|
||||||
"tray"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"pulseaudio",
|
|
||||||
"custom/weather",
|
|
||||||
"network",
|
|
||||||
"battery",
|
|
||||||
"clock",
|
|
||||||
"custom/power"
|
|
||||||
],
|
|
||||||
|
|
||||||
// waybar-backlight
|
|
||||||
"backlight": {
|
|
||||||
"interval": 2,
|
|
||||||
"align": 0,
|
|
||||||
"rotate": 0,
|
|
||||||
//"device": "amdgpu_bl0",
|
|
||||||
"format": "{icon} {percent}%",
|
|
||||||
"format-icons": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
// Commands to execute on events
|
|
||||||
"on-click": "",
|
|
||||||
"on-click-middle": "",
|
|
||||||
"on-click-right": "",
|
|
||||||
"on-update": "",
|
|
||||||
"on-scroll-up": "light -A 5%",
|
|
||||||
"on-scroll-down": "light -U 5%",
|
|
||||||
"smooth-scrolling-threshold": 1,
|
|
||||||
},
|
|
||||||
"wlr/workspaces": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-click": "activate",
|
|
||||||
"all-outputs": true,
|
|
||||||
"format-icons": {
|
|
||||||
"1": "",
|
|
||||||
"2": "",
|
|
||||||
"3": "",
|
|
||||||
"4": "",
|
|
||||||
"5": "ﭮ",
|
|
||||||
"6": "",
|
|
||||||
"7": "",
|
|
||||||
"8": "",
|
|
||||||
"9": "",
|
|
||||||
"10": "﮼",
|
|
||||||
"focused": "",
|
|
||||||
"default": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// waybar-battery
|
|
||||||
"battery": {
|
|
||||||
"interval": 60,
|
|
||||||
"align": 0,
|
|
||||||
"rotate": 0,
|
|
||||||
//"bat": "BAT1",
|
|
||||||
//"adapter": "ACAD",
|
|
||||||
"full-at": 100,
|
|
||||||
"design-capacity": false,
|
|
||||||
"states": {
|
|
||||||
"good": 95,
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": "{icon} {capacity}%",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"format-plugged": " {capacity}%",
|
|
||||||
"format-full": "{icon} Full",
|
|
||||||
//"format-good": "",
|
|
||||||
"format-alt": "{icon} {time}",
|
|
||||||
"format-icons": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
"format-time": "{H}h {M}min",
|
|
||||||
"tooltip": true,
|
|
||||||
},
|
|
||||||
// waybar-clock
|
|
||||||
"clock": {
|
|
||||||
"interval": 60,
|
|
||||||
"align": 0,
|
|
||||||
"rotate": 0,
|
|
||||||
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
|
|
||||||
"format": " {:%H:%M}",
|
|
||||||
"format-alt": " {:%a %b %d, %G}"
|
|
||||||
},
|
|
||||||
// waybar-cpu
|
|
||||||
"cpu": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " LOAD: {usage}%",
|
|
||||||
},
|
|
||||||
// waybar-custom
|
|
||||||
"custom/menu": {
|
|
||||||
"format": "",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "$HOME/.config/hypr/scripts/menu",
|
|
||||||
},
|
|
||||||
"custom/power": {
|
|
||||||
"format": " ",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "$HOME/.config/hypr/scripts/wlogout",
|
|
||||||
},
|
|
||||||
// waybar-disk
|
|
||||||
"disk": {
|
|
||||||
"interval": 30,
|
|
||||||
"format": " FREE: {free}",
|
|
||||||
},
|
|
||||||
// waybar-memory
|
|
||||||
"memory": {
|
|
||||||
"interval": 10,
|
|
||||||
"format": " USED: {used:0.1f}G",
|
|
||||||
},
|
|
||||||
// waybar-mpd
|
|
||||||
"mpd": {
|
|
||||||
"interval": 2,
|
|
||||||
"unknown-tag": "N/A",
|
|
||||||
"format": "{stateIcon} {artist} - {title}",
|
|
||||||
"format-disconnected": " Disconnected",
|
|
||||||
"format-paused": "{stateIcon} {artist} - {title}",
|
|
||||||
"format-stopped": "Stopped ",
|
|
||||||
"state-icons": {
|
|
||||||
"paused": "",
|
|
||||||
"playing": ""
|
|
||||||
},
|
|
||||||
"tooltip-format": "MPD (connected)",
|
|
||||||
"tooltip-format-disconnected": "MPD (disconnected)",
|
|
||||||
// Commands to execute on events
|
|
||||||
"on-click": "mpc toggle",
|
|
||||||
"on-click-middle": "mpc prev",
|
|
||||||
"on-click-right": "mpc next",
|
|
||||||
"on-update": "",
|
|
||||||
"on-scroll-up": "mpc seek +00:00:01",
|
|
||||||
"on-scroll-down": "mpc seek -00:00:01",
|
|
||||||
"smooth-scrolling-threshold": 1,
|
|
||||||
},
|
|
||||||
// waybar-network
|
|
||||||
"network": {
|
|
||||||
"interval": 5,
|
|
||||||
//"interface": "wlan*", // (Optional) To force the use of this interface, set it for netspeed to work
|
|
||||||
"format-wifi": " {essid}",
|
|
||||||
"format-ethernet": " {ipaddr}/{cidr}",
|
|
||||||
"format-linked": " {ifname} (No IP)",
|
|
||||||
"format-disconnected": "睊 Disconnected",
|
|
||||||
"format-disabled": "睊 Disabled",
|
|
||||||
"format-alt": " {bandwidthUpBits} | {bandwidthDownBits}",
|
|
||||||
"tooltip-format": " {ifname} via {gwaddr}",
|
|
||||||
},
|
|
||||||
// weather-custom
|
|
||||||
"custom/weather": {
|
|
||||||
// "format": "{}",
|
|
||||||
// "format-alt": "{alt}: {}",
|
|
||||||
"format-alt-click": "click-right",
|
|
||||||
"interval": 300,
|
|
||||||
"return-type": "json",
|
|
||||||
"exec": "~/.config/hypr/scripts/weather",
|
|
||||||
// "on-click": "xdg-open https://weather.com/en-IN/weather/today/l/$(location_id)"
|
|
||||||
},
|
|
||||||
// waybar-pulseaudio
|
|
||||||
"pulseaudio": {
|
|
||||||
//"format": "{volume}% {icon} {format_source}",
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-muted": " Mute",
|
|
||||||
"format-bluetooth": " {volume}% {format_source}",
|
|
||||||
"format-bluetooth-muted": " Mute",
|
|
||||||
"format-source": " {volume}%",
|
|
||||||
"format-source-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"hands-free": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scroll-step": 5.0,
|
|
||||||
// Commands to execute on events
|
|
||||||
"on-click": "amixer set Master toggle",
|
|
||||||
"on-click-right": "pavucontrol",
|
|
||||||
"smooth-scrolling-threshold": 1,
|
|
||||||
},
|
|
||||||
// waybar-tray
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 16,
|
|
||||||
"spacing": 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
"position": "top",
|
||||||
|
"layer": "top",
|
||||||
|
|
||||||
|
"modules-left": [
|
||||||
|
"custom/launcher",
|
||||||
|
"temperature",
|
||||||
|
"wlr/workspaces"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"custom/playerctl"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"mpd",
|
||||||
|
"pulseaudio",
|
||||||
|
"backlight",
|
||||||
|
"memory",
|
||||||
|
"cpu",
|
||||||
|
"network",
|
||||||
|
"clock",
|
||||||
|
"custom/powermenu",
|
||||||
|
"tray"
|
||||||
|
],
|
||||||
|
"wlr/workspaces": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"on-click": "activate",
|
||||||
|
"format-icons": {
|
||||||
|
"1": "",
|
||||||
|
"2": "",
|
||||||
|
"3": "",
|
||||||
|
"4": "",
|
||||||
|
"5": "",
|
||||||
|
"6": "",
|
||||||
|
"7": "",
|
||||||
|
"8": "",
|
||||||
|
"9": "",
|
||||||
|
"10": "〇",
|
||||||
|
"focused": "",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
"interval": 60,
|
||||||
|
"align": 0,
|
||||||
|
"rotate": 0,
|
||||||
|
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format": " {:%H:%M}",
|
||||||
|
"format-alt": " {:%a %b %d, %G}"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"format": "\udb80\udf5b {usage}%",
|
||||||
|
"interval": 1
|
||||||
|
},
|
||||||
|
"custom/launcher": {
|
||||||
|
"format": "\uf313 ",
|
||||||
|
"on-click": "$HOME/.config/hypr/scripts/menu",
|
||||||
|
"on-click-middle": "exec default_wall",
|
||||||
|
"on-click-right": "exec wallpaper_random",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/powermenu": {
|
||||||
|
"format": "\uf011",
|
||||||
|
"on-click": "$HOME/.config/hypr/scripts/wlogout",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "\uf06e",
|
||||||
|
"deactivated": "\uf070"
|
||||||
|
},
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": "\udb83\udee0 {percentage}%",
|
||||||
|
"interval": 1,
|
||||||
|
"states": {
|
||||||
|
"warning": 85
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mpd": {
|
||||||
|
"interval": 2,
|
||||||
|
"unknown-tag": "N/A",
|
||||||
|
"format": "{stateIcon} {artist} - {title}",
|
||||||
|
"format-disconnected": " Disconnected",
|
||||||
|
"format-paused": "{stateIcon} {artist} - {title}",
|
||||||
|
"format-stopped": "Stopped ",
|
||||||
|
"state-icons": {
|
||||||
|
"paused": "",
|
||||||
|
"playing": ""
|
||||||
|
},
|
||||||
|
"tooltip-format": "MPD (connected)",
|
||||||
|
"tooltip-format-disconnected": "MPD (disconnected)",
|
||||||
|
// Commands to execute on events
|
||||||
|
"on-click": "mpc toggle",
|
||||||
|
"on-click-middle": "mpc prev",
|
||||||
|
"on-click-right": "mpc next",
|
||||||
|
"on-update": "",
|
||||||
|
"on-scroll-up": "mpc seek +00:00:01",
|
||||||
|
"on-scroll-down": "mpc seek -00:00:01",
|
||||||
|
"smooth-scrolling-threshold": 1
|
||||||
|
},
|
||||||
|
"custom/playerctl": {
|
||||||
|
"format": "{icon} <span>{}</span>",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 55,
|
||||||
|
"exec": "playerctl -a metadata --format '{\"text\": \" {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F",
|
||||||
|
"on-click-middle": "playerctl previous",
|
||||||
|
"on-click": "playerctl play-pause",
|
||||||
|
"on-click-right": "playerctl next",
|
||||||
|
"format-icons": {
|
||||||
|
"Paused": "<span foreground='#6dd9d9'></span>",
|
||||||
|
"Playing": "<span foreground='#82db97'></span>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"interval": 5,
|
||||||
|
//"interface": "wlan*", // (Optional) To force the use of this interface, set it for netspeed to work
|
||||||
|
"format-wifi": " {essid}",
|
||||||
|
"format-ethernet": " {ipaddr}/{cidr}",
|
||||||
|
"format-linked": " {ifname} (No IP)",
|
||||||
|
"format-disconnected": "睊 Disconnected",
|
||||||
|
"format-disabled": "睊 Disabled",
|
||||||
|
"format-alt": " {bandwidthUpBits} | {bandwidthDownBits}",
|
||||||
|
"tooltip-format": " {ifname} via {gwaddr}",
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
//"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-muted": " Mute",
|
||||||
|
"format-bluetooth": " {volume}% {format_source}",
|
||||||
|
"format-bluetooth-muted": " Mute",
|
||||||
|
"format-source": " {volume}%",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scroll-step": 5.0,
|
||||||
|
// Commands to execute on events
|
||||||
|
"on-click": "amixer set Master toggle",
|
||||||
|
"on-click-right": "pavucontrol",
|
||||||
|
"smooth-scrolling-threshold": 1,
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
"format": "\uf2c9 {temperatureC}\u00b0C",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 15,
|
||||||
|
"spacing": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,216 +1,138 @@
|
|||||||
/** ********** Fonts ********** **/
|
|
||||||
* {
|
* {
|
||||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
font-family: "JetBrainsMono Nerd Font";
|
||||||
font-size: 12px;
|
font-size: 12pt;
|
||||||
}
|
font-weight: bold;
|
||||||
|
border-radius: 8px;
|
||||||
/** ********** Waybar Window ********** **/
|
|
||||||
window#waybar {
|
|
||||||
background-color: #1e1e2e;
|
|
||||||
color: #1e1e2e;
|
|
||||||
border-bottom: 2px solid #313244;
|
|
||||||
transition-property: background-color;
|
transition-property: background-color;
|
||||||
transition-duration: .5s;
|
transition-duration: 0.5s;
|
||||||
}
|
}
|
||||||
|
@keyframes blink_red {
|
||||||
window#waybar.hidden {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ********** Backlight ********** **/
|
|
||||||
#backlight {
|
|
||||||
background-color: #cba6f7;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ********** Battery ********** **/
|
|
||||||
#battery {
|
|
||||||
background-color: #f9e2af;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.charging {
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.plugged {
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes blink {
|
|
||||||
to {
|
to {
|
||||||
color: #000000;
|
background-color: rgb(242, 143, 173);
|
||||||
|
color: rgb(26, 24, 38);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.warning,
|
||||||
#battery.critical:not(.charging) {
|
.critical,
|
||||||
background-color: #f38ba8;
|
.urgent {
|
||||||
color: #f38ba8;
|
animation-name: blink_red;
|
||||||
animation-name: blink;
|
animation-duration: 1s;
|
||||||
animation-duration: 0.5s;
|
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
window#waybar {
|
||||||
/** ********** Clock ********** **/
|
background-color: transparent;
|
||||||
#clock {
|
|
||||||
background-color: #a6e3a1;
|
|
||||||
}
|
}
|
||||||
|
window > box {
|
||||||
/** ********** CPU ********** **/
|
margin-left: 5px;
|
||||||
#cpu {
|
margin-right: 5px;
|
||||||
background-color: #89dceb;
|
margin-top: 5px;
|
||||||
|
background-color: #1e1e2a;
|
||||||
|
padding: 3px;
|
||||||
|
padding-left: 8px;
|
||||||
|
border: 2px none #33ccff;
|
||||||
}
|
}
|
||||||
|
#workspaces {
|
||||||
/** ********** Memory ********** **/
|
padding-left: 0px;
|
||||||
#memory {
|
padding-right: 4px;
|
||||||
background-color: #eba0ac;
|
|
||||||
}
|
}
|
||||||
|
#workspaces button {
|
||||||
/** ********** Disk ********** **/
|
padding-top: 5px;
|
||||||
#disk {
|
padding-bottom: 5px;
|
||||||
background-color: #b4befe;
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
}
|
}
|
||||||
|
#workspaces button.active {
|
||||||
/** ********** Tray ********** **/
|
background-color: rgb(181, 232, 224);
|
||||||
#tray {
|
color: rgb(26, 24, 38);
|
||||||
background-color: #cdd6f4;
|
|
||||||
}
|
}
|
||||||
#tray > .passive {
|
#workspaces button.urgent {
|
||||||
-gtk-icon-effect: dim;
|
color: rgb(26, 24, 38);
|
||||||
}
|
}
|
||||||
#tray > .needs-attention {
|
#workspaces button:hover {
|
||||||
-gtk-icon-effect: highlight;
|
background-color: rgb(248, 189, 150);
|
||||||
|
color: rgb(26, 24, 38);
|
||||||
}
|
}
|
||||||
#tray > .active {
|
tooltip {
|
||||||
|
background: rgb(48, 45, 65);
|
||||||
}
|
}
|
||||||
|
tooltip label {
|
||||||
/** ********** MPD ********** **/
|
color: rgb(217, 224, 238);
|
||||||
#mpd {
|
|
||||||
background-color: #94e2d5;
|
|
||||||
}
|
}
|
||||||
|
#custom-launcher {
|
||||||
#mpd.disconnected {
|
font-size: 20px;
|
||||||
background-color: #f38ba8;
|
padding-left: 8px;
|
||||||
|
padding-right: 6px;
|
||||||
|
color: #7ebae4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#mpd.stopped {
|
|
||||||
background-color: #f5c2e7;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mpd.playing {
|
|
||||||
background-color: #74c7ec;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mpd.paused {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ********** Pulseaudio ********** **/
|
|
||||||
#pulseaudio {
|
|
||||||
background-color: #fab387;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio.bluetooth {
|
|
||||||
background-color: #f5c2e7;
|
|
||||||
}
|
|
||||||
#pulseaudio.muted {
|
|
||||||
background-color: #313244;
|
|
||||||
color: #cdd6f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ********** Network ********** **/
|
|
||||||
#network {
|
|
||||||
background-color: #89b4fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network.disconnected,#network.disabled {
|
|
||||||
background-color: #313244;
|
|
||||||
color: #cdd6f4;
|
|
||||||
}
|
|
||||||
#network.linked {
|
|
||||||
}
|
|
||||||
#network.ethernet {
|
|
||||||
}
|
|
||||||
#network.wifi {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ********** Custom ********** **/
|
|
||||||
#custom-menu, #custom-power, #custom-weather, #custom-updater {
|
|
||||||
border-radius: 4px;
|
|
||||||
margin: 6px 0px;
|
|
||||||
padding: 2px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-menu {
|
|
||||||
background-color: #f5c2e7;
|
|
||||||
margin-left: 6px;
|
|
||||||
padding: 2px 6px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-power {
|
|
||||||
background-color: #f38ba8;
|
|
||||||
margin-right: 6px;
|
|
||||||
padding: 2px 8px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-updater {
|
|
||||||
background-color: #e6ed7b;
|
|
||||||
margin-right: 6px;
|
|
||||||
padding: 2px 8px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Common style **/
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#cpu,
|
|
||||||
#disk,
|
|
||||||
#mode,
|
#mode,
|
||||||
|
#clock,
|
||||||
#memory,
|
#memory,
|
||||||
|
#temperature,
|
||||||
|
#cpu,
|
||||||
#mpd,
|
#mpd,
|
||||||
#tray,
|
#custom-wall,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
#pulseaudio,
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#battery,
|
||||||
|
#custom-powermenu {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #mode { */
|
||||||
|
/* margin-left: 10px; */
|
||||||
|
/* background-color: rgb(248, 189, 150); */
|
||||||
|
/* color: rgb(26, 24, 38); */
|
||||||
|
/* } */
|
||||||
|
#memory {
|
||||||
|
color: rgb(181, 232, 224);
|
||||||
|
}
|
||||||
|
#cpu {
|
||||||
|
color: rgb(245, 194, 231);
|
||||||
|
}
|
||||||
|
#clock {
|
||||||
|
color: rgb(217, 224, 238);
|
||||||
|
}
|
||||||
|
/* #idle_inhibitor {
|
||||||
|
color: rgb(221, 182, 242);
|
||||||
|
}*/
|
||||||
|
#custom-wall {
|
||||||
|
color: #33ccff;
|
||||||
|
}
|
||||||
|
#temperature {
|
||||||
|
color: rgb(150, 205, 251);
|
||||||
|
}
|
||||||
|
#backlight {
|
||||||
|
color: rgb(248, 189, 150);
|
||||||
|
}
|
||||||
|
#pulseaudio {
|
||||||
|
color: rgb(245, 224, 220);
|
||||||
|
}
|
||||||
#network {
|
#network {
|
||||||
border-radius: 4px;
|
color: #abe9b3;
|
||||||
margin: 6px 0px;
|
|
||||||
padding: 2px 8px;
|
|
||||||
}
|
}
|
||||||
|
#network.disconnected {
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
|
||||||
/** ********** Weather ********** **/
|
|
||||||
|
|
||||||
#custom-weather {
|
|
||||||
background-color: #5d388b;
|
|
||||||
margin-right: 6px;
|
|
||||||
padding: 2px 8px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
}
|
||||||
|
#custom-powermenu {
|
||||||
#custom-weather.severe {
|
color: rgb(242, 143, 173);
|
||||||
color: #eb937d;
|
padding-right: 8px;
|
||||||
}
|
}
|
||||||
|
#tray {
|
||||||
#custom-weather.sunnyDay {
|
padding-right: 8px;
|
||||||
color: #c2ca76;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
#mpd.paused {
|
||||||
#custom-weather.clearNight {
|
color: #414868;
|
||||||
color: #2b2b2a;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
#mpd.stopped {
|
||||||
#custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight {
|
background: transparent;
|
||||||
color: #c2ddda;
|
|
||||||
}
|
}
|
||||||
|
#mpd {
|
||||||
#custom-weather.rainyDay, #custom-weather.rainyNight {
|
color: #c0caf5;
|
||||||
color: #5aaca5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-weather.showyIcyDay, #custom-weather.snowyIcyNight {
|
|
||||||
color: #d6e7e5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-weather.default {
|
|
||||||
color: #dbd9d8;
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/** ********** Fonts ********** **/
|
/** ********** Fonts ********** **/
|
||||||
* {
|
* {
|
||||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
font-family: "JetBrains Mono", "Iosevka Nerd Font", sans-serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/** ********** Fonts ********** **/
|
/** ********** Fonts ********** **/
|
||||||
* {
|
* {
|
||||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
font-family: "JetBrains Mono", "Iosevka Nerd Font", sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Recommended location for database
|
||||||
|
db_file "~/.config/mpd/database"
|
||||||
|
|
||||||
|
# If running mpd using systemd, delete this line to log directly to systemd.
|
||||||
|
log_file "syslog"
|
||||||
|
|
||||||
|
# The music directory is by default the XDG directory, uncomment to amend and choose a different directory
|
||||||
|
#music_directory "~/Music"
|
||||||
|
|
||||||
|
# Uncomment to refresh the database whenever files in the music_directory are changed
|
||||||
|
#auto_update "yes"
|
||||||
|
|
||||||
|
# Uncomment to enable the functionalities
|
||||||
|
#playlist_directory "~/.config/mpd/playlists"
|
||||||
|
#pid_file "~/.config/mpd/pid"
|
||||||
|
#state_file "~/.local/state/mpd/state"
|
||||||
|
#sticker_file "~/.config/mpd/sticker.sql"
|
||||||
@@ -1,21 +1,10 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
||||||
programs = {
|
programs = {
|
||||||
|
|
||||||
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
|
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
|
||||||
google-chrome = {
|
google-chrome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# chrome wayland support was broken on nixos-unstable branch, so fallback to stable branch for now
|
|
||||||
# https://github.com/swaywm/sway/issues/7562
|
|
||||||
package = pkgs-stable.google-chrome;
|
|
||||||
|
|
||||||
commandLineArgs = [
|
commandLineArgs = [
|
||||||
# make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
|
# make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
|
||||||
# (only supported by chromium/chrome at this time, not electron)
|
# (only supported by chromium/chrome at this time, not electron)
|
||||||
@@ -31,18 +20,18 @@
|
|||||||
firefox = {
|
firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableGnomeExtensions = false;
|
enableGnomeExtensions = false;
|
||||||
package = pkgs-stable.firefox-wayland; # firefox with wayland support
|
# package = pkgs.firefox-wayland; # firefox with wayland support
|
||||||
};
|
};
|
||||||
|
|
||||||
vscode = {
|
vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# use the stable version
|
# use the stable version
|
||||||
package = pkgs-stable.vscode.override {
|
# package = pkgs.vscode.override {
|
||||||
commandLineArgs = [
|
# commandLineArgs = [
|
||||||
# make it use text-input-v1, which works for kwin 5.27 and weston
|
# # make it use text-input-v1, which works for kwin 5.27 and weston
|
||||||
# "--enable-wayland-ime"
|
# # "--enable-wayland-ime"
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
|
|
||||||
# let vscode sync and update its configuration & extensions across devices, using github account.
|
# let vscode sync and update its configuration & extensions across devices, using github account.
|
||||||
# userSettings = {};
|
# userSettings = {};
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
xrandr --output DP-2 --brightness $@
|
||||||
@@ -45,7 +45,7 @@ bindsym $mod+6 workspace $ws6
|
|||||||
bindsym $mod+7 workspace $ws7
|
bindsym $mod+7 workspace $ws7
|
||||||
bindsym $mod+8 workspace $ws8
|
bindsym $mod+8 workspace $ws8
|
||||||
bindsym $mod+9 workspace $ws9
|
bindsym $mod+9 workspace $ws9
|
||||||
bindsym $mod+0 workspace $ws10
|
bindsym $mod+0 workspace $ws0
|
||||||
|
|
||||||
# switch to workspace with numpad keys
|
# switch to workspace with numpad keys
|
||||||
bindcode $mod+87 workspace 1
|
bindcode $mod+87 workspace 1
|
||||||
@@ -57,7 +57,7 @@ bindcode $mod+85 workspace 6
|
|||||||
bindcode $mod+79 workspace 7
|
bindcode $mod+79 workspace 7
|
||||||
bindcode $mod+80 workspace 8
|
bindcode $mod+80 workspace 8
|
||||||
bindcode $mod+81 workspace 9
|
bindcode $mod+81 workspace 9
|
||||||
bindcode $mod+90 workspace 10
|
bindcode $mod+90 workspace 0
|
||||||
|
|
||||||
# move focused container to workspace
|
# move focused container to workspace
|
||||||
bindsym $mod+Shift+1 move container to workspace $ws1
|
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||||
@@ -69,7 +69,7 @@ bindsym $mod+Shift+6 move container to workspace $ws6
|
|||||||
bindsym $mod+Shift+7 move container to workspace $ws7
|
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||||
bindsym $mod+Shift+8 move container to workspace $ws8
|
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||||
bindsym $mod+Shift+9 move container to workspace $ws9
|
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||||
bindsym $mod+Shift+0 move container to workspace $ws10
|
bindsym $mod+Shift+0 move container to workspace $ws0
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that):
|
# resize window (you can also use the mouse for that):
|
||||||
bindsym $mod+r mode "resize"
|
bindsym $mod+r mode "resize"
|
||||||
@@ -80,7 +80,7 @@ bindsym $mod+r mode "resize"
|
|||||||
######################################
|
######################################
|
||||||
|
|
||||||
# start a terminal
|
# start a terminal
|
||||||
bindsym $mod+Return exec alacritty
|
bindsym $mod+Return exec kitty
|
||||||
|
|
||||||
# kill focused window
|
# kill focused window
|
||||||
bindsym $mod+q kill
|
bindsym $mod+q kill
|
||||||
@@ -100,12 +100,6 @@ bindsym $mod+Shift+c reload
|
|||||||
# restart i3 inplace (preserves your layout/session, can be used to update i3)
|
# restart i3 inplace (preserves your layout/session, can be used to update i3)
|
||||||
bindsym $mod+Shift+r restart
|
bindsym $mod+Shift+r restart
|
||||||
|
|
||||||
# keybinding in fancy rofi (automated):
|
|
||||||
bindsym F1 exec ~/.config/i3/scripts/keyhint-2
|
|
||||||
# alternative
|
|
||||||
# keybinding list in editor:
|
|
||||||
# bindsym $mod+F1 exec xed ~/.config/i3/keybindings
|
|
||||||
|
|
||||||
# Backlight control
|
# Backlight control
|
||||||
bindsym XF86MonBrightnessUp exec xbacklight +10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
|
bindsym XF86MonBrightnessUp exec xbacklight +10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
|
||||||
bindsym XF86MonBrightnessDown exec xbacklight -10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
|
bindsym XF86MonBrightnessDown exec xbacklight -10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
|
||||||
@@ -191,6 +185,9 @@ bindsym Print exec scrot ~/%Y-%m-%d-%T-screenshot.png && notify-send "Screenshot
|
|||||||
bindsym $mod+Shift+p exec ~/.config/i3/scripts/power-profiles
|
bindsym $mod+Shift+p exec ~/.config/i3/scripts/power-profiles
|
||||||
|
|
||||||
|
|
||||||
|
bindsym $mod+Shift+m exec ~/.config/i3/scripts/restore-idols-monitor.sh
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# configuration for workspace behaviour: #
|
# configuration for workspace behaviour: #
|
||||||
##########################################
|
##########################################
|
||||||
@@ -199,14 +196,15 @@ bindsym $mod+Shift+p exec ~/.config/i3/scripts/power-profiles
|
|||||||
# We use variables to avoid repeating the names in multiple places.
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
set $ws1 "1: "
|
set $ws1 "1: "
|
||||||
set $ws2 "2: "
|
set $ws2 "2: "
|
||||||
set $ws3 "3:"
|
# visual studio code
|
||||||
set $ws4 "4:"
|
set $ws3 "3: "
|
||||||
set $ws5 "5:"
|
set $ws4 "4: "
|
||||||
set $ws6 "6"
|
set $ws5 "5: "
|
||||||
set $ws7 "7"
|
set $ws6 "6: "
|
||||||
set $ws8 "8"
|
set $ws7 "7: "
|
||||||
set $ws9 "9"
|
set $ws8 "8:"
|
||||||
set $ws10 "10"
|
set $ws9 "9:"
|
||||||
|
set $ws0 "10: "
|
||||||
|
|
||||||
# use workspaces on different displays:
|
# use workspaces on different displays:
|
||||||
# where you have to replace VGA-0/HDMI-0 with the names for your displays
|
# where you have to replace VGA-0/HDMI-0 with the names for your displays
|
||||||
@@ -215,14 +213,13 @@ workspace $ws1 output DP-2
|
|||||||
workspace $ws6 output HDMI-0
|
workspace $ws6 output HDMI-0
|
||||||
|
|
||||||
# bind program to workspace and focus to them on startup:
|
# bind program to workspace and focus to them on startup:
|
||||||
assign [class="Terminal"] $ws1
|
# assign [class="kitty"] $ws1
|
||||||
assign [class="(?i)firefox"] $ws2
|
assign [class="(?i)firefox"] $ws2
|
||||||
assign [class="Thunar"] $ws3
|
assign [class="Thunar"] $ws8
|
||||||
assign [class="thunderbird"] $ws4
|
assign [class="thunderbird"] $ws9
|
||||||
assign [class="TelegramDesktop"] $ws5
|
assign [class="TelegramDesktop"] $ws5
|
||||||
|
|
||||||
# automatic set focus new window if it opens on another workspace than the current:
|
# automatic set focus new window if it opens on another workspace than the current:
|
||||||
for_window [class=Terminal] focus
|
|
||||||
for_window [class=(?i)firefox] focus
|
for_window [class=(?i)firefox] focus
|
||||||
for_window [class=Thunar] focus
|
for_window [class=Thunar] focus
|
||||||
for_window [class=Thunderbird] focus
|
for_window [class=Thunderbird] focus
|
||||||
@@ -282,8 +279,9 @@ exec --no-startup-id flameshot
|
|||||||
# https://github.com/nwg-piotr/autotiling
|
# https://github.com/nwg-piotr/autotiling
|
||||||
exec_always --no-startup-id autotiling
|
exec_always --no-startup-id autotiling
|
||||||
|
|
||||||
# Autostart apps as you like
|
exec --no-startup-id i3-msg "workspace $ws2; exec firefox"
|
||||||
exec --no-startup-id sleep 1 && Terminal
|
|
||||||
|
exec --no-startup-id sleep 1 && ~/.config/i3/scripts/restore-idols-monitor.sh
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# floating rules #
|
# floating rules #
|
||||||
|
|||||||
@@ -1,37 +1,41 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
# i3 window manager's config, based on https://github.com/endeavouros-team/endeavouros-i3wm-setup
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# i3 配置,基于 https://github.com/endeavouros-team/endeavouros-i3wm-setup
|
|
||||||
# 直接从当前文件夹中读取配置文件作为配置内容
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./x11-apps.nix
|
./x11-apps.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
# wallpaper, binary file
|
# wallpaper, binary file
|
||||||
home.file.".config/i3/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
".config/i3/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
||||||
home.file.".config/i3/config".source = ./config;
|
".config/i3/config".source = ./config;
|
||||||
home.file.".config/i3/i3blocks.conf".source = ./i3blocks.conf;
|
".config/i3/i3blocks.conf".source = ./i3blocks.conf;
|
||||||
home.file.".config/i3/keybindings".source = ./keybindings;
|
".config/i3/scripts" = {
|
||||||
home.file.".config/i3/scripts" = {
|
|
||||||
source = ./scripts;
|
source = ./scripts;
|
||||||
# copy the scripts directory recursively
|
# copy the scripts directory recursively
|
||||||
recursive = true;
|
recursive = true;
|
||||||
executable = true; # make all scripts executable
|
executable = true; # make all scripts executable
|
||||||
};
|
};
|
||||||
|
".config/i3/layouts" = {
|
||||||
|
source = ./layouts;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
# rofi is a application launcher and dmenu replacement
|
# rofi is a application launcher and dmenu replacement
|
||||||
home.file.".config/rofi" = {
|
".config/rofi" = {
|
||||||
source = ./rofi-conf;
|
source = ./rofi-conf;
|
||||||
# copy the scripts directory recursively
|
# copy the scripts directory recursively
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
".local/bin/bright" = {
|
||||||
|
source = ./bin/bright;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# xrandr - set primary screen
|
# xrandr - set primary screen
|
||||||
home.file.".screenlayout/monitor.sh".source = ./dual-monitor-4k-1080p.sh;
|
".screenlayout/monitor.sh".source = ./dual-monitor-4k-1080p.sh;
|
||||||
|
};
|
||||||
|
|
||||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ markup=pango
|
|||||||
[terminal]
|
[terminal]
|
||||||
full_text=
|
full_text=
|
||||||
color=#807dfe
|
color=#807dfe
|
||||||
command=i3-msg -q exec alacritty
|
command=i3-msg -q exec kitty
|
||||||
|
|
||||||
[browser]
|
[browser]
|
||||||
full_text=
|
full_text=
|
||||||
@@ -64,7 +64,6 @@ border_right=0
|
|||||||
border_bottom=0
|
border_bottom=0
|
||||||
border_left=0
|
border_left=0
|
||||||
|
|
||||||
|
|
||||||
[cpu_stats]
|
[cpu_stats]
|
||||||
command=(mpstat 1 1 | grep Average | awk '{ printf "%04.1f<span color=\"#ff5555\">%</span>", (100 - $12) }') && (sensors | grep 'Package id 0:\|Tdie' | grep ':[ ]*+[0-9]*.[0-9]*' -o | awk '{ printf "%s<span color=\"#ff5555\">°C</span>\n", $2 }')
|
command=(mpstat 1 1 | grep Average | awk '{ printf "%04.1f<span color=\"#ff5555\">%</span>", (100 - $12) }') && (sensors | grep 'Package id 0:\|Tdie' | grep ':[ ]*+[0-9]*.[0-9]*' -o | awk '{ printf "%s<span color=\"#ff5555\">°C</span>\n", $2 }')
|
||||||
interval=2
|
interval=2
|
||||||
|
|||||||
@@ -1,106 +0,0 @@
|
|||||||
EndeavourOS i3wm Keybindings cheat sheet:
|
|
||||||
|
|
||||||
--> to update this run the following command:
|
|
||||||
wget --backups=1 https://raw.githubusercontent.com/endeavouros-team/endeavouros-i3wm-setup/main/.config/i3/keybindings -P ~/.config/i3/
|
|
||||||
|
|
||||||
All sources and updates are available at GitHub:
|
|
||||||
https://github.com/endeavouros-team/endeavouros-i3wm-setup
|
|
||||||
|
|
||||||
For reference consult our WIKI:
|
|
||||||
https://discovery.endeavouros.com/window-tiling-managers/i3-wm/
|
|
||||||
|
|
||||||
= windows key
|
|
||||||
|
|
||||||
# start alacritty
|
|
||||||
+Return
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
+q
|
|
||||||
|
|
||||||
# Application menu search by typing (fancy Rofi menu):
|
|
||||||
+d
|
|
||||||
|
|
||||||
# Window switcher menu (fancy Rofi menu):
|
|
||||||
+t
|
|
||||||
|
|
||||||
# fancy exit-menu on bottom right:
|
|
||||||
+Shift+e
|
|
||||||
|
|
||||||
# Lock the system
|
|
||||||
# lock with a picture or blurring the screen (options in config)
|
|
||||||
+l
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
+Shift+c
|
|
||||||
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
+Shift+r
|
|
||||||
|
|
||||||
# keybinding in fancy rofi (automated)
|
|
||||||
F1
|
|
||||||
|
|
||||||
# full keybinding list in editor:
|
|
||||||
+F1
|
|
||||||
|
|
||||||
# change window focus
|
|
||||||
+j focus left
|
|
||||||
+k focus down
|
|
||||||
+b focus up
|
|
||||||
+o focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
+Left focus left
|
|
||||||
+Down focus down
|
|
||||||
+Up focus up
|
|
||||||
+Right focus right
|
|
||||||
|
|
||||||
# move a focused window
|
|
||||||
+Shift+j move left
|
|
||||||
+Shift+k move down
|
|
||||||
+Shift+b move up
|
|
||||||
+Shift+o move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
+Shift+Left move left
|
|
||||||
+Shift+Down move down
|
|
||||||
+Shift+Up move up
|
|
||||||
+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
+s layout stacking
|
|
||||||
+g layout tabbed
|
|
||||||
+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#+d focus child
|
|
||||||
|
|
||||||
# resize floating window
|
|
||||||
+right mouse button
|
|
||||||
|
|
||||||
## Multimedia Keys
|
|
||||||
|
|
||||||
# Redirect sound to headphones
|
|
||||||
+p
|
|
||||||
|
|
||||||
## App shortcuts
|
|
||||||
+w starts Firefox
|
|
||||||
+n starts Thunar
|
|
||||||
Button screenshot
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# I3 Layouts
|
||||||
|
|
||||||
|
This directory contains the layouts for i3.
|
||||||
|
|
||||||
|
The are generated using the `i3-save-tree` command, and need to customized to make it work.
|
||||||
|
|
||||||
|
See the [i3 user guide](https://i3wm.org/docs/layout-saving.html) for more information.
|
||||||
|
|
||||||
|
## Idol's Monitor
|
||||||
|
|
||||||
|
the `idol-monitor.json` file contains the layout showing my nix distributed building monitor, it's a 2x2 grid of terminals running `btop`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
the layout & btop are autostarted by i3.
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
// vim:ts=4:sw=4:et
|
||||||
|
{
|
||||||
|
// splitv split container with 2 children
|
||||||
|
"border": "pixel",
|
||||||
|
"floating": "auto_off",
|
||||||
|
"layout": "splitv",
|
||||||
|
"marks": [],
|
||||||
|
"percent": 0.5,
|
||||||
|
"type": "con",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"border": "pixel",
|
||||||
|
"current_border_width": 2,
|
||||||
|
"floating": "auto_off",
|
||||||
|
"geometry": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"marks": [],
|
||||||
|
"name": "Alacritty",
|
||||||
|
"percent": 0.5,
|
||||||
|
"swallows": [
|
||||||
|
{
|
||||||
|
"class": "^Alacritty$",
|
||||||
|
"instance": "^Alacritty$",
|
||||||
|
"machine": "^ai$",
|
||||||
|
"title": "^ai$"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "con"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"border": "pixel",
|
||||||
|
"current_border_width": 2,
|
||||||
|
"floating": "auto_off",
|
||||||
|
"geometry": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"marks": [],
|
||||||
|
"name": "Alacritty",
|
||||||
|
"percent": 0.5,
|
||||||
|
"swallows": [
|
||||||
|
{
|
||||||
|
"class": "^Alacritty$",
|
||||||
|
"instance": "^Alacritty$",
|
||||||
|
"machine": "^ai$",
|
||||||
|
"title": "^ruby$"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "con"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// splitv split container with 2 children
|
||||||
|
"border": "pixel",
|
||||||
|
"floating": "auto_off",
|
||||||
|
"layout": "splitv",
|
||||||
|
"marks": [],
|
||||||
|
"percent": 0.5,
|
||||||
|
"type": "con",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"border": "pixel",
|
||||||
|
"current_border_width": 2,
|
||||||
|
"floating": "auto_off",
|
||||||
|
"geometry": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"marks": [],
|
||||||
|
"name": "Alacritty",
|
||||||
|
"percent": 0.5,
|
||||||
|
"swallows": [
|
||||||
|
{
|
||||||
|
"class": "^Alacritty$",
|
||||||
|
"instance": "^Alacritty$",
|
||||||
|
"machine": "^ai$",
|
||||||
|
"title": "^aquamarine$"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "con"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"border": "pixel",
|
||||||
|
"current_border_width": 2,
|
||||||
|
"floating": "auto_off",
|
||||||
|
"geometry": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"marks": [],
|
||||||
|
"name": "Alacritty",
|
||||||
|
"percent": 0.5,
|
||||||
|
"swallows": [
|
||||||
|
{
|
||||||
|
"class": "^Alacritty$",
|
||||||
|
"instance": "^Alacritty$",
|
||||||
|
"machine": "^ai$",
|
||||||
|
"title": "^kana$"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "con"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
#######################################################
|
||||||
|
#
|
||||||
|
# This script restores the layout of the idols monitor.
|
||||||
|
#
|
||||||
|
#######################################################
|
||||||
|
|
||||||
|
# load the ssh key for idols first
|
||||||
|
ssh-add ~/.ssh/ai-idols
|
||||||
|
|
||||||
|
# restore the layout of workspace 1
|
||||||
|
i3-msg "workspace 10: ; append_layout ~/.config/i3/layouts/idols-monitor.json"
|
||||||
|
# open applications, note that --command must be the last option
|
||||||
|
i3-msg -t command "exec alacritty --title 'ai' --command 'btop'"
|
||||||
|
i3-msg -t command "exec alacritty --title 'aquamarine' --command ssh -t ryan@aquamarine 'btop'"
|
||||||
|
i3-msg -t command "exec alacritty --title 'ruby' --command ssh -t ryan@ruby 'btop'"
|
||||||
|
i3-msg -t command "exec alacritty --title 'kana' --command ssh -t ryan@kana 'btop'"
|
||||||
@@ -1,15 +1,11 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
|
xsel # for clipboard support in x11, required by tmux's clipboard support
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
||||||
programs = {
|
programs = {
|
||||||
|
|
||||||
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
|
# source code: https://github.com/nix-community/home-manager/blob/master/modules/programs/chromium.nix
|
||||||
google-chrome = {
|
google-chrome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{ username, ... }: {
|
||||||
|
imports = [
|
||||||
|
../base/server
|
||||||
|
|
||||||
|
./base
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager needs a bit of information about you and the
|
||||||
|
# paths it should manage.
|
||||||
|
home = {
|
||||||
|
username = username;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your
|
||||||
|
# configuration is compatible with. This helps avoid breakage
|
||||||
|
# when a new Home Manager release introduces backwards
|
||||||
|
# incompatible changes.
|
||||||
|
#
|
||||||
|
# You can update Home Manager without changing this value. See
|
||||||
|
# the Home Manager release notes for a list of state version
|
||||||
|
# changes in each release.
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 8.7 MiB |
|
After Width: | Height: | Size: 5.1 MiB |
|
After Width: | Height: | Size: 5.5 MiB |
|
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 32 B |
@@ -0,0 +1 @@
|
|||||||
|
jiaocha_anime-girls_seagulls.jpg
|
||||||
|
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 32 B |
|
Before Width: | Height: | Size: 765 KiB |
@@ -1,10 +1,34 @@
|
|||||||
# My MacBook Pro - Computer for Business
|
{ username, ... } @ args:
|
||||||
{ pkgs, ... } @ args:
|
#############################################################
|
||||||
|
#
|
||||||
{
|
# Harmonica - my MacBook Pro 2020 13-inch, mainly for business.
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
let
|
||||||
|
hostname = "harmonica";
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/darwin/core.nix
|
../../modules/darwin
|
||||||
|
|
||||||
|
../../secrets/darwin.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = import ../../overlays args;
|
||||||
|
|
||||||
|
networking.hostName = hostname;
|
||||||
|
networking.computerName = hostname;
|
||||||
|
system.defaults.smb.NetBIOSName = hostname;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users."${username}" = {
|
||||||
|
home = "/Users/${username}";
|
||||||
|
description = username;
|
||||||
|
|
||||||
|
# set user's default shell back to zsh
|
||||||
|
# `chsh -s /bin/zsh`
|
||||||
|
# DO NOT change the system's default shell to nushell! it will break some apps!
|
||||||
|
# It's better to change only starship/alacritty/vscode's shell to nushell!
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings.trusted-users = [username];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||