Compare commits

...

597 Commits

Author SHA1 Message Date
9fe40bfd13 package rtklib 2025-05-26 21:51:07 +02:00
07943d4f95 format file
Some checks failed
Update Nix Flake / update-flake (push) Failing after 18s
2025-05-23 09:59:30 +02:00
815a79ff41 kardorf: fix seahorse and plasma6 config conflict 2025-05-23 09:58:59 +02:00
32ddceba8f kardorf: use i3 instead of hyprland 2025-05-23 09:58:38 +02:00
55ba4125d6 add latex packages to fix org mode exporting
Some checks failed
Update Nix Flake / update-flake (push) Failing after 11s
2025-05-21 23:01:09 +02:00
b9274f546f update flake 2025-05-21 23:01:03 +02:00
fd246d7daf Add hydra-auto-upgrade module, still wip
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-05-16 13:13:47 +02:00
edae0d2bb0 Delete i3 scripts also available in my nix pkgs 2025-05-16 12:56:22 +02:00
1cb23dd0a4 Add todo 2025-05-16 12:53:20 +02:00
ab1052193a rename deprecated options 2025-05-16 12:12:22 +02:00
6dadb2008c kardorf: enable ssh access 2025-05-16 12:11:45 +02:00
18f9cc3fa8 Add user julian to dialout for serial port access 2025-05-16 08:27:45 +02:00
9295ad7010 add kardorf ssh key to common secrets.yaml 2025-05-16 08:27:45 +02:00
e3cf2379ab yazi: update config to new version 2025-05-16 08:27:45 +02:00
f6c3f676b2 update flake 2025-05-16 08:27:45 +02:00
d57017382a v3ms: add /snap/bin to path
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-09 11:41:21 +02:00
1d7690eab4 Fix mako settings
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-06 07:50:35 +02:00
67d68a9946 Fix waybar not visible on second monitor after toggling mirroring twice
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-05 15:10:07 +02:00
9af362b5c8 hyprland: quick and dirty screen mirroring 2025-05-05 14:56:22 +02:00
a0ae09452f hyprland: install hyprpicker 2025-05-05 08:24:26 +02:00
711859e660 hyprland: fix cursor theme not applied 2025-05-05 08:24:09 +02:00
1c1e496425 use NH_FLAKE instead of FLAKE for nh 2025-05-05 07:11:28 +02:00
97229a521f Add discord to open-messaging 2025-05-05 07:11:02 +02:00
7d8190210b Mako: disable usage of deprecated config value
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-04 20:42:53 +02:00
a1dfeff98b topgrade: disable "update flake" step 2025-05-04 20:29:11 +02:00
9e512c2863 Update flake 2025-05-04 20:29:06 +02:00
136653b0fa Use hashed password for julian 2025-05-04 13:52:36 +02:00
75fb0f54ec Delete unused hyprland nixos config 2025-05-04 13:52:27 +02:00
a3282f3eb3 Configure kardorf host config 2025-05-04 13:52:13 +02:00
843dfb986d Fix type of monitor.workspaces 2025-05-04 13:51:54 +02:00
3eba0fe092 Make nvidia on kardorf work 2025-05-04 13:51:44 +02:00
fdc8b03d9b Add user wolfi 2025-05-04 13:51:22 +02:00
d86321cfe6 Add monitor configuration to aspi and kardorf homes 2025-05-04 13:51:00 +02:00
881c930fdb Fix wrong architectures used for v3ms and kardorf 2025-05-04 13:50:36 +02:00
dc3f9fe681 Add kardorf ssh key to sops 2025-05-04 13:50:23 +02:00
d73ff17327 Delete deprecated .dotter files 2025-05-04 13:49:24 +02:00
67468ba6fa Fix kardorf using aspi config 2025-05-01 22:09:02 +02:00
6d2a7f50df workflow: add git fetch before rebasing
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-30 13:15:25 +02:00
3cf8f19fcc Disable autostart for wireguard comu
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-04-29 21:44:54 +02:00
d335f6c892 builder: fix config
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-28 22:44:33 +02:00
8d94428f77 Fix lsp warnings for clean code 2025-04-28 22:27:16 +02:00
903776dca6 Clean up aspi and home hm config 2025-04-28 22:24:30 +02:00
b6dc568215 Rename desktop feature to gtk 2025-04-28 22:24:21 +02:00
130c341816 Remove wallpaper directory 2025-04-28 22:23:42 +02:00
8d0430ae52 Delete unused config file for shells 2025-04-28 22:19:00 +02:00
68da077c72 Format code with alejandra 2025-04-28 22:17:11 +02:00
7d17c52192 Clean up aspi and kardorf configs 2025-04-28 22:02:24 +02:00
c217e3297b hyprland: enable direct_scanout 2025-04-28 09:14:47 +02:00
c41a642593 hyprland: add smart gaps 2025-04-28 09:14:35 +02:00
d02f28ad89 waybar: do not show time left for battery 2025-04-26 19:02:20 +02:00
7d18d2bd50 Properly configure swaylock 2025-04-25 15:42:09 +02:00
68c37c0f42 hyprland dwindle: always split to same direction 2025-04-25 15:04:58 +02:00
20e2b5e20e Disable mimeapp managing by hm 2025-04-25 15:04:50 +02:00
08d3844778 Add wol-ocr script 2025-04-25 15:04:39 +02:00
34084e45aa hyprland: make splitting and resizing deterministic 2025-04-25 08:41:16 +02:00
7c1c51954e Remove unneeded commented line 2025-04-25 08:36:24 +02:00
659d235fc7 Tune hyprland animations and cursor 2025-04-25 08:36:15 +02:00
64958b068f Delete unnecessary nixos wayland config 2025-04-24 14:06:32 +02:00
95d9f9cf61 Add gamemode 2025-04-24 14:06:27 +02:00
6f57594884 Fix hyprland 2025-04-24 13:41:09 +02:00
b077da4998 Add pob2 package, not working yet 2025-04-24 08:06:06 +02:00
8aaf0b81c2 Do not install digikam 2025-04-24 08:05:46 +02:00
439b4d769e Fix fonts 2025-04-24 08:05:39 +02:00
66bde6646f Remove unneccesary comments 2025-04-23 22:56:22 +02:00
c323a747ea Fix deprecated config 2025-04-23 22:55:20 +02:00
d87cec971a Migrate left hosts and homes configurations 2025-04-23 22:53:43 +02:00
7db055ca27 Squash bugs and make aspi config work 2025-04-23 09:59:02 +02:00
532bbe8675 Migrate old home-manager modules 2025-04-22 23:47:08 +02:00
dcdc97aad8 Migrate remaining nixos modules 2025-04-22 23:11:45 +02:00
94498a0038 Migrate aspi host config 2025-04-22 22:47:36 +02:00
05350e1c1c Add common hosts config 2025-04-22 22:12:45 +02:00
142b16fa9c Add aspi public ssh key 2025-04-22 22:12:30 +02:00
6f2de694a0 Add todos 2025-04-22 22:12:24 +02:00
3f9442fd02 Rename systems folder to hosts 2025-04-22 21:34:44 +02:00
fb2626372f Delete legacy non-nix configs 2025-04-22 21:30:30 +02:00
c18b1a7341 Add pkg to activate acer battery health mode 2025-04-22 21:30:05 +02:00
1e4d267ce7 delete lib 2025-04-22 21:25:44 +02:00
63c3d1af27 Add real home-manager and nixos modules 2025-04-22 21:24:36 +02:00
2e20534bba Rename modules/home to modules/home-manager 2025-04-22 21:19:29 +02:00
3f0b46f3d8 Update .gitignore 2025-04-22 21:15:27 +02:00
9659bbff1e Update lock file 2025-04-22 21:15:21 +02:00
73c440c9cd Add shell and direnv 2025-04-22 21:15:13 +02:00
d0942d018b Migrate packages 2025-04-22 21:14:51 +02:00
642398da4b Clean up overlays 2025-04-22 20:50:11 +02:00
07a321c79a Restructure flake 2025-04-22 20:48:18 +02:00
459c6ac27e Clean up flake inputs, use unstable by default 2025-04-22 20:41:04 +02:00
02cc4f8ed8 workflow: use rebase instead of merge
All checks were successful
Update Nix Flake / update-flake (push) Successful in 1m24s
2025-03-23 19:09:18 +01:00
d964a181ad builder: add attic binary cache
All checks were successful
Update Nix Flake / update-flake (push) Successful in 1m19s
2025-03-22 12:55:16 +01:00
27c36bb7f5 topgrade: update flake.lock to flake-updates branch version 2025-03-22 12:54:48 +01:00
b76fe8d508 workflow: really fix git diff call by using --cached 2025-03-22 09:20:48 +01:00
5c8f199fce workflow: add debug calls 2025-03-22 09:16:53 +01:00
00a448010d workflow: fix git diff call 2025-03-22 09:14:14 +01:00
b76da6e9eb workflow: use merge --squash instead of rebase 2025-03-22 09:05:43 +01:00
68e02739be fix gitea runner by using docker instead of podman
Some checks failed
Update Nix Flake / update-flake (push) Failing after 1m27s
2025-03-21 22:33:42 +01:00
b9b5b378f7 workflow: fix gitea token on checkout 2025-03-21 21:57:51 +01:00
1abc06f58c Add gitea action for updating flake 2025-03-21 21:46:05 +01:00
b3f3813b36 builder: configure gitea actions 2025-03-21 21:45:42 +01:00
56b471cdd4 Document sops usage in Readme 2025-03-21 21:45:26 +01:00
136dd36b8c Distribute secrets to machine configs 2025-03-21 21:45:08 +01:00
3f68d344d1 Add secrets for builder 2025-03-21 21:44:32 +01:00
df00e58bd9 Add sos script for faster nixos-updates
This uses the remote builder as nix store, so the build dependencies for
the new system do not have to be present locally.
Therefore, if hydra built the system it should be possible to just
download the output derivation.
2025-03-14 09:16:50 +01:00
4745b90cea Update flake 2025-03-12 17:10:56 +01:00
fef500721c emacs: add languagetool lsp 2025-03-12 17:10:46 +01:00
1921df8330 add devenv 2025-02-28 19:08:41 +01:00
8e64d3f8db pianonix: add musescore 2025-02-28 19:08:26 +01:00
8cc698af1f Update flake 2025-02-28 19:08:12 +01:00
533256cca6 Fix unstable overlay 2025-02-28 18:52:53 +01:00
5e224b9c3f Fix flake inputs being thunk instead of set
I turns out one should not handle the inputs section as nix code, or
weird things happen
2025-02-28 18:49:56 +01:00
ca0ad1b6d6 Remove hydra jobs 2025-02-28 18:24:42 +01:00
8dfa9a8df7 desktop suite: add pdfpc 2025-01-21 21:33:52 +01:00
167a9d57d7 v3ms: add devbox 2025-01-21 12:03:29 +01:00
87809a9573 Fix wine only supporting 32-bit 2025-01-20 18:15:11 +01:00
d67c432be6 Update flake 2025-01-20 00:15:13 +01:00
49f3533f9e Add matlab-rsp script 2025-01-20 00:15:13 +01:00
c344ac92f6 pianonix: add xournalpp 2025-01-20 00:15:13 +01:00
7e848b8126 Enable syncthing on kardorf 2025-01-14 10:19:40 +01:00
e698f17557 Update flake 2025-01-10 22:27:05 +01:00
9907a4ba9e builder: disable daily gc, increase automatic gc thresholds 2025-01-10 22:26:11 +01:00
be2dc15a1f aspi: enable builder 2025-01-10 22:25:59 +01:00
ca3e257fa0 pianonix: add onboard screen keyboard 2025-01-10 22:25:47 +01:00
a6f2ad4d9f Again change kitty theme 2025-01-08 08:22:27 +01:00
338b77114c Update flake 2025-01-06 08:52:54 +01:00
0878a2f251 builder: Remove swap 2025-01-02 23:05:49 +01:00
e45837e785 Update flake 2025-01-02 22:57:21 +01:00
f832636ffd Builder: add kardorf ssh key 2025-01-02 22:57:10 +01:00
4f68e368b9 Make kitty use more mc friendly theme 2025-01-02 22:56:56 +01:00
4590c9fe1f builder: Improve garbage collect 2024-12-20 14:05:11 +01:00
22db460211 Try to fix hydra not using localhost buildMachine 2024-12-19 08:55:49 +01:00
5f2ab6958e emacs: add hunspell dicts 2024-12-18 15:50:15 +01:00
86c948779f Aspi allow non free nvidia drivers 2024-12-18 15:49:50 +01:00
9cb3f8eae9 Aspi use kitty instead of wezterm 2024-12-18 15:49:38 +01:00
b6dbe5afc7 Setup builder as cache and activate hydra 2024-12-18 15:48:58 +01:00
4c8a559c92 Activate resolved service which was missing 2024-12-18 15:47:40 +01:00
cec8d1d226 Use binarycache.julian-mutter.de by default 2024-12-18 15:46:34 +01:00
8dc346a1ef flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/785c1e02c7e465375df971949b8dcbde9ec362e5?narHash=sha256-8dupm9GfK%2BBowGdQd7EHK5V61nneLfr9xR6sc5vtDi0%3D' (2024-12-02)
  → 'github:nix-community/disko/a08bfe06b39e94eec98dd089a2c1b18af01fef19?narHash=sha256-b7G8oFp0Nj01BYUJ6ENC9Qf/HsYAIZvN9k/p0Kg/PFU%3D' (2024-12-16)
• Updated input 'home-manager':
    'github:nix-community/home-manager/c7ffc9727d115e433fd884a62dc164b587ff651d?narHash=sha256-zjO6m5BqxXIyjrnUziAzk4%2BT4VleqjstNudSqWcpsHI%3D' (2024-12-07)
  → 'github:nix-community/home-manager/80b0fdf483c5d1cb75aaad909bd390d48673857f?narHash=sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw%3D' (2024-12-16)
• Updated input 'hyprland':
    'github:hyprwm/Hyprland/0a27af8cd190315c1f13363ebd11e83d30455d48?narHash=sha256-%2BtHGw4fimhZ9LtGUTpXV8V1EH5AWY6FC/3u5OmZ4I5A%3D' (2024-12-08)
  → 'github:hyprwm/Hyprland/5f1df55fcb45a72e92258113685aa9064f6ebf3e?narHash=sha256-eb%2BOcQaSp7pcJxNe6wi52AiqLle820aD4Ejq10wmsjo%3D' (2024-12-17)
• Updated input 'hyprland/aquamarine':
    'github:hyprwm/aquamarine/4468981c1c50999f315baa1508f0e53c4ee70c52?narHash=sha256-TGcvIjftziC1CjuiHCzrYDwmOoSFYIhdiKmLetzB5L0%3D' (2024-11-18)
  → 'github:hyprwm/aquamarine/a132fa41be7ebe797ad758e84d9df068151a723b?narHash=sha256-Bf%2Boya0BuleVXYGIWsb0eWnrK6s0aiesOsI7Mpj1pMU%3D' (2024-12-17)
• Updated input 'hyprland/hyprcursor':
    'github:hyprwm/hyprcursor/0264e698149fcb857a66a53018157b41f8d97bb0?narHash=sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk%3D' (2024-10-11)
  → 'github:hyprwm/hyprcursor/f388aacd22be4a6e4d634fbaf6f75eb0713d239a?narHash=sha256-%2B2bZJL2u5hva7rSp65OfKJBK%2Bk03T6GB/NCvpoS1OOo%3D' (2024-12-16)
• Updated input 'hyprland/hyprgraphics':
    'github:hyprwm/hyprgraphics/cc95e5babc6065bc3ab4cd195429a9900836ef13?narHash=sha256-FFLJzFTyNhS7tBEEECx0B8Ye/bpmxhFVEKlECgMLc6c%3D' (2024-12-03)
  → 'github:hyprwm/hyprgraphics/fb2c0268645a77403af3b8a4ce8fa7ba5917f15d?narHash=sha256-2kYREgmSmbLsmDpLEq96hxVAU3qz8aCvVhF65yCFZHY%3D' (2024-12-08)
• Updated input 'hyprland/hyprland-qtutils':
    'github:hyprwm/hyprland-qtutils/969427419276c7ee170301ef1ebe0f68eb6eb2e2?narHash=sha256-PvXiFLIExJEJj%2BgoLbIuXLTN5CSDSAUsAfiYSdbbWg0%3D' (2024-12-06)
  → 'github:hyprwm/hyprland-qtutils/3833097e50473a152dd614d4b468886840b4ea78?narHash=sha256-hmfXWj2GA9cj1QUkPFYtAAeohhs615zL4E3APy3FnvQ%3D' (2024-12-11)
• Updated input 'hyprland/hyprlang':
    'github:hyprwm/hyprlang/f054f2e44d6a0b74607a6bc0f52dba337a3db38e?narHash=sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns%3D' (2024-10-05)
  → 'github:hyprwm/hyprlang/16e59c1eb13d9fb6de066f54e7555eb5e8a4aba5?narHash=sha256-ii8fzJfI953n/EmIxVvq64ZAwhvwuuPHWfGd61/mJG8%3D' (2024-12-16)
• Updated input 'hyprland/hyprutils':
    'github:hyprwm/hyprutils/b26f33cc1c8a7fd5076e19e2cce3f062dca6351c?narHash=sha256-XTU9B53IjGeJiJ7LstOhuxcRjCOFkQFl01H78sT9Lg4%3D' (2024-11-22)
  → 'github:hyprwm/hyprutils/e6cf45cd1845368702e03b8912f4cc44ebba3322?narHash=sha256-bl3YyJb2CgaeVKYq/l8j27vKdbkTpDNFDsnCl0dnNlY%3D' (2024-12-16)
• Updated input 'hyprland/hyprwayland-scanner':
    'github:hyprwm/hyprwayland-scanner/500c81a9e1a76760371049a8d99e008ea77aa59e?narHash=sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM%3D' (2024-09-20)
  → 'github:hyprwm/hyprwayland-scanner/90e87f7fcfcce4862826d60332cbc5e2f87e1f88?narHash=sha256-noYeXcNQ15g1/gIJIYT2zdO66wzY5Z06PYz6BfKUZA8%3D' (2024-12-16)
• Updated input 'hyprland/nixpkgs':
    'github:NixOS/nixpkgs/d0797a04b81caeae77bcff10a9dde78bc17f5661?narHash=sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG%2BcBns%3D' (2024-12-05)
  → 'github:NixOS/nixpkgs/3566ab7246670a43abd2ffa913cc62dad9cdf7d5?narHash=sha256-AKU6qqskl0yf2%2BJdRdD0cfxX4b9x3KKV5RqA6wijmPM%3D' (2024-12-13)
• Updated input 'hyprland/pre-commit-hooks':
    'github:cachix/git-hooks.nix/6f4e2a2112050951a314d2733a994fbab94864c6?narHash=sha256-SVQVsbafSM1dJ4fpgyBqLZ%2BLft%2BjcQuMtEL3lQWx2Sk%3D' (2024-12-04)
  → 'github:cachix/git-hooks.nix/0bb4be58f21ff38fc3cdbd6c778eb67db97f0b99?narHash=sha256-Keu8z5VgT5gnCF4pmB%2Bg7XZFftHpfl4qOn7nqBcywdE%3D' (2024-12-16)
• Updated input 'hyprland/xdph':
    'github:hyprwm/xdg-desktop-portal-hyprland/fd85ef39369f95eed67fdf3f025e86916edeea2f?narHash=sha256-NetqJHAN4bbZDQADvpep%2BwXk2AbMZ2bN6tINz8Kpz6M%3D' (2024-12-02)
  → 'github:hyprwm/xdg-desktop-portal-hyprland/3e884d941ca819c1f2e50df8bdae0debded1ed87?narHash=sha256-0y7DRaXslhfqVKV8a/talYTYAe2NHOQhMZG7KMNRCtc%3D' (2024-12-17)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/2530394e67b436f4aea8225111cf37c1403ccb78?narHash=sha256-5gCIIiQT9JlBPO1M98j1Aaboa2CTKtwBqiksCLf6qC0%3D' (2024-12-04)
  → 'github:hyprwm/hyprland-plugins/179fab73cd399982f5d37389fb307497eb65be45?narHash=sha256-i4dNTT6yR6Ob2hSMHOShm91zACUGzwMR8cdmIkPHiOY%3D' (2024-12-17)
• Updated input 'music-reader':
    'git+https://gitlab.julian-mutter.de/julian/music-reader?ref=refs/heads/master&rev=b7a1a6c07e7fd4235bbd00a66c727ff2fb3de841' (2024-12-08)
  → 'git+https://gitlab.julian-mutter.de/julian/music-reader?ref=refs/heads/master&rev=d63eb2b9d1aeef1d143bafd7706cd7ba45dc823d' (2024-12-08)
• Updated input 'nix-ld':
    'github:Mic92/nix-ld/1e17dfe486a0c4dc245f5177a7328930b8392b34?narHash=sha256-pVogdQb09YrbVyFrzadfF1fseT6W2We4lNKRvWPPHsY%3D' (2024-12-02)
  → 'github:Mic92/nix-ld/911665df070e3d6c970e5a248fc4a38550bd5689?narHash=sha256-BpJs2QnVwdE4Btsx2BcBmdsq86H7QJYv2GmoOkr1ii4%3D' (2024-12-16)
• Updated input 'nix-matlab':
    'gitlab:doronbehar/nix-matlab/61df20fe5adb6c227389ca81817732b47cc21db9?narHash=sha256-4SkYrx9BEeqI4OFW1W/5Ra67FM4piVAKkdv3tnMa6fc%3D' (2024-12-07)
  → 'gitlab:doronbehar/nix-matlab/45bd1ee7d0c4ca58fff29b0fe4f438faaa097d33?narHash=sha256-MxBgCrzGbG3P1fnAAaiwfGURAaZlRJnmE3uvbYtYcgU%3D' (2024-12-16)
• Updated input 'nix-topology':
    'github:oddlama/nix-topology/2b107e98bbde932a363874e0ef5b1739a932bbc5?narHash=sha256-xQO/3I99TFdiXTN5VoS28NpbNlCQWQUvxmPQHlfkzmU%3D' (2024-11-21)
  → 'github:oddlama/nix-topology/ba6f61e594a85eabebf1c8f373923b59b3b07448?narHash=sha256-k9P9Sa6jw/Xre8UDp7Ukk75h4Tcq8ZrK%2Bnz6A2MC1IM%3D' (2024-12-15)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/e563803af3526852b6b1d77107a81908c66a9fcf?narHash=sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is%3D' (2024-12-06)
  → 'github:NixOS/nixos-hardware/b12e314726a4226298fe82776b4baeaa7bcf3dcd?narHash=sha256-mfv%2BJ/vO4nqmIOlq8Y1rRW8hVsGH3M%2BI2ESMjhuebDs%3D' (2024-12-16)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/4dc2fc4e62dbf62b84132fe526356fbac7b03541?narHash=sha256-FillH0qdWDt/nlO6ED7h4cmN%2BG9uXwGjwmCnHs0QVYM%3D' (2024-12-05)
  → 'github:nixos/nixpkgs/394571358ce82dff7411395829aa6a3aad45b907?narHash=sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE%3D' (2024-12-16)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/4dc2fc4e62dbf62b84132fe526356fbac7b03541?narHash=sha256-FillH0qdWDt/nlO6ED7h4cmN%2BG9uXwGjwmCnHs0QVYM%3D' (2024-12-05)
  → 'github:nixos/nixpkgs/394571358ce82dff7411395829aa6a3aad45b907?narHash=sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE%3D' (2024-12-16)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/22c3f2cf41a0e70184334a958e6b124fb0ce3e01?narHash=sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY%3D' (2024-12-07)
  → 'github:nixos/nixpkgs/d3c42f187194c26d9f0309a8ecc469d6c878ce33?narHash=sha256-cHar1vqHOOyC7f1%2BtVycPoWTfKIaqkoe1Q6TnKzuti4%3D' (2024-12-17)
• Updated input 'nixvim':
    'github:nix-community/nixvim/6395b9c013ba4de734334e5c927dec529e810d72?narHash=sha256-oJxMWR29rBT5howN587lMy6nKOiISyrfSJZg4gXPobc%3D' (2024-12-08)
  → 'github:nix-community/nixvim/4f0d5e0d2947dbf111f2ce00c99ca4c6c659dc79?narHash=sha256-APyzO3pn6iiGJxkWczifnxm3pKZrNYgpJUPpnVfUwsk%3D' (2024-12-17)
• Updated input 'nixvim/git-hooks':
    'github:cachix/git-hooks.nix/6f4e2a2112050951a314d2733a994fbab94864c6?narHash=sha256-SVQVsbafSM1dJ4fpgyBqLZ%2BLft%2BjcQuMtEL3lQWx2Sk%3D' (2024-12-04)
  → 'github:cachix/git-hooks.nix/d8c02f0ffef0ef39f6063731fc539d8c71eb463a?narHash=sha256-%2BXTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd%2Blh2A%3D' (2024-12-08)
• Updated input 'nixvim/home-manager':
    'github:nix-community/home-manager/c7ffc9727d115e433fd884a62dc164b587ff651d?narHash=sha256-zjO6m5BqxXIyjrnUziAzk4%2BT4VleqjstNudSqWcpsHI%3D' (2024-12-07)
  → 'github:nix-community/home-manager/1318c3f3b068cdcea922fa7c1a0a1f0c96c22f5f?narHash=sha256-Zb5ZCa7Xj%2B0gy5XVXINTSr71fCfAv%2BIKtmIXNrykT54%3D' (2024-12-11)
• Updated input 'nixvim/nuschtosSearch':
    'github:NuschtOS/search/68e9fad70d95d08156cf10a030bd39487bed8ffe?narHash=sha256-315rJ7O9cOllPDaFscnJhcMleORHbxon0Kq9LAKJ5p4%3D' (2024-12-05)
  → 'github:NuschtOS/search/3051be7f403bff1d1d380e4612f0c70675b44fc9?narHash=sha256-Y47y%2BLesOCkJaLvj%2BdI/Oa6FAKj/T9sKVKDXLNsViPw%3D' (2024-12-09)
• Updated input 'nixvim/treefmt-nix':
    'github:numtide/treefmt-nix/50862ba6a8a0255b87377b9d2d4565e96f29b410?narHash=sha256-qKL3vjO%2BIXFQ0nTinFDqNq/sbbnnS5bMI1y0xX215fU%3D' (2024-12-05)
  → 'github:numtide/treefmt-nix/0ce9d149d99bc383d1f2d85f31f6ebd146e46085?narHash=sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ%3D' (2024-12-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c6134b6fff6bda95a1ac872a2a9d5f32e3c37856?narHash=sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc%3D' (2024-12-02)
  → 'github:Mic92/sops-nix/2d73fc6ac4eba4b9a83d3cb8275096fbb7ab4004?narHash=sha256-GZ4YtqkfyTjJFVCub5yAFWsHknG1nS/zfk7MuHht4Fs%3D' (2024-12-12)
2024-12-18 15:18:13 +01:00
26b92b38cb change flake input format 2024-12-08 23:02:16 +01:00
fe6df7942a Add hydraJobs to flake outputs 2024-12-08 22:32:35 +01:00
4eddc7fc67 Update flake 2024-12-08 22:32:13 +01:00
397b6bad7c v3ms: add mysql80 package 2024-12-02 10:43:07 +01:00
94bdd188d0 Update flake 2024-12-02 08:45:33 +01:00
6a047746c1 Yazi update shellAlias from ya to yy 2024-12-02 08:45:13 +01:00
1f3693359f Add config option to make terminal the default 2024-12-02 08:44:55 +01:00
ba70fd8553 Upgrade to nixos 24.11 2024-12-01 21:31:06 +01:00
bb48cf3ad0 update config of the builder module 2024-12-01 19:10:29 +01:00
84b1a60fea builder: try gpu computing but GPU doesnt support it 2024-12-01 19:02:57 +01:00
a38299888f pianonix: remove unneeded hardware config 2024-12-01 19:00:53 +01:00
425c8f8e4f Pianonix: fix screen going to sleep mode 2024-12-01 19:00:29 +01:00
b0acc7178d Setup VNC server on pianonix 2024-12-01 18:09:56 +01:00
4266574fa6 Add pob-dev-version package 2024-12-01 14:35:17 +01:00
6f595a97ec deploy-rs for builder: use remote building 2024-11-29 22:03:59 +01:00
d03b0e285c Make sops use disabled by default 2024-11-29 21:51:13 +01:00
65e4352f56 Rename nix-builder to builder 2024-11-29 21:44:13 +01:00
38cac91b71 Clean up builder config, add deploy-rs setup for builder 2024-11-29 21:34:50 +01:00
ede33b5207 Add docker-compose to development suite 2024-11-29 21:34:28 +01:00
ee90af96c3 Update flake 2024-11-29 21:34:16 +01:00
b422e9d092 aspi: a try to implement kerberos 2024-11-26 14:08:04 +01:00
94eebc86b9 aspi: add mdns (only listening) and disable manCache generation 2024-11-26 14:07:27 +01:00
e3e582543a Fix hyprshot-gui buildInput packages 2024-11-26 14:06:30 +01:00
c6f4f651e1 Add overlay for packages from flakes 2024-11-26 14:06:18 +01:00
e00ccffa99 Update syncthing mixos module 2024-11-26 14:06:06 +01:00
cc5545f7ad Add packages to development suite 2024-11-26 14:05:26 +01:00
4aacdc1ee4 Update sops config 2024-11-26 14:05:15 +01:00
6bfa5e0b73 Make pianonix work 2024-11-26 14:03:41 +01:00
b0a22014c3 Massive changes to pianonix 2024-11-24 08:33:31 +01:00
eb66634f44 Update flake 2024-11-24 07:37:56 +01:00
8e36dc50c7 Separate hm suites into separate files 2024-11-24 07:37:36 +01:00
b3e3352429 Update flake 2024-11-19 09:46:09 +01:00
c6510643c1 Fix home-manager direnv config 2024-11-13 14:35:02 +01:00
5d82010697 Add c++ lsp to emacs packages 2024-11-11 10:43:34 +01:00
e9f97ae91b Add typst to v3ms 2024-11-11 10:38:11 +01:00
65fbce48d4 Add devcontainer to programs 2024-10-29 09:30:54 +01:00
bf231396ff Remove commented out code 2024-10-27 11:48:45 +01:00
16f2344aa0 Update flake and config syntax 2024-10-27 11:48:25 +01:00
7718fb4118 Switch to using nixvim and setup full config 2024-10-26 13:44:29 +02:00
63a548d6b9 Add nix lsp 2024-10-24 08:22:46 +02:00
dd1b0aae5a Enable fonts module on aspi and kardorf 2024-10-15 21:28:01 +02:00
bb7b0f36c3 Uninstall geogebra to fix "icon not found" 2024-10-12 13:30:29 +02:00
dfba89af68 Fix kardorf boot config 2024-10-12 13:30:29 +02:00
7298c76c48 Update flake 2024-10-12 13:30:29 +02:00
23f51db3a5 Outsource aspi and kardorf hm-configs to modules 2024-10-09 16:10:19 +02:00
6894cd7539 Fix config bugs 2024-10-09 15:33:06 +02:00
d5ca488864 Make redshift nixos module 2024-10-09 15:28:41 +02:00
9dfe8aa9f2 Move common aspi and kardorf nixos-config to modules 2024-10-09 15:22:18 +02:00
c4454d7711 Use unstable path-of-building 2024-10-08 11:54:49 +02:00
57e17face2 i3: Assign nheko to ws9 2024-10-08 11:54:37 +02:00
d683f1f574 Go back to stable nixpkgs and i3
I hereby declare bancruptcy :(
2024-10-06 18:24:16 +02:00
2572513c44 Do not configure neovim via nix, use lazyvim instead 2024-10-06 17:55:21 +02:00
3baf2453f2 Add conda-direnv package 2024-10-06 17:54:46 +02:00
8457523518 Update config to use updated variable names 2024-10-06 17:10:48 +02:00
84420e427e Use LATEST hyprland 2024-10-06 17:10:32 +02:00
9bc392818f Use kitty instead of wezterm 2024-10-06 14:44:28 +02:00
0ee158677a Remove hardcoded "hyprland" from tuigreet 2024-10-06 14:21:17 +02:00
1fe8d17523 Remove prism 2024-10-06 14:14:49 +02:00
5500164669 Reformat emacs config 2024-10-06 14:14:23 +02:00
f07ab92268 Living on nixpkgs unstable now 2024-10-06 14:13:12 +02:00
f19ce21672 waybar: improve color of active workspace 2024-10-06 08:05:27 +02:00
5d5096f452 Delet unused style files 2024-10-06 08:05:12 +02:00
2f14aa1e9b Add mimeapps management file but not use it 2024-10-05 23:31:28 +02:00
42b5dfeee7 improve sessionVariable declaration
Without this, on wayland I cannot access these vars from the Terminal
2024-10-05 22:03:36 +02:00
7f73da037b Delete unused greetd module 2024-10-05 21:56:16 +02:00
f05eae5b83 Clean up gdm config and disable gdm 2024-10-05 21:56:06 +02:00
739901d174 Add tuigreet module 2024-10-05 21:55:29 +02:00
7b4d461ba1 wayland: use hyprshot-gui instead of grimblast 2024-10-05 21:54:33 +02:00
e55af69ed3 Make hyprland look nicer 2024-10-05 19:04:44 +02:00
ac7e7a16d8 Create lntocp script, install watchexec 2024-10-05 18:36:10 +02:00
a79c1a9af8 Make waybar look nice 2024-10-05 18:36:10 +02:00
63dc618f6d mako: fix default notification timeout 2024-10-05 18:36:10 +02:00
7d10c8e7d2 Make new nixos i3 config file 2024-10-05 18:36:10 +02:00
7254e9a6e2 Increase boot configuration limit 2024-10-05 18:36:10 +02:00
ae0f6ec0ef Make wezterm work on hyprland 2024-10-05 18:36:10 +02:00
f1be4c1fc5 Switch to hyprland 2024-10-05 18:36:10 +02:00
37421bcc12 Update flake 2024-10-05 18:36:10 +02:00
e3eaebf08d Move x11 config into separate file 2024-10-05 18:36:10 +02:00
ce68c8c03e v3ms: removing syncthing
systemd not supported on wsl
2024-09-27 11:32:24 +02:00
75180f3073 aspi: remove wine 2024-09-27 08:32:29 +02:00
02286ffd55 Update flake 2024-09-27 08:30:52 +02:00
20315c425a v3ms: add syncthing 2024-09-27 08:30:32 +02:00
3a72c32e89 Update flake 2024-09-25 08:35:02 +02:00
964b03fedc Make wezterm start in cwd 2024-09-25 08:34:49 +02:00
3ac5c39f8f aspi: use wezterm instead of kitty 2024-09-22 19:34:37 +02:00
a9f322d48c Move yazi alias to yazi config file 2024-09-15 18:47:00 +02:00
7bd942e753 Use unstable path-of-building 2024-09-09 18:16:23 +02:00
6a70e105d4 topgrade: update home-manager using flake file 2024-09-08 21:57:51 +02:00
f123ef3bbf Update flake 2024-09-08 21:57:28 +02:00
f0e000795b First setup of v3ms config 2024-09-04 15:43:05 +02:00
c70c32150e Add doom git repo to topgrade config 2024-09-01 20:09:07 +02:00
38c60612fd Again fix audio on aspi. Now really working 2024-09-01 19:59:41 +02:00
ce336d469a Finally truly fix audio on aspi 2024-09-01 12:00:42 +02:00
12ef77dc6c Update flake, remove unnecessary inputs 2024-09-01 11:29:41 +02:00
bafaac437d update flake 2024-08-01 08:46:52 +02:00
71f618dd67 aspi: fix soundcard not detected 2024-08-01 08:46:43 +02:00
068d0ef29f Update flake 2024-07-22 19:36:15 +02:00
55a99ee8f0 aspi: remove rustdesk since git repo not found 2024-07-22 19:29:54 +02:00
52d18a279d Install texlive needed for inkscape 2024-07-22 19:23:48 +02:00
e07603e127 Update flake 2024-07-21 09:12:13 +02:00
5e3a0f0908 Kardorf: make use of new modules 2024-07-21 09:11:44 +02:00
80bdd2314a Change "g" alias to use lazygit 2024-07-05 09:37:32 +02:00
fa093e644e Update flake 2024-07-05 09:25:49 +02:00
3189483bd2 Finally disable bell sound 2024-07-03 13:27:43 +02:00
0478dae702 Update flake 2024-07-03 13:11:27 +02:00
68d875dec7 Fix imagemagick with pdf 2024-07-03 13:11:19 +02:00
18176bf959 Change from thunar to pcmanfm
thunar failed to find default applications and also default terminal to
open was dependend on xfce settings
2024-07-03 13:10:35 +02:00
740f7a5ca5 Fix typo and disable bell sound 2024-06-28 08:44:21 +02:00
5f0e729d9f Add pkg-config package to aspi 2024-06-28 08:41:49 +02:00
d14ba88542 Enable building for aarch64-linux 2024-06-28 08:41:38 +02:00
a4ef9a9c63 Add syncthing tray 2024-06-28 08:41:30 +02:00
0af98663f7 Fix syncthing 2024-06-26 13:26:15 +02:00
c050f62249 Remove unneded shell aliases 2024-06-26 12:04:58 +02:00
6f0cf875d6 i3: add pulseaudio package as requirement and fix default terminal 2024-06-26 12:03:51 +02:00
cb032a9862 Add nh shell aliases 2024-06-26 12:03:38 +02:00
80209213a6 Install kitty and yazi 2024-06-26 12:03:20 +02:00
15ea2fa7fe Remove unneeded packages 2024-06-24 18:49:39 +02:00
6211e1dd0d Disable laptop "beep" via kernel module 2024-06-24 18:49:23 +02:00
fa882cb478 Add xwacomcalibrate as package 2024-06-24 18:49:13 +02:00
fd1f22302f Fix nixos warnings after update 2024-06-23 14:35:19 +02:00
d3d1dd5cce Modify topgrade to work on nixos with flakes 2024-06-23 14:30:46 +02:00
a314cd3734 Remove redundant rust installation 2024-06-23 14:30:12 +02:00
795e33d49b Update flake.lock 2024-06-23 14:30:03 +02:00
10fb2838af Remove jitsi-meet since browser version works better 2024-06-22 11:08:05 +02:00
30c88f50af Enable libinput for touchpad middle click emulation 2024-06-22 11:01:15 +02:00
b0d9425f78 Install jitsi 2024-06-22 11:01:03 +02:00
d38fc83a19 Disable dpms 2024-06-20 22:56:19 +02:00
6195e6e540 Install chromium with tampermonkey 2024-06-20 20:47:46 +02:00
d2e49a578a Make syncthing work 2024-06-20 20:30:02 +02:00
8cee271d91 Improve / fix screen lock and brightness buttons 2024-06-19 23:42:33 +02:00
05e71d800d let hm manage xsession to make .profile unnecessary 2024-06-19 21:11:40 +02:00
294e40987c Re-migrate to i3 (x11) 2024-06-19 11:44:36 +02:00
98ac550582 Add some packages 2024-06-19 10:53:53 +02:00
c84146f761 Put functionalities into modules 2024-06-19 10:53:36 +02:00
8f5e73e7f6 Move syncthing config to home manager 2024-06-17 22:15:05 +02:00
cec09d6e0f Remove unneeded hyprland desktop-portal 2024-06-17 21:26:11 +02:00
6ca47776b1 Make tray menu look nice (accessible) 2024-06-17 21:03:10 +02:00
d28f12650d Fix thunar installation, some config cleanup 2024-06-17 21:02:55 +02:00
9d2560c065 Rescale waybar 2024-06-15 23:44:10 +02:00
9166cb844c hyprland: make matlab not floating 2024-06-15 21:47:08 +02:00
4517da8b3d Install wl-clipboard as system package 2024-06-15 21:46:47 +02:00
3daef8835f Mako add message timeout 2024-06-15 20:57:42 +02:00
4756b614db Add hyprbars to hyprland 2024-06-15 20:57:34 +02:00
971125f434 More hyprland optimizations 2024-06-15 20:06:48 +02:00
5233a7960b Fix typo in mako config 2024-06-15 19:34:40 +02:00
0197faa345 Reformat emacs config 2024-06-15 19:33:19 +02:00
5839002d3c hyprland config clean up 2024-06-15 19:32:59 +02:00
ea305e701c implement mako via home manager service 2024-06-15 19:32:38 +02:00
43cabd5a62 Change TERMINAL var to be available also to emacs 2024-06-15 19:32:15 +02:00
b499c581d0 Add expenses-tracker script 2024-06-15 18:48:34 +02:00
5fd792084c Revert wlogout styling and config to default 2024-06-15 14:27:57 +02:00
6b305a59d7 Merge branch 'my-base' 2024-06-15 14:23:53 +02:00
d2a8129a20 Revert "Add all of iogamaster modules"
This reverts commit fa99b32cadd768164006629dbde5cdee1863e0d5.
2024-06-15 14:23:44 +02:00
8134c4bcc3 Wofi: also show run 2024-06-15 14:20:17 +02:00
83385a638f Modify waybar 2024-06-15 13:54:37 +02:00
baf240c27d Switch from gtklock to hyprlock 2024-06-15 12:43:34 +02:00
a9d0e298b3 Port iogamasters hyprland config 2024-06-15 12:17:52 +02:00
fa99b32cad Add all of iogamaster modules 2024-06-15 10:02:14 +02:00
c97f22254a Add flake inputs used by iogamaster 2024-06-15 08:27:28 +02:00
ecc269ae37 Fix config problems mainly with pianonix 2024-06-15 08:27:10 +02:00
603d84c03b Change open-messaging order 2024-06-14 09:47:35 +02:00
e974145390 Add media keys to hyprland 2024-06-14 09:46:12 +02:00
e19a2e81cd FINALLY FIX GPARTED 2024-06-14 09:46:01 +02:00
98644d2e2f Fix and augment hyprland compositor commands 2024-06-14 00:01:51 +02:00
e4d776c921 waybar: allow volume to go to 200% 2024-06-13 23:47:43 +02:00
0d22026d81 Add gammastep, make waybar acceptable 2024-06-13 23:43:13 +02:00
c3f9cf2e5e install qtwayland 2024-06-13 22:25:01 +02:00
c45d7b19f8 add hypridle 2024-06-13 22:24:53 +02:00
60dae66fd1 Configure hyprlock, work on waybar 2024-06-13 22:08:05 +02:00
49cfa7c50d Try fix keyring, add matlab opening scripts 2024-06-13 16:51:32 +02:00
084100c557 More hyprland setup, add waybar 2024-06-13 16:30:12 +02:00
a0fe904d6c Setup first working hyprland setup 2024-06-13 14:06:21 +02:00
2ab74d5f7a aspi: fix keyring, make wg-quick start on boot 2024-06-12 23:41:28 +02:00
3d59481c9d Deactivate sops to make aspi installation work 2024-06-12 22:49:51 +02:00
a6043713c9 aspi: add more packages to make nixos installation work 2024-06-12 22:47:58 +02:00
Julian Mutter
692c22d94c aspi hardware-config: add luks config 2024-06-12 20:48:52 +02:00
Julian Mutter
6ced2ac625 Added hardware config of aspi 2024-06-12 20:34:49 +02:00
576c76f158 Use nheko instead of element 2024-06-12 19:50:14 +02:00
ff40093b83 Add aspi system, use sops 2024-06-12 19:29:50 +02:00
061f196afc Add install script from iogamaster 2024-06-09 21:09:19 +02:00
9dc0377a77 more improvements 2024-06-09 09:42:08 +02:00
35e84fade2 Add more scripts, more cleanup 2024-06-09 09:33:23 +02:00
4e8291bb14 Add pianonix, create modules and augment others 2024-06-09 08:43:32 +02:00
8ef5530145 make element default messenger in scripts 2024-06-06 14:55:41 +02:00
9f081ee5ed Update option namings after nix update 2024-06-06 11:23:29 +02:00
f8da075e2f Switch from schildi to element 2024-06-06 11:20:01 +02:00
24b079937c kardorf: fix i3 config file path option 2024-06-06 11:17:43 +02:00
bed82ccb1e Adapt fzf-z to allow comma values returned from z 2024-06-04 20:04:43 +02:00
aa6f69881d Fix topgrade and nixfmt after nix update 2024-06-04 19:09:05 +02:00
d6012dd334 update to nios-24.05 2024-06-04 18:46:46 +02:00
eec0966902 update deploy-to-pianopi to accept new flake outputs 2024-05-29 10:18:05 +02:00
e9639a9b98 nix-builder add ollama 2024-05-29 10:17:53 +02:00
645f206821 i3: remove zoom workspace assignment 2024-05-29 10:17:39 +02:00
370ebe95a8 Make rust use unstable, format code 2024-05-29 10:17:18 +02:00
a64c867c98 i3: remove rocket chat from messaging setup 2024-05-25 14:09:37 +02:00
57e5efe554 aspi: Add nix helper (nh) 2024-04-18 08:58:02 +02:00
cdfafa6a3b Update flake inputs 2024-04-18 08:57:51 +02:00
8df932f60a Improve readme 2024-04-17 08:25:42 +02:00
5db8dc4373 Add miniconda to path 2024-04-17 08:22:08 +02:00
7a22b9daca Update flake 2024-04-17 08:21:59 +02:00
49838d3808 Add unstable overlay 2024-04-17 08:21:53 +02:00
1ffd0463bd Fix fzf-z result order (invert) 2024-04-11 07:36:46 +02:00
7e0986f5d3 edit-config allow calling without params 2024-04-09 11:37:44 +02:00
37c1c7a841 Improve/fix installDoomEmacs activation script 2024-04-09 11:31:07 +02:00
c8861a613b aspi: use fish instead of zsh 2024-04-09 11:30:53 +02:00
e9f2fcc3bf update flake.lock 2024-04-09 09:58:46 +02:00
4981aef6c9 Fix home-manager on kardorf 2024-03-21 12:11:37 +01:00
05fdf2ca38 Add config for nix-builder 2024-03-21 12:11:23 +01:00
8af2406e51 Fix direnv not available 2024-03-19 11:27:46 +01:00
3af3ced9f5 emacs: move config to separate git repo 2024-03-19 11:05:09 +01:00
915a821e12 fish: fix last-working-dir function 2024-03-19 09:09:11 +01:00
b35c87b4d6 Migrate from zsh to fish 2024-03-18 17:04:37 +01:00
fdd53faa62 kardorf: more migration from nixos to home-manager 2024-03-18 15:09:36 +01:00
4f0fe50d0a kardorf: Add nix-ld 2024-03-18 12:17:46 +01:00
341d1cbb4b Fully migrate kardorf config 2024-03-18 12:15:32 +01:00
aaa2f73332 doom: add languagetool 2024-03-15 08:59:28 +01:00
cf2f13f629 Update flake at home-manager generation 185 2024-03-15 08:57:16 +01:00
2a4571a752 Update flake at home-manager generation 174 2024-03-11 18:19:48 +01:00
84680a5793 Make home-update-flake a script in scripts git 2024-03-06 15:41:18 +01:00
5d8219dba1 Update flake at home-manager generation 174 2024-03-06 15:40:56 +01:00
87a5774ce6 alias fzf-z to 'c' (short for 'cd') 2024-03-04 18:24:53 +01:00
6d59bf0b43 Remove ctrl-z keybinding for alacritty 2024-03-04 18:22:16 +01:00
451176350f update flake 2024-03-04 18:22:01 +01:00
e5ed273561 topgrade: Add script to update flake and continue on failed step 2024-02-29 10:31:28 +01:00
a565b20c30 Update flake at home-manager generation 165 2024-02-29 10:24:11 +01:00
cdd1f3240c doom: use default display time format again 2024-02-27 16:30:05 +01:00
5e0ff7ffa7 zsh: add function as nix run alias 2024-02-08 20:08:42 +01:00
e39c13f9f8 laptop: use remote builder for aarch64 as well 2024-02-04 08:32:14 +01:00
d3eb1420c1 emacs: use company quick help 2024-02-04 08:32:00 +01:00
8f1e166f88 topgrade: use pre_sudo and assume_yes 2024-02-04 08:31:31 +01:00
1627cc51b6 Add edit-config script to quickly edit dotfiles 2024-02-04 08:31:16 +01:00
f35b2e8304 Fix pianopi deploy script 2024-02-01 22:36:13 +01:00
820574addf Fix namespace misspelling 2024-02-01 20:45:12 +01:00
0e205a96d9 add nixpkgs override to allow unfree packages 2024-02-01 20:20:58 +01:00
7b32822a32 add default snowflake lib and shell as example 2024-02-01 20:20:42 +01:00
fb79b29fa2 add deploy-to-pianopi script as snowfall package 2024-02-01 20:20:01 +01:00
d50f957b2e fix open-messagin script 2024-02-01 16:55:54 +01:00
5de7265797 explain home-manager config selection (hostname) 2024-02-01 14:12:54 +01:00
13db191cc6 fix rofi not showing on i3 2024-02-01 13:48:05 +01:00
d2ee41eace Move i3 to home-manager 2024-02-01 13:35:23 +01:00
1f818e291e Delete unused emacs, i3blocks and zsh config 2024-02-01 13:28:46 +01:00
607ac75200 Move i3 config to home module folder 2024-02-01 13:28:29 +01:00
0cf00f5fbf Move rofi and emacs to home config 2024-02-01 13:27:30 +01:00
b04a523645 make module imports like recommended by snowfall 2024-02-01 12:52:59 +01:00
5455cdc00e move module template to modules directory 2024-02-01 12:48:27 +01:00
293e76e8cc Deleted configs already migrated to nix 2024-02-01 12:45:48 +01:00
5a870ff3d6 delete unused leftwm and xmonad configs 2024-02-01 12:44:36 +01:00
67d23bcd9e major restructuring for using snowfall 2024-02-01 12:43:47 +01:00
d8e53f1f78 use snowfall 2024-02-01 12:28:31 +01:00
c2e80ffddd zsh: improve config to make it more oh-my-zsh like 2024-01-31 11:57:54 +01:00
eb8601d2ac fix .profile being linked twice 2024-01-30 19:31:32 +01:00
9a446de39e Merge remote-tracking branch 'origin/master' 2024-01-30 19:30:48 +01:00
a0b76af476 home: start migrating i3 configs - not finished 2024-01-30 19:30:31 +01:00
fe6a8acb12 home: start migrating i3 configs - not finished 2024-01-30 19:29:47 +01:00
fd6cd027fc home: automatically find and all all module files 2024-01-30 10:21:12 +01:00
900d07ae77 move alacritty to separate home module 2024-01-30 09:33:43 +01:00
30948764c6 move neovim to separate module 2024-01-30 09:27:02 +01:00
34ea520910 vim: make neovim use system clipboard 2024-01-30 09:24:21 +01:00
23f1283399 zsh: fix weird Alt+direction alacritty behaviour 2024-01-30 09:20:48 +01:00
6b823a06eb home: add topgrade module 2024-01-29 08:05:33 +01:00
29d6b63382 home: move zsh and direnv to new modules 2024-01-28 12:33:14 +01:00
60ccfeaf39 Migrate zsh and starship configs to home-manager 2024-01-28 02:51:28 +01:00
8dbb044f0b emacs: do not use childframe anymore
When mouse accidentally hovered above I always lost keyboard focus of
the childframe
2024-01-27 11:08:46 +01:00
39a25de657 emacs: remove dart lsp since its unnecessary 2024-01-27 11:07:22 +01:00
eafd193306 Migrate nvim from dotter to home-manager 2024-01-27 10:59:10 +01:00
ec6be592cb Migrate alacritty conf from dotter to home-manager 2024-01-26 13:33:38 +01:00
bb4a758182 home: move flake to root of directory
Reason is that I cannot reference any file (also in home.file) which is
located above (../) the flake file
2024-01-26 13:29:50 +01:00
e4d5b6854c home: move laptop nix config to dotfiles 2024-01-26 12:54:10 +01:00
ffc6c8fa45 home: clean up config 2024-01-26 12:37:18 +01:00
15a27c4607 home: clean up flake 2024-01-26 12:34:39 +01:00
548b1ac34f Add home-manager config from laptop 2024-01-26 12:33:59 +01:00
1b05d9051b alacritty: change config to toml and shorten it 2024-01-26 11:39:24 +01:00
6b9801b7f2 doom: Clean up config 2024-01-26 11:38:00 +01:00
77fee14469 doom: move config to .el format 2024-01-26 10:20:51 +01:00
10524de915 doom: add projectile repeat shortcut (f5) 2024-01-16 22:44:02 +01:00
619d3f9a45 Implement distributed builder 2024-01-06 22:51:49 +01:00
b49b6263d3 doom: make C-S shortcut again escape from insert mode 2023-12-13 16:01:18 +01:00
7b4ddfe7e5 doom: change date formatting to german 2023-12-11 19:56:48 +01:00
4cc2834027 Fix autoformat in org mode opening dialogue
Now every saving by default formats the buffer, only using :w skips that
2023-12-03 19:55:06 +01:00
f47ecce302 nix: Update 2023-10-29 22:11:18 +01:00
ee0b3cd654 i3: Move laptop tray outpt 2023-10-19 16:01:05 +02:00
18bd2e4d1d nix: add more programs 2023-10-09 16:22:32 +02:00
8e8e400eb8 nix: add programs 2023-10-02 12:44:54 +02:00
0650ab3e9c nix: update 2023-10-02 12:26:29 +02:00
c3f69e0b0c doom: add direnv, fix format on save 2023-10-02 12:26:09 +02:00
64cf4835cf nix: use dark gtk theme 2023-09-21 11:24:32 +02:00
37b5eafb42 nix: use unstable and add home-manager 2023-09-21 11:10:43 +02:00
627b92a611 nix: add gimp and update 2023-09-21 08:40:17 +02:00
1fe29f7da0 emacs: improve format on save function 2023-09-17 19:32:59 +02:00
c21d249e75 nix: update and add packages 2023-09-17 19:22:09 +02:00
3e1a18e2e1 Change displays 2023-09-13 15:30:12 +02:00
d399e8e64e nix: add imagemagick 2023-09-06 09:53:36 +02:00
72d15c0c34 nix: update and add packages 2023-09-04 00:17:28 +02:00
a13984babc nix: add swapfile 2023-08-31 10:15:26 +02:00
8c800ed66e Setup nix on new SSD 2023-08-31 09:36:57 +02:00
90a6060978 nix: add matlab 2023-08-28 09:28:20 +02:00
76c4c3acc5 nix: add okular pdf viewer 2023-08-27 19:13:57 +02:00
c9713e83b9 Add better languagetool implementation to emacs 2023-08-27 18:27:57 +02:00
3ae6dac93b home pc setup 2023-08-27 15:28:33 +02:00
86d4757595 Tried grammarly and ltex 2023-08-27 15:24:11 +02:00
b21b5fa4c0 nix: add redshift 2023-07-29 06:28:59 +02:00
12e54f5cfc nix: mor changes to adapt to laptop 2023-07-28 09:00:21 +02:00
fce2e066b0 i3: assign zotero to ws8 2023-07-28 07:54:40 +02:00
79aa2a06cd nix: install zotero 2023-07-28 07:19:32 +02:00
83bf3f21d5 nix: setup syncthing, adapt open-messaging script 2023-07-28 06:52:36 +02:00
1e1fa989d9 nix: update 2023-07-28 06:23:15 +02:00
b92f37ae77 Fix changed name of pamac-manager class 2023-07-16 15:28:56 +02:00
ea9563282f emacs: improve latex and pomodoro 2023-07-14 11:10:02 +02:00
8d643901cd i3: improve keybindings 2023-07-08 20:37:02 +02:00
bd390aac46 Add nix packages to desktop files 2023-07-03 06:33:53 +02:00
96b24c071e i3: make gcolor3 floating by default 2023-06-29 18:30:39 +02:00
7c63a2c148 emacs: improve org note handline 2023-06-27 10:31:16 +02:00
b6c9946cd9 emacs: customize org clocking 2023-06-22 09:36:19 +02:00
69e5d4f1cd add acer-battery-health-mode script 2023-06-20 22:27:35 +02:00
839f24113a emacs: do not show non clocked files in org agenda clockreport 2023-06-20 10:51:42 +02:00
b44f8f0117 nix: update and enable xfce 2023-06-18 11:18:15 +02:00
8583a4c187 vim: Yank always to clipboard 2023-06-15 17:08:42 +02:00
391948eb27 i3: use redshift, clipit and schildichat from flatpak 2023-06-15 17:08:16 +02:00
2f0fa12da4 nix: update and add wolfi user 2023-06-11 10:18:23 +02:00
df3bbbd763 emacs: make winum selection easier with better shortcuts 2023-05-31 21:20:14 +02:00
847d14aa33 emacs: add popup toggle shortcut 2023-05-31 20:11:23 +02:00
01f07fbe03 i3: show battery percentage if not charging 2023-05-25 13:09:00 +02:00
18c9babaef emacs: save buffer on clocking and add bachelor capture template 2023-05-25 13:07:08 +02:00
de79477a1f emacs: open pdfs in external reader, disable writegood mode 2023-05-22 10:33:13 +02:00
185e20fe1a emacs: clean up config 2023-05-11 14:44:03 +02:00
e13f9ec3a3 i3: disable emacs as daemon 2023-05-11 14:16:45 +02:00
b29168f894 i3: run emacs as daemon 2023-05-11 13:52:55 +02:00
9e2aa4d2e9 emacs: include eshell, vterm and python notebook support 2023-05-09 12:10:13 +02:00
e0e6a5d6e0 i3: use xfce4-clipman as clipboard manager 2023-05-09 12:09:39 +02:00
ba6866c509 emacs: Adapt org capture templates 2023-04-26 21:14:22 +02:00
589320a4bb i3: change open-messaging script to also open rocketchat 2023-04-26 09:03:22 +02:00
689cfdfcf6 emacs: change bibliography file path 2023-04-26 09:02:01 +02:00
ddf87f226f laptop: fixes for compability with kardorf 2023-04-16 20:02:35 +02:00
b9ea4521d1 i3: fix i3status-rust config file 2023-04-14 14:22:31 +02:00
fcdcd439ac i3: fix i3status-rust config file 2023-04-14 13:54:42 +02:00
e3b1ee2b2f nix: add flake result to gitignore 2023-04-14 13:52:02 +02:00
b41adf3d55 nix: add printing, browsers, update 2023-04-14 13:51:15 +02:00
c72a434f70 nix: add packages 2023-03-28 14:21:27 +02:00
05fee51dc8 emacs: Add inventory functions 2023-03-28 14:21:15 +02:00
d78b2785fe i3: Fix battery element on status-bar for laptop 2023-03-27 09:58:47 +02:00
b10652b0bb nix: start keyring as service to fix issues, add packages 2023-03-23 14:41:25 +01:00
18b670ceec nix: switching to using flakes 2023-03-17 11:07:39 +01:00
7b9b3b2b07 nix: Add flatpak and more packages 2023-03-17 08:50:48 +01:00
6d9b3beddb nix: add unstable channel, adapt packages to i3 changes 2023-03-13 14:36:07 +01:00
80eeb563e7 i3: remove dunst, replace i3-scrot with xfce4-screenshooter 2023-03-13 14:35:24 +01:00
5f0a4ebbfd fixes for laptop 2023-03-13 13:32:58 +01:00
b6cfc8eae5 Add nix configuration 2023-03-13 11:14:03 +01:00
333e168b77 i3: Fix bar font size 2023-03-12 07:41:36 +01:00
3de3873429 move kardorf local.toml to local.kardorf.toml
Just symlink local.kardorf.toml -> local.toml
2023-03-11 14:45:18 +01:00
2b38523557 i3: adapt config to nix 2023-03-11 14:45:07 +01:00
5bc28cd188 add direnv 2023-03-11 14:18:22 +01:00
4254221f77 vim: comment plugin usage since none are used 2023-03-11 14:09:19 +01:00
ddfc7d754a i3: remove i3exit dependency 2023-03-11 14:08:53 +01:00
af72939279 move $PATH to ~/.profile so i3 can access it 2023-03-11 14:07:43 +01:00
16ba012e57 emacs: add nix 2023-03-11 14:06:46 +01:00
7490c37673 kardorf: fix path to screenlayout script 2023-03-07 10:51:07 +01:00
fb4d9f23d1 Fix Readme 2023-03-03 10:43:27 +01:00
2e8f1d5b0e Clean up Readme, remove dependencies file 2023-03-03 10:41:40 +01:00
38cac7bde5 zsh: add notify wrapper 2023-03-03 10:41:30 +01:00
2636700acc i3: move tray-output to dotter 2023-03-02 15:49:49 +01:00
7db1657bd5 Remove .dotter/local.toml from git 2023-03-02 15:38:20 +01:00
6d7c6ce9cf i3: move screenlayout script config to dotter 2023-03-02 15:37:30 +01:00
c38d40ab46 Make status bar show free space on home directory 2023-03-02 15:27:47 +01:00
49f0784271 Use ~ instead of /home/julian 2023-03-02 15:26:48 +01:00
eb3f6e25e6 i3: clean up config file 2023-03-02 15:23:00 +01:00
c3d91c35bf i3: fix config indentations, increase status bar font size 2023-03-02 15:12:20 +01:00
7f910fd34d i3status-rust do not show battery if none exists 2023-03-02 15:03:35 +01:00
7dd027742c Remove wrong directory emacs/.config 2023-03-02 14:49:53 +01:00
8c96767b37 Make i3 monitor config handled by dotter
This will make it possible to merge all branches and only use master,
then let dotter handle different devices
2023-03-02 14:40:02 +01:00
b7e8ecbb54 i3: fix monitors for kardorf setup 2023-02-26 23:54:42 +01:00
70f2e1cc89 Merge branch 'master' into aspi 2023-02-26 23:44:22 +01:00
3156cd24b8 Merge branch 'kardorf' into aspi 2023-02-26 23:43:04 +01:00
0153287b81 add flutter 2023-02-24 12:46:34 +01:00
3095fe05b2 rofi: change terminal to alacritty 2023-01-31 19:48:57 +01:00
06293fe85e emacs: org roam customizations 2023-01-31 19:48:41 +01:00
74ddb685f1 emacs, zsh: Add go, add python2latex to emacs 2023-01-23 19:50:37 +01:00
68b132db6b i3: add sound popup script 2023-01-15 19:06:50 +01:00
cb2292bc41 zsh: make nvim the default editor 2022-11-30 17:09:30 +01:00
e31cf198e2 emacs: add rss, bibtex etc 2022-11-30 17:09:13 +01:00
aad8888eab emacs: add julia, spell checking, adapt latex 2022-11-17 15:25:23 +01:00
32eb67ed95 i3: add scripts for display management 2022-11-17 15:24:31 +01:00
87f267e55d i3: add open-messaging script 2022-10-27 20:06:04 +02:00
e1c834734d i3: update jupyter-calculator script 2022-10-27 20:05:48 +02:00
3e9e99c24a emacs: add grammar checking 2022-10-26 10:01:08 +02:00
abce1aa5ed emacs: try adding matlab support, setup for laptop 2022-10-25 15:30:07 +02:00
7355310b53 i3: setup for laptop 2022-10-25 15:29:38 +02:00
23a2993e84 emacs: add grammar checking 2022-10-11 14:22:59 +02:00
f037ec1f12 i3: start nextcloud 2022-10-03 10:37:45 +02:00
0ef45e30ff emacs: add org files 2022-10-03 10:37:25 +02:00
c997a50f27 emacs: Adapt navigation in latex mode 2022-09-27 11:48:18 +02:00
ea3cfcadde emacs: Adapt navigation in latex mode 2022-09-27 11:32:20 +02:00
a03e06f132 Many adaptations for aspi 2022-09-27 11:29:25 +02:00
dc8cb52396 Many changes after Aurora migration 2022-09-15 22:55:03 +02:00
244aaec67b Merge branch 'aurora' into kardorf 2022-09-12 09:37:03 +02:00
2088aecfb6 Changed to new monitor setup 2022-09-12 09:05:15 +02:00
27c22d988b emacs: add docsets for haskell 2022-09-03 16:37:56 +02:00
1b1d607430 Edit lwd script to echo lwd for use in shell commands 2022-08-31 17:10:08 +02:00
acbead5efb Add script and alacritty keybinding for z with fzf 2022-08-31 17:09:40 +02:00
98d9b71d50 fix .gitmodules file 2022-08-24 17:23:23 +02:00
a2841e1ca8 leftwm: add theme as submodule 2022-08-24 17:19:03 +02:00
d198b662b0 Add zsh custom plugins 2022-08-24 16:39:59 +02:00
7e37870ce6 vim: add autoformat plugin 2022-08-24 16:23:55 +02:00
51985d6a7c emacs: clean up doom config 2022-08-24 16:23:15 +02:00
08252a504e zsh: Clean up, add plugins and functions 2022-08-24 16:22:29 +02:00
0d9a76a12f Added xmonad and leftwm configs 2022-06-17 10:25:17 +00:00
cf9c145628 polybar: Added polybar 2022-06-17 10:24:45 +00:00
5b0960b26b i3: use dynamic layouts with i3-layouts 2022-06-17 10:24:19 +00:00
5377574b86 doom: updated init.el 2022-06-17 10:23:26 +00:00
1487887f74 zsh: finished setting up path and plugins 2022-06-02 15:47:04 +00:00
cce626d687 shell: added zsh and starship 2022-06-02 15:13:42 +00:00
34046aae4b i3: tried running rofi on mod key 2022-05-22 14:50:07 -04:00
934b19045a emacs: changed spacemacs config 2022-05-22 14:49:37 -04:00
a502df7f11 nvim: not using plugins anymore; separated vim and nvim config 2022-05-22 14:49:11 -04:00
efa2f54c74 emacs: changed doom config to literate format 2022-05-22 14:48:06 -04:00
fb79782dad alacritty: added config 2022-03-08 22:45:50 -04:00
04e1bb1a7b Removed test lines from readme 2022-03-08 21:27:22 -04:00
7024c07a32 emacs: added chemacs and spacemacs configs 2022-03-08 21:25:21 -04:00
4749d2cefc Now using dotter 2022-03-03 12:10:19 -04:00
f694963376 i3: some more changes 2022-03-03 11:23:08 -04:00
f3fe0a4b81 emacs: many changes 2022-03-03 11:22:40 -04:00
17b80372c8 doom: evil-snipe remapping, rust-setup, company-quickhelp 2021-11-23 16:23:46 +00:00
215c2a1f63 emacs: add next error shortcut, fix flutter 2021-09-27 15:12:06 +02:00
d699cfffdd i3: Use xfce4-notifyd because I could not disable dunst for other users 2021-09-13 10:56:23 +02:00
cec1881959 i3: change i3lock color, add background image 2021-09-11 14:22:10 +02:00
640eca56f4 emacs: Tried python settings 2021-09-10 19:21:21 +02:00
99c3e52230 vim: add vimrc 2021-09-09 15:43:36 +02:00
b044299ff6 manjaro: added custom localization 2021-09-09 15:24:48 +02:00
cf62007567 i3: Changed setupZoom 2021-09-09 12:17:08 +02:00
acf76d08b6 i3: Changed setupZoom 2021-09-09 12:16:25 +02:00
3324a9576e doom: dont use unnecessary packets 2021-09-09 11:58:20 +02:00
7dd21761f6 i3: Changes for aurora 2021-09-09 11:27:01 +02:00
a79ee805eb i3: fixed dependencies and rofi config 2021-09-09 11:25:26 +02:00
0a6f669cc1 emacs: Added docker and yaml 2021-08-03 11:40:29 +02:00
04d58b444b i3: Changed setupZoom 2021-07-30 09:48:54 +02:00
98304c3bd0 emacs: add python lsp 2021-07-28 16:30:34 +02:00
d5a7f1af1e fish: Added fish 2021-07-25 15:19:57 +02:00
c65dd396f5 i3: Changed chat workspace layout 2021-07-25 14:58:51 +02:00
f15ebadbe1 i3: Cleaned up i3blocks scripts 2021-07-25 14:48:40 +02:00
7258c0a3bc i3: Modified dunst to use different Mouse bindings 2021-07-25 14:48:40 +02:00
da2eb621b0 i3: Added dunst to i3blocks 2021-07-25 14:48:40 +02:00
543e897a0f i3: Fixed signal to volume i3blocklet 2021-07-25 14:48:40 +02:00
6b8b8e59c7 manjaro: Added default files to .dotfiles 2021-07-25 14:48:40 +02:00
4db4921fc2 Added README 2021-07-25 14:48:40 +02:00
d79ce0ec1f i3: added shortcut for pamac-manager 2021-07-25 14:48:40 +02:00
cead940f9d emacs: Deleted custom.el 2021-07-25 14:48:40 +02:00
6016953788 emacs: Increased font size 2021-07-25 14:48:40 +02:00
4b6eb4a39d i3: removed title bar from windows 2021-07-25 14:48:40 +02:00
262fd63909 i3: Set scripts folder as variable 2021-07-25 14:48:40 +02:00
72b25299d4 Fixed open terminal 2021-07-25 14:48:40 +02:00
f5b78714ce i3: Cleaned up i3blocks scripts 2021-07-25 14:44:26 +02:00
1ebd0a2d30 i3: Modified dunst to use different Mouse bindings 2021-07-25 14:42:43 +02:00
013ab7f669 i3: Added dunst to i3blocks 2021-07-25 14:42:43 +02:00
e46cade6b6 i3: Fixed signal to volume i3blocklet 2021-07-25 14:42:43 +02:00
44afe6a7e1 manjaro: Added default files to .dotfiles 2021-07-25 14:42:22 +02:00
0794bc7b35 Added README 2021-07-25 14:41:44 +02:00
1126eb7a6a i3: added shortcut for pamac-manager 2021-07-25 14:41:28 +02:00
69b3f37456 emacs: Deleted custom.el 2021-07-25 14:41:14 +02:00
4293fc90a7 emacs: Increased font size 2021-07-25 14:40:59 +02:00
b79f8672a9 i3: removed title bar from windows 2021-07-25 14:40:31 +02:00
555b932518 i3: Set scripts folder as variable 2021-07-25 14:37:59 +02:00
a87505b0aa Fixed open terminal 2021-07-25 14:35:23 +02:00
be3ac77e83 Added agenda files 2021-07-09 12:49:45 +02:00
165 changed files with 7148 additions and 3512 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

View File

@ -0,0 +1,58 @@
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: |
git fetch origin master
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
View File

@ -0,0 +1,3 @@
.direnv
result*
*.qcow2

27
.sops.yaml Normal file
View File

@ -0,0 +1,27 @@
keys:
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
creation_rules:
- path_regex: hosts/common/secrets.yaml$
key_groups:
- age:
- *primary
- *aspi-ssh
- *pianonix-ssh
- *kardorf-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
View 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

View File

@ -1,16 +0,0 @@
dunst
element-desktop
feh
firefox
i3exit
i3-scrot
i3-wm
libqalculate
nextcloud
pavucontrol
rofi
stow
telegram-desktop
thunderbird
xclip
xwacomcalibrate

View File

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

View File

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

View File

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

View File

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

703
flake.lock generated Normal file
View File

@ -0,0 +1,703 @@
{
"nodes": {
"alacritty-theme": {
"flake": false,
"locked": {
"lastModified": 1747350674,
"narHash": "sha256-1LRR4ciM/f1Fu9sLcq53b6eXK1qggvvkSY8iqF0Yw50=",
"owner": "alacritty",
"repo": "alacritty-theme",
"rev": "59a96ef4c734f97a1aadaa619b31cc1ca90a0fbc",
"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": 1747742835,
"narHash": "sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4=",
"owner": "nix-community",
"repo": "disko",
"rev": "df522e787fdffc4f32ed3e1fca9ed0968a384d62",
"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": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"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_5"
},
"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": 1747763032,
"narHash": "sha256-9j3oCbemeH7bTVXJ3pDWxOptbxDx2SdK1jY2AHpjQiw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "29dda415f5b2178278283856c6f9f7b48a2a4353",
"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": 1737371634,
"narHash": "sha256-fTVAWzT1UMm1lT+YxHuVPtH+DATrhYfea3B0MxG/cGw=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "a1176e2a10ce745ff8f63e4af124ece8fe0b1648",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.0.7",
"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": 1747753308,
"narHash": "sha256-5cRyA80iqGoOjvbAVlyz3zPiO4sCHOn3EgwnJjF36v8=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "cd3b767f8c6e92e33e730aadb247d7c083af3fb3",
"type": "gitlab"
},
"original": {
"owner": "doronbehar",
"repo": "nix-matlab",
"type": "gitlab"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1747723695,
"narHash": "sha256-lSXzv33yv1O9r9Ai1MtYFDX3OKhWsZMn/5FFb4Rni/k=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "6ac6ec6fcb410e15a60ef5ec94b8a2b35b5dd282",
"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": 1747676747,
"narHash": "sha256-LXkWBVqilgx7Pohwqu/ABxDVw+Cmi5/Mj2S2mpUH0Fw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "72841a4a8761d1aed92ef6169a636872c986c76d",
"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": 1747542820,
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_4"
},
"locked": {
"lastModified": 1747743401,
"narHash": "sha256-AXk6mf9ySe44faNUGhD1mZud/kB7X+Nipzo2YxHet4s=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "47dba84e0d068a2b8c07faa0ec737ea98a226537",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_3",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1745046075,
"narHash": "sha256-8v4y6k16Ra/fiecb4DxhsoOGtzLKgKlS+9/XJ9z0T2I=",
"owner": "NuschtOS",
"repo": "search",
"rev": "066afe8643274470f4a294442aadd988356a478f",
"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_6",
"yazi-flavors": "yazi-flavors"
}
},
"sheet-organizer": {
"inputs": {
"crane": "crane",
"flake-utils": "flake-utils_4",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1742577105,
"narHash": "sha256-1VFPRxydmDhq+CQogLeafh2zmNGKTMFYiV4y9NZXApo=",
"ref": "refs/heads/master",
"rev": "94de09f4298233795996e17163ae6b987cdedbe9",
"revCount": 75,
"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": 1747603214,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd",
"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": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_6": {
"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": 1746876067,
"narHash": "sha256-7facwGT4DoaMwdkBrMzPlqDbrbSjwW57qRD34iP48+0=",
"owner": "yazi-rs",
"repo": "flavors",
"rev": "02f3fc64b78223c1005672e105f6d0e97c0db79e",
"type": "github"
},
"original": {
"owner": "yazi-rs",
"repo": "flavors",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

191
flake.nix Normal file
View File

@ -0,0 +1,191 @@
{
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/kardorf];
specialArgs = {
inherit inputs outputs;
};
};
builder = lib.nixosSystem {
modules = [./hosts/builder];
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.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-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;
};
};
};
};
}

55
homes/julian/aspi.nix Normal file
View File

@ -0,0 +1,55 @@
{
imports = [
./global
./features/fish
./features/direnv
./features/topgrade
./features/neovim
./features/kitty
./features/wezterm
./features/yazi
./features/emacs
./features/hyprland
./features/suites/cli
./features/suites/desktop
./features/suites/development
];
hostName = "aspi";
is-nixos = true;
terminal = "kitty";
# ------- ----------
# | eDP-1 | | HDMI-A-1 |
# ------- ----------
monitors = [
{
name = "HDMI-A-1";
# width = 1680;
# height = 1050;
workspaces = [
"1"
"2"
"3"
"4"
"5"
];
primary = true;
}
{
name = "eDP-1";
# width = 1680;
# height = 1050;
workspaces = [
"6"
"7"
"8"
"9"
"10"
];
}
];
}

View File

@ -0,0 +1,3 @@
import = [
"~/.config/alacritty/theme/themes/smoooooth.toml"
]

View File

@ -0,0 +1,16 @@
{
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";
}

View File

@ -0,0 +1,6 @@
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}

View File

@ -0,0 +1,73 @@
{
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
alejandra # 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
'';
}

View File

@ -0,0 +1,52 @@
{
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
'';
};
};
}

View File

@ -0,0 +1,7 @@
function lwd
cd $LAST_WORKING_DIR
end
function __onpwd --on-variable PWD
set --universal LAST_WORKING_DIR $PWD
end

View 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

View File

@ -0,0 +1,21 @@
{
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
];
}

View File

@ -0,0 +1,13 @@
{
services.gammastep = {
enable = true;
provider = "geoclue2";
temperature = {
day = 6000;
night = 4600;
};
settings = {
general.adjustment-method = "wayland";
};
};
}

View File

@ -0,0 +1,33 @@
{
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";
size = 24;
};
};
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
}

View File

@ -0,0 +1,404 @@
{
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
brightnessctl
frajul.hyprshot-gui
frajul.wl-ocr
wf-recorder
wl-clipboard
(pkgs.writeShellScriptBin
"toggle-screen-mirroring"
(builtins.readFile
./toggle-screen-mirroring.sh))
(
pkgs.writeShellScriptBin
"correct-workspace-locations"
(
lib.concatStringsSep "\n"
(
builtins.concatLists (
map (monitor: map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces) config.monitors
)
)
)
)
];
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,1";
# 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}"
"correct-workspace-locations"
];
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 =
[
# 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"
]
# builds like "1, e-DP1" "2, HDMI-1" etc.
++ builtins.concatLists (
map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
);
# 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"
"$mod, Print, exec, hyprshot-gui"
", Print, exec, hyprshot-gui"
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
# "$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" ];
# };
# };
};
};
}

View File

@ -0,0 +1,76 @@
{
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
# ));
};
};
}

View File

@ -0,0 +1,46 @@
{
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...";
}
];
};
}

View File

@ -0,0 +1,30 @@
{
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;
settings = {
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
backgroundColor = "#${palette.base00}";
textColor = "#${palette.base05}";
borderColor = "#${palette.base0D}";
progressColor = "over #${palette.base02}";
extraConfig = ''
[urgency=high]
border-color=#${palette.base09}
# '';
};
};
}

View File

@ -0,0 +1,58 @@
{
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'";
}));
};
}

View File

@ -0,0 +1,16 @@
{
config,
pkgs,
...
}: let
inherit (config.colorscheme) colors;
in {
programs.swaylock = {
enable = true;
settings = {
color = "000000";
ignore-empty-password = true;
indicator-idle-visible = false;
};
};
}

View File

@ -0,0 +1,67 @@
#! /usr/bin/env sh
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
# Launch at startup to make hyprland disable the internal monitor if an external monitor is detected and enabled
# Additionally it's called with a keybind to switch between a laptop monitor and an external display
# Ideally the conditional monitor behaviour was instead done directly in hyprland.conf, but I'm not sure whether that's possible
#
# Relevant info:
# - hyprctl monitors: identifies currently enabled monitors
# - hyprctl monitors all: identifies ALL connected monitors - including those not in use
#
# Suggested use:
# Add this line somewhere after the regular monitor configuration in hyprland.conf:
# exec = /path/to/hyprland-monitors-toggle.sh
# Add a keybind to run this script on demand:
# bind =,SomeKeyHere, exec, /path/to/hyprland-monitors-toggle.sh
#move_all_workspaces_to_monitor() {
# TARGET_MONITOR="$1"
# hyprctl workspaces | grep ^workspace | cut --delimiter ' ' --fields 3 | xargs -I '{}' hyprctl dispatch moveworkspacetomonitor '{}' "$TARGET_MONITOR"
# # Previous approach
# #hyprctl swapactiveworkspaces $EXTERNAL_MONITOR $INTERNAL_MONITOR
#}
# TODO: Detect these instead of hardcoding them
INTERNAL_MONITOR="eDP-1"
EXTERNAL_MONITOR="HDMI-A-1"
# NUM_MONITORS=$(hyprctl monitors all | grep --count Monitor)
# NUM_MONITORS_ACTIVE=$(hyprctl monitors | grep --count Monitor)
# Make sure all
# if [ "$NUM_MONITORS_ACTIVE" -eq 1 ]; then
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
# exit
# fi
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
# # For dynamically toggling which monitor is active later via a keybind
# if [ "$NUM_MONITORS" -gt 1 ]; then # Handling multiple monitors
# if hyprctl monitors | cut --delimiter ' ' --fields 2 | grep --quiet ^$EXTERNAL_MONITOR; then
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable"
# else
# hyprctl keyword monitor $EXTERNAL_MONITOR,preferred,0x0,1
# move_all_workspaces_to_monitor $EXTERNAL_MONITOR
# hyprctl keyword monitor "$INTERNAL_MONITOR, disable"
# fi
# else # If the external monitor is disconnected without running this script first, it might become the case that no monitor is on - therefore turn on the laptop monitor!
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
# fi
echo setting:
echo $MIRROR_SETTING
if [ "$MIRROR_SETTING" = "none" ]; then
echo "mirroring..."
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1, mirror, $INTERNAL_MONITOR"
else
hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1"
fi

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

View File

@ -0,0 +1,36 @@
{
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};
'';
}

View 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; */
/* } */

View File

@ -0,0 +1,29 @@
{
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"];
};
};
}

View File

@ -0,0 +1,39 @@
{
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;
# }
# '';
}

View 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

View File

@ -0,0 +1,86 @@
{
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%;
}
'';
}

View File

@ -0,0 +1,33 @@
{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}";
};
};
}

View File

@ -0,0 +1,53 @@
{
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"];
}

View File

@ -0,0 +1 @@
scrot_dir=~/Pictures/screenshots

View 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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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

View 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-1"
set $monitor_right "DVI-D-2"
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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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

View File

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

View 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

View 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

View File

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

View File

@ -0,0 +1,3 @@
#!/bin/sh
matlab -desktop -sd ~/dev/bachelor-thesis/simulation

View File

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

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

View File

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

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

View File

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

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

View File

@ -0,0 +1,27 @@
{
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";
}

View File

@ -0,0 +1,158 @@
{
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;
};
};
};
};
}

View File

@ -0,0 +1,12 @@
{pkgs, ...}: {
home.sessionVariables = {
NH_FLAKE = "/home/julian/.dotfiles";
};
home.shellAliases = {
"os" = "nh os switch";
"hs" = "nh home switch";
};
home.packages = with pkgs; [nh];
}

View File

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

View File

@ -0,0 +1,14 @@
{
lib,
pkgs,
...
}: {
# this would need you to config rofi using home-manager
# programs.rofi = { enable = true; };
home.packages = with pkgs; [rofi];
home.file = {
".config/rofi/config.rasi".source = ./config.rasi;
};
}

View File

@ -0,0 +1,49 @@
{pkgs, ...}: {
home.packages = with pkgs; [
bat
du-dust # Like du tree but better
fd # better find
fdupes # find and delete duplicate files
ffmpeg
findutils # locate
fzf # Fuzzy finder
ghostscript # needed for imagemagick with pdfs
imagemagick
git
gnupg
htop
jq # Command line JSON processor
killall
languagetool # Grammar checker
lazygit # Git client
links2 # Tui web-browser
lnav # log analyzing tool
mc # Tui file browser
# nix-index
nmap
p7zip # unzip 7zip archives
parted
pciutils # lspci
poppler_utils # Pdf utils including pdfimages
libqalculate # Nice tui calculator (qalc)
ripgrep # better grep
rnr # renaming tool
sage # Maths notebooks
tealdeer # tldr
topgrade # System update
tree
unetbootin # TODO
unixtools.procps # TODO
unzip
usbutils # lsusb
wget
wireguard-tools # wg-quick
xorg.xkill
zip
## My scripts
frajul.edit-config
frajul.lntocp
frajul.sos
];
}

View File

@ -0,0 +1,68 @@
{pkgs, ...}: {
imports = [../../gtk];
services.blueman-applet.enable = true;
services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true;
services.network-manager-applet.enable = true;
services.syncthing.tray.enable = true;
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
programs.chromium = {
enable = true;
extensions = [
# Tampermonkey
{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
];
};
home.packages = with pkgs; [
arandr
calibre # ebook manager and viewer
# digikam
discord
# dvdisaster
# element-desktop
# rocketchat-desktop
thunderbird
tdesktop # telegram
# schildichat-desktop # not updated regularly
nheko
evince # Simple pdf reader, good for focusing on document content
firefox
# geogebra
cheese
handbrake
kitty # Terminal
libnotify
libreoffice
mate.engrampa
nomacs # Image viewer
kdePackages.okular # Pdf reader with many features, good for commenting documents
pavucontrol
pdfsam-basic # Split, merge, etc for pdfs
qalculate-gtk # Nice gui calculator
qpdfview
# qutebrowser
# realvnc-vnc-viewer
rpi-imager # make isos
# rustdesk
tor-browser
unstable.path-of-building # Path of Building
# frajul.pob-dev-version # Path of Building
vlc
wineWowPackages.stable # 32-bit and 64-bit wine
winetricks
xclip # x11 clipboard access from terminal
xfce.mousepad # simple text editor
xournalpp # Edit pdf files
zoom-us # Video conferencing
zotero # Manage papers and other sources
pdfpc # Present slides in pdf form
## My scripts
frajul.open-messaging
frajul.xwacomcalibrate
];
}

View File

@ -0,0 +1,85 @@
{pkgs, ...}: {
home.packages = with pkgs; [
watchexec # Run command when any file in current dir changes
android-tools # adb
# shellcheck # Check bash scripts for common errors
sqlite
scrcpy # Mirror android screen to pc
cargo
clippy
cntr # nix debugger
conda
micromamba # a better, faster conda
devcontainer # development container
devenv # devbox alternative
dbeaver-bin
devbox # dev environments using nix
distrobox # run commands inside docker containers
gcc
gradle
hexedit
unstable.zed-editor
jdk
julia-bin
(texlive.combine {
# for rendering latex in inkscape
inherit
(texlive)
scheme-medium
standalone
amsmath
preview
# needed for org mode export
wrapfig
capt-of
biblatex
;
})
matlab # Using nix-matlab overlay defined in flake
maven
nodejs
pkg-config # Often needed to build something
# pwndbg # improved gdb (debugger)
python3
rust-analyzer
rustc
rustfmt
# (pkgs.inkscape-with-extensions.override {
# inkscapeExtensions = [ pkgs.inkscape-extensions.textext ];
# })
# inkscape-with-extensions
# inkscape-extensions.textext
inkscape
gcolor3 # Color picker
gimp
drawio
audacity
deploy-rs
sops
pandoc # markdown preview
docker-compose
## My scripts
frajul.deploy-to-pianopi
frajul.rtklib
(pkgs.writeShellScriptBin "matlab-rsp" ''
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
'')
(pkgs.writeShellScriptBin "matlab-paper" ''
matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl
'')
(pkgs.writeShellScriptBin "matlab-robotik" ''
matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl
'')
(pkgs.writeShellScriptBin "matlab-gram" ''
export GTK_PATH=/usr/lib/gtk-3.0
nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl
'')
(pkgs.writeShellScriptBin "expenses-tracker" ''
java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar
'')
];
}

View File

@ -0,0 +1,28 @@
{
programs.topgrade = {
enable = true;
settings = {
misc.no_self_update = true;
misc.pre_sudo = true; # Cache sudo password for 5 more minutes
misc.assume_yes = true;
misc.no_retry = true;
# pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
linux.nix_arguments = "--flake /home/julian/.dotfiles";
linux.home_manager_arguments = [
"--flake"
"/home/julian/.dotfiles"
];
git = {
# Additional git repositories to pull
repos = [
"~/.dotfiles"
"~/dev/*"
"~/.config/doom"
];
};
};
};
}

View File

@ -0,0 +1,34 @@
{
lib,
pkgs,
config,
...
}: {
programs.wezterm = {
enable = true;
extraConfig = ''
local wezterm = require 'wezterm'
local config = {}
config.color_scheme = 'Catppuccin Mocha'
-- config.font = wezterm.font 'JetBrains Mono'
-- config.font_size = 12.0
config.hide_tab_bar_if_only_one_tab = true
config.audible_bell = 'Disabled'
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
config.window_close_confirmation = 'NeverPrompt'
return config
'';
};
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "wezterm") "wezterm-start-here";
# Otherwise wezterm does not start in directory of parent process
home.packages = [
(pkgs.writeShellScriptBin "wezterm-start-here" ''
wezterm start --cwd "$PWD"
'')
];
}

View File

@ -0,0 +1,90 @@
{
pkgs,
inputs,
...
}: {
programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true;
home.packages = with pkgs; [
exiftool
unar # extract archives
xdragon # dragndrop
poppler_utils # pdf preview
fd
ripgrep
fzf
jq # json preview
ffmpegthumbnailer
xclip
];
home.shellAliases = {
y = "yy"; # Yazi shell wrapper (cd on quit)
};
programs.yazi.enable = true;
programs.yazi.enableFishIntegration = true;
programs.yazi.settings.manager = {
sort_by = "mtime";
sort_reverse = true;
show_hidden = true;
};
programs.yazi.keymap = {
manager.prepend_keymap = [
# Override defaults
{
on = ["e"];
run = ''shell --orphan --confirm "pcmanfm &"'';
desc = "Open gui file manager";
}
{
on = ["<C-o>"];
run = ''shell "$SHELL" --block --confirm'';
desc = "Open shell here";
}
{
on = ["<C-n>"];
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
desc = "Dragndrop via dragon";
}
{
on = ["<Enter>"];
run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file";
}
];
input.prepend_keymap = [
{
on = ["<Esc>"];
run = "close";
desc = "Cancel input";
}
];
};
programs.yazi.settings.opener = {
play = [
{
run = ''vlc "$1"'';
orphan = true;
}
];
};
xdg.configFile."yazi/flavors" = {
source = "${inputs.yazi-flavors}";
};
xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = ''
return {
entry = function()
local h = cx.active.current.hovered
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
end,
}
'';
programs.yazi.theme = {
flavor.use = "catppuccin-mocha";
};
}

View File

@ -0,0 +1,44 @@
{
lib,
pkgs,
...
}: {
home.file = {
".config/starship.toml".source = ./starship.toml;
};
home.packages = with pkgs; [starship];
programs.starship = {
enable = true;
enableZshIntegration = true;
};
programs.zsh = {
enable = true;
initExtra =
builtins.readFile ./key-bindings.zsh
+ builtins.readFile ./functions.zsh
+ builtins.readFile ./last-working-dir.zsh
+ builtins.readFile ./dir-navigation.zsh;
zplug = {
enable = true;
plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{name = "agkozak/zsh-z";}
{
name = "zsh-users/zsh-completions";
}
# make it behave like fish
{name = "zsh-users/zsh-autosuggestions";}
{name = "zsh-users/zsh-history-substring-search";}
{
name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin
];
};
};
}

View File

@ -0,0 +1,17 @@
#!/usr/bin/env zsh
# Use Alt+Up to go one directory upwards
function go_dir_up() {
cd .. || return 1
}
function zle_go_dir_up() {
zle .kill-buffer
go_dir_up
zle .accept-line
}
zle -N zle_go_dir_up
# Alt+Up
bindkey "^[[1;3A" zle_go_dir_up

View File

@ -0,0 +1,16 @@
#!/usr/bin/env zsh
# My custom zsh functions
fzf-z() {
dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
cd $dir
}
mkcd ()
{
mkdir -p -- "$1" && cd -P -- "$1"
}
run() {
nix run nixpkgs#"$1" -- ${@:2}
}

View File

@ -0,0 +1,131 @@
#!/usr/bin/env zsh
# Based on the oh-my-zsh default keybinding config: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/key-bindings.zsh
# Make sure that the terminal is in application mode when zle is active, since
# only then values from $terminfo are valid
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
function zle-line-init() {
echoti smkx
}
function zle-line-finish() {
echoti rmkx
}
zle -N zle-line-init
zle -N zle-line-finish
fi
# Use emacs key bindings
bindkey -e
# [PageUp] - Up a line of history
if [[ -n "${terminfo[kpp]}" ]]; then
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
bindkey -M viins "${terminfo[kpp]}" up-line-or-history
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
fi
# [PageDown] - Down a line of history
if [[ -n "${terminfo[knp]}" ]]; then
bindkey -M emacs "${terminfo[knp]}" down-line-or-history
bindkey -M viins "${terminfo[knp]}" down-line-or-history
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
fi
# Start typing + [Up-Arrow] - fuzzy find history forward
if [[ -n "${terminfo[kcuu1]}" ]]; then
bindkey -M emacs "${terminfo[kcuu1]}" history-substring-search-up
bindkey -M viins "${terminfo[kcuu1]}" history-substring-search-up
bindkey -M vicmd "${terminfo[kcuu1]}" history-substring-search-up
fi
# Start typing + [Down-Arrow] - fuzzy find history backward
if [[ -n "${terminfo[kcud1]}" ]]; then
bindkey -M emacs "${terminfo[kcud1]}" history-substring-search-down
bindkey -M viins "${terminfo[kcud1]}" history-substring-search-down
bindkey -M vicmd "${terminfo[kcud1]}" history-substring-search-down
fi
# [Home] - Go to beginning of line
if [[ -n "${terminfo[khome]}" ]]; then
bindkey -M emacs "${terminfo[khome]}" beginning-of-line
bindkey -M viins "${terminfo[khome]}" beginning-of-line
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
fi
# [End] - Go to end of line
if [[ -n "${terminfo[kend]}" ]]; then
bindkey -M emacs "${terminfo[kend]}" end-of-line
bindkey -M viins "${terminfo[kend]}" end-of-line
bindkey -M vicmd "${terminfo[kend]}" end-of-line
fi
# [Shift-Tab] - move through the completion menu backwards
if [[ -n "${terminfo[kcbt]}" ]]; then
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
fi
# [Backspace] - delete backward
bindkey -M emacs '^?' backward-delete-char
bindkey -M viins '^?' backward-delete-char
bindkey -M vicmd '^?' backward-delete-char
# [Delete] - delete forward
if [[ -n "${terminfo[kdch1]}" ]]; then
bindkey -M emacs "${terminfo[kdch1]}" delete-char
bindkey -M viins "${terminfo[kdch1]}" delete-char
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
else
bindkey -M emacs "^[[3~" delete-char
bindkey -M viins "^[[3~" delete-char
bindkey -M vicmd "^[[3~" delete-char
bindkey -M emacs "^[3;5~" delete-char
bindkey -M viins "^[3;5~" delete-char
bindkey -M vicmd "^[3;5~" delete-char
fi
# [Ctrl-Delete] - delete whole forward-word
bindkey -M emacs '^[[3;5~' kill-word
bindkey -M viins '^[[3;5~' kill-word
bindkey -M vicmd '^[[3;5~' kill-word
# [Ctrl-RightArrow] - move forward one word
bindkey -M emacs '^[[1;5C' forward-word
bindkey -M viins '^[[1;5C' forward-word
bindkey -M vicmd '^[[1;5C' forward-word
# [Ctrl-LeftArrow] - move backward one word
bindkey -M emacs '^[[1;5D' backward-word
bindkey -M viins '^[[1;5D' backward-word
bindkey -M vicmd '^[[1;5D' backward-word
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
bindkey ' ' magic-space # [Space] - don't do history expansion
# Edit the current command line in $EDITOR
autoload -U edit-command-line
zle -N edit-command-line
bindkey '\C-x\C-e' edit-command-line
# file rename magick
bindkey "^[m" copy-prev-shell-word
# consider emacs keybindings:
#bindkey -e ## emacs key bindings
#
#bindkey '^[[A' up-line-or-search
#bindkey '^[[B' down-line-or-search
#bindkey '^[^[[C' emacs-forward-word
#bindkey '^[^[[D' emacs-backward-word
#
#bindkey -s '^X^Z' '%-^M'
#bindkey '^[e' expand-cmd-path
#bindkey '^[^I' reverse-menu-complete
#bindkey '^X^N' accept-and-infer-next-history
#bindkey '^W' kill-region
#bindkey '^I' complete-word
## Fix weird sequence that rxvt produces
#bindkey -s '^[[Z' '\t'
#

View File

@ -0,0 +1,20 @@
#!/usr/bin/zsh
# My version of the last-working-dir plugin (https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/last-working-dir/last-working-dir.plugin.zsh)
# Updates the last directory once directory is changed
autoload -U add-zsh-hook
add-zsh-hook chpwd chpwd_last_working_dir
chpwd_last_working_dir() {
# Don't run in subshells
[[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0
pwd > ~/.last-working-dir
}
# Changes directory to the last working directory
lwd() {
if [[ -r ~/.last-working-dir ]]; then
lwd=$(cat ~/.last-working-dir)
cd $lwd
echo $lwd
fi
}

View 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

View File

@ -0,0 +1,53 @@
{
lib,
pkgs,
config,
outputs,
...
}: {
imports =
[
../features/fonts
../features/nix-helper
]
++ (builtins.attrValues outputs.homeManagerModules);
nix = {
package = lib.mkDefault pkgs.nix;
settings = {
experimental-features = [
"nix-command"
"flakes"
"ca-derivations"
];
# warn-dirty = false; # TODO: do I want it? also for systems
};
};
colorscheme.name = "catppuccin-mocha";
# systemd.user.startServices = "sd-switch"; # TODO: what is this
programs = {
home-manager.enable = true;
git.enable = true;
};
home = {
username = lib.mkDefault "julian";
homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "23.11";
sessionPath = ["$HOME/.local/bin"];
};
# TODO: colorscheme
# colorscheme.mode = lib.mkOverride 1499 "dark";
# specialisation = {
# dark.configuration.colorscheme.mode = lib.mkOverride 1498 "dark";
# light.configuration.colorscheme.mode = lib.mkOverride 1498 "light";
# };
# home.file = {
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
# };
}

View File

@ -0,0 +1,48 @@
# Manage mime-types via home-manager. Sadly the file gets overwritten by some applications and also not all of the desktop file paths are correct
# Use from home-manager like this:
#
# xdg.mimeApps.enable = true;
# xdg.mimeApps.defaultApplications = import ./mimeapps.nix {
# inherit pkgs;
# inherit lib;
# };
{
lib,
pkgs,
...
}: let
package-names = with pkgs; {
"x-scheme-handler/tg" = telegram-desktop;
"x-scheme-handler/mailto" = thunderbird;
"message/rfc822" = thunderbird;
"x-scheme-handler/mid" = thunderbird;
"x-scheme-handler/webcal" = thunderbird;
"text/calendar" = thunderbird;
"application/x-extension-ics" = thunderbird;
"x-scheme-handler/webcals" = thunderbird;
"application/zip" = mate.engrampa;
"text/plain" = xfce.mousepad;
"image/jpeg" = nomacs;
"application/pdf" = evince;
"text/html" = firefox;
"x-scheme-handler/http" = firefox;
"x-scheme-handler/https" = firefox;
"x-scheme-handler/chrome" = firefox;
"application/x-extension-htm" = firefox;
"application/x-extension-html" = firefox;
"application/x-extension-shtml" = firefox;
"application/xhtml+xml" = firefox;
"application/x-extension-xhtml" = firefox;
"application/x-extension-xht" = firefox;
"image/svg+xml" = inkscape;
"image/png" = nomacs;
"x-scheme-handler/eclipse+command" = dbeaver-bin;
"video/mp4" = vlc;
"audio/mpeg" = vlc;
"inode/directory" = pcmanfm;
};
in
lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop"
])
package-names

View File

@ -0,0 +1,43 @@
# Only apply this to home-manager standalone
{outputs, ...}: {
# Apply overlays
nixpkgs = {
overlays = builtins.attrValues outputs.overlays;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true; # TODO: what is this
permittedInsecurePackages = [
"olm-3.2.16"
];
warn-dirty = false;
};
};
# Setup binary caches
nix.settings = {
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://hyprland.cachix.org"
"http://binarycache.julian-mutter.de"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
];
trusted-users = [
"root"
"@wheel"
];
experimental-features = [
"nix-command"
"flakes"
"ca-derivations"
];
# nix.settings. # warn-dirty = false; # TODO: do I want this
};
}

56
homes/julian/kardorf.nix Normal file
View File

@ -0,0 +1,56 @@
{
imports = [
./global
./features/fish
./features/direnv
./features/topgrade
./features/neovim
./features/kitty
./features/wezterm
./features/yazi
./features/emacs
# ./features/hyprland
./features/i3
./features/suites/cli
./features/suites/desktop
./features/suites/development
];
hostName = "kardorf";
is-nixos = true;
terminal = "kitty";
# --------- ---------
# | DVI-D-1 | | DVI-D-2 |
# --------- ---------
monitors = [
{
name = "DVI-D-1";
width = 1680;
height = 1050;
workspaces = [
"1"
"2"
"3"
"4"
"5"
];
primary = true;
}
{
name = "DVI-D-2";
width = 1680;
height = 1050;
workspaces = [
"6"
"7"
"8"
"9"
"10"
];
}
];
}

37
homes/julian/pianonix.nix Normal file
View File

@ -0,0 +1,37 @@
{pkgs, ...}: {
imports = [
./global
./features/fish
./features/topgrade
./features/neovim
./features/wezterm
./features/yazi
./features/gtk
];
hostName = "pianonix";
is-nixos = true;
terminal = "wezterm";
services.syncthing.tray.enable = true;
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
home.packages = with pkgs; [
music-reader
sheet-organizer
xournalpp
musescore
onboard
];
# Autostart link
home.file = {
".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
".config/sheet-organizer/config.toml".text = ''
working_directory = "/home/julian/Klavier"
'';
};
}

1
homes/julian/ssh.pub Normal file
View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H

View File

@ -0,0 +1,30 @@
{
lib,
pkgs,
...
}: {
imports = [
../global
../features/fish
../features/direnv
../features/topgrade
../features/neovim
../features/yazi
../features/emacs
../features/nix-helper
];
hostName = "aspi";
is-nixos = false;
# terminal = "kitty";
home.sessionPath = ["/snap/bin"];
home.packages =
lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
[
./fonts.nix
./packages.nix
];
}

View File

@ -0,0 +1,13 @@
{pkgs, ...}:
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
]

View File

@ -0,0 +1,42 @@
{pkgs, ...}:
with pkgs; [
# Rust setup
rustc
rustfmt
cargo
clippy
rust-analyzer
typst
tree-sitter-grammars.tree-sitter-typst
# Further tools
cntr # nix debugger
lazygit
shellcheck
lazygit
git
mc
tree
bat
ripgrep
fd
fzf
topgrade
htop
killall
findutils
jq
ffmpeg
julia-bin
poppler_utils # Pdf utils including pdfimages
sage
pkg-config # Often needed to build something
devbox # reproducible dev envs based on nix
mysql80
]

49
hosts/aspi/default.nix Normal file
View File

@ -0,0 +1,49 @@
{
imports = [
./hardware-configuration.nix
../common/global
../common/users/julian
../common/optional/remote-builder.nix
../common/optional/boot-efi.nix
../common/optional/greetd.nix
../common/optional/authentication.nix
../common/optional/pcmanfm.nix
../common/optional/pipewire.nix
../common/optional/gamemode.nix
../common/optional/virtualbox.nix
../common/optional/podman.nix
../common/optional/wireguard.nix
../common/optional/flatpak.nix
../common/optional/avahi.nix
];
networking.hostName = "aspi";
system.stateVersion = "24.05";
modules = {
syncthing = {
enable = true;
overrideSettings = false;
};
};
services.blueman.enable = true;
services.upower.enable = true;
programs.steam.enable = true;
# TODO: not working
services.logind.lidSwitch = "lock";
services.logind.lidSwitchDocked = "lock";
programs.kdeconnect.enable = true;
# Enable touchpad support
services.libinput.enable = true;
}

View File

@ -0,0 +1,78 @@
{
config,
lib,
...
}: {
boot.initrd.availableKernelModules = [
"vmd"
"xhci_pci"
"ahci"
"nvme"
"usb_storage"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.blacklistedKernelModules = ["pcspkr"]; # Disables "beep"
boot.binfmt.emulatedSystems = ["aarch64-linux"];
boot.initrd.luks.devices = {
root = {
device = "/dev/disk/by-uuid/a4dc9a2c-725b-4252-8fbb-093a271c31ba";
preLVM = true;
allowDiscards = true;
};
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
fsType = "btrfs";
options = [
"subvol=root"
"compress=zstd"
];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
fsType = "btrfs";
options = [
"subvol=home"
"compress=zstd"
];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
fsType = "btrfs";
options = [
"subvol=nix"
"compress=zstd"
"noatime"
];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7040-F37C";
fsType = "vfat";
};
swapDevices = [
{device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.nvidia.open = false;
}

View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmZH4AYoERGx5t8gXXmrZetSchwzps8UYwkz8E6SI8D

244
hosts/builder/default.nix Normal file
View File

@ -0,0 +1,244 @@
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
# or
# deploy .#builder
{config, ...}: {
imports = [
./hardware-configuration.nix
../common/global
];
networking.hostName = "builder";
system.stateVersion = "23.11";
users.users.nix = {
isNormalUser = true;
description = "Nix";
extraGroups = [
"networkmanager"
"wheel"
];
};
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Setup binary caches
nix.settings = {
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
];
trusted-public-keys = ["nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="];
trusted-users = ["nix"];
max-jobs = "auto";
cores = 0;
};
# optimize store by hardlinking store files
nix.optimise.automatic = true;
nix.optimise.dates = ["03:15"];
# nix.gc.automatic = true;
# nix.gc.dates = "daily";
# nix.gc.options = "--delete-old";
# nix.settings.keep-derivations = false;
# nix.settings.keep-outputs = true;
# Garbage collect up to 100 GiB when only 20 GiB storage left
nix.extraOptions = ''
min-free = ${toString (20 * 1024 * 1024 * 1024)}
max-free = ${toString (100 * 1024 * 1024 * 1024)}
'';
nix.nrBuildUsers = 64;
# prevent memory to get filled
systemd.services.nix-daemon.serviceConfig = {
MemoryAccounting = true;
MemoryMax = "90%";
OOMScoreAdjust = 500;
};
# Ollama used by open-webui as llm backend
# services.ollama = {
# enable = true;
# # acceleration = "rocm";
# };
# services.open-webui = {
# enable = true;
# port = 8080;
# openFirewall = true;
# host = "builder.julian-mutter.de";
# };
networking.firewall.allowedTCPPorts = [
80
];
services.openssh = {
enable = true;
# require public key authentication for better security
settings.PasswordAuthentication = true;
settings.KbdInteractiveAuthentication = false;
settings.PermitRootLogin = "yes";
};
users.users."root".openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGFcS+3d1tNgHmYCjueymCV9Bd2LcJcKGhVobrDe3r0s julian@kardorf"
];
users.users."nix".openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAIQ+qMuXvyoxO1DuCR3/x+IQRfSA2WyMuzuotWZjCye root@aspi"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHnfLJnS2SKUs47J0qpLTkk0LQA5quOuAhnxE6yppUDm root@kardorf"
];
# security.pam.sshAgentAuth.enable = true; # enable sudo via ssh
services.hydra = {
enable = true;
hydraURL = "http://hydra.julian-mutter.de"; # externally visible URL
port = 3000;
notificationSender = "hydra@julian-mutter.de"; # e-mail of hydra service
# a standalone hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
# buildMachinesFiles = [ ];
# you will probably also want, otherwise *everything* will be built from scratch
useSubstitutes = true;
minimumDiskFree = 5; # in GB
minimumDiskFreeEvaluator = 4; # in GB
};
# add builder itself as build machine so system emulation is properly supported
# nix.distributedBuilds = true;
nix.buildMachines = [
{
hostName = "localhost";
protocol = null;
# sshUser = "nix";
systems = [
"x86_64-linux"
"aarch64-linux"
];
maxJobs = 4;
speedFactor = 3;
supportedFeatures = [
"nixos-test"
"benchmark"
"big-parallel"
"kvm"
];
}
];
# Uris allowed as flake inputs, otherwise hydra does not fetch them
nix.settings.allowed-uris = [
"github:"
"gitlab:"
"git+https://github.com/hyprwm/Hyprland"
"https://github.com/hyprwm/Hyprland"
"https://github"
"https://gitlab"
"https://gitlab.julian-mutter.de"
"git+https://gitlab.julian-mutter.de"
];
services.nginx = {
enable = true;
recommendedProxySettings = true;
# recommendedTlsSettings = true;
# other Nginx options
virtualHosts."hydra.julian-mutter.de" = {
# enableACME = true;
# forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:3000";
# proxyWebsockets = true; # needed if you need to use WebSocket
# extraConfig =
# # required when the target is also TLS server with multiple hosts
# "proxy_ssl_server_name on;" +
# # required when the server wants to use HTTP Authentication
# "proxy_pass_header Authorization;"
# ;
};
};
virtualHosts."binarycache.julian-mutter.de" = {
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
};
clientMaxBodySize = "2G";
virtualHosts."cache.julian-mutter.de" = {
locations."/".proxyPass = "http://127.0.0.1:8080";
};
};
# =========== Gitea actions ==========
services.gitea-actions-runner.instances."builder" = {
enable = true;
url = "https://gitlab.julian-mutter.de";
name = "builder";
tokenFile = config.sops.secrets."gitea_token".path;
labels = []; # use default labels
};
virtualisation.docker.enable = true;
# TODO: podman fails with: "cannot resolve hostname"
# virtualisation.podman = {
# enable = true;
# dockerCompat = true;
# defaultNetwork.settings.dns_enabled = true;
# };
sops.secrets."gitea_token" = {
owner = config.users.users.nix.name;
sopsFile = ./secrets.yaml;
};
# =========== Binary Cache ==========
services.nix-serve = {
enable = true;
secretKeyFile = "/var/cache-priv-key.pem";
};
# =========== Binary Cache with attic ==========
sops.secrets."attic_token".sopsFile = ./secrets.yaml;
services.atticd = {
enable = true;
environmentFile = config.sops.secrets."attic_token".path;
settings = {
listen = "[::]:8080";
jwt = {};
# Data chunking
#
# Warning: If you change any of the values here, it will be
# difficult to reuse existing chunks for newly-uploaded NARs
# since the cutpoints will be different. As a result, the
# deduplication ratio will suffer for a while after the change.
chunking = {
# The minimum NAR size to trigger chunking
#
# If 0, chunking is disabled entirely for newly-uploaded NARs.
# If 1, all NARs are chunked.
nar-size-threshold = 64 * 1024; # 64 KiB
# The preferred minimum size of a chunk, in bytes
min-size = 16 * 1024; # 16 KiB
# The preferred average size of a chunk, in bytes
avg-size = 64 * 1024; # 64 KiB
# The preferred maximum size of a chunk, in bytes
max-size = 256 * 1024; # 256 KiB
};
};
};
}

View File

@ -0,0 +1,50 @@
{lib, ...}: {
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
fsType = "ext4";
};
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
# hardware.graphics = {
# enable = true;
# extraPackages = with pkgs; [
# rocmPackages.clr.icd
# linuxPackages.amdgpu-pro
# ];
# };
# boot.kernelParams = [
# "radeon.si_support=0"
# "radeon.cik_support=1"
# "amdgpu.si_support=0"
# "amdgpu.cik_support=1"
# ];
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
# boot.blacklistedKernelModules = [ "radeon" ];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
# Emulated systems used as alternative to cross-compiling
boot.binfmt.emulatedSystems = ["aarch64-linux"];
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
{
inputs,
config,
...
}: {
system.hydraAutoUpgrade = {
# Only enable if not dirty
enable = inputs.self ? rev;
dates = "*:0/10"; # Every 10 minutes
instance = "http://hydra.julian-mutter.de";
project = "dotfiles";
jobset = "main";
job = "hosts.${config.networking.hostName}";
oldFlakeRef = "self";
};
}

View File

@ -0,0 +1,35 @@
# Common config for all hosts
{
inputs,
outputs,
...
}: {
imports =
[
./fish.nix # fish for admin
./locale.nix
./nix.nix
./sops.nix
./root.nix
]
++ [
inputs.home-manager.nixosModules.home-manager
]
++ (builtins.attrValues outputs.nixosModules);
# Replaces the (modulesPath + "/installer/scan/not-detected.nix") from default hardware-configuration.nix
# Enables non-free firmware
hardware.enableRedistributableFirmware = true;
# Networking
networking.networkmanager.enable = true;
services.resolved.enable = true;
programs.dconf.enable = true;
# HM
home-manager.useGlobalPkgs = true;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}

View File

@ -0,0 +1,10 @@
{
programs.fish = {
enable = true;
vendor = {
completions.enable = true;
config.enable = true;
functions.enable = true;
};
};
}

View File

@ -0,0 +1,26 @@
{
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Keymap
services.xserver.xkb = {
layout = "de";
variant = "";
};
console.keyMap = "de";
time.timeZone = "Europe/Berlin";
}

View File

@ -0,0 +1,63 @@
{
lib,
outputs,
...
}: {
# Apply overlays
nixpkgs = {
# TODO: apply this to hm and nixos without duplicate code
overlays = builtins.attrValues outputs.overlays;
config = {
nvidia.acceptLicense = true;
allowUnfree = true;
allowUnfreePredicate = _: true; # TODO: what is this
warn-dirty = false;
permittedInsecurePackages = [
"olm-3.2.16"
];
};
};
nix.settings.auto-optimise-store = lib.mkDefault true;
nix.settings.experimental-features = [
"nix-command"
"flakes"
"ca-derivations"
];
# warn-dirty = false;
# Setup binary caches
nix.settings = {
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://hyprland.cachix.org"
"http://binarycache.julian-mutter.de"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
];
trusted-users = [
"root"
"@wheel"
]; # needed for devenv to add custom caches
};
nix.gc = {
automatic = true;
dates = "weekly";
# Keep the last 3 generations
options = "--delete-older-than +3";
};
programs.nix-ld.enable = true;
# TODO: is this useful?, what does it do?
# nix.settings.flake-registry = ""; # Disable global flake registry
# Add each flake input as a registry and nix_path
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
}

View File

@ -0,0 +1,9 @@
{pkgs, ...}: {
# Packages needed as root
environment.systemPackages = with pkgs; [
vim
htop
mc
gparted-xhost # needs to be installed as system package so it can be actually opened
];
}

View File

@ -0,0 +1,22 @@
{
inputs,
config,
...
}: let
isEd25519 = k: k.type == "ed25519";
getKeyPath = k: k.path;
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
in {
imports = [inputs.sops-nix.nixosModules.sops];
sops.age = {
sshKeyPaths = map getKeyPath keys;
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
keyFile = "/home/julian/.config/sops/age/keys.txt";
# Generate key if none of the above worked. With this, building will still work, just without secrets
generateKey = false; # TODO: building should not work without secrets!?
};
sops.defaultSopsFile = ../secrets.yaml;
}

View File

@ -0,0 +1,29 @@
{
pkgs,
lib,
...
}: {
# Make programs like nextcloud client access saved passwords
services.gnome.gnome-keyring.enable = true;
programs.seahorse.enable = true;
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; # Solve conflicting definition in seahorse and plasma6
# Make authentication work for e.g. gparted
security.polkit.enable = true;
systemd = {
user.services.polkit-gnome-authentication-agent-1 = {
description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
}

View File

@ -0,0 +1,9 @@
{
# MDNS on local network
services.avahi = {
enable = true;
nssmdns4 = true;
publish.enable = true;
publish.addresses = true;
};
}

View File

@ -0,0 +1,17 @@
{
# Bootloader
# Use this for simple nix boot menu, if no dual boot required
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 10;
boot.loader.efi.canTouchEfiVariables = true;
# https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66
boot.loader.systemd-boot.editor = false;
boot.supportedFilesystems = [
"btrfs"
"ntfs"
"nfs"
"cifs"
];
}

View File

@ -0,0 +1,5 @@
{
virtualisation.docker = {
enable = true;
};
}

View File

@ -0,0 +1,6 @@
{pkgs, ...}: {
services.flatpak.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
xdg.portal.config.common.default = "*"; # Use first portal implementation found
}

View File

@ -0,0 +1,21 @@
{pkgs, ...}: {
programs.gamemode = {
enable = true;
settings = {
general = {
softrealtime = "auto";
inhibit_screensaver = 1;
renice = 5;
};
# gpu = {
# apply_gpu_optimisations = "accept-responsibility";
# gpu_device = 1;
# amd_performance_level = "high";
# };
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
};
};
};
}

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