Compare commits
551 Commits
laptop
...
7d17c52192
Author | SHA1 | Date | |
---|---|---|---|
7d17c52192 | |||
c217e3297b | |||
c41a642593 | |||
d02f28ad89 | |||
7d18d2bd50 | |||
68c37c0f42 | |||
20e2b5e20e | |||
08d3844778 | |||
34084e45aa | |||
7c1c51954e | |||
659d235fc7 | |||
64958b068f | |||
95d9f9cf61 | |||
6f57594884 | |||
b077da4998 | |||
8aaf0b81c2 | |||
439b4d769e | |||
66bde6646f | |||
c323a747ea | |||
d87cec971a | |||
7db055ca27 | |||
532bbe8675 | |||
dcdc97aad8 | |||
94498a0038 | |||
05350e1c1c | |||
142b16fa9c | |||
6f2de694a0 | |||
3f9442fd02 | |||
fb2626372f | |||
c18b1a7341 | |||
1e4d267ce7 | |||
63c3d1af27 | |||
2e20534bba | |||
3f0b46f3d8 | |||
9659bbff1e | |||
73c440c9cd | |||
d0942d018b | |||
642398da4b | |||
07a321c79a | |||
459c6ac27e | |||
02cc4f8ed8 | |||
d964a181ad | |||
27c36bb7f5 | |||
b76fe8d508 | |||
5c8f199fce | |||
00a448010d | |||
b76da6e9eb | |||
68e02739be | |||
b9b5b378f7 | |||
1abc06f58c | |||
b3f3813b36 | |||
56b471cdd4 | |||
136dd36b8c | |||
3f68d344d1 | |||
df00e58bd9 | |||
4745b90cea | |||
fef500721c | |||
1921df8330 | |||
8e64d3f8db | |||
8cc698af1f | |||
533256cca6 | |||
5e224b9c3f | |||
ca0ad1b6d6 | |||
8dfa9a8df7 | |||
167a9d57d7 | |||
87809a9573 | |||
d67c432be6 | |||
49f3533f9e | |||
c344ac92f6 | |||
7e848b8126 | |||
e698f17557 | |||
9907a4ba9e | |||
be2dc15a1f | |||
ca3e257fa0 | |||
a6f2ad4d9f | |||
338b77114c | |||
0878a2f251 | |||
e45837e785 | |||
f832636ffd | |||
4f68e368b9 | |||
4590c9fe1f | |||
22db460211 | |||
5f2ab6958e | |||
86c948779f | |||
9cb3f8eae9 | |||
b6dbe5afc7 | |||
4c8a559c92 | |||
cec8d1d226 | |||
8dc346a1ef | |||
26b92b38cb | |||
fe6df7942a | |||
4eddc7fc67 | |||
397b6bad7c | |||
94bdd188d0 | |||
6a047746c1 | |||
1f3693359f | |||
ba70fd8553 | |||
bb48cf3ad0 | |||
84b1a60fea | |||
a38299888f | |||
425c8f8e4f | |||
b0acc7178d | |||
4266574fa6 | |||
6f595a97ec | |||
d03b0e285c | |||
65e4352f56 | |||
38cac91b71 | |||
ede33b5207 | |||
ee90af96c3 | |||
b422e9d092 | |||
94eebc86b9 | |||
e3e582543a | |||
c6f4f651e1 | |||
e00ccffa99 | |||
cc5545f7ad | |||
4aacdc1ee4 | |||
6bfa5e0b73 | |||
b0a22014c3 | |||
eb66634f44 | |||
8e36dc50c7 | |||
b3e3352429 | |||
c6510643c1 | |||
5d82010697 | |||
e9f97ae91b | |||
65fbce48d4 | |||
bf231396ff | |||
16f2344aa0 | |||
7718fb4118 | |||
63a548d6b9 | |||
dd1b0aae5a | |||
bb7b0f36c3 | |||
dfba89af68 | |||
7298c76c48 | |||
23f51db3a5 | |||
6894cd7539 | |||
d5ca488864 | |||
9dfe8aa9f2 | |||
c4454d7711 | |||
57e17face2 | |||
d683f1f574 | |||
2572513c44 | |||
3baf2453f2 | |||
8457523518 | |||
84420e427e | |||
9bc392818f | |||
0ee158677a | |||
1fe8d17523 | |||
5500164669 | |||
f07ab92268 | |||
f19ce21672 | |||
5d5096f452 | |||
2f14aa1e9b | |||
42b5dfeee7 | |||
7f73da037b | |||
f05eae5b83 | |||
739901d174 | |||
7b4d461ba1 | |||
e55af69ed3 | |||
ac7e7a16d8 | |||
a79c1a9af8 | |||
63dc618f6d | |||
7d10c8e7d2 | |||
7254e9a6e2 | |||
ae0f6ec0ef | |||
f1be4c1fc5 | |||
37421bcc12 | |||
e3eaebf08d | |||
ce68c8c03e | |||
75180f3073 | |||
02286ffd55 | |||
20315c425a | |||
3a72c32e89 | |||
964b03fedc | |||
3ac5c39f8f | |||
a9f322d48c | |||
7bd942e753 | |||
6a70e105d4 | |||
f123ef3bbf | |||
f0e000795b | |||
c70c32150e | |||
38c60612fd | |||
ce336d469a | |||
12ef77dc6c | |||
bafaac437d | |||
71f618dd67 | |||
068d0ef29f | |||
55a99ee8f0 | |||
52d18a279d | |||
e07603e127 | |||
5e3a0f0908 | |||
80bdd2314a | |||
fa093e644e | |||
3189483bd2 | |||
0478dae702 | |||
68d875dec7 | |||
18176bf959 | |||
740f7a5ca5 | |||
5f0e729d9f | |||
d14ba88542 | |||
a4ef9a9c63 | |||
0af98663f7 | |||
c050f62249 | |||
6f0cf875d6 | |||
cb032a9862 | |||
80209213a6 | |||
15ea2fa7fe | |||
6211e1dd0d | |||
fa882cb478 | |||
fd1f22302f | |||
d3d1dd5cce | |||
a314cd3734 | |||
795e33d49b | |||
10fb2838af | |||
30c88f50af | |||
b0d9425f78 | |||
d38fc83a19 | |||
6195e6e540 | |||
d2e49a578a | |||
8cee271d91 | |||
05e71d800d | |||
294e40987c | |||
98ac550582 | |||
c84146f761 | |||
8f5e73e7f6 | |||
cec09d6e0f | |||
6ca47776b1 | |||
d28f12650d | |||
9d2560c065 | |||
9166cb844c | |||
4517da8b3d | |||
3daef8835f | |||
4756b614db | |||
971125f434 | |||
5233a7960b | |||
0197faa345 | |||
5839002d3c | |||
ea305e701c | |||
43cabd5a62 | |||
b499c581d0 | |||
5fd792084c | |||
6b305a59d7 | |||
d2a8129a20 | |||
8134c4bcc3 | |||
83385a638f | |||
baf240c27d | |||
a9d0e298b3 | |||
fa99b32cad | |||
c97f22254a | |||
ecc269ae37 | |||
603d84c03b | |||
e974145390 | |||
e19a2e81cd | |||
98644d2e2f | |||
e4d776c921 | |||
0d22026d81 | |||
c3f9cf2e5e | |||
c45d7b19f8 | |||
60dae66fd1 | |||
49cfa7c50d | |||
084100c557 | |||
a0fe904d6c | |||
2ab74d5f7a | |||
3d59481c9d | |||
a6043713c9 | |||
692c22d94c | |||
6ced2ac625 | |||
576c76f158 | |||
ff40093b83 | |||
061f196afc | |||
9dc0377a77 | |||
35e84fade2 | |||
4e8291bb14 | |||
8ef5530145 | |||
9f081ee5ed | |||
f8da075e2f | |||
24b079937c | |||
bed82ccb1e | |||
aa6f69881d | |||
d6012dd334 | |||
eec0966902 | |||
e9639a9b98 | |||
645f206821 | |||
370ebe95a8 | |||
a64c867c98 | |||
57e5efe554 | |||
cdfafa6a3b | |||
8df932f60a | |||
5db8dc4373 | |||
7a22b9daca | |||
49838d3808 | |||
1ffd0463bd | |||
7e0986f5d3 | |||
37c1c7a841 | |||
c8861a613b | |||
e9f2fcc3bf | |||
4981aef6c9 | |||
05fdf2ca38 | |||
8af2406e51 | |||
3af3ced9f5 | |||
915a821e12 | |||
b35c87b4d6 | |||
fdd53faa62 | |||
4f0fe50d0a | |||
341d1cbb4b | |||
aaa2f73332 | |||
cf2f13f629 | |||
2a4571a752 | |||
84680a5793 | |||
5d8219dba1 | |||
87a5774ce6 | |||
6d59bf0b43 | |||
451176350f | |||
e5ed273561 | |||
a565b20c30 | |||
cdd1f3240c | |||
5e0ff7ffa7 | |||
e39c13f9f8 | |||
d3eb1420c1 | |||
8f1e166f88 | |||
1627cc51b6 | |||
f35b2e8304 | |||
820574addf | |||
0e205a96d9 | |||
7b32822a32 | |||
fb79b29fa2 | |||
d50f957b2e | |||
5de7265797 | |||
13db191cc6 | |||
d2ee41eace | |||
1f818e291e | |||
607ac75200 | |||
0cf00f5fbf | |||
b04a523645 | |||
5455cdc00e | |||
293e76e8cc | |||
5a870ff3d6 | |||
67d23bcd9e | |||
d8e53f1f78 | |||
c2e80ffddd | |||
eb8601d2ac | |||
9a446de39e | |||
a0b76af476 | |||
fe6a8acb12 | |||
fd6cd027fc | |||
900d07ae77 | |||
30948764c6 | |||
34ea520910 | |||
23f1283399 | |||
6b823a06eb | |||
29d6b63382 | |||
60ccfeaf39 | |||
8dbb044f0b | |||
39a25de657 | |||
eafd193306 | |||
ec6be592cb | |||
bb4a758182 | |||
e4d5b6854c | |||
ffc6c8fa45 | |||
15a27c4607 | |||
548b1ac34f | |||
1b05d9051b | |||
6b9801b7f2 | |||
77fee14469 | |||
10524de915 | |||
619d3f9a45 | |||
b49b6263d3 | |||
7b4ddfe7e5 | |||
4cc2834027 | |||
f47ecce302 | |||
ee0b3cd654 | |||
18bd2e4d1d | |||
8e8e400eb8 | |||
0650ab3e9c | |||
c3f69e0b0c | |||
64cf4835cf | |||
37b5eafb42 | |||
627b92a611 | |||
1fe29f7da0 | |||
c21d249e75 | |||
3e1a18e2e1 | |||
d399e8e64e | |||
72d15c0c34 | |||
a13984babc | |||
8c800ed66e | |||
90a6060978 | |||
76c4c3acc5 | |||
c9713e83b9 | |||
3ae6dac93b | |||
86d4757595 | |||
b21b5fa4c0 | |||
12e54f5cfc | |||
fce2e066b0 | |||
79aa2a06cd | |||
83bf3f21d5 | |||
1e1fa989d9 | |||
b92f37ae77 | |||
ea9563282f | |||
8d643901cd | |||
bd390aac46 | |||
96b24c071e | |||
7c63a2c148 | |||
b6c9946cd9 | |||
69e5d4f1cd | |||
839f24113a | |||
b44f8f0117 | |||
8583a4c187 | |||
391948eb27 | |||
2f0fa12da4 | |||
df3bbbd763 | |||
847d14aa33 | |||
01f07fbe03 | |||
18c9babaef | |||
de79477a1f | |||
185e20fe1a | |||
e13f9ec3a3 | |||
b29168f894 | |||
9e2aa4d2e9 | |||
e0e6a5d6e0 | |||
ba6866c509 | |||
589320a4bb | |||
689cfdfcf6 | |||
ddf87f226f | |||
b9ea4521d1 | |||
fcdcd439ac | |||
e3b1ee2b2f | |||
b41adf3d55 | |||
c72a434f70 | |||
05fee51dc8 | |||
d78b2785fe | |||
b10652b0bb | |||
18b670ceec | |||
7b9b3b2b07 | |||
6d9b3beddb | |||
80eeb563e7 | |||
5f0a4ebbfd | |||
b6cfc8eae5 | |||
333e168b77 | |||
3de3873429 | |||
2b38523557 | |||
5bc28cd188 | |||
4254221f77 | |||
ddfc7d754a | |||
af72939279 | |||
16ba012e57 | |||
7490c37673 | |||
fb4d9f23d1 | |||
2e8f1d5b0e | |||
38cac7bde5 | |||
2636700acc | |||
7db1657bd5 | |||
6d7c6ce9cf | |||
c38d40ab46 | |||
49f0784271 | |||
eb3f6e25e6 | |||
c3d91c35bf | |||
7f910fd34d | |||
7dd027742c | |||
8c96767b37 | |||
b7e8ecbb54 | |||
70f2e1cc89 | |||
3156cd24b8 | |||
0153287b81 | |||
3095fe05b2 | |||
06293fe85e | |||
74ddb685f1 | |||
68b132db6b | |||
cb2292bc41 | |||
e31cf198e2 | |||
aad8888eab | |||
32eb67ed95 | |||
87f267e55d | |||
e1c834734d | |||
3e9e99c24a | |||
abce1aa5ed | |||
7355310b53 | |||
23a2993e84 | |||
f037ec1f12 | |||
0ef45e30ff | |||
c997a50f27 | |||
ea3cfcadde | |||
a03e06f132 | |||
dc8cb52396 | |||
244aaec67b | |||
2088aecfb6 | |||
27c22d988b | |||
1b1d607430 | |||
acbead5efb | |||
98d9b71d50 | |||
a2841e1ca8 | |||
d198b662b0 | |||
7e37870ce6 | |||
51985d6a7c | |||
08252a504e | |||
0d9a76a12f | |||
cf9c145628 | |||
5b0960b26b | |||
5377574b86 | |||
1487887f74 | |||
cce626d687 | |||
34046aae4b | |||
934b19045a | |||
a502df7f11 | |||
efa2f54c74 | |||
fb79782dad | |||
04e1bb1a7b | |||
7024c07a32 | |||
4749d2cefc | |||
f694963376 | |||
f3fe0a4b81 | |||
17b80372c8 | |||
215c2a1f63 | |||
d699cfffdd | |||
cec1881959 | |||
640eca56f4 | |||
99c3e52230 | |||
b044299ff6 | |||
cf62007567 | |||
acf76d08b6 | |||
3324a9576e | |||
7dd21761f6 | |||
a79ee805eb | |||
0a6f669cc1 | |||
04d58b444b | |||
98304c3bd0 | |||
d5a7f1af1e | |||
c65dd396f5 | |||
f15ebadbe1 | |||
7258c0a3bc | |||
da2eb621b0 | |||
543e897a0f | |||
6b8b8e59c7 | |||
4db4921fc2 | |||
d79ce0ec1f | |||
cead940f9d | |||
6016953788 | |||
4b6eb4a39d | |||
262fd63909 | |||
72b25299d4 | |||
f5b78714ce | |||
1ebd0a2d30 | |||
013ab7f669 | |||
e46cade6b6 | |||
44afe6a7e1 | |||
0794bc7b35 | |||
1126eb7a6a | |||
69b3f37456 | |||
4293fc90a7 | |||
b79f8672a9 | |||
555b932518 | |||
a87505b0aa | |||
be3ac77e83 |
61
.dotter/global.toml
Normal file
@ -0,0 +1,61 @@
|
||||
[helpers]
|
||||
|
||||
[default]
|
||||
depends = []
|
||||
|
||||
[manjaro.files]
|
||||
manjaro = "~"
|
||||
|
||||
[mc.files]
|
||||
mc = "~/.config/mc"
|
||||
|
||||
[vim.files]
|
||||
# type symbolic prevents interpreting '{{' as template
|
||||
"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" }
|
||||
|
||||
[nvim.files]
|
||||
"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" }
|
||||
|
||||
[i3.files]
|
||||
"i3/i3" = "~/.config/i3"
|
||||
"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" }
|
||||
"i3/rofi" = "~/.config/rofi"
|
||||
"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf"
|
||||
"i3/i3status-rust" = "~/.config/i3status-rust"
|
||||
"i3/.profile" = "~/.profile"
|
||||
|
||||
[i3.variables]
|
||||
monitor-primary = "not-specified"
|
||||
monitor-secondary = "not-specified"
|
||||
screenlayout-script = "echo screenlayout-script not specified"
|
||||
bar-font-size = 15
|
||||
tray-output = "tray_output primary"
|
||||
|
||||
[emacs.files]
|
||||
"emacs/doom" = "~/.config/doom"
|
||||
# "emacs/spacemacs/.spacemacs" = "~/.spacemacs"
|
||||
# "emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el"
|
||||
|
||||
[alacritty.files]
|
||||
alacritty = "~/.config/alacritty"
|
||||
|
||||
[starship.files]
|
||||
starship = "~/.config/"
|
||||
|
||||
[zsh.files]
|
||||
"zsh/.zshrc" = "~/.zshrc"
|
||||
"zsh/custom-plugins" = "~/.oh-my-zsh/custom"
|
||||
|
||||
[polybar.files]
|
||||
polybar = "~/.config/polybar"
|
||||
|
||||
[leftwm.files]
|
||||
leftwm = "~/.config/leftwm"
|
||||
|
||||
[xmonad.files]
|
||||
xmonad = "~/.xmonad"
|
||||
|
||||
[nix.files]
|
||||
"direnvrc" = "~/.config/direnv/direnvrc"
|
||||
"nix/configuration.nix" = "/etc/nixos/configuration.nix"
|
||||
"nix/flake.nix" = "/etc/nixos/flake.nix"
|
6
.dotter/kardorf.toml
Normal file
@ -0,0 +1,6 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "DVI-D-0"
|
||||
monitor-secondary = "DVI-D-1"
|
||||
screenlayout-script = "~/.screenlayout/2desktop-dvi.sh"
|
||||
bar-font-size = 15
|
||||
tray-output = "tray_output DVI-D-1"
|
4
.dotter/laptop-at-home.toml
Normal file
@ -0,0 +1,4 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "HDMI-1"
|
||||
monitor-secondary = "eDP-1"
|
||||
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"
|
5
.dotter/laptop.toml
Normal file
@ -0,0 +1,5 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "HDMI-1"
|
||||
monitor-secondary = "eDP-1"
|
||||
tray-output = "tray_output eDP-1"
|
||||
screenlayout-script = "$scripts/display-layoutpicker"
|
2
.dotter/local.kardorf.toml
Normal file
@ -0,0 +1,2 @@
|
||||
includes = [".dotter/kardorf.toml"]
|
||||
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]
|
2
.dotter/local.laptop.toml
Normal file
@ -0,0 +1,2 @@
|
||||
includes = [".dotter/laptop.toml"]
|
||||
packages = []
|
57
.gitea/workflows/update-flake.yaml
Normal file
@ -0,0 +1,57 @@
|
||||
name: Update Nix Flake
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "30 0 * * *" # daily run
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
update-flake:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: "${{ gitea.token }}"
|
||||
fetch-depth: 0
|
||||
ref: flake-updates
|
||||
|
||||
- name: Git config
|
||||
shell: bash
|
||||
run: |
|
||||
git config user.name "Gitea Actions"
|
||||
git config user.email "actions@gitea.local"
|
||||
|
||||
- name: Rebase from master branch
|
||||
shell: bash
|
||||
run: |
|
||||
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
||||
echo "Commits ahead: $commits_ahead"
|
||||
git log --oneline -5
|
||||
echo "----------"
|
||||
git log --oneline -5 origin/master
|
||||
echo .
|
||||
|
||||
if [ $commits_ahead -ne 0 ]
|
||||
then
|
||||
git rebase -X theirs origin/master
|
||||
git push --force-with-lease origin flake-updates
|
||||
else
|
||||
echo "Rebase not necessary"
|
||||
fi
|
||||
|
||||
- name: Set up Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
|
||||
- name: Update Flake
|
||||
run: nix flake update
|
||||
|
||||
- name: Commit and push changes
|
||||
shell: bash
|
||||
run: |
|
||||
git add flake.lock
|
||||
git status
|
||||
git diff --cached --quiet && echo "No changes to commit." && exit 0
|
||||
|
||||
git commit -m "Update flake.lock $(date -I)"
|
||||
git push --force-with-lease origin flake-updates
|
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.direnv
|
||||
result*
|
||||
*.qcow2
|
24
.sops.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
keys:
|
||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||
creation_rules:
|
||||
- path_regex: hosts/common/secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- *aspi-ssh
|
||||
- *pianonix-ssh
|
||||
|
||||
- path_regex: hosts/builder/secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- *builder-ssh
|
||||
|
||||
- path_regex: hosts/pianonix/secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- *pianonix-ssh
|
33
Readme.org
Normal file
@ -0,0 +1,33 @@
|
||||
#+title: My dotfiles
|
||||
|
||||
My dotfiles for which I am using =nix=.
|
||||
The structure is managed by [[https://snowfall.org/guides/lib/quickstart/][Snowfall lib]]
|
||||
|
||||
* Machine selection
|
||||
=home-manager= automatically searches for =user= or =user@hostname= config in the flake, so specify one of those or you will have to manually specify them:
|
||||
=home-manager switch --flake .#user@hostname=
|
||||
|
||||
* Manual symlinks
|
||||
[[file:laptop-nix.conf]] was manually symlinked to file:/etc/nix/nix.conf
|
||||
and [[file:flake.nix]] was symlinked to file:~/.config/home-manager/flake.nix
|
||||
|
||||
For deployment!!
|
||||
|
||||
* Secrets management with sops
|
||||
Full documentation here: https://github.com/Mic92/sops-nix
|
||||
|
||||
** Edit secrets
|
||||
#+begin_src sh
|
||||
sops edit secrets/secrets.yaml
|
||||
#+end_src
|
||||
|
||||
** Authorize new device
|
||||
- Generate public key from ssh -> Private age key generation not needed
|
||||
#+begin_src sh
|
||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key
|
||||
#+end_src
|
||||
- Add age public key to file:.sops.yaml
|
||||
- Update keys
|
||||
#+begin_src sh
|
||||
sops updatekeys secrets/*
|
||||
#+end_src
|
16
dependencies
@ -1,16 +0,0 @@
|
||||
dunst
|
||||
element-desktop
|
||||
feh
|
||||
firefox
|
||||
i3exit
|
||||
i3-scrot
|
||||
i3-wm
|
||||
libqalculate
|
||||
nextcloud
|
||||
pavucontrol
|
||||
rofi
|
||||
stow
|
||||
telegram-desktop
|
||||
thunderbird
|
||||
xclip
|
||||
xwacomcalibrate
|
@ -1,145 +0,0 @@
|
||||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets.
|
||||
(setq user-full-name "Julian Mutter"
|
||||
user-mail-address "julian.mutter@comumail.de")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
|
||||
;; are the three important ones:
|
||||
;;
|
||||
;; + `doom-font'
|
||||
;; + `doom-variable-pitch-font'
|
||||
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;;
|
||||
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
|
||||
;; font string. You generally only need these two:
|
||||
;; (setq doom-font (font-spec :family "monospace" :size 13 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
|
||||
(setq doom-font (font-spec :family "Source Code Pro" :size 13))
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/org")
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
|
||||
;; Here are some additional functions/macros that could help you configure Doom:
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
;; Open external terminal
|
||||
;; (map! :map doom-leader-open-map :desc "Open" "t" (cmd! (call-process-shell-command "terminal&" nil 0)))
|
||||
(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "terminal&" nil 0)))
|
||||
|
||||
;; Remap font scaling keybindings to make more sense
|
||||
(map! :desc "Increase font size" :n "C-+" #'text-scale-increase)
|
||||
(map! :desc "Decrease font size" :n "C--" #'text-scale-decrease)
|
||||
(map! :desc "Reset font size" :n "C-=" #'doom/reset-font-size)
|
||||
|
||||
|
||||
;; Org-mode custom keybindings
|
||||
;; (map! :map org-mode-map :nvi "C-k" #'org-backward-element)
|
||||
;; (map! :map org-mode-map :nvi "C-j" #'org-forward-element)
|
||||
;; (map! :map org-mode-map :nvi "C-h" #'org-up-element)
|
||||
;; (map! :map org-mode-map :nvi "C-l" #'org-down-element)
|
||||
|
||||
|
||||
;; Spell checking settings
|
||||
;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modes and flyspell-prog-mode in programming modes (see hooks below)
|
||||
;; Removing hooks for automatic spell checking set here: https://github.com/hlissner/doom-emacs/blob/develop/modules/checkers/spell/config.el
|
||||
(remove-hook! '(org-mode-hook
|
||||
markdown-mode-hook
|
||||
TeX-mode-hook
|
||||
rst-mode-hook
|
||||
mu4e-compose-mode-hook
|
||||
message-mode-hook
|
||||
git-commit-mode-hook)
|
||||
#'flyspell-mode)
|
||||
|
||||
(remove-hook! '(yaml-mode-hook
|
||||
conf-mode-hook
|
||||
prog-mode-hook)
|
||||
#'flyspell-prog-mode)
|
||||
|
||||
(setq ispell-dictionary "english")
|
||||
|
||||
(map! :map doom-leader-toggle-map :desc "Toggle dictionary" "d" #'fd-switch-dictionary)
|
||||
|
||||
(defun fd-switch-dictionary()
|
||||
(interactive)
|
||||
(let* ((dic ispell-current-dictionary)
|
||||
(change (if (string= dic "german") "english" "german")))
|
||||
(ispell-change-dictionary change)
|
||||
(message "Dictionary switched from %s to %s" dic change)
|
||||
))
|
||||
|
||||
;; (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t)
|
||||
;; (add-to-list
|
||||
;; 'auto-mode-alist
|
||||
;; '("\\.m$" . matlab-mode))
|
||||
;; (setq matlab-indent-function t)
|
||||
;; (setq matlab-shell-command "/urs/local/bin/matlab")
|
||||
|
||||
;; (setq org-agenda-files (list "~/org"))
|
||||
;; (custom-set-variables
|
||||
;; '(org-directory "~/org")
|
||||
;; '(org-agenda-files (list org-directory)))
|
||||
|
||||
;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append)
|
||||
|
||||
;; Adding my org-agenda files
|
||||
(after! org
|
||||
(setq org-agenda-files (expand-file-name "org-agenda-files" doom-private-dir)))
|
||||
|
||||
(map! :map cdlatex-mode-map
|
||||
:i "TAB" #'cdlatex-tab)
|
||||
|
||||
(map! :desc "Open external terminal" :nv "g C" #'toggle-word-case)
|
||||
|
||||
(defun toggle-word-case ()
|
||||
"Toggle the case of current word or text selection."
|
||||
|
||||
(interactive)
|
||||
(let (
|
||||
(deactivate-mark nil)
|
||||
$p1 $p2)
|
||||
(if (use-region-p)
|
||||
(setq $p1 (region-beginning) $p2 (region-end))
|
||||
(save-excursion
|
||||
(skip-chars-backward "[:alpha:]")
|
||||
(setq $p1 (point))
|
||||
(skip-chars-forward "[:alpha:]")
|
||||
(setq $p2 (point))))
|
||||
(let ((first-char-prop (get-char-code-property (char-after $p1) 'general-category)))
|
||||
(cond ((string= "Ll" first-char-prop) ; Lower case
|
||||
(upcase-region $p1 (+ $p1 1)))
|
||||
((string= "Lu" first-char-prop) ; Upper case
|
||||
(downcase-region $p1 (+ $p1 1)))
|
||||
(t (message "Word does not start with a alphabetic character"))))))
|
@ -1,13 +0,0 @@
|
||||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(org-agenda-files '("~/org-tests.org"))
|
||||
'(package-selected-packages '(matlab-mode)))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
@ -1,188 +0,0 @@
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a "Module Index" link where you'll find
|
||||
;; a comprehensive list of Doom's modules and what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
ivy ; a search engine for love and life
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
;;fill-column ; a `fill-column' indicator
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;;indent-guides ; highlighted indent columns
|
||||
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
;; treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
vc-gutter ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
;;zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
;;(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
;;vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell +flyspell +everywhere) ; tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
;;rgb ; creating color strings
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(haskell +dante) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
;;json ; At least it ain't XML
|
||||
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;; julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
(latex +cdlatex) ; writing papers in Emacs has never been so fun
|
||||
;;lean ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
;;nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
org ; organize your plain life in plain text
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
(python +lsp) ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
;;yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
@ -1,50 +0,0 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;(package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/raxod502/straight.el#the-recipe-format
|
||||
;(package! another-package
|
||||
; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;(package! this-package
|
||||
; :recipe (:host github :repo "username/repo"
|
||||
; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;(package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;(package! builtin-package :recipe (:nonrecursive t))
|
||||
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see raxod502/straight.el#279)
|
||||
;(package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;(unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;(unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;(unpin! t)
|
687
flake.lock
generated
Normal file
@ -0,0 +1,687 @@
|
||||
{
|
||||
"nodes": {
|
||||
"alacritty-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1740080741,
|
||||
"narHash": "sha256-ROer+oqSY/Z5PAxZFJ5U9R+kMfWb596/1CuEWTcoMIk=",
|
||||
"owner": "alacritty",
|
||||
"repo": "alacritty-theme",
|
||||
"rev": "687675f3f2245c80ff8bfe8180b0eb40dfc0bc86",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "alacritty",
|
||||
"repo": "alacritty-theme",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696158499,
|
||||
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1736101677,
|
||||
"narHash": "sha256-iKOPq86AOWCohuzxwFy/MtC8PcSVGnrxBOvxpjpzrAY=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "61ba163d85e5adeddc7b3a69bb174034965965b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"deploy-rs": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1727447169,
|
||||
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741786315,
|
||||
"narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1733328505,
|
||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741352980,
|
||||
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745340124,
|
||||
"narHash": "sha256-zQTOl/JPGjiAQoU1yraCGfPBg7yr4nlHNdbZy8Ebrl4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "c9433ae62fbb4bd09609e242569edc3b551e21a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1737831083,
|
||||
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729958008,
|
||||
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.0.6",
|
||||
"repo": "ixx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"music-reader": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736544231,
|
||||
"narHash": "sha256-U1wrjKPq+w9yKno8VRmIBV34/RXQEbpKQPnmdx+Jezk=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "a00eade3bbf6992dbb6c62443845073864cb0ae2",
|
||||
"revCount": 65,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736429655,
|
||||
"narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-colors": {
|
||||
"inputs": {
|
||||
"base16-schemes": "base16-schemes",
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707825078,
|
||||
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-gl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713543440,
|
||||
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixgl",
|
||||
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixgl",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-matlab": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741791880,
|
||||
"narHash": "sha256-0nFAtEaSk0OZXIp3gjeK43e3drbzXjLLSye8RT6hKPU=",
|
||||
"owner": "doronbehar",
|
||||
"repo": "nix-matlab",
|
||||
"rev": "a8ea92e365477727c924293255a143026e57a5ba",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doronbehar",
|
||||
"repo": "nix-matlab",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1744633460,
|
||||
"narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "9a049b4a421076d27fee3eec664a18b2066824cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1702272962,
|
||||
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1697935651,
|
||||
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1744440957,
|
||||
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 0,
|
||||
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
||||
"path": "/nix/store/g3jyakqb3ipnr6gz5rw10fb17ckr2z00-source",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1744932701,
|
||||
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745324162,
|
||||
"narHash": "sha256-Sjb/LvtWpPtSXacjJCTrLAmWtXNJd0SWxO3PzTvD7Tc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "60638182b8d1b0fe13631d02eafaf8903499ee60",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"ixx": "ixx",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1739738736,
|
||||
"narHash": "sha256-Rl4Fw+3PsLTEzzUGlB8kePaiIersDbv5voAif3D6LoM=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "9ff62c8e1fbe5dc649dee680c7eb4935936c8ac3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"alacritty-theme": "alacritty-theme",
|
||||
"deploy-rs": "deploy-rs",
|
||||
"disko": "disko",
|
||||
"home-manager": "home-manager",
|
||||
"impermanence": "impermanence",
|
||||
"music-reader": "music-reader",
|
||||
"nix-colors": "nix-colors",
|
||||
"nix-gl": "nix-gl",
|
||||
"nix-matlab": "nix-matlab",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixvim": "nixvim",
|
||||
"sheet-organizer": "sheet-organizer",
|
||||
"sops-nix": "sops-nix",
|
||||
"systems": "systems_5",
|
||||
"yazi-flavors": "yazi-flavors"
|
||||
}
|
||||
},
|
||||
"sheet-organizer": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737048258,
|
||||
"narHash": "sha256-QcprTngXkN/XuaiSKrswJUHEV+Nz3dSzP6zcLq00Y48=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "67d5dac0d1a1c0ae0beaf972881976a8b0908fd1",
|
||||
"revCount": 73,
|
||||
"type": "git",
|
||||
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
|
||||
}
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741644481,
|
||||
"narHash": "sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn+iZajOyg=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "e653d71e82575a43fe9d228def8eddb73887b866",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_5": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"yazi-flavors": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1741392393,
|
||||
"narHash": "sha256-iTMch0T933Tvofvo3ZzFwk+PNs+dsK0SrAIlJ03v73E=",
|
||||
"owner": "yazi-rs",
|
||||
"repo": "flavors",
|
||||
"rev": "b929df6bdb56536e14c1fc24c9659f441b961f28",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "yazi-rs",
|
||||
"repo": "flavors",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
188
flake.nix
Normal file
@ -0,0 +1,188 @@
|
||||
{
|
||||
description = "Home Manager configuration of julian";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
systems.url = "github:nix-systems/default-linux";
|
||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
nix-colors.url = "github:misterio77/nix-colors";
|
||||
deploy-rs.url = "github:serokell/deploy-rs";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-gl = {
|
||||
url = "github:nix-community/nixgl";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
disko = {
|
||||
url = "github:nix-community/disko";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# Various flakes
|
||||
alacritty-theme = {
|
||||
url = "github:alacritty/alacritty-theme";
|
||||
flake = false;
|
||||
};
|
||||
yazi-flavors = {
|
||||
url = "github:yazi-rs/flavors";
|
||||
flake = false;
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-matlab = {
|
||||
url = "gitlab:doronbehar/nix-matlab";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# My projects
|
||||
sheet-organizer = {
|
||||
url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
music-reader = {
|
||||
url = "git+https://gitlab.julian-mutter.de/julian/music-reader";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
systems,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
inherit (self) outputs;
|
||||
lib = nixpkgs.lib // home-manager.lib;
|
||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
||||
pkgsFor = lib.genAttrs (import systems) (
|
||||
system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
config.permittedInsecurePackages = [
|
||||
"olm-3.2.16"
|
||||
];
|
||||
warn-dirty = false;
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
inherit lib;
|
||||
|
||||
nixosModules = import ./modules/nixos;
|
||||
homeManagerModules = import ./modules/home-manager;
|
||||
|
||||
overlays = import ./overlays { inherit inputs outputs; };
|
||||
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
|
||||
|
||||
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
|
||||
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
|
||||
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
||||
|
||||
nixosConfigurations = {
|
||||
# Main laptop
|
||||
aspi = lib.nixosSystem {
|
||||
modules = [ ./hosts/aspi ];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
# Piano raspberry pi
|
||||
pianonix = lib.nixosSystem {
|
||||
modules = [ ./hosts/pianonix ];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
kardorf = lib.nixosSystem {
|
||||
modules = [ ./hosts/pianonix ];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Standalone HM
|
||||
homeConfigurations = {
|
||||
# Main laptop
|
||||
"julian@aspi" = lib.homeManagerConfiguration {
|
||||
modules = [
|
||||
./homes/julian/aspi.nix
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.x86_64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
# Media server (RPi)
|
||||
"julian@pianonix" = lib.homeManagerConfiguration {
|
||||
modules = [
|
||||
./homes/julian/pianonix.nix
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.aarch64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
"julian@kardorf" = lib.homeManagerConfiguration {
|
||||
modules = [
|
||||
./homes/julian/kardorf.nix
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.aarch64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
"julian@v3ms" = lib.homeManagerConfiguration {
|
||||
modules = [
|
||||
./homes/julian/v3ms
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.aarch64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# deploy-rs node configuration
|
||||
deploy.nodes = {
|
||||
pianonix = {
|
||||
hostname = "pianonix.local";
|
||||
profiles.system = {
|
||||
sshUser = "root";
|
||||
user = "root";
|
||||
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
|
||||
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
|
||||
};
|
||||
};
|
||||
|
||||
builder = {
|
||||
hostname = "builder.julian-mutter.de";
|
||||
profiles.system = {
|
||||
sshUser = "root";
|
||||
user = "root";
|
||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
|
||||
remoteBuild = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
30
homes/julian/aspi.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
imports = [
|
||||
./global
|
||||
./features/fish
|
||||
./features/direnv
|
||||
./features/topgrade
|
||||
./features/neovim
|
||||
./features/kitty
|
||||
./features/wezterm
|
||||
./features/alacritty
|
||||
./features/yazi
|
||||
./features/emacs
|
||||
# ./features/i3
|
||||
|
||||
./features/hyprland
|
||||
|
||||
./features/nix-helper
|
||||
./features/desktop
|
||||
|
||||
./features/suites/cli
|
||||
./features/suites/desktop
|
||||
./features/suites/development
|
||||
|
||||
];
|
||||
|
||||
hostName = "aspi";
|
||||
is-nixos = true;
|
||||
terminal = "kitty";
|
||||
|
||||
}
|
3
homes/julian/features/alacritty/alacritty.toml
Normal file
@ -0,0 +1,3 @@
|
||||
import = [
|
||||
"~/.config/alacritty/theme/themes/smoooooth.toml"
|
||||
]
|
18
homes/julian/features/alacritty/default.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ alacritty ];
|
||||
|
||||
home.file = {
|
||||
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
||||
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
||||
};
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
||||
}
|
34
homes/julian/features/desktop/default.nix
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
|
||||
in
|
||||
{
|
||||
# Do not make conditional, just toggle things on and off
|
||||
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do
|
||||
|
||||
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
name = inputs.nix-colors.colorschemes.${config.colorscheme.name}.slug;
|
||||
package = gtkThemeFromScheme {
|
||||
scheme = inputs.nix-colors.colorschemes.${config.colorscheme.name};
|
||||
};
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
cursorTheme = {
|
||||
package = pkgs.apple-cursor;
|
||||
name = "macOS-BigSur";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
BIN
homes/julian/features/desktop/wallpapers/32j4hjkl4j4hkl.png
Normal file
After Width: | Height: | Size: 182 KiB |
BIN
homes/julian/features/desktop/wallpapers/Bridge.jpg
Normal file
After Width: | Height: | Size: 177 KiB |
BIN
homes/julian/features/desktop/wallpapers/astronaut.png
Normal file
After Width: | Height: | Size: 823 KiB |
BIN
homes/julian/features/desktop/wallpapers/astronaut_ultra.png
Normal file
After Width: | Height: | Size: 759 KiB |
BIN
homes/julian/features/desktop/wallpapers/babel.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
homes/julian/features/desktop/wallpapers/blockwavemoon.png
Normal file
After Width: | Height: | Size: 1024 KiB |
BIN
homes/julian/features/desktop/wallpapers/cat_Japanese_Neon.png
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
homes/julian/features/desktop/wallpapers/cat_leaves.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
homes/julian/features/desktop/wallpapers/colorful-planets.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
homes/julian/features/desktop/wallpapers/finalizer.png
Normal file
After Width: | Height: | Size: 499 KiB |
BIN
homes/julian/features/desktop/wallpapers/gruv-material.png
Normal file
After Width: | Height: | Size: 607 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign-0002.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
homes/julian/features/desktop/wallpapers/ign-0008.png
Normal file
After Width: | Height: | Size: 719 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign-0011.png
Normal file
After Width: | Height: | Size: 464 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_car.png
Normal file
After Width: | Height: | Size: 831 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_city.png
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_cityRainOther.png
Normal file
After Width: | Height: | Size: 354 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_herakles.png
Normal file
After Width: | Height: | Size: 861 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_stuff.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
homes/julian/features/desktop/wallpapers/ign_unsplash16.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
homes/julian/features/desktop/wallpapers/koi2.png
Normal file
After Width: | Height: | Size: 267 KiB |
After Width: | Height: | Size: 239 KiB |
BIN
homes/julian/features/desktop/wallpapers/nord_buildings.png
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
homes/julian/features/desktop/wallpapers/outer-space.png
Normal file
After Width: | Height: | Size: 10 MiB |
BIN
homes/julian/features/desktop/wallpapers/platform.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
homes/julian/features/desktop/wallpapers/rolly.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 4.0 MiB |
BIN
homes/julian/features/desktop/wallpapers/rose_pine_shape.png
Normal file
After Width: | Height: | Size: 261 KiB |
BIN
homes/julian/features/desktop/wallpapers/shiny-colors.png
Normal file
After Width: | Height: | Size: 269 KiB |
BIN
homes/julian/features/desktop/wallpapers/skullcat.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
homes/julian/features/desktop/wallpapers/space324dhsj.png
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
homes/julian/features/desktop/wallpapers/spiral.jpg
Normal file
After Width: | Height: | Size: 342 KiB |
BIN
homes/julian/features/desktop/wallpapers/spooky_spill.jpg
Normal file
After Width: | Height: | Size: 412 KiB |
BIN
homes/julian/features/desktop/wallpapers/wallpaper.jpg
Normal file
After Width: | Height: | Size: 595 KiB |
6
homes/julian/features/direnv/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
}
|
75
homes/julian/features/emacs/default.nix
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
||||
in
|
||||
{
|
||||
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
|
||||
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
binutils # native-comp needs 'as', provided by this
|
||||
|
||||
## Doom dependencies
|
||||
git
|
||||
(ripgrep.override { withPCRE2 = true; })
|
||||
|
||||
## Optional dependencies
|
||||
fd # faster projectile indexing
|
||||
imagemagick # for image-dired
|
||||
zstd # for undo-fu-session/undo-tree compression
|
||||
|
||||
## Module dependencies
|
||||
(aspellWithDicts (
|
||||
ds: with ds; [
|
||||
en
|
||||
en-computers
|
||||
en-science
|
||||
de
|
||||
]
|
||||
))
|
||||
|
||||
hunspell
|
||||
hunspellDicts.de_DE
|
||||
hunspellDicts.en_US
|
||||
|
||||
sqlite
|
||||
|
||||
# Code formatters for use with doom emacs
|
||||
nixfmt-rfc-style # nix
|
||||
nixd # nix lsp
|
||||
dockfmt # docker
|
||||
google-java-format # java
|
||||
black # python
|
||||
rustfmt # rust
|
||||
shfmt
|
||||
pyright
|
||||
clang-tools # c++ lsp etc
|
||||
ltex-ls # latex languagetool
|
||||
|
||||
graphviz
|
||||
# Lsps for use with doom emacs
|
||||
# neocmakelsp # cmake
|
||||
|
||||
emacs-all-the-icons-fonts
|
||||
]
|
||||
++ lib.optional config.is-nixos emacs;
|
||||
|
||||
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
if [ ! -d "/home/julian/.config/emacs" ]; then
|
||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
||||
fi
|
||||
if [ ! -d "/home/julian/.config/doom" ]; then
|
||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
||||
fi
|
||||
'';
|
||||
}
|
55
homes/julian/features/fish/default.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
home.file = {
|
||||
".config/starship.toml".source = ./starship.toml;
|
||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
starship
|
||||
lazygit
|
||||
];
|
||||
|
||||
home.shellAliases = {
|
||||
g = "lazygit";
|
||||
ls = "ls --color";
|
||||
la = "ls -Alh --color";
|
||||
grep = "grep --color";
|
||||
conf = "edit-config";
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = "set fish_greeting"; # Disable default greeting
|
||||
|
||||
functions = {
|
||||
mkcd = ''
|
||||
mkdir $argv
|
||||
cd $argv
|
||||
'';
|
||||
run = ''
|
||||
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
|
||||
'';
|
||||
shell = ''
|
||||
set args
|
||||
for arg in $argv
|
||||
set args $args nixpkgs#$arg
|
||||
end
|
||||
nix shell $args
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
7
homes/julian/features/fish/last-working-dir.fish
Normal file
@ -0,0 +1,7 @@
|
||||
function lwd
|
||||
cd $LAST_WORKING_DIR
|
||||
end
|
||||
|
||||
function __onpwd --on-variable PWD
|
||||
set --universal LAST_WORKING_DIR $PWD
|
||||
end
|
14
homes/julian/features/fish/starship.toml
Normal file
@ -0,0 +1,14 @@
|
||||
# newline between shell prompts
|
||||
add_newline = false
|
||||
#format = "$all$directory$character"
|
||||
|
||||
[line_break]
|
||||
disabled = true
|
||||
|
||||
[directory]
|
||||
fish_style_pwd_dir_length = 1
|
||||
|
||||
[status]
|
||||
map_symbol = true
|
||||
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
|
||||
disabled = false
|
24
homes/julian/features/fonts/default.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||
home.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
font-awesome
|
||||
dejavu_fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-emoji
|
||||
liberation_ttf
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
source-code-pro
|
||||
];
|
||||
}
|
14
homes/julian/features/gammastep/default.nix
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
services.gammastep = {
|
||||
enable = true;
|
||||
provider = "geoclue2";
|
||||
temperature = {
|
||||
day = 6000;
|
||||
night = 4600;
|
||||
};
|
||||
settings = {
|
||||
general.adjustment-method = "wayland";
|
||||
};
|
||||
|
||||
};
|
||||
}
|
393
homes/julian/features/hyprland/default.nix
Normal file
@ -0,0 +1,393 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
# inputs.hyprland.homeManagerModules.default
|
||||
./waybar
|
||||
./wofi
|
||||
./mako
|
||||
# ./hyprlock
|
||||
./wlogout
|
||||
../gammastep
|
||||
|
||||
./swayidle.nix
|
||||
./swaylock.nix
|
||||
./zathura.nix
|
||||
./waypipe.nix
|
||||
|
||||
./hyprbars.nix
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
|
||||
config.hyprland = {
|
||||
default = [
|
||||
"wlr"
|
||||
"gtk"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
programs.imv.enable = true; # TODO: what is that
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# hyprpicker # TODO
|
||||
# hyprcursor # TODO
|
||||
brightnessctl
|
||||
# grimblast
|
||||
frajul.hyprshot-gui
|
||||
frajul.wl-ocr
|
||||
|
||||
wf-recorder
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
services.cliphist = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
MOZ_ENABLE_WAYLAND = 1;
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
LIBSEAT_BACKEND = "logind";
|
||||
};
|
||||
|
||||
# services.hypridle = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# general = {
|
||||
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
# ignore_dbus_inhibit = false;
|
||||
# lock_cmd = "hyprlock";
|
||||
# };
|
||||
|
||||
# listener = [
|
||||
# {
|
||||
# timeout = 300; # 5min
|
||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
||||
# }
|
||||
|
||||
# {
|
||||
# timeout = 360; # 6min
|
||||
# on-timeout = "hyprlock"; # lock screen when timeout has passed
|
||||
# }
|
||||
|
||||
# {
|
||||
# timeout = 600; # 10min
|
||||
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
|
||||
# services.hypridle.enable = true; # can be configured
|
||||
|
||||
services.network-manager-applet.enable = true;
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
# Whether to enable Hyprland wayland compositor
|
||||
enable = true;
|
||||
# package = config.lib.nixGL.wrap (
|
||||
# pkgs.hyprland.override {
|
||||
# # nixgl needed?
|
||||
# wrapRuntimeDeps = false;
|
||||
# }
|
||||
# );
|
||||
|
||||
systemd = {
|
||||
enable = true;
|
||||
# Same as default, but stop graphical-session too
|
||||
extraCommands = lib.mkBefore [
|
||||
"systemctl --user stop graphical-session.target"
|
||||
"systemctl --user start hyprland-session.target"
|
||||
];
|
||||
variables = [
|
||||
"DISPLAY"
|
||||
"HYPRLAND_INSTANCE_SIGNATURE"
|
||||
"WAYLAND_DISPLAY"
|
||||
"XDG_CURRENT_DESKTOP"
|
||||
];
|
||||
};
|
||||
|
||||
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
|
||||
|
||||
# The hyprland package to use (simplifies use of plugins)
|
||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
# Whether to enable XWayland
|
||||
xwayland.enable = true;
|
||||
|
||||
# Optional
|
||||
# Whether to enable hyprland-session.target on hyprland startup
|
||||
# systemd.enable = true;
|
||||
# Make PATH available to systemd services
|
||||
# systemd.variables = [ "--all" ];
|
||||
|
||||
plugins = [
|
||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
|
||||
# hyprlandPlugins.hyprbars
|
||||
];
|
||||
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
# Monitors
|
||||
monitor = ",preferred,auto,auto";
|
||||
|
||||
# Autostart
|
||||
exec-once = [ "firefox" ];
|
||||
|
||||
# Look and Feel
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
|
||||
layout = "dwindle";
|
||||
|
||||
# "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
|
||||
# "col.inactive_border" = "0xff${palette.base00}";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
# power saving
|
||||
blur.enabled = false;
|
||||
# power saving
|
||||
shadow.enabled = false;
|
||||
};
|
||||
|
||||
# Dwindle layout
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # You probably want this
|
||||
smart_split = false;
|
||||
smart_resizing = false;
|
||||
force_split = 2;
|
||||
# no_gaps_when_only = 2; # with border
|
||||
};
|
||||
|
||||
# Master layout
|
||||
master = {
|
||||
new_status = "slave";
|
||||
# no_gaps_when_only = 2; # with border
|
||||
mfact = 0.5; # Do not make master bigger
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
|
||||
animation = [
|
||||
"windows,1,3,default,slide"
|
||||
"fade,1,3,default"
|
||||
"layers,1,3,default,slide"
|
||||
"border,1,3,default"
|
||||
"workspaces,1,3,default,slide"
|
||||
];
|
||||
};
|
||||
|
||||
exec = [
|
||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||
];
|
||||
|
||||
misc = {
|
||||
# disable auto polling for config file changes
|
||||
disable_autoreload = true;
|
||||
|
||||
force_default_wallpaper = 0;
|
||||
|
||||
vfr = true; # power saving
|
||||
};
|
||||
|
||||
render = {
|
||||
# we do, in fact, want direct scanout
|
||||
direct_scanout = true;
|
||||
};
|
||||
|
||||
# Input
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
natural_scroll = false;
|
||||
follow_mouse = 1;
|
||||
};
|
||||
|
||||
# Window rules
|
||||
windowrulev2 = [
|
||||
"suppressevent maximize, class:.*"
|
||||
"workspace 1, class:firefox"
|
||||
"workspace 9, class:nheko"
|
||||
"workspace 9, class:org.telegram.desktop"
|
||||
"workspace 10, class:thunderbird"
|
||||
"float, class:qalculate-gtk"
|
||||
"tile, class:MATLAB, title:MATLAB"
|
||||
];
|
||||
|
||||
# Workspace rules
|
||||
workspace = [
|
||||
"1, monitor:HDMI-A-1"
|
||||
"2, monitor:HDMI-A-1"
|
||||
"3, monitor:HDMI-A-1"
|
||||
"4, monitor:HDMI-A-1"
|
||||
"5, monitor:HDMI-A-1"
|
||||
"6, monitor:eDP-1"
|
||||
"7, monitor:eDP-1"
|
||||
"8, monitor:eDP-1"
|
||||
"9, monitor:eDP-1"
|
||||
"10, monitor:eDP-1"
|
||||
|
||||
# smart gaps (none when only one window in workspace)
|
||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
||||
"f[1], gapsin:0, gapsout:0, border:1"
|
||||
];
|
||||
|
||||
# Mouse binds
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow" # leftclick
|
||||
"$mod, mouse:273, resizewindow" # rightclick
|
||||
];
|
||||
|
||||
# binds
|
||||
bind =
|
||||
[
|
||||
# compositor commands
|
||||
"$mod, Space, focuswindow, floating"
|
||||
"$mod SHIFT, Space, togglefloating,"
|
||||
"$mod, F, fullscreen,"
|
||||
"$mod, X, killactive,"
|
||||
|
||||
"$mod, O, togglesplit," # dwindle
|
||||
|
||||
# opening applications
|
||||
"$mod, D, exec, wofi --show drun,run"
|
||||
"$mod, E, exec, pcmanfm"
|
||||
"$mod, Return, exec, kitty"
|
||||
"$mod, B, exec, firefox"
|
||||
"$mod, C, exec, qalculate-gtk"
|
||||
|
||||
# other commands
|
||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
||||
"$mod SHIFT, R, exec, hyprctl reload"
|
||||
", Print, exec, hyprshot-gui"
|
||||
|
||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
||||
# "$mod, G, togglegroup,"
|
||||
# "$mod SHIFT, N, changegroupactive, f"
|
||||
# "$mod SHIFT, P, changegroupactive, b"
|
||||
# "$mod ALT, ,resizeactive,"
|
||||
|
||||
# media keys
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPause, exec, playerctl pause"
|
||||
", XF86AudioStop, exec, playerctl stop"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
|
||||
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
|
||||
|
||||
# move focus
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, L, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, down, movefocus, d"
|
||||
"$mod, J, movefocus, d"
|
||||
|
||||
# move window
|
||||
"$mod SHIFT, left, movewindow, l"
|
||||
"$mod SHIFT, H, movewindow, l"
|
||||
"$mod SHIFT, right, movewindow, r"
|
||||
"$mod SHIFT, L, movewindow, r"
|
||||
"$mod SHIFT, up, movewindow, u"
|
||||
"$mod SHIFT, K, movewindow, u"
|
||||
"$mod SHIFT, down, movewindow, d"
|
||||
"$mod SHIFT, J, movewindow, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mod, 1, workspace, 1"
|
||||
"$mod, 2, workspace, 2"
|
||||
"$mod, 3, workspace, 3"
|
||||
"$mod, 4, workspace, 4"
|
||||
"$mod, 5, workspace, 5"
|
||||
"$mod, 6, workspace, 6"
|
||||
"$mod, 7, workspace, 7"
|
||||
"$mod, 8, workspace, 8"
|
||||
"$mod, 9, workspace, 9"
|
||||
"$mod, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
|
||||
"$mod CTRL, 1, movetoworkspacesilent, 1"
|
||||
"$mod CTRL, 2, movetoworkspacesilent, 2"
|
||||
"$mod CTRL, 3, movetoworkspacesilent, 3"
|
||||
"$mod CTRL, 4, movetoworkspacesilent, 4"
|
||||
"$mod CTRL, 5, movetoworkspacesilent, 5"
|
||||
"$mod CTRL, 6, movetoworkspacesilent, 6"
|
||||
"$mod CTRL, 7, movetoworkspacesilent, 7"
|
||||
"$mod CTRL, 8, movetoworkspacesilent, 8"
|
||||
"$mod CTRL, 9, movetoworkspacesilent, 9"
|
||||
"$mod CTRL, 0, movetoworkspacesilent, 10"
|
||||
]
|
||||
++
|
||||
# Screen lock
|
||||
(
|
||||
let
|
||||
swaylock = lib.getExe config.programs.swaylock.package;
|
||||
in
|
||||
lib.optionals config.programs.swaylock.enable [
|
||||
"$mod,TAB,exec,${swaylock} --daemonize"
|
||||
]
|
||||
)
|
||||
++
|
||||
# Notification manager
|
||||
(
|
||||
let
|
||||
makoctl = lib.getExe' config.services.mako.package "makoctl";
|
||||
in
|
||||
lib.optionals config.services.mako.enable [
|
||||
"$mod,w,exec,${makoctl} dismiss"
|
||||
"$mod SHIFT,W,exec,${makoctl} restore"
|
||||
]
|
||||
);
|
||||
|
||||
# plugin = {
|
||||
# hyprbars = {
|
||||
# bar_text_size = 10;
|
||||
# bar_height = 16;
|
||||
# bar_text_font = "Ubuntu Nerd Font";
|
||||
# bar_precedence_over_border = true;
|
||||
# bar_color = "rgb(${palette.base01})";
|
||||
|
||||
# hyprbars-button = [ "rgb(${palette.base03}), 14, , hyprctl dispatch killactive" ];
|
||||
# };
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
80
homes/julian/features/hyprland/hyprbars.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
outputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
getHostname = x: lib.last (lib.splitString "@" x);
|
||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
||||
# name = getHostname n;
|
||||
# value = v.config.colorscheme.rawColorscheme.colors.${config.colorscheme.mode};
|
||||
# }) outputs.homeConfigurations;
|
||||
rgb = color: "rgb(${lib.removePrefix "#" color})";
|
||||
rgba = color: alpha: "rgba(${lib.removePrefix "#" color}${alpha})";
|
||||
|
||||
hyprbars =
|
||||
(pkgs.hyprlandPlugins.hyprbars.override {
|
||||
# Make sure it's using the same hyprland package as we are
|
||||
hyprland = config.wayland.windowManager.hyprland.package;
|
||||
}).overrideAttrs
|
||||
(old: {
|
||||
# Yeet the initialization notification (I hate it)
|
||||
postPatch =
|
||||
(old.postPatch or "")
|
||||
+ ''
|
||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
||||
'';
|
||||
});
|
||||
in
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
plugins = [ hyprbars ];
|
||||
settings = {
|
||||
"plugin:hyprbars" = {
|
||||
bar_height = 25;
|
||||
# bar_color = rgba config.colorscheme.colors.surface "dd";
|
||||
# "col.text" = rgb config.colorscheme.colors.primary;
|
||||
# bar_text_font = config.fontProfiles.regular.name;
|
||||
# bar_text_size = config.fontProfiles.regular.size;
|
||||
bar_part_of_window = true;
|
||||
bar_precedence_over_border = true;
|
||||
hyprbars-button =
|
||||
let
|
||||
closeAction = "hyprctl dispatch killactive";
|
||||
|
||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
||||
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
|
||||
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
|
||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
||||
|
||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
||||
in
|
||||
[
|
||||
# Red close button
|
||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
||||
# # Yellow "minimize" (send to special workspace) button
|
||||
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
|
||||
# # Green "maximize" (fullscreen) button
|
||||
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
|
||||
];
|
||||
};
|
||||
|
||||
# windowrulev2 =
|
||||
# [
|
||||
# "plugin:hyprbars:bar_color ${rgba config.colorscheme.colors.primary "ee"}, focus:1"
|
||||
# "plugin:hyprbars:title_color ${rgb config.colorscheme.colors.on_primary}, focus:1"
|
||||
# ]
|
||||
# ++ (lib.flatten (
|
||||
# lib.mapAttrsToList (name: colors: [
|
||||
# "plugin:hyprbars:bar_color ${rgba colors.primary_container "dd"}, title:\\[${name}\\].*"
|
||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary_container}, title:\\[${name}\\].*"
|
||||
|
||||
# "plugin:hyprbars:bar_color ${rgba colors.primary "ee"}, title:\\[${name}\\].*, focus:1"
|
||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary}, title:\\[${name}\\].*, focus:1"
|
||||
# ]) remoteColorschemes
|
||||
# ));
|
||||
};
|
||||
};
|
||||
}
|
47
homes/julian/features/hyprland/hyprlock/default.nix
Normal file
@ -0,0 +1,47 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
programs.hyprlock.enable = true;
|
||||
programs.hyprlock.settings = {
|
||||
general = {
|
||||
disable_loading_bar = true;
|
||||
hide_cursor = true;
|
||||
ignore_empty_input = true;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
color = "#${palette.base00}";
|
||||
# path = "screenshot";
|
||||
# blur_passes = 3;
|
||||
# blur_size = 8;
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = "";
|
||||
dots_center = true;
|
||||
fade_on_empty = false;
|
||||
font_color = "#${palette.base0B}";
|
||||
inner_color = "#${palette.base01}";
|
||||
outer_color = "#${palette.base05}";
|
||||
outline_thickness = 5;
|
||||
placeholder_text = "Password...";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
29
homes/julian/features/hyprland/mako/default.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [ libnotify ];
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
|
||||
# backgroundColor = "#${palette.base00}"; TODO fix
|
||||
# textColor = "#${palette.base05}";
|
||||
# borderColor = "#${palette.base0D}";
|
||||
# progressColor = "over #${palette.base02}";
|
||||
# extraConfig = ''
|
||||
# [urgency=high]
|
||||
# border-color=#${palette.base09}
|
||||
# '';
|
||||
};
|
||||
}
|
62
homes/julian/features/hyprland/swayidle.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
||||
|
||||
isLocked = "${pgrep} -x ${swaylock}";
|
||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
||||
|
||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
||||
afterLockTimeout =
|
||||
{
|
||||
timeout,
|
||||
command,
|
||||
resumeCommand ? null,
|
||||
}:
|
||||
[
|
||||
{
|
||||
timeout = lockTime + timeout;
|
||||
inherit command resumeCommand;
|
||||
}
|
||||
{
|
||||
command = "${isLocked} && ${command}";
|
||||
inherit resumeCommand timeout;
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
systemdTarget = "graphical-session.target";
|
||||
timeouts =
|
||||
# Lock screen
|
||||
[
|
||||
{
|
||||
timeout = lockTime;
|
||||
command = "${swaylock} --daemonize --grace 15";
|
||||
}
|
||||
]
|
||||
++
|
||||
# Turn off displays (hyprland)
|
||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
||||
timeout = 300;
|
||||
command = "${hyprctl} dispatch dpms off";
|
||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
||||
}))
|
||||
++
|
||||
# Turn off displays (sway)
|
||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
||||
timeout = 300;
|
||||
command = "${swaymsg} 'output * dpms off'";
|
||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
||||
}));
|
||||
};
|
||||
}
|
18
homes/julian/features/hyprland/swaylock.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (config.colorscheme) colors;
|
||||
in
|
||||
{
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
color = "000000";
|
||||
ignore-empty-password = true;
|
||||
indicator-idle-visible = false;
|
||||
};
|
||||
};
|
||||
}
|
96
homes/julian/features/hyprland/waybar/config.json
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "bottom",
|
||||
"mode": "dock",
|
||||
"exclusive": true,
|
||||
"passtrough": true,
|
||||
"height": 16,
|
||||
|
||||
"modules-left": [
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
|
||||
"modules-center": [],
|
||||
|
||||
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace m-1",
|
||||
"all-outputs": false,
|
||||
"on-click": "activate",
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
"5": "5",
|
||||
"6": "6",
|
||||
"7": "7",
|
||||
"8": "8",
|
||||
"9": "9",
|
||||
"10": "10"
|
||||
}
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"disk": {
|
||||
"interval": 30,
|
||||
"format": "Free: {percentage_free}% ({free})",
|
||||
"path": "/",
|
||||
"unit": "GB"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": " {usage}%"
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"format": " {}%"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": "<big></big>",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"scroll-step": 5.0,
|
||||
"max-volume": 200,
|
||||
"on-click": "pulseaudio-popup",
|
||||
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-full": "{icon} ",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"tooltip-format": "{calendar}",
|
||||
"format": "{:%a %d.%m %H:%M:%S}",
|
||||
"interval": 1
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 20,
|
||||
"tooltip": false,
|
||||
"spacing": 10
|
||||
}
|
||||
}
|
38
homes/julian/features/hyprland/waybar/default.nix
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
||||
in
|
||||
{
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
||||
};
|
||||
|
||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
||||
xdg.configFile."waybar/theme.css".text = ''
|
||||
/*
|
||||
bg - background
|
||||
fg - foreground
|
||||
*/
|
||||
|
||||
/* Main Colors */
|
||||
@define-color background #${palette.base00};
|
||||
@define-color foreground #${palette.base05};
|
||||
|
||||
/* Workspace Button Colors */
|
||||
@define-color hover-bg #${palette.base01};
|
||||
@define-color hover-fg #${palette.base05};
|
||||
@define-color active-bg #${palette.base02};
|
||||
@define-color active-fg #${palette.base0A};
|
||||
@define-color urgent-bg #${palette.base08};
|
||||
@define-color urgent-fg #${palette.base00};
|
||||
'';
|
||||
}
|
94
homes/julian/features/hyprland/waybar/style.css
Normal file
@ -0,0 +1,94 @@
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* This imports the base16 colors */
|
||||
@import "theme.css";
|
||||
|
||||
/* Main Background */
|
||||
window#waybar { background: @background; }
|
||||
|
||||
/* Tooltip Styling */
|
||||
tooltip {
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
border: solid;
|
||||
border-width: 1.5px;
|
||||
border-radius: 7px;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
/* Workspace Button */
|
||||
#workspaces button {
|
||||
color: @foreground;
|
||||
border-radius: 5px;
|
||||
box-shadow: none;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding: 0px;
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
/* Opened workspaces (also on other screen) */
|
||||
#workspaces button.visible{
|
||||
color: @active-fg;
|
||||
background: @hover-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Active Workspace Button */
|
||||
#workspaces button.active {
|
||||
color: @active-fg;
|
||||
background: @active-bg;
|
||||
box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 1);
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
padding-right: 6px;
|
||||
padding-left: 6px;
|
||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
/* Hover Effect for Workspace Buttons */
|
||||
#workspaces button.inactive:hover {
|
||||
color: @hover-fg;
|
||||
background: @hover-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Urgent Workspace Buttons */
|
||||
#workspaces button.urgent {
|
||||
color: @urgent-fg;
|
||||
background: @urgent-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* General Module Styling */
|
||||
#idle_inhibitor,
|
||||
#disk,
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#battery,
|
||||
#clock,
|
||||
#tray {
|
||||
color: @foreground;
|
||||
padding: 0 10px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
/* #battery.warning { */
|
||||
/* color: #${palette.base08}; */
|
||||
/* } */
|
||||
|
||||
/* #pulseaudio.muted { */
|
||||
/* color: #${palette.base08}; */
|
||||
/* padding-right: 16px; */
|
||||
/* } */
|
30
homes/julian/features/hyprland/waypipe.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = [ pkgs.waypipe ];
|
||||
systemd.user.services = {
|
||||
waypipe-client = {
|
||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
||||
Service = {
|
||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
|
||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
waypipe-server = {
|
||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
|
||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
|
||||
};
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
}
|
40
homes/julian/features/hyprland/wlogout/default.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [ wlogout ];
|
||||
|
||||
# xdg.configFile."wlogout/style.css".text = ''
|
||||
# * {
|
||||
# all: unset;
|
||||
# font-family: JetBrains Mono Nerd Font;
|
||||
# }
|
||||
|
||||
# window {
|
||||
# background-color: #${palette.base00};
|
||||
# }
|
||||
|
||||
# button {
|
||||
# color: #${palette.base01};
|
||||
# font-size: 64px;
|
||||
# background-color: rgba(0,0,0,0);
|
||||
# outline-style: none;
|
||||
# margin: 5px;
|
||||
# }
|
||||
|
||||
# button:focus, button:active, button:hover {
|
||||
# color: #${palette.base0D};
|
||||
# transition: ease 0.4s;
|
||||
# }
|
||||
# '';
|
||||
}
|
15
homes/julian/features/hyprland/wofi/config
Normal file
@ -0,0 +1,15 @@
|
||||
width=900
|
||||
height=600
|
||||
location=center
|
||||
show=drun,run
|
||||
prompt=Search...
|
||||
filter_rate=100
|
||||
allow_markup=true
|
||||
no_actions=true
|
||||
halign=fill
|
||||
orientation=vertical
|
||||
content_halign=fill
|
||||
insensitive=true
|
||||
allow_images=true
|
||||
image_size=35
|
||||
gtk_dark=true
|
87
homes/julian/features/hyprland/wofi/default.nix
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [ wofi ];
|
||||
|
||||
xdg.configFile."wofi/config".source = ./config;
|
||||
xdg.configFile."wofi/style.css".text = ''
|
||||
window {
|
||||
margin: 5px;
|
||||
border: 5px solid #181926;
|
||||
background-color: #${palette.base00};
|
||||
border-radius: 15px;
|
||||
font-family: "JetBrainsMono";
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#input {
|
||||
all: unset;
|
||||
min-height: 36px;
|
||||
padding: 4px 10px;
|
||||
margin: 4px;
|
||||
border: none;
|
||||
color: #${palette.base05};
|
||||
font-weight: bold;
|
||||
background-color: #${palette.base01};
|
||||
outline: none;
|
||||
border-radius: 15px;
|
||||
margin: 10px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
margin: 4px;
|
||||
padding: 10px;
|
||||
font-weight: bold;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 0px;
|
||||
padding: 3px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
border: 5px solid #${palette.base01};
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin-top: 5px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#text:selected {
|
||||
color: #${palette.base01};
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
background: #${palette.base0D};
|
||||
background-size: 400% 400%;
|
||||
}
|
||||
'';
|
||||
}
|
35
homes/julian/features/hyprland/zathura.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
inherit (config.colorscheme) colors;
|
||||
in
|
||||
{
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
selection-clipboard = "clipboard";
|
||||
# TODO fix
|
||||
# font = "${config.fontProfiles.regular.name} ${toString config.fontProfiles.regular.size}";
|
||||
# recolor = true;
|
||||
# default-bg = "${colors.surface}";
|
||||
# default-fg = "${colors.surface_bright}";
|
||||
# statusbar-bg = "${colors.surface_container}";
|
||||
# statusbar-fg = "${colors.on_surface_variant}";
|
||||
# inputbar-bg = "${colors.surface}";
|
||||
# inputbar-fg = "${colors.on_secondary}";
|
||||
# notification-bg = "${colors.surface}";
|
||||
# notification-fg = "${colors.on_secondary}";
|
||||
# notification-error-bg = "${colors.error}";
|
||||
# notification-error-fg = "${colors.on_error}";
|
||||
# notification-warning-bg = "${colors.error}";
|
||||
# notification-warning-fg = "${colors.on_error}";
|
||||
# highlight-color = "${colors.tertiary}";
|
||||
# highlight-active-color = "${colors.secondary}";
|
||||
# completion-bg = "${colors.surface_bright}";
|
||||
# completion-fg = "${colors.on_surface}";
|
||||
# completions-highlight-bg = "${colors.secondary}";
|
||||
# completions-highlight-fg = "${colors.on_secondary}";
|
||||
# recolor-lightcolor = "${colors.surface}";
|
||||
# recolor-darkcolor = "${colors.inverse_surface}";
|
||||
};
|
||||
};
|
||||
}
|
52
homes/julian/features/i3/default.nix
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ ../rofi ];
|
||||
|
||||
services.dunst.enable = true;
|
||||
|
||||
programs = {
|
||||
i3status-rust = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
nitrogen
|
||||
xfce.xfce4-screenshooter
|
||||
pulseaudio # For pactl commands
|
||||
];
|
||||
xsession.enable = true; # Give gui programs access to sessionVariables
|
||||
# Prevent screen from going blank (check these settings with `xset q`)
|
||||
# And disable bell sound (b)
|
||||
xsession.initExtra = ''
|
||||
${pkgs.xorg.xset}/bin/xset s off
|
||||
${pkgs.xorg.xset}/bin/xset -dpms
|
||||
${pkgs.xorg.xset}/bin/xset b off
|
||||
'';
|
||||
xsession.windowManager.i3 = {
|
||||
enable = true;
|
||||
package = pkgs.i3-gaps;
|
||||
};
|
||||
|
||||
xsession.importedVariables = [ ];
|
||||
|
||||
# Overwrite default home-manager config file
|
||||
xdg.configFile."i3/config".source = lib.mkForce (
|
||||
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config
|
||||
);
|
||||
|
||||
home.file = {
|
||||
".config/i3/scripts" = {
|
||||
source = ./i3/scripts;
|
||||
recursive = true;
|
||||
};
|
||||
".config/i3/workspace-messaging.json".source = ./i3/workspace-chat-element-tele.json;
|
||||
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
|
||||
};
|
||||
|
||||
home.sessionPath = [ "/home/julian/.config/i3/scripts" ];
|
||||
}
|
1
homes/julian/features/i3/i3-scrot.conf
Normal file
@ -0,0 +1 @@
|
||||
scrot_dir=~/Pictures/screenshots
|
314
homes/julian/features/i3/i3/config
Normal file
@ -0,0 +1,314 @@
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
set $scripts /home/julian/.config/i3/scripts
|
||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
||||
|
||||
# Font for window titles
|
||||
font pango:FuraCode Nerd Font 12
|
||||
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
# exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
||||
|
||||
# Screen brightness controls
|
||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec $TERMINAL
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
bindsym $mod+x kill
|
||||
|
||||
# Simulates alt+f4
|
||||
bindsym Mod1+F4 kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec rofi -show run
|
||||
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal / vertical orientation
|
||||
bindsym $mod+Shift+v split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
# bindsym $mod+Shift+w layout stacking
|
||||
# bindsym $mod+w layout tabbed
|
||||
# bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# The middle button over a titlebar kills the window
|
||||
bindsym --release button2 kill
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
||||
|
||||
# move focused container to workspace and follow
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
||||
|
||||
# Monitor config
|
||||
set $monitor_left "HDMI-1"
|
||||
set $monitor_right "eDP-1"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_left
|
||||
workspace $ws3 output $monitor_left
|
||||
workspace $ws4 output $monitor_left
|
||||
workspace $ws5 output $monitor_left
|
||||
workspace $ws6 output $monitor_right
|
||||
workspace $ws7 output $monitor_right
|
||||
workspace $ws8 output $monitor_right
|
||||
workspace $ws9 output $monitor_right
|
||||
workspace $ws10 output $monitor_right
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
bar {
|
||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
||||
status_command i3status-rs
|
||||
position bottom
|
||||
|
||||
tray_output eDP-1
|
||||
}
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id $lock, mode "default"
|
||||
# logout
|
||||
bindsym e exec --no-startup-id i3-msg exit, mode "default"
|
||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
|
||||
bindsym $mod+Tab exec --no-startup-id $lock
|
||||
|
||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
||||
|
||||
bindsym $mod+c exec qalculate-gtk
|
||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
||||
bindsym $mod+e exec pcmanfm
|
||||
bindsym $mod+b exec firefox
|
||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
||||
|
||||
workspace_auto_back_and_forth yes
|
||||
|
||||
# default_border pixel
|
||||
default_border normal
|
||||
default_floating_border normal
|
||||
hide_edge_borders smart
|
||||
|
||||
show_marks no
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
focus_on_window_activation focus
|
||||
|
||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
||||
assign [class="TelegramDesktop"] workspace $ws9
|
||||
assign [class="Signal"] workspace $ws9
|
||||
assign [class="Rocket.Chat"] workspace $ws9
|
||||
assign [class="Element"] workspace $ws9
|
||||
assign [class="SchildiChat"] workspace $ws9
|
||||
assign [class="nheko"] workspace $ws9
|
||||
assign [class="thunderbird"] workspace $ws10
|
||||
# assign [class="zoom"] workspace $ws5
|
||||
assign [class="Zotero"] workspace $ws8
|
||||
|
||||
for_window [class="firefox" urgent="latest"] focus
|
||||
|
||||
for_window [title="Manjaro Settings Manager"] floating enable
|
||||
for_window [class="pamac-manager"] floating enable
|
||||
for_window [class="Pamac-updater"] floating enable
|
||||
for_window [class="Qalculate-gtk"] floating enable
|
||||
for_window [class="Gcolor3"] floating enable
|
||||
#for_window [class="zoom" title="Chat"] floating enable
|
||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
||||
#
|
||||
for_window [window_role=floating] floating enable
|
||||
|
||||
for_window [class="Viewnior"] border normal
|
||||
|
||||
########## Autostart applications ##########
|
||||
exec firefox
|
||||
|
||||
# exec --no-startup-id nm-applet
|
||||
# exec --no-startup-id blueman-applet
|
||||
# exec --no-startup-id nextcloud --background
|
||||
# exec --no-startup-id xfce4-screensaver
|
||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
||||
|
||||
# Authentication agent
|
||||
# exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
# exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
||||
|
||||
# Notify about software updates
|
||||
# exec --no-startup-id pamac-tray
|
||||
# exec --no-startup-id clipit
|
||||
# exec --no-startup-id xfce4-clipman
|
||||
|
||||
# Notify about kernel updates
|
||||
# exec --no-startup-id msm_notifier
|
||||
|
||||
# Audio
|
||||
# exec --no-startup-id start-pulseaudio-x11
|
||||
# exec --no-startup-id pa-applet
|
||||
|
||||
# Background
|
||||
exec --no-startup-id nitrogen --restore
|
||||
|
||||
# Adjust display temperature
|
||||
# exec --no-startup-id redshift
|
||||
|
||||
# Notifications
|
||||
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
||||
|
||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
# exec_always --no-startup-id ff-theme-util
|
||||
# exec_always --no-startup-id fix_xcursor
|
||||
|
||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
||||
|
||||
|
||||
#############################
|
||||
### settings for i3-gaps: ###
|
||||
#############################
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 8
|
||||
gaps outer -2
|
||||
|
||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
||||
smart_gaps on
|
||||
|
||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
||||
smart_borders on
|
314
homes/julian/features/i3/i3/config-kardorf
Normal file
@ -0,0 +1,314 @@
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
set $scripts ~/.config/i3/scripts
|
||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
||||
|
||||
# Font for window titles
|
||||
font pango:FuraCode Nerd Font 12
|
||||
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
||||
|
||||
# Screen brightness controls
|
||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec kitty
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
bindsym $mod+x kill
|
||||
|
||||
# Simulates alt+f4
|
||||
bindsym Mod1+F4 kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec rofi -show run
|
||||
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal / vertical orientation
|
||||
bindsym $mod+Shift+v split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
# bindsym $mod+Shift+w layout stacking
|
||||
# bindsym $mod+w layout tabbed
|
||||
# bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# The middle button over a titlebar kills the window
|
||||
bindsym --release button2 kill
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
||||
|
||||
# move focused container to workspace and follow
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
||||
|
||||
# Monitor config
|
||||
set $monitor_left "DVI-D-0"
|
||||
set $monitor_right "DVI-D-1"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_left
|
||||
workspace $ws3 output $monitor_left
|
||||
workspace $ws4 output $monitor_left
|
||||
workspace $ws5 output $monitor_left
|
||||
workspace $ws6 output $monitor_right
|
||||
workspace $ws7 output $monitor_right
|
||||
workspace $ws8 output $monitor_right
|
||||
workspace $ws9 output $monitor_right
|
||||
workspace $ws10 output $monitor_right
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
bar {
|
||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
||||
status_command i3status-rs
|
||||
position bottom
|
||||
|
||||
tray_output DVI-D-0
|
||||
}
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id $lock, mode "default"
|
||||
bindsym e exec --no-startup-id i3-msg exit, mode "default" # logout
|
||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
|
||||
bindsym $mod+Tab exec --no-startup-id $lock
|
||||
|
||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
||||
|
||||
bindsym $mod+c exec qalculate-gtk
|
||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
||||
bindsym $mod+e exec pcmanfm
|
||||
bindsym $mod+Shift+c exec $scripts/jupyter-calculator
|
||||
bindsym $mod+b exec firefox
|
||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
||||
|
||||
workspace_auto_back_and_forth yes
|
||||
|
||||
# default_border pixel
|
||||
default_border normal
|
||||
default_floating_border normal
|
||||
hide_edge_borders smart
|
||||
|
||||
show_marks no
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
focus_on_window_activation focus
|
||||
|
||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
||||
assign [class="TelegramDesktop"] workspace $ws9
|
||||
assign [class="Signal"] workspace $ws9
|
||||
assign [class="Rocket.Chat"] workspace $ws9
|
||||
assign [class="Element"] workspace $ws9
|
||||
assign [class="SchildiChat"] workspace $ws9
|
||||
assign [class="thunderbird"] workspace $ws10
|
||||
# assign [class="zoom"] workspace $ws5
|
||||
assign [class="Zotero"] workspace $ws8
|
||||
|
||||
for_window [class="firefox" urgent="latest"] focus
|
||||
|
||||
for_window [title="Manjaro Settings Manager"] floating enable
|
||||
for_window [class="pamac-manager"] floating enable
|
||||
for_window [class="Pamac-updater"] floating enable
|
||||
for_window [class="Qalculate-gtk"] floating enable
|
||||
for_window [class="Gcolor3"] floating enable
|
||||
#for_window [class="zoom" title="Chat"] floating enable
|
||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
||||
#
|
||||
for_window [window_role=floating] floating enable
|
||||
|
||||
for_window [class="Viewnior"] border normal
|
||||
|
||||
########## Autostart applications ##########
|
||||
exec firefox
|
||||
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id xfce4-power-manager
|
||||
exec --no-startup-id nextcloud --background
|
||||
# exec --no-startup-id xfce4-screensaver
|
||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
||||
|
||||
# Authentication agent
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
||||
|
||||
# Notify about software updates
|
||||
exec --no-startup-id pamac-tray
|
||||
exec --no-startup-id clipit
|
||||
# exec --no-startup-id xfce4-clipman
|
||||
|
||||
# Notify about kernel updates
|
||||
exec --no-startup-id msm_notifier
|
||||
|
||||
# Audio
|
||||
exec --no-startup-id start-pulseaudio-x11
|
||||
exec --no-startup-id pa-applet
|
||||
|
||||
# Background
|
||||
exec --no-startup-id nitrogen --restore
|
||||
|
||||
# Adjust display temperature
|
||||
exec --no-startup-id redshift
|
||||
|
||||
# Notifications
|
||||
exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
||||
|
||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
exec_always --no-startup-id ff-theme-util
|
||||
exec_always --no-startup-id fix_xcursor
|
||||
|
||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
||||
|
||||
|
||||
#############################
|
||||
### settings for i3-gaps: ###
|
||||
#############################
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 8
|
||||
gaps outer -2
|
||||
|
||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
||||
smart_gaps on
|
||||
|
||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
||||
smart_borders on
|
@ -44,7 +44,7 @@ bindsym $mod+z exec --no-startup-id morc_menu
|
||||
|
||||
#exec --no-startup-id volumeicon
|
||||
#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
|
||||
exec --no-startup-id pulseaudio
|
||||
exec --no-startup-id start-pulseaudio-x11
|
||||
exec --no-startup-id pa-applet
|
||||
bindsym $mod+Ctrl+m exec pavucontrol
|
||||
|
||||
@ -224,11 +224,8 @@ bindsym $mod+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# Set shut down, restart and locking features
|
||||
bindsym $mod+0 mode "$mode_system"
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id i3exit lock, mode "default"
|
||||
@ -279,7 +276,7 @@ exec --no-startup-id nm-applet
|
||||
exec --no-startup-id xfce4-power-manager
|
||||
exec --no-startup-id pamac-tray
|
||||
exec --no-startup-id clipit
|
||||
# exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id blueman-applet
|
||||
# exec_always --no-startup-id sbxkb
|
||||
exec --no-startup-id start_conky_maia
|
||||
# exec --no-startup-id start_conky_green
|
11
homes/julian/features/i3/i3/scripts/display-layoutpicker
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
xrandr | grep -q "HDMI-1 connected"
|
||||
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Two screens available"
|
||||
~/.screenlayout/twoscreens.sh
|
||||
else
|
||||
echo "Only one screen available"
|
||||
~/.screenlayout/onescreen.sh
|
||||
fi
|
21
homes/julian/features/i3/i3/scripts/display-toggle-mirror
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
xrandr | grep -q "HDMI-1 connected"
|
||||
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Two screens available"
|
||||
|
||||
MIRROR_FILE=~/.screenlayout/mirror-primary
|
||||
if [ -e "$MIRROR_FILE" ]; then
|
||||
echo "Mode set to mirror"
|
||||
rm "$MIRROR_FILE"
|
||||
~/.screenlayout/twoscreens-mirror.sh
|
||||
else
|
||||
echo "Mode set to left-right"
|
||||
touch "$MIRROR_FILE"
|
||||
~/.screenlayout/twoscreens.sh
|
||||
fi
|
||||
else
|
||||
echo "Only one screen available"
|
||||
~/.screenlayout/onescreen.sh
|
||||
fi
|
@ -4,7 +4,7 @@ import subprocess
|
||||
import time
|
||||
import psutil
|
||||
|
||||
NOTEBOOK_DIR = "/home/julian/jupyter-notebooks/"
|
||||
NOTEBOOK_DIR = "~/jupyter-notebooks/"
|
||||
PORT = "8988"
|
||||
|
||||
def isOtherProcessRunning():
|
||||
@ -41,7 +41,10 @@ def isNotebookRunning():
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
if not isNotebookRunning():
|
||||
subprocess.Popen(f"jupyter notebook --notebook-dir={NOTEBOOK_DIR} --port={PORT} --no-browser", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
print("No notebook instance running. Starting it...")
|
||||
subprocess.Popen(f"jupyter notebook --notebook-dir={NOTEBOOK_DIR} --port={PORT} --no-browser", shell=True)
|
||||
else:
|
||||
print("Notebook instance already running.")
|
||||
|
||||
max_wait_seconds = 3
|
||||
delta_t_seconds = 0.1
|
||||
@ -59,8 +62,12 @@ if __name__ == "__main__":
|
||||
if current_wait_seconds >= max_wait_seconds:
|
||||
raise Exception(f"Maximum wait time of {max_wait_seconds} exceeded!")
|
||||
|
||||
subprocess.call(f"cp {NOTEBOOK_DIR}calculator_template.ipynb {NOTEBOOK_DIR}calculator.ipynb", shell=True, stdout=None)
|
||||
subprocess.call(f"electron 'http://localhost:{PORT}/notebooks/calculator.ipynb?token={token}'", shell=True, stdout=None)
|
||||
subprocess.call(f"cp {NOTEBOOK_DIR}calculator_template.ipynb {NOTEBOOK_DIR}calculator.ipynb", shell=True)
|
||||
|
||||
# url = f"http://localhost:{PORT}/notebooks/calculator.ipynb?token={token}"
|
||||
url = f"http://localhost:{PORT}/?token={token}"
|
||||
|
||||
subprocess.call(f"$BROWSER '{url}'", shell=True)
|
||||
|
||||
finally:
|
||||
# TODO: not reliably working
|
3
homes/julian/features/i3/i3/scripts/mymatlab.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
matlab -desktop -sd ~/dev/bachelor-thesis/simulation
|
27
homes/julian/features/i3/i3/scripts/open-messaging
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
start_if_not_running()
|
||||
{
|
||||
program=$1
|
||||
pidof -sq $program
|
||||
if [ "$?" -eq "1" ]; then
|
||||
start_program $1
|
||||
else
|
||||
echo "$program is already running"
|
||||
fi
|
||||
}
|
||||
|
||||
start_program()
|
||||
{
|
||||
program=$1
|
||||
echo "Starting $program..."
|
||||
$program & > /dev/null
|
||||
}
|
||||
|
||||
i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-messaging.json'
|
||||
start_program nheko
|
||||
sleep 0.1
|
||||
start_program telegram-desktop
|
||||
sleep 0.1
|
||||
start_program thunderbird
|
||||
sleep 0.1
|
20
homes/julian/features/i3/i3/scripts/pulse_popup
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"
|
||||
LAPTOP_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"
|
||||
|
||||
HDMI_ICON=$(pactl info | grep -q $HDMI_SINK && echo "checkbox")
|
||||
LAPTOP_ICON=$(pactl info | grep -q $LAPTOP_SINK && echo "checkbox")
|
||||
|
||||
HDMI_VOLUME=$(pactl get-sink-volume $HDMI_SINK | head -n 1 | awk '{print $5}')
|
||||
LAPTOP_VOLUME=$(pactl get-sink-volume $LAPTOP_SINK | head -n 1 | awk '{print $5}')
|
||||
|
||||
read -r -d '' CONF <<EOF
|
||||
Open Pavucontrol,pavucontrol,pavucontrol
|
||||
|
||||
^sep()
|
||||
HDMI - $HDMI_VOLUME,pactl set-default-sink $HDMI_SINK,$HDMI_ICON
|
||||
Laptop - $LAPTOP_VOLUME,pactl set-default-sink $LAPTOP_SINK,$LAPTOP_ICON
|
||||
EOF
|
||||
|
||||
echo "$CONF" | jgmenu --simple
|
@ -2,5 +2,5 @@
|
||||
|
||||
zoom &
|
||||
|
||||
i3-msg "workspace --no-auto-back-and-forth 5; exec mousepad /home/julian/Nextcloud/studium/zoom.txt"
|
||||
#i3-msg "workspace --no-auto-back-and-forth 5; exec mousepad ~/Nextcloud/studium/zoom.txt"
|
||||
i3-msg "workspace --no-auto-back-and-forth 5; append_layout ~/.config/i3/workspace-zoom.json"
|
45
homes/julian/features/i3/i3/workspace-chat-element-tele.json
Normal file
@ -0,0 +1,45 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "nheko",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^nheko$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram\\ \\(71\\)$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "SchildiChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^SchildiChat$"
|
||||
// "instance": "^schildichat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^SchildiChat\\ \\*\\ \\|\\ Familie$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "normal",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "normal",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 1,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 485,
|
||||
"width": 1904,
|
||||
"x": 1928,
|
||||
"y": 557
|
||||
},
|
||||
"marks": [],
|
||||
"name": "RocketChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^Rocket\\.Chat$"
|
||||
// "instance": "^rocket\\.chat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^ifiChat$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
49
homes/julian/features/i3/i3/workspace-chat-schildi-tele.json
Normal file
@ -0,0 +1,49 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "SchildiChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^SchildiChat$"
|
||||
// "instance": "^schildichat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^SchildiChat$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram\\ \\(71\\)$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "normal",
|
||||
"border": "pixel",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"percent": 0.2,
|
||||
@ -31,14 +31,14 @@
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "normal",
|
||||
"border": "pixel",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "normal",
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
@ -61,7 +61,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"border": "normal",
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "user_off",
|
||||
"geometry": {
|
47
homes/julian/features/i3/i3status-rust/config.toml
Normal file
@ -0,0 +1,47 @@
|
||||
[theme]
|
||||
theme = "dracula"
|
||||
|
||||
[icons]
|
||||
icons = "awesome4"
|
||||
|
||||
[[block]]
|
||||
block = "disk_space"
|
||||
path = "~"
|
||||
format = " $icon $available ($percentage) frei "
|
||||
info_type = "available"
|
||||
alert_unit = "GB"
|
||||
interval = 20
|
||||
warning = 20.0
|
||||
alert = 10.0
|
||||
|
||||
[[block]]
|
||||
block = "memory"
|
||||
format = " $icon $mem_used_percents "
|
||||
|
||||
[[block]]
|
||||
block = "cpu"
|
||||
interval = 1
|
||||
|
||||
[[block]]
|
||||
block = "net"
|
||||
# device = "enp1s0"
|
||||
#format = " $icon $speed_down;K*b $speed_up;K*b"
|
||||
interval = 5
|
||||
|
||||
[[block]]
|
||||
block = "sound"
|
||||
[[block.click]]
|
||||
button = "left"
|
||||
cmd = "pulseaudio-popup"
|
||||
|
||||
[[block]]
|
||||
block = "battery"
|
||||
interval = 10
|
||||
format = " $icon $percentage ($time) "
|
||||
not_charging_format = " $icon $percentage "
|
||||
if_command = "test -e /sys/class/power_supply/BAT1"
|
||||
|
||||
[[block]]
|
||||
block = "time"
|
||||
interval = 1
|
||||
format = " $icon $timestamp.datetime(f:'%a %d.%m %H:%M:%S') "
|
29
homes/julian/features/kitty/default.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
themeFile = "gruvbox-dark";
|
||||
settings = {
|
||||
enable_audio_bell = false;
|
||||
confirm_os_window_close = 0; # no ask on quit
|
||||
};
|
||||
font = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
size = 12;
|
||||
};
|
||||
};
|
||||
|
||||
# home.shellAliases = {
|
||||
# ssh = "kitten ssh"; # Copy kitten terminfo to remote
|
||||
# };
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "kitty") "kitty";
|
||||
}
|
164
homes/julian/features/neovim/default.nix
Normal file
@ -0,0 +1,164 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
git
|
||||
gnumake
|
||||
gcc
|
||||
ripgrep
|
||||
fd
|
||||
stylua
|
||||
black
|
||||
nixfmt-rfc-style # nixfmt
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings.flavour = "mocha";
|
||||
};
|
||||
|
||||
globals.mapleader = " ";
|
||||
opts = {
|
||||
number = false;
|
||||
relativenumber = false;
|
||||
|
||||
};
|
||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<cmd>Telescope live_grep<cr>";
|
||||
key = "<leader>/";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope find_files<cr>";
|
||||
key = "<leader><space>";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope file_browser<cr>";
|
||||
key = "<leader>.";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Neogit<cr>";
|
||||
key = "<leader>gg";
|
||||
}
|
||||
{
|
||||
key = "<C-s>";
|
||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
||||
mode = [
|
||||
"i"
|
||||
"x"
|
||||
"n"
|
||||
"s"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
lualine.enable = true;
|
||||
commentary.enable = true;
|
||||
which-key.enable = true;
|
||||
treesitter.enable = true; # enables all grammar packages
|
||||
neogit.enable = true; # like magit
|
||||
trouble.enable = true;
|
||||
web-devicons.enable = true;
|
||||
|
||||
# Shows file trees
|
||||
oil = {
|
||||
enable = true;
|
||||
settings = {
|
||||
view_options.show_hidden = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Code formatting
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings.formatters_by_ft = with pkgs; {
|
||||
lua = [ "stylua" ];
|
||||
python = [ "black" ];
|
||||
nix = [ "nixfmt" ];
|
||||
};
|
||||
# extraOptions = {
|
||||
# default_format_opts.lsp_format = "fallback";
|
||||
# };
|
||||
};
|
||||
|
||||
# autocomplete
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings.sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "buffer"; }
|
||||
];
|
||||
settings.mapping = {
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
};
|
||||
};
|
||||
|
||||
# Fuzzy finder
|
||||
telescope = {
|
||||
enable = true;
|
||||
settings.defaults.mappings = {
|
||||
i = {
|
||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
||||
};
|
||||
};
|
||||
extensions = {
|
||||
fzf-native.enable = true;
|
||||
file-browser = {
|
||||
enable = true;
|
||||
settings = {
|
||||
hidden = true; # show hidden files
|
||||
follow_symlinks = true;
|
||||
no_ignore = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
nixd.enable = true;
|
||||
pyright.enable = true;
|
||||
dockerls.enable = true;
|
||||
lua_ls.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
18
homes/julian/features/nix-helper/default.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.sessionVariables = {
|
||||
FLAKE = "/home/julian/.dotfiles";
|
||||
};
|
||||
|
||||
home.shellAliases = {
|
||||
"os" = "nh os switch";
|
||||
"hs" = "nh home switch";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ nh ];
|
||||
}
|
@ -11,7 +11,7 @@ configuration {
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
show-icons: true;
|
||||
/* terminal: "rofi-sensible-terminal";*/
|
||||
terminal: "alacritty";
|
||||
/* ssh-client: "ssh";*/
|
||||
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
|
||||
/* run-command: "{cmd}";*/
|
||||
@ -152,13 +152,12 @@ configuration {
|
||||
/* me-accept-custom: "Control+MouseDPrimary";*/
|
||||
}
|
||||
|
||||
|
||||
/*Dracula theme based on the Purple official rofi theme*/
|
||||
|
||||
* {
|
||||
font: "Jetbrains Mono 14";
|
||||
foreground: #f8f8f2;
|
||||
background-color: #282a36;
|
||||
background: #282a36;
|
||||
active-background: #6272a4;
|
||||
urgent-background: #ff5555;
|
||||
selected-background: @active-background;
|