Compare commits

184 Commits

Author SHA1 Message Date
Gitea Actions
a9d601e574 Update flake.lock 2025-04-28 2025-12-14 00:30:31 +00:00
Gitea Actions
7dca7c15ff Update flake.lock 2025-04-27 2025-12-14 00:30:31 +00:00
Gitea Actions
e53144fb5d Update flake.lock 2025-04-26 2025-12-14 00:30:31 +00:00
Gitea Actions
8416942602 Update flake.lock 2025-04-25 2025-12-14 00:30:31 +00:00
Gitea Actions
0c83332bd6 Update flake.lock 2025-04-24 2025-12-14 00:30:31 +00:00
Gitea Actions
d03d05242c Update flake.lock 2025-04-23 2025-12-14 00:30:31 +00:00
Gitea Actions
79d4a2ba40 Update flake.lock 2025-04-22 2025-12-14 00:30:31 +00:00
Gitea Actions
74dc373016 Update flake.lock 2025-04-21 2025-12-14 00:30:31 +00:00
Gitea Actions
35ddbd4da4 Update flake.lock 2025-04-20 2025-12-14 00:30:31 +00:00
Gitea Actions
683eec8608 Update flake.lock 2025-04-19 2025-12-14 00:30:31 +00:00
Gitea Actions
d87b25d05d Update flake.lock 2025-04-18 2025-12-14 00:30:31 +00:00
Gitea Actions
545ee874d6 Update flake.lock 2025-04-17 2025-12-14 00:30:31 +00:00
Gitea Actions
3536264b14 Update flake.lock 2025-04-16 2025-12-14 00:30:31 +00:00
Gitea Actions
6a568ae565 Update flake.lock 2025-04-15 2025-12-14 00:30:31 +00:00
Gitea Actions
15e284bf9e Update flake.lock 2025-04-14 2025-12-14 00:30:31 +00:00
Gitea Actions
98c4806b4b Update flake.lock 2025-04-13 2025-12-14 00:30:31 +00:00
Gitea Actions
f9d1edfbf9 Update flake.lock 2025-04-12 2025-12-14 00:30:31 +00:00
Gitea Actions
7272df733f Update flake.lock 2025-04-11 2025-12-14 00:30:31 +00:00
Gitea Actions
35979ddc96 Update flake.lock 2025-04-10 2025-12-14 00:30:31 +00:00
Gitea Actions
f864679da6 Update flake.lock 2025-04-09 2025-12-14 00:30:31 +00:00
Gitea Actions
87a7910dfc Update flake.lock 2025-04-08 2025-12-14 00:30:31 +00:00
Gitea Actions
22903c92cf Update flake.lock 2025-04-07 2025-12-14 00:30:31 +00:00
Gitea Actions
03efc68a7f Update flake.lock 2025-04-06 2025-12-14 00:30:31 +00:00
Gitea Actions
98a91544f4 Update flake.lock 2025-04-05 2025-12-14 00:30:31 +00:00
Gitea Actions
32eda11d42 Update flake.lock 2025-04-04 2025-12-14 00:30:31 +00:00
Gitea Actions
7989c032ab Update flake.lock 2025-04-03 2025-12-14 00:30:31 +00:00
Gitea Actions
4746f44a15 Update flake.lock 2025-04-02 2025-12-14 00:30:31 +00:00
Gitea Actions
9f8668d646 Update flake.lock 2025-04-01 2025-12-14 00:30:31 +00:00
Gitea Actions
4ddf3c4522 Update flake.lock 2025-03-31 2025-12-14 00:30:31 +00:00
Gitea Actions
40f10a98b4 Update flake.lock 2025-03-30 2025-12-14 00:30:31 +00:00
Gitea Actions
3fb91bfff8 Update flake.lock 2025-03-29 2025-12-14 00:30:31 +00:00
Gitea Actions
91538ed268 Update flake.lock 2025-03-28 2025-12-14 00:30:31 +00:00
Gitea Actions
58285beed1 Update flake.lock 2025-03-27 2025-12-14 00:30:31 +00:00
Gitea Actions
a999b8bb78 Update flake.lock 2025-03-26 2025-12-14 00:30:31 +00:00
Gitea Actions
c331f6b776 Update flake.lock 2025-03-25 2025-12-14 00:30:31 +00:00
Gitea Actions
536906d529 Update flake.lock 2025-03-24 2025-12-14 00:30:31 +00:00
Gitea Actions
3548df93a6 Update flake.lock 2025-03-23 2025-12-14 00:30:31 +00:00
fec13e08b9 dev suite: remove latex
Some checks failed
Update Nix Flake / update-flake (push) Failing after 13s
2025-12-13 07:59:44 +01:00
a540ca622d kardorf: switch to hyprland 2025-12-13 07:59:35 +01:00
7fb0bcdac0 nixvim: add orgmode support 2025-12-13 07:59:20 +01:00
b7726fce94 hyprland: fix cursor tearing 2025-12-13 07:58:54 +01:00
30c987bd9b hm: remove my binarycache for hm-standalone
Some checks failed
Update Nix Flake / update-flake (push) Failing after 12s
Normally I wont have VPN access on standalone
2025-12-08 17:12:10 +01:00
539e9a0b8e v3ms: add qt-distrobox 2025-12-08 17:09:45 +01:00
1e4593ea17 home: add qt-distrobox config 2025-12-08 17:09:14 +01:00
ec8a71de95 open-messaging: update name of telegram binary
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-12-06 11:30:42 +01:00
0c39388b21 gc: change to older than 30
the old +3 did not seem to work
2025-12-06 11:28:02 +01:00
ebb043b589 format code 2025-12-06 11:24:15 +01:00
fcfc9f6450 hm: make it backup conflicting files 2025-12-06 11:24:08 +01:00
fe3cd057cd fix regreet with hyprland 2025-12-06 11:23:41 +01:00
b9cdb9299e auto-upgrade: commit flake.lock if upgrading worked 2025-12-06 09:22:21 +01:00
8b6ba76848 pianonix: add rpi-ws281x package 2025-12-06 09:22:02 +01:00
2e79bd9e00 nix: do not optimise store on build, but regularly 2025-12-06 09:21:30 +01:00
cfdc9f7001 aspi: activate wireguard 2025-12-06 09:21:17 +01:00
a12b50edfa pianonix: try getting piano-led-visualizer to run
Still did not work, using raspberrypi os
2025-12-06 09:20:52 +01:00
194d4bcec0 tmux: use vim bindings and better prefix 2025-12-06 09:20:00 +01:00
5badb000be install vagrant and qtcreator 2025-12-06 09:19:38 +01:00
08b3f2c194 emacs: add more tools for c++ and typst development 2025-12-06 09:19:20 +01:00
5f9a110464 update to nixos 25.11 2025-12-06 09:19:06 +01:00
bcd041484d Auto-update flake.lock 2025-12-05 14:03:59 +01:00
fd3b9f20f0 update flake, add tmux
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-11-25 20:13:12 +01:00
bc160af26a fix open-messaging and workspace assignments
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-11-17 07:05:41 +01:00
a34abd0f05 fix broken programs
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-11-16 12:24:15 +01:00
2fd1f5ee53 update flake 2025-11-16 12:24:09 +01:00
88547dc82c pianonix: small fixes to make it compile
Some checks failed
Update Nix Flake / update-flake (push) Failing after 13s
2025-11-11 10:06:37 +01:00
ccf38c2da2 remove broken packages after update 2025-11-11 09:55:54 +01:00
b1107ae904 update flake 2025-11-11 09:55:49 +01:00
48f53b3884 first setup of piano-visualizer on pianonix 2025-11-11 09:55:32 +01:00
9bcca96597 aspi firefwall: reactivate checkReversePath
Some checks failed
Update Nix Flake / update-flake (push) Failing after 12s
2025-10-28 09:09:03 +01:00
78e219a6cb sops: do not use keyfile makes ssh keys work 2025-10-28 09:09:03 +01:00
8b958d6a56 mdns: try fixes for bug with pianonix 2025-10-28 09:09:03 +01:00
1a1aa20690 pianonix: add bluetooth, fix firefox autostart 2025-10-28 09:09:03 +01:00
54952923f3 fish: add ctrl-space shortcut for zi 2025-10-28 09:09:03 +01:00
ca20fa6c35 hm-standalone: add official nix to trusted keys
Some checks failed
Update Nix Flake / update-flake (push) Failing after 17s
2025-10-27 11:19:12 +01:00
c1b2b51d13 update flake
Some checks failed
Update Nix Flake / update-flake (push) Failing after 11s
2025-10-21 20:04:02 +02:00
28f78bb67e flake: add nixos-generators for output pianonix-image 2025-10-21 20:03:46 +02:00
114647aa96 pianonix: update commented wireless networking config 2025-10-21 20:03:25 +02:00
64ae389f27 pianonix: update secrets for new installation 2025-10-21 20:03:12 +02:00
fd39dbfcd4 readme: update ssh-to-age command 2025-10-21 20:02:18 +02:00
b13cca7173 shell: add nix helper programs
Some checks failed
Update Nix Flake / update-flake (push) Failing after 20s
2025-10-20 19:37:44 +02:00
7807091b83 builder: use networkmanager again 2025-10-20 19:37:16 +02:00
d3026afb97 update flake 2025-10-20 19:37:05 +02:00
152daf1230 pianonix: multiple improvements, improve secrets, add wireguard, use sheetless in browser 2025-10-20 19:36:24 +02:00
ffda398f8d builder: disable autoupgrade
Some checks failed
Update Nix Flake / update-flake (push) Failing after 13s
2025-10-09 21:29:40 +02:00
3e179960de builder: simplify network config by using static dns list 2025-10-09 21:28:34 +02:00
93e655ed27 aspi: use wireguard via networkmanager 2025-10-09 21:28:14 +02:00
710c1dedb8 install additional software
Some checks failed
Update Nix Flake / update-flake (push) Failing after 13s
2025-10-05 15:36:37 +02:00
28ec5c73d4 format code 2025-10-05 15:36:26 +02:00
fc7285bd5c setup pob user for running pob2-frajul 2025-10-05 15:36:06 +02:00
11ee156b29 pipewire: try fixing video conference freeze 2025-10-05 15:34:21 +02:00
2dba549787 builder: setup as jenkins node 2025-10-05 15:33:58 +02:00
d28c7d870c add caches to substituters 2025-10-05 15:32:52 +02:00
8bf17e74ef use stable nixos-25.05 instead of unstable 2025-10-05 15:30:41 +02:00
08cf457aa3 neovim: use smartcase search 2025-09-11 08:04:03 +02:00
448002ebf4 update config syntax 2025-09-11 08:03:22 +02:00
9735d3f0c0 frajul-auto-upgrade: restore flake.lock if update failed 2025-09-09 21:47:35 +02:00
8f1b0ade4d user: add to rtkit groups to maybe fix audio 2025-09-09 21:47:08 +02:00
db05024dc6 builder: add fallback to substituters 2025-09-09 21:46:36 +02:00
21053dac8c install dig 2025-09-09 21:46:19 +02:00
1ab0bf54fa neovim: fix telescope file_browser, add lsps 2025-09-09 21:46:13 +02:00
5070d4dbfc Add yukari user 2025-09-01 17:24:27 +02:00
12466b4426 frajul-auto-upgrade: re-add lock file usage
Some checks failed
Update Nix Flake / update-flake (push) Failing after 11s
2025-08-03 16:05:46 +02:00
23155d57b7 update flake
Some checks failed
Update Nix Flake / update-flake (push) Failing after 18s
2025-07-26 08:13:42 +02:00
a9e30bd84b Set fallback for binary caches
This makes builds not fail when my own binary cache is offline for some reason
2025-07-26 08:13:02 +02:00
e62f6e9dce Fix frajul-auto-upgrade git permission issue 2025-07-26 08:12:43 +02:00
c543bc13ea hm: disable warn-dirty
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-07-12 15:52:17 +02:00
b4d1681b99 hyprland: fix waybar by running it with exec-once 2025-07-12 15:51:43 +02:00
6c32ffbe94 frajul-auto-upgrade: only run once a day
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-07-11 16:22:17 +02:00
6787243414 flake: update 2025-07-11 13:15:42 +02:00
d350807e8c builder: do enable auto-upgrades 2025-07-11 13:15:25 +02:00
f872c8db0c aspi: enable frajul auto upgrade module and integrate into waybar 2025-07-11 13:15:02 +02:00
8c53c66c4d Add frajul-auto-upgrade module 2025-07-11 13:14:48 +02:00
0f07029660 Add openconnect plugin to networkmanager
Some checks failed
Update Nix Flake / update-flake (push) Failing after 17s
2025-07-10 17:50:34 +02:00
8010d771a1 builder: add gitlab-runner
Some checks failed
Update Nix Flake / update-flake (push) Failing after 17s
2025-07-09 21:34:52 +02:00
7f4c41429e update flake
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-07-04 14:44:51 +02:00
6d21fe4262 format code 2025-07-04 14:44:31 +02:00
c081f95aaf open-messaging: adapt to new telegram program name 2025-07-04 14:44:01 +02:00
452a34c7e8 Neovim: add clangd 2025-07-04 14:43:51 +02:00
15c4616b91 Fix emacs not having TERMINAL env var 2025-07-04 14:43:45 +02:00
07274a0364 Update alacritty config, use as default 2025-07-04 14:41:58 +02:00
3bb8db1349 Fix builder using itself as remote subsituter 2025-07-04 14:40:58 +02:00
65a3dcdc08 Use ghostty as primary terminal
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-06-30 08:37:24 +02:00
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 12s
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
174 changed files with 3552 additions and 1457 deletions

View File

@@ -1,61 +0,0 @@
[helpers]
[default]
depends = []
[manjaro.files]
manjaro = "~"
[mc.files]
mc = "~/.config/mc"
[vim.files]
# type symbolic prevents interpreting '{{' as template
"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" }
[nvim.files]
"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" }
[i3.files]
"i3/i3" = "~/.config/i3"
"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" }
"i3/rofi" = "~/.config/rofi"
"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf"
"i3/i3status-rust" = "~/.config/i3status-rust"
"i3/.profile" = "~/.profile"
[i3.variables]
monitor-primary = "not-specified"
monitor-secondary = "not-specified"
screenlayout-script = "echo screenlayout-script not specified"
bar-font-size = 15
tray-output = "tray_output primary"
[emacs.files]
"emacs/doom" = "~/.config/doom"
# "emacs/spacemacs/.spacemacs" = "~/.spacemacs"
# "emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el"
[alacritty.files]
alacritty = "~/.config/alacritty"
[starship.files]
starship = "~/.config/"
[zsh.files]
"zsh/.zshrc" = "~/.zshrc"
"zsh/custom-plugins" = "~/.oh-my-zsh/custom"
[polybar.files]
polybar = "~/.config/polybar"
[leftwm.files]
leftwm = "~/.config/leftwm"
[xmonad.files]
xmonad = "~/.xmonad"
[nix.files]
"direnvrc" = "~/.config/direnv/direnvrc"
"nix/configuration.nix" = "/etc/nixos/configuration.nix"
"nix/flake.nix" = "/etc/nixos/flake.nix"

View File

@@ -1,6 +0,0 @@
[i3.variables]
monitor-primary = "DVI-D-0"
monitor-secondary = "DVI-D-1"
screenlayout-script = "~/.screenlayout/2desktop-dvi.sh"
bar-font-size = 15
tray-output = "tray_output DVI-D-1"

View File

@@ -1,4 +0,0 @@
[i3.variables]
monitor-primary = "HDMI-1"
monitor-secondary = "eDP-1"
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"

View File

@@ -1,5 +0,0 @@
[i3.variables]
monitor-primary = "HDMI-1"
monitor-secondary = "eDP-1"
tray-output = "tray_output eDP-1"
screenlayout-script = "$scripts/display-layoutpicker"

View File

@@ -1,2 +0,0 @@
includes = [".dotter/kardorf.toml"]
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]

View File

@@ -1,2 +0,0 @@
includes = [".dotter/laptop.toml"]
packages = []

View File

@@ -25,6 +25,7 @@ jobs:
- name: Rebase from master branch - name: Rebase from master branch
shell: bash shell: bash
run: | run: |
git fetch origin master
commits_ahead=$(git rev-list --count HEAD..origin/master) commits_ahead=$(git rev-list --count HEAD..origin/master)
echo "Commits ahead: $commits_ahead" echo "Commits ahead: $commits_ahead"
git log --oneline -5 git log --oneline -5

View File

@@ -1,8 +1,10 @@
keys: keys:
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg - &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4 - &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct - &pianonix-ssh age1tguyu2yd5xv8rgjjl50cq6dq5rr7umqgv098dgre4u9wyj30ea7sexw62c
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja - &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
creation_rules: creation_rules:
- path_regex: hosts/common/secrets.yaml$ - path_regex: hosts/common/secrets.yaml$
key_groups: key_groups:
@@ -10,6 +12,7 @@ creation_rules:
- *primary - *primary
- *aspi-ssh - *aspi-ssh
- *pianonix-ssh - *pianonix-ssh
- *kardorf-ssh
- path_regex: hosts/builder/secrets.yaml$ - path_regex: hosts/builder/secrets.yaml$
key_groups: key_groups:
@@ -17,7 +20,7 @@ creation_rules:
- *primary - *primary
- *builder-ssh - *builder-ssh
- path_regex: hosts/pianonix/secrets.yaml$ - path_regex: hosts/pianonix/secrets*
key_groups: key_groups:
- age: - age:
- *primary - *primary

View File

@@ -24,7 +24,7 @@ sops edit secrets/secrets.yaml
** Authorize new device ** Authorize new device
- Generate public key from ssh -> Private age key generation not needed - Generate public key from ssh -> Private age key generation not needed
#+begin_src sh #+begin_src sh
ssh-to-age < /etc/ssh/ssh_host_ed25519_key ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
#+end_src #+end_src
- Add age public key to file:.sops.yaml - Add age public key to file:.sops.yaml
- Update keys - Update keys

904
flake.lock generated

File diff suppressed because it is too large Load Diff

249
flake.nix
View File

@@ -2,16 +2,21 @@
description = "Home Manager configuration of julian"; description = "Home Manager configuration of julian";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
systems.url = "github:nix-systems/default-linux"; systems.url = "github:nix-systems/default-linux";
nixos-hardware.url = "github:nixos/nixos-hardware"; nixos-hardware.url = "github:nixos/nixos-hardware";
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
nix-colors.url = "github:misterio77/nix-colors"; nix-colors.url = "github:misterio77/nix-colors";
deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.url = "github:serokell/deploy-rs";
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
sops-nix = { sops-nix = {
@@ -28,16 +33,12 @@
}; };
# Various flakes # Various flakes
alacritty-theme = {
url = "github:alacritty/alacritty-theme";
flake = false;
};
yazi-flavors = { yazi-flavors = {
url = "github:yazi-rs/flavors"; url = "github:yazi-rs/flavors";
flake = false; flake = false;
}; };
nixvim = { nixvim = {
url = "github:nix-community/nixvim"; url = "github:nix-community/nixvim/nixos-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-matlab = { nix-matlab = {
@@ -56,132 +57,146 @@
}; };
}; };
outputs = outputs = {
{ self,
self, nixpkgs,
nixpkgs, home-manager,
home-manager, systems,
systems, ...
... } @ inputs: let
}@inputs: inherit (self) outputs;
let lib = nixpkgs.lib // home-manager.lib;
inherit (self) outputs; forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
lib = nixpkgs.lib // home-manager.lib; pkgsFor = lib.genAttrs (import systems) (
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system}); system:
pkgsFor = lib.genAttrs (import systems) (
system:
import nixpkgs { import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
config.permittedInsecurePackages = [ config.permittedInsecurePackages = [
"olm-3.2.16" "olm-3.2.16"
]; ];
warn-dirty = false;
} }
); );
in in {
{ inherit lib;
inherit lib;
nixosModules = import ./modules/nixos; nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager; homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays { inherit inputs outputs; }; overlays = import ./overlays {inherit inputs outputs;};
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here? # hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; }); devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra); formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
nixosConfigurations = { nixosConfigurations = {
# Main laptop # Main laptop
aspi = lib.nixosSystem { aspi = lib.nixosSystem {
modules = [ ./hosts/aspi ]; modules = [./hosts/aspi];
specialArgs = { specialArgs = {
inherit inputs outputs; inherit inputs outputs;
};
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
kardorf = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
}; };
}; };
# Piano raspberry pi
# Standalone HM pianonix = lib.nixosSystem {
homeConfigurations = { modules = [./hosts/pianonix];
# Main laptop specialArgs = {
"julian@aspi" = lib.homeManagerConfiguration { inherit inputs outputs;
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
}; };
}; };
kardorf = lib.nixosSystem {
# deploy-rs node configuration modules = [./hosts/kardorf];
deploy.nodes = { specialArgs = {
pianonix = { inherit inputs outputs;
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 = { builder = lib.nixosSystem {
hostname = "builder.julian-mutter.de"; modules = [./hosts/builder];
profiles.system = { specialArgs = {
sshUser = "root"; inherit inputs outputs;
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
}; };
}; };
}; };
# 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;
};
};
};
# substitutes: nixos-generate --flake .#pianonix -f sd-aarch64 --system aarch64-linux
pianonix-image = inputs.nixos-generators.nixosGenerate {
system = "aarch64-linux";
format = "sd-aarch64";
modules = [./hosts/pianonix];
specialArgs = {
inherit inputs outputs;
};
};
};
} }

View File

@@ -1,27 +1,58 @@
{ {
imports = [ imports = [
./global ./global
./features/fish ./features/fish
./features/direnv ./features/direnv
./features/topgrade ./features/topgrade
./features/neovim ./features/neovim
./features/kitty ./features/ghostty
./features/wezterm ./features/wezterm
./features/alacritty ./features/alacritty
./features/yazi ./features/yazi
./features/emacs ./features/emacs
./features/i3 ./features/tmux
./features/nix-helper ./features/qt-distrobox
./features/desktop
./features/hyprland
./features/suites/cli ./features/suites/cli
./features/suites/desktop ./features/suites/desktop
./features/suites/development ./features/suites/development
]; ];
hostName = "aspi"; hostName = "aspi";
is-nixos = true; is-nixos = true;
terminal = "kitty"; terminal = "alacritty";
# ------- ----------
# | 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

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

View File

@@ -1,17 +1,12 @@
{ {
lib, lib,
pkgs,
inputs,
config, config,
... ...
}: }: {
programs.alacritty = {
{ enable = true;
home.packages = with pkgs; [ alacritty ]; settings = {};
theme = "smoooooth";
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"; home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1024 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

View File

@@ -4,24 +4,19 @@
config, config,
... ...
}: }:
with lib; let
with lib;
let
doomRepoUrl = "https://github.com/doomemacs/doomemacs"; doomRepoUrl = "https://github.com/doomemacs/doomemacs";
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config"; configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
in in {
{ home.sessionPath = ["/home/julian/.config/emacs/bin"];
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
home.packages = home.packages = with pkgs;
with pkgs;
[ [
binutils # native-comp needs 'as', provided by this binutils # native-comp needs 'as', provided by this
## Doom dependencies ## Doom dependencies
git git
(ripgrep.override { withPCRE2 = true; }) (ripgrep.override {withPCRE2 = true;})
## Optional dependencies ## Optional dependencies
fd # faster projectile indexing fd # faster projectile indexing
@@ -30,12 +25,13 @@ in
## Module dependencies ## Module dependencies
(aspellWithDicts ( (aspellWithDicts (
ds: with ds; [ ds:
en with ds; [
en-computers en
en-science en-computers
de en-science
] de
]
)) ))
hunspell hunspell
@@ -46,6 +42,8 @@ in
# Code formatters for use with doom emacs # Code formatters for use with doom emacs
nixfmt-rfc-style # nix nixfmt-rfc-style # nix
alejandra # nix
nixd # nix lsp nixd # nix lsp
dockfmt # docker dockfmt # docker
google-java-format # java google-java-format # java
@@ -54,6 +52,14 @@ in
shfmt shfmt
pyright pyright
clang-tools # c++ lsp etc clang-tools # c++ lsp etc
ccls # alternative c++ lsp
cmake
bear
cmake-language-server
# qt6.full # qt tools and libs including lsp
tinymist # typst lsp
ltex-ls # latex languagetool ltex-ls # latex languagetool
graphviz graphviz
@@ -64,7 +70,7 @@ in
] ]
++ lib.optional config.is-nixos emacs; ++ lib.optional config.is-nixos emacs;
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [ ! -d "/home/julian/.config/emacs" ]; then if [ ! -d "/home/julian/.config/emacs" ]; then
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs" $DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
fi fi

View File

@@ -3,10 +3,7 @@
pkgs, pkgs,
... ...
}: }:
with lib; {
with lib;
{
home.file = { home.file = {
".config/starship.toml".source = ./starship.toml; ".config/starship.toml".source = ./starship.toml;
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish; ".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
@@ -50,6 +47,10 @@ with lib;
end end
nix shell $args nix shell $args
''; '';
fish_user_key_bindings = ''
bind ctrl-space 'zi; commandline -f repaint'
bind -M insert ctrl-space 'zi; commandline -f repaint'
'';
}; };
}; };
} }

View File

@@ -4,18 +4,15 @@
config, config,
... ...
}: }:
with lib; {
with lib;
{
fonts.fontconfig.enable = true; # required to autoload fonts from packages fonts.fontconfig.enable = true; # required to autoload fonts from packages
home.packages = with pkgs; [ home.packages = with pkgs; [
(nerdfonts.override { fonts = [ "FiraCode" ]; }) nerd-fonts.fira-code
font-awesome font-awesome
dejavu_fonts dejavu_fonts
noto-fonts noto-fonts
noto-fonts-cjk-sans noto-fonts-cjk-sans
noto-fonts-emoji noto-fonts-color-emoji
liberation_ttf liberation_ttf
fira-code fira-code
fira-code-symbols fira-code-symbols

View File

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

View File

@@ -0,0 +1,16 @@
{
lib,
config,
...
}: {
programs.ghostty = {
enable = true;
enableFishIntegration = true;
settings = {
theme = "catppuccin-mocha";
font-size = 12;
};
};
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "ghostty") "ghostty";
}

View File

@@ -3,13 +3,11 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme; in {
in
{
# Do not make conditional, just toggle things on and off # Do not make conditional, just toggle things on and off
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark"; # home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
gtk = { gtk = {
@@ -24,5 +22,12 @@ in
name = "Papirus-Dark"; name = "Papirus-Dark";
package = pkgs.papirus-icon-theme; package = pkgs.papirus-icon-theme;
}; };
cursorTheme = {
package = pkgs.apple-cursor;
name = "macOS";
size = 24;
};
}; };
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
} }

View File

@@ -2,33 +2,79 @@
pkgs, pkgs,
inputs, inputs,
config, config,
lib,
... ...
}: }: let
inherit
let (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme})
palette palette
; ;
in in {
{
imports = [ imports = [
inputs.hyprland.homeManagerModules.default # inputs.hyprland.homeManagerModules.default
./waybar ./waybar
./wofi ./wofi
./mako ./mako
./hyprlock # ./hyprlock
./wlogout ./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; [ home.packages = with pkgs; [
# hyprpicker # TODO hyprpicker
# hyprcursor # TODO
brightnessctl brightnessctl
# grimblast
frajul.hyprshot-gui 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 = { # services.hypridle = {
# enable = true; # enable = true;
# settings = { # settings = {
@@ -66,7 +112,29 @@ in
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor # Whether to enable Hyprland wayland compositor
enable = true; enable = true;
package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable # 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) # The hyprland package to use (simplifies use of plugins)
# package = inputs.hyprland.packages.${pkgs.system}.hyprland; # package = inputs.hyprland.packages.${pkgs.system}.hyprland;
@@ -75,23 +143,29 @@ in
# Optional # Optional
# Whether to enable hyprland-session.target on hyprland startup # Whether to enable hyprland-session.target on hyprland startup
systemd.enable = true; # systemd.enable = true;
# Make PATH available to systemd services # Make PATH available to systemd services
systemd.variables = [ "--all" ]; # systemd.variables = [ "--all" ];
plugins = [ plugins = [
inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable # inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
# hyprlandPlugins.hyprbars # hyprlandPlugins.hyprbars
]; ];
settings = { settings = {
"$mod" = "SUPER"; "$mod" = "SUPER";
# Environment variables programs like emacs have access to
env = "TERMINAL,${config.terminal}";
# Monitors # Monitors
monitor = ",preferred,auto,auto"; monitor = ",preferred,auto,1";
# Autostart # Autostart
exec-once = [ "firefox" ]; exec-once = [
(lib.getExe pkgs.firefox)
(lib.getExe pkgs.waybar)
];
# Look and Feel # Look and Feel
general = { general = {
@@ -100,42 +174,69 @@ in
layout = "dwindle"; layout = "dwindle";
"col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg"; # "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
"col.inactive_border" = "0xff${palette.base00}"; # "col.inactive_border" = "0xff${palette.base00}";
}; };
decoration = { decoration = {
# power saving # power saving
blur.enabled = false; blur.enabled = false;
# power saving # power saving
drop_shadow = false; shadow.enabled = false;
}; };
# Dwindle layout # Dwindle layout
dwindle = { dwindle = {
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true; # You probably want this preserve_split = true; # You probably want this
no_gaps_when_only = 2; # with border smart_split = false;
smart_resizing = false;
force_split = 2;
# no_gaps_when_only = 2; # with border
}; };
# Master layout # Master layout
master = { master = {
new_status = "slave"; new_status = "slave";
no_gaps_when_only = 2; # with border # no_gaps_when_only = 2; # with border
mfact = 0.5; # Do not make master bigger 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 = { misc = {
# disable auto polling for config file changes # disable auto polling for config file changes
disable_autoreload = true; disable_autoreload = true;
force_default_wallpaper = 0; force_default_wallpaper = 0;
# we do, in fact, want direct scanout
# no_direct_scanout = false;
vfr = true; # power saving vfr = true; # power saving
}; };
cursor = {
no_hardware_cursors = 1; # disable hardware cursors to fix tearing on kardorf
};
render = {
# we do, in fact, want direct scanout
direct_scanout = true;
};
# Input # Input
input = { input = {
kb_layout = "de"; kb_layout = "de";
@@ -147,7 +248,9 @@ in
windowrulev2 = [ windowrulev2 = [
"suppressevent maximize, class:.*" "suppressevent maximize, class:.*"
"workspace 1, class:firefox" "workspace 1, class:firefox"
"workspace 8, class:Zotero"
"workspace 9, class:nheko" "workspace 9, class:nheko"
"workspace 9, class:discord"
"workspace 9, class:org.telegram.desktop" "workspace 9, class:org.telegram.desktop"
"workspace 10, class:thunderbird" "workspace 10, class:thunderbird"
"float, class:qalculate-gtk" "float, class:qalculate-gtk"
@@ -155,18 +258,17 @@ in
]; ];
# Workspace rules # Workspace rules
workspace = [ workspace =
"1, monitor:HDMI-A-1" [
"2, monitor:HDMI-A-1" # smart gaps (none when only one window in workspace)
"3, monitor:HDMI-A-1" "w[t1], gapsin:0, gapsout:0, border:1"
"4, monitor:HDMI-A-1" "w[tg1], gapsin:0, gapsout:0, border:1"
"5, monitor:HDMI-A-1" "f[1], gapsin:0, gapsout:0, border:1"
"6, monitor:eDP-1" ]
"7, monitor:eDP-1" # builds like "1, e-DP1" "2, HDMI-1" etc.
"8, monitor:eDP-1" ++ builtins.concatLists (
"9, monitor:eDP-1" map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
"10, monitor:eDP-1" );
];
# Mouse binds # Mouse binds
bindm = [ bindm = [
@@ -175,115 +277,138 @@ in
]; ];
# binds # binds
bind = [ bind =
# compositor commands [
"$mod, Space, focuswindow, floating" # compositor commands
"$mod SHIFT, Space, togglefloating," "$mod, Space, focuswindow, floating"
"$mod, F, fullscreen," "$mod SHIFT, Space, togglefloating,"
"$mod, X, killactive," "$mod, F, fullscreen,"
"$mod, X, killactive,"
"$mod, O, togglesplit," # dwindle "$mod, O, togglesplit," # dwindle
# opening applications # opening applications
"$mod, D, exec, wofi --show drun,run" "$mod, D, exec, wofi --show drun,run"
"$mod, E, exec, pcmanfm" "$mod, E, exec, pcmanfm"
"$mod, Return, exec, kitty" "$mod, Return, exec, ${config.terminal}"
"$mod, B, exec, firefox" "$mod, B, exec, firefox"
"$mod, C, exec, qalculate-gtk" "$mod, C, exec, qalculate-gtk"
# other commands # other commands
"$mod SHIFT, E, exec, wlogout -p layer-shell" "$mod SHIFT, E, exec, wlogout -p layer-shell"
"$mod, Escape, exec, wlogout -p layer-shell" "$mod, Escape, exec, wlogout -p layer-shell"
"$mod, TAB, exec, hyprlock" "$mod SHIFT, R, exec, hyprctl reload"
"$mod SHIFT, R, exec, hyprctl reload" "$mod, Print, exec, hyprshot-gui"
", Print, exec, hyprshot-gui" ", Print, exec, hyprshot-gui"
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
# "$mod SHIFT, E, exec, pkill Hyprland" # "$mod SHIFT, E, exec, pkill Hyprland"
# "$mod, G, togglegroup," # "$mod, G, togglegroup,"
# "$mod SHIFT, N, changegroupactive, f" # "$mod SHIFT, N, changegroupactive, f"
# "$mod SHIFT, P, changegroupactive, b" # "$mod SHIFT, P, changegroupactive, b"
# "$mod ALT, ,resizeactive," # "$mod ALT, ,resizeactive,"
# media keys # media keys
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioPlay, exec, playerctl play-pause" ", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPause, exec, playerctl pause" ", XF86AudioPause, exec, playerctl pause"
", XF86AudioStop, exec, playerctl stop" ", XF86AudioStop, exec, playerctl stop"
", XF86AudioNext, exec, playerctl next" ", XF86AudioNext, exec, playerctl next"
", XF86AudioPrev, exec, playerctl previous" ", XF86AudioPrev, exec, playerctl previous"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+" ", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-" ", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
# move focus # move focus
"$mod, left, movefocus, l" "$mod, left, movefocus, l"
"$mod, H, movefocus, l" "$mod, H, movefocus, l"
"$mod, right, movefocus, r" "$mod, right, movefocus, r"
"$mod, L, movefocus, r" "$mod, L, movefocus, r"
"$mod, up, movefocus, u" "$mod, up, movefocus, u"
"$mod, K, movefocus, u" "$mod, K, movefocus, u"
"$mod, down, movefocus, d" "$mod, down, movefocus, d"
"$mod, J, movefocus, d" "$mod, J, movefocus, d"
# move window # move window
"$mod SHIFT, left, movewindow, l" "$mod SHIFT, left, movewindow, l"
"$mod SHIFT, H, movewindow, l" "$mod SHIFT, H, movewindow, l"
"$mod SHIFT, right, movewindow, r" "$mod SHIFT, right, movewindow, r"
"$mod SHIFT, L, movewindow, r" "$mod SHIFT, L, movewindow, r"
"$mod SHIFT, up, movewindow, u" "$mod SHIFT, up, movewindow, u"
"$mod SHIFT, K, movewindow, u" "$mod SHIFT, K, movewindow, u"
"$mod SHIFT, down, movewindow, d" "$mod SHIFT, down, movewindow, d"
"$mod SHIFT, J, movewindow, d" "$mod SHIFT, J, movewindow, d"
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
"$mod, 1, workspace, 1" "$mod, 1, workspace, 1"
"$mod, 2, workspace, 2" "$mod, 2, workspace, 2"
"$mod, 3, workspace, 3" "$mod, 3, workspace, 3"
"$mod, 4, workspace, 4" "$mod, 4, workspace, 4"
"$mod, 5, workspace, 5" "$mod, 5, workspace, 5"
"$mod, 6, workspace, 6" "$mod, 6, workspace, 6"
"$mod, 7, workspace, 7" "$mod, 7, workspace, 7"
"$mod, 8, workspace, 8" "$mod, 8, workspace, 8"
"$mod, 9, workspace, 9" "$mod, 9, workspace, 9"
"$mod, 0, workspace, 10" "$mod, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mod SHIFT, 1, movetoworkspace, 1" "$mod SHIFT, 1, movetoworkspace, 1"
"$mod SHIFT, 2, movetoworkspace, 2" "$mod SHIFT, 2, movetoworkspace, 2"
"$mod SHIFT, 3, movetoworkspace, 3" "$mod SHIFT, 3, movetoworkspace, 3"
"$mod SHIFT, 4, movetoworkspace, 4" "$mod SHIFT, 4, movetoworkspace, 4"
"$mod SHIFT, 5, movetoworkspace, 5" "$mod SHIFT, 5, movetoworkspace, 5"
"$mod SHIFT, 6, movetoworkspace, 6" "$mod SHIFT, 6, movetoworkspace, 6"
"$mod SHIFT, 7, movetoworkspace, 7" "$mod SHIFT, 7, movetoworkspace, 7"
"$mod SHIFT, 8, movetoworkspace, 8" "$mod SHIFT, 8, movetoworkspace, 8"
"$mod SHIFT, 9, movetoworkspace, 9" "$mod SHIFT, 9, movetoworkspace, 9"
"$mod SHIFT, 0, movetoworkspace, 10" "$mod SHIFT, 0, movetoworkspace, 10"
# Move active window to a workspace without following with mainMod + CTRL + [0-9] # Move active window to a workspace without following with mainMod + CTRL + [0-9]
"$mod CTRL, 1, movetoworkspacesilent, 1" "$mod CTRL, 1, movetoworkspacesilent, 1"
"$mod CTRL, 2, movetoworkspacesilent, 2" "$mod CTRL, 2, movetoworkspacesilent, 2"
"$mod CTRL, 3, movetoworkspacesilent, 3" "$mod CTRL, 3, movetoworkspacesilent, 3"
"$mod CTRL, 4, movetoworkspacesilent, 4" "$mod CTRL, 4, movetoworkspacesilent, 4"
"$mod CTRL, 5, movetoworkspacesilent, 5" "$mod CTRL, 5, movetoworkspacesilent, 5"
"$mod CTRL, 6, movetoworkspacesilent, 6" "$mod CTRL, 6, movetoworkspacesilent, 6"
"$mod CTRL, 7, movetoworkspacesilent, 7" "$mod CTRL, 7, movetoworkspacesilent, 7"
"$mod CTRL, 8, movetoworkspacesilent, 8" "$mod CTRL, 8, movetoworkspacesilent, 8"
"$mod CTRL, 9, movetoworkspacesilent, 9" "$mod CTRL, 9, movetoworkspacesilent, 9"
"$mod CTRL, 0, movetoworkspacesilent, 10" "$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 = { # plugin = {
hyprbars = { # hyprbars = {
bar_text_size = 10; # bar_text_size = 10;
bar_height = 16; # bar_height = 16;
bar_text_font = "Ubuntu Nerd Font"; # bar_text_font = "Ubuntu Nerd Font";
bar_precedence_over_border = true; # bar_precedence_over_border = true;
bar_color = "rgb(${palette.base01})"; # bar_color = "rgb(${palette.base01})";
hyprbars-button = [ "rgb(${palette.base03}), 14, 󰖭, hyprctl dispatch killactive" ]; # 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

@@ -5,13 +5,12 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{
programs.hyprlock.enable = true; programs.hyprlock.enable = true;
programs.hyprlock.settings = { programs.hyprlock.settings = {
general = { general = {

View File

@@ -5,25 +5,26 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [libnotify];
home.packages = with pkgs; [ libnotify ];
services.mako = { services.mako = {
enable = true; enable = true;
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender settings = {
backgroundColor = "#${palette.base00}"; defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
textColor = "#${palette.base05}"; backgroundColor = "#${palette.base00}";
borderColor = "#${palette.base0D}"; textColor = "#${palette.base05}";
progressColor = "over #${palette.base02}"; borderColor = "#${palette.base0D}";
extraConfig = '' progressColor = "over #${palette.base02}";
[urgency=high] extraConfig = ''
border-color=#${palette.base09} [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

@@ -12,7 +12,14 @@
"modules-center": [], "modules-center": [],
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"], "modules-right": ["idle_inhibitor", "custom/nixos-update", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
"custom/nixos-update": {
"exec": "frajul-auto-upgrade-status",
"return-type": "json",
"interval": 2,
"on-click-right": "frajul-auto-upgrade-toggle"
},
"hyprland/workspaces": { "hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace m+1", "on-scroll-up": "hyprctl dispatch workspace m+1",
@@ -35,6 +42,7 @@
}, },
"idle_inhibitor": { "idle_inhibitor": {
"start-activated": true,
"format": "{icon}", "format": "{icon}",
"format-icons": { "format-icons": {
"activated": "", "activated": "",
@@ -75,9 +83,9 @@
"warning": 30, "warning": 30,
"critical": 15 "critical": 15
}, },
"format": "{icon} {capacity}% ({time})", "format": "{icon} {capacity}%",
"format-charging": " {capacity}% ({time})", "format-charging": " {capacity}%",
"format-plugged": " {capacity}% ({time})", "format-plugged": " {capacity}%",
"format-full": "{icon} ", "format-full": "{icon} ",
"format-icons": ["", "", "", "", ""] "format-icons": ["", "", "", "", ""]
}, },

View File

@@ -5,16 +5,12 @@
lib, lib,
inputs, inputs,
... ...
}: }: let
let palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) in {
palette
;
in
{
programs.waybar = { programs.waybar = {
enable = true; enable = true;
systemd.enable = true; # systemd.enable = true;
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json); settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
}; };

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

@@ -5,14 +5,13 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [wlogout];
home.packages = with pkgs; [ wlogout ];
# xdg.configFile."wlogout/style.css".text = '' # xdg.configFile."wlogout/style.css".text = ''
# * { # * {

View File

@@ -5,14 +5,13 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [wofi];
home.packages = with pkgs; [ wofi ];
xdg.configFile."wofi/config".source = ./config; xdg.configFile."wofi/config".source = ./config;
xdg.configFile."wofi/style.css".text = '' xdg.configFile."wofi/style.css".text = ''

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

@@ -3,9 +3,8 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{ imports = [../rofi];
imports = [ ../rofi ];
services.dunst.enable = true; services.dunst.enable = true;
@@ -32,11 +31,13 @@
package = pkgs.i3-gaps; package = pkgs.i3-gaps;
}; };
xsession.importedVariables = [ ]; xsession.importedVariables = [];
# Overwrite default home-manager config file # Overwrite default home-manager config file
xdg.configFile."i3/config".source = lib.mkForce ( xdg.configFile."i3/config".source = lib.mkForce (
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config if config.hostName == "kardorf"
then ./i3/config-kardorf
else ./i3/config
); );
home.file = { home.file = {
@@ -48,5 +49,5 @@
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml; ".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
}; };
home.sessionPath = [ "/home/julian/.config/i3/scripts" ]; home.sessionPath = ["/home/julian/.config/i3/scripts"];
} }

View File

@@ -142,8 +142,8 @@ bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10 bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
# Monitor config # Monitor config
set $monitor_left "DVI-D-0" set $monitor_left "DVI-D-1"
set $monitor_right "DVI-D-1" set $monitor_right "DVI-D-2"
workspace $ws1 output $monitor_left workspace $ws1 output $monitor_left
workspace $ws2 output $monitor_left workspace $ws2 output $monitor_left

View File

@@ -1,27 +0,0 @@
#!/bin/sh
start_if_not_running()
{
program=$1
pidof -sq $program
if [ "$?" -eq "1" ]; then
start_program $1
else
echo "$program is already running"
fi
}
start_program()
{
program=$1
echo "Starting $program..."
$program & > /dev/null
}
i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-messaging.json'
start_program nheko
sleep 0.1
start_program telegram-desktop
sleep 0.1
start_program thunderbird
sleep 0.1

View File

@@ -1,20 +0,0 @@
#!/bin/sh
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"
LAPTOP_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"
HDMI_ICON=$(pactl info | grep -q $HDMI_SINK && echo "checkbox")
LAPTOP_ICON=$(pactl info | grep -q $LAPTOP_SINK && echo "checkbox")
HDMI_VOLUME=$(pactl get-sink-volume $HDMI_SINK | head -n 1 | awk '{print $5}')
LAPTOP_VOLUME=$(pactl get-sink-volume $LAPTOP_SINK | head -n 1 | awk '{print $5}')
read -r -d '' CONF <<EOF
Open Pavucontrol,pavucontrol,pavucontrol
^sep()
HDMI - $HDMI_VOLUME,pactl set-default-sink $HDMI_SINK,$HDMI_ICON
Laptop - $LAPTOP_VOLUME,pactl set-default-sink $LAPTOP_SINK,$LAPTOP_ICON
EOF
echo "$CONF" | jgmenu --simple

View File

@@ -3,9 +3,7 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{
programs.kitty = { programs.kitty = {
enable = true; enable = true;
shellIntegration.enableFishIntegration = true; shellIntegration.enableFishIntegration = true;

View File

@@ -4,10 +4,8 @@
inputs, inputs,
... ...
}: }:
{ {
imports = [ inputs.nixvim.homeModules.nixvim ];
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
@@ -39,7 +37,8 @@
opts = { opts = {
number = false; number = false;
relativenumber = false; relativenumber = false;
ignorecase = true;
smartcase = true;
}; };
clipboard.register = "unnamedplus"; # Use system clipboard clipboard.register = "unnamedplus"; # Use system clipboard
@@ -53,7 +52,7 @@
key = "<leader><space>"; key = "<leader><space>";
} }
{ {
action = "<cmd>Telescope file_browser<cr>"; action = "<cmd>Telescope file_browser path=%:p:h<cr>";
key = "<leader>."; key = "<leader>.";
} }
{ {
@@ -80,6 +79,7 @@
neogit.enable = true; # like magit neogit.enable = true; # like magit
trouble.enable = true; trouble.enable = true;
web-devicons.enable = true; web-devicons.enable = true;
orgmode.enable = true; # org-mode support
# Shows file trees # Shows file trees
oil = { oil = {
@@ -144,21 +144,23 @@
}; };
lsp = { lsp = {
enable = true; enable = true; # includes lsp-config, default settings for the lsps
servers = { servers = {
rust_analyzer = { rust_analyzer = {
enable = true; enable = true;
installCargo = true; installCargo = true;
installRustc = true; installRustc = true;
}; };
nixd.enable = true; nixd.enable = true; # nix
pyright.enable = true; pyright.enable = true; # python
dockerls.enable = true; dockerls.enable = true; # docker
lua_ls.enable = true; lua_ls.enable = true; # lua
clangd.enable = true; # c, c++
dartls.enable = true; # dart, flutter
digestif.enable = true; # latex
tinymist.enable = true; # typst
}; };
}; };
}; };
}; };
} }

View File

@@ -1,12 +1,6 @@
{ {pkgs, ...}: {
lib,
pkgs,
...
}:
{
home.sessionVariables = { home.sessionVariables = {
FLAKE = "/home/julian/.dotfiles"; NH_FLAKE = "/home/julian/.dotfiles";
}; };
home.shellAliases = { home.shellAliases = {
@@ -14,5 +8,5 @@
"hs" = "nh home switch"; "hs" = "nh home switch";
}; };
home.packages = with pkgs; [ nh ]; home.packages = with pkgs; [nh];
} }

View File

@@ -0,0 +1,22 @@
{
programs.distrobox = {
enable = true;
containers."qt-distrobox" = {
image = "debian:12.2";
exported_apps = "qtcreator";
enableSystemdUnit = false; # fails in creating and does not recreate. Do distrobox-assemble create --replace --file ~/.config/distrobox/containers.ini instead
additional_packages = [
"qtcreator"
"qt6-base-dev"
"qt6-wayland"
"qt6-tools-dev-tools"
"qt6-tools-dev"
"qt6-serialbus-dev"
"qt6-websockets-dev"
"libgl1-mesa-dev"
"build-essential"
"cmake"
];
};
};
}

View File

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

View File

@@ -1,12 +1,7 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
bat bat
du-dust # Like du tree but better dust # Like du tree but better
fd # better find fd # better find
fdupes # find and delete duplicate files fdupes # find and delete duplicate files
ffmpeg ffmpeg
@@ -29,7 +24,7 @@
p7zip # unzip 7zip archives p7zip # unzip 7zip archives
parted parted
pciutils # lspci pciutils # lspci
poppler_utils # Pdf utils including pdfimages poppler-utils # Pdf utils including pdfimages
libqalculate # Nice tui calculator (qalc) libqalculate # Nice tui calculator (qalc)
ripgrep # better grep ripgrep # better grep
rnr # renaming tool rnr # renaming tool
@@ -45,6 +40,7 @@
wireguard-tools # wg-quick wireguard-tools # wg-quick
xorg.xkill xorg.xkill
zip zip
dig
## My scripts ## My scripts
frajul.edit-config frajul.edit-config

View File

@@ -1,10 +1,6 @@
{ {pkgs, ...}: {
lib, imports = [../../gtk];
pkgs,
...
}:
{
services.blueman-applet.enable = true; services.blueman-applet.enable = true;
services.nextcloud-client.enable = true; services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true; services.nextcloud-client.startInBackground = true;
@@ -17,28 +13,30 @@
enable = true; enable = true;
extensions = [ extensions = [
# Tampermonkey # Tampermonkey
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } {id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
]; ];
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
arandr arandr
calibre # ebook manager and viewer calibre # ebook manager and viewer
digikam # digikam
discord discord
discord-ptb # in case discord updates take their time
# dvdisaster # dvdisaster
# element-desktop # element-desktop
# rocketchat-desktop # rocketchat-desktop
thunderbird thunderbird
tdesktop # telegram telegram-desktop # telegram
# schildichat-desktop # not updated regularly # schildichat-desktop # not updated regularly
nheko nheko
evince # Simple pdf reader, good for focusing on document content evince # Simple pdf reader, good for focusing on document content
firefox firefox
vivaldi
# geogebra # geogebra
cheese cheese
handbrake handbrake
kitty # Terminal # kitty # Terminal, already available as feature
libnotify libnotify
libreoffice libreoffice
mate.engrampa mate.engrampa
@@ -50,10 +48,10 @@
qpdfview qpdfview
# qutebrowser # qutebrowser
# realvnc-vnc-viewer # realvnc-vnc-viewer
rpi-imager # make isos # rpi-imager # make isos
# rustdesk # rustdesk
tor-browser tor-browser
unstable.path-of-building # Path of Building rusty-path-of-building # Path of Building for poe1 and poe2
# frajul.pob-dev-version # Path of Building # frajul.pob-dev-version # Path of Building
vlc vlc
wineWowPackages.stable # 32-bit and 64-bit wine wineWowPackages.stable # 32-bit and 64-bit wine
@@ -65,8 +63,12 @@
zotero # Manage papers and other sources zotero # Manage papers and other sources
pdfpc # Present slides in pdf form pdfpc # Present slides in pdf form
networkmanager-openvpn
keepassxc
## My scripts ## My scripts
frajul.open-messaging frajul.open-messaging
frajul.xwacomcalibrate frajul.xwacomcalibrate
frajul.pob2-frajul
]; ];
} }

View File

@@ -1,10 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
watchexec # Run command when any file in current dir changes watchexec # Run command when any file in current dir changes
android-tools # adb android-tools # adb
@@ -15,7 +9,7 @@
clippy clippy
cntr # nix debugger cntr # nix debugger
conda conda
micromamba # a better, faster conda # micromamba # a better, faster conda
devcontainer # development container devcontainer # development container
devenv # devbox alternative devenv # devbox alternative
dbeaver-bin dbeaver-bin
@@ -27,15 +21,21 @@
unstable.zed-editor unstable.zed-editor
jdk jdk
julia-bin julia-bin
(texlive.combine { # (texlive.combine {
# for rendering latex in inkscape # # for rendering latex in inkscape
inherit (texlive) # inherit
scheme-medium # (texlive)
standalone # scheme-medium
amsmath # standalone
preview # amsmath
; # preview
}) # # needed for org mode export
# wrapfig
# capt-of
# biblatex
# ;
# })
vagrant
matlab # Using nix-matlab overlay defined in flake matlab # Using nix-matlab overlay defined in flake
maven maven
nodejs nodejs
@@ -63,6 +63,7 @@
## My scripts ## My scripts
frajul.deploy-to-pianopi frajul.deploy-to-pianopi
frajul.rtklib
(pkgs.writeShellScriptBin "matlab-rsp" '' (pkgs.writeShellScriptBin "matlab-rsp" ''
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl

View File

@@ -0,0 +1,10 @@
{
programs.tmux = {
enable = true;
clock24 = true;
keyMode = "vi";
customPaneNavigationAndResize = true; # use hjkl
mouse = true;
prefix = "C-Space"; # use instead of C-b
};
}

View File

@@ -7,8 +7,7 @@
misc.assume_yes = true; misc.assume_yes = true;
misc.no_retry = true; misc.no_retry = true;
pre_commands."Update flake" = # pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
linux.nix_arguments = "--flake /home/julian/.dotfiles"; linux.nix_arguments = "--flake /home/julian/.dotfiles";
linux.home_manager_arguments = [ linux.home_manager_arguments = [

View File

@@ -3,9 +3,7 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{
programs.wezterm = { programs.wezterm = {
enable = true; enable = true;
extraConfig = '' extraConfig = ''

View File

@@ -2,16 +2,15 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
programs.zoxide.enable = true; programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true; programs.zoxide.enableFishIntegration = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
exiftool exiftool
unar # extract archives unar # extract archives
xdragon # dragndrop dragon-drop # dragndrop
poppler_utils # pdf preview poppler-utils # pdf preview
fd fd
ripgrep ripgrep
fzf fzf
@@ -27,7 +26,7 @@
programs.yazi.enable = true; programs.yazi.enable = true;
programs.yazi.enableFishIntegration = true; programs.yazi.enableFishIntegration = true;
programs.yazi.settings.manager = { programs.yazi.settings.manager = {
sort_by = "modified"; sort_by = "mtime";
sort_reverse = true; sort_reverse = true;
show_hidden = true; show_hidden = true;
}; };
@@ -36,29 +35,29 @@
manager.prepend_keymap = [ manager.prepend_keymap = [
# Override defaults # Override defaults
{ {
on = [ "e" ]; on = ["e"];
run = ''shell --orphan --confirm "pcmanfm &"''; run = ''shell --orphan --confirm "pcmanfm &"'';
desc = "Open gui file manager"; desc = "Open gui file manager";
} }
{ {
on = [ "<C-o>" ]; on = ["<C-o>"];
run = ''shell "$SHELL" --block --confirm''; run = ''shell "$SHELL" --block --confirm'';
desc = "Open shell here"; desc = "Open shell here";
} }
{ {
on = [ "<C-n>" ]; on = ["<C-n>"];
run = ''shell 'dragon -x -i -T "$1"' --confirm''; run = ''shell 'dragon -x -i -T "$1"' --confirm'';
desc = "Dragndrop via dragon"; desc = "Dragndrop via dragon";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "plugin --sync smart-enter"; run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file"; desc = "Enter the child directory, or open the file";
} }
]; ];
input.prepend_keymap = [ input.prepend_keymap = [
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "close"; run = "close";
desc = "Cancel input"; desc = "Cancel input";
} }

View File

@@ -2,13 +2,12 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
home.file = { home.file = {
".config/starship.toml".source = ./starship.toml; ".config/starship.toml".source = ./starship.toml;
}; };
home.packages = with pkgs; [ starship ]; home.packages = with pkgs; [starship];
programs.starship = { programs.starship = {
enable = true; enable = true;
@@ -28,14 +27,14 @@
enable = true; enable = true;
plugins = [ plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins # list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{ name = "agkozak/zsh-z"; } {name = "agkozak/zsh-z";}
{ {
name = "zsh-users/zsh-completions"; name = "zsh-users/zsh-completions";
} }
# make it behave like fish # make it behave like fish
{ name = "zsh-users/zsh-autosuggestions"; } {name = "zsh-users/zsh-autosuggestions";}
{ name = "zsh-users/zsh-history-substring-search"; } {name = "zsh-users/zsh-history-substring-search";}
{ {
name = "zsh-users/zsh-syntax-highlighting"; name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin } # must be last sourced plugin

View File

@@ -1,16 +1,16 @@
{ {
inputs,
lib, lib,
pkgs, pkgs,
config, config,
outputs, outputs,
... ...
}: }: {
{ imports =
imports = [ [
# ../features/cli ../features/fonts
# ../features/helix ../features/nix-helper
] ++ (builtins.attrValues outputs.homeManagerModules); ]
++ (builtins.attrValues outputs.homeManagerModules);
nix = { nix = {
package = lib.mkDefault pkgs.nix; package = lib.mkDefault pkgs.nix;
@@ -20,7 +20,7 @@
"flakes" "flakes"
"ca-derivations" "ca-derivations"
]; ];
# warn-dirty = false; # TODO: do I want it? also for systems warn-dirty = false; # TODO: do I want it? also for systems
}; };
}; };
@@ -38,7 +38,7 @@
homeDirectory = lib.mkDefault "/home/${config.home.username}"; homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "23.11"; stateVersion = lib.mkDefault "23.11";
sessionPath = [ "$HOME/.local/bin" ]; sessionPath = ["$HOME/.local/bin"];
}; };
# TODO: colorscheme # TODO: colorscheme
@@ -50,5 +50,4 @@
# home.file = { # home.file = {
# ".colorscheme.json".text = builtins.toJSON config.colorscheme; # ".colorscheme.json".text = builtins.toJSON config.colorscheme;
# }; # };
} }

View File

@@ -6,9 +6,11 @@
# inherit pkgs; # inherit pkgs;
# inherit lib; # inherit lib;
# }; # };
{
{ lib, pkgs, ... }: lib,
let pkgs,
...
}: let
package-names = with pkgs; { package-names = with pkgs; {
"x-scheme-handler/tg" = telegram-desktop; "x-scheme-handler/tg" = telegram-desktop;
"x-scheme-handler/mailto" = thunderbird; "x-scheme-handler/mailto" = thunderbird;
@@ -40,6 +42,7 @@ let
"inode/directory" = pcmanfm; "inode/directory" = pcmanfm;
}; };
in in
lib.mapAttrs (mimeType: package: [ lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop" "${package}/share/applications/${package.pname}.desktop"
]) package-names ])
package-names

View File

@@ -1,19 +1,16 @@
# Only apply this to home-manager standalone # Only apply this to home-manager standalone
{ {outputs, ...}: {
outputs,
...
}:
{
# Apply overlays # Apply overlays
nixpkgs = { nixpkgs = {
overlays = builtins.attrValues outputs.overlays; overlays = builtins.attrValues outputs.overlays;
# config = { config = {
# allowUnfree = true; allowUnfree = true;
# allowUnfreePredicate = _: true; # TODO: what is this allowUnfreePredicate = _: true; # TODO: what is this
# permittedInsecurePackages = [ permittedInsecurePackages = [
# "olm-3.2.16" "olm-3.2.16"
# ]; ];
# }; warn-dirty = false;
};
}; };
# Setup binary caches # Setup binary caches
@@ -22,12 +19,13 @@
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org/" "https://cache.nixos.org/"
"https://hyprland.cachix.org" "https://hyprland.cachix.org"
"http://binarycache.julian-mutter.de" "https://devenv.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E=" "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
]; ];
trusted-users = [ trusted-users = [
@@ -42,6 +40,8 @@
]; ];
# nix.settings. # warn-dirty = false; # TODO: do I want this # nix.settings. # warn-dirty = false; # TODO: do I want this
#
# Ensure we can still build when missing-server is not accessible
fallback = true;
}; };
} }

View File

@@ -6,22 +6,54 @@
./features/direnv ./features/direnv
./features/topgrade ./features/topgrade
./features/neovim ./features/neovim
./features/kitty ./features/ghostty
./features/wezterm ./features/wezterm
./features/alacritty
./features/yazi ./features/yazi
./features/emacs ./features/emacs
./features/i3
./features/nix-helper ./features/tmux
./features/desktop ./features/qt-distrobox
./features/hyprland
# ./features/i3
./features/suites/cli ./features/suites/cli
./features/suites/desktop ./features/suites/desktop
./features/suites/development ./features/suites/development
]; ];
hostName = "kardorf"; hostName = "kardorf";
is-nixos = true; is-nixos = true;
terminal = "kitty"; terminal = "alacritty";
# --------- ---------
# | 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"
];
}
];
} }

View File

@@ -1,8 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
imports = [ imports = [
./global ./global
@@ -11,16 +7,15 @@
./features/neovim ./features/neovim
./features/wezterm ./features/wezterm
./features/yazi ./features/yazi
./features/nix-helper ./features/gtk
./features/desktop
]; ];
hostName = "pianonix"; hostName = "pianonix";
is-nixos = true; is-nixos = true;
terminal = "wezterm"; terminal = "wezterm";
services.syncthing.tray.enable = true; # services.syncthing.tray.enable = true;
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available # services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
home.packages = with pkgs; [ home.packages = with pkgs; [
music-reader music-reader
@@ -32,10 +27,34 @@
onboard onboard
]; ];
programs.firefox = {
enable = true;
profiles.default = {
isDefault = true;
settings = {
"browser.startup.homepage" = "https://sheets.julian-mutter.de";
"browser.startup.page" = 1; # 0=blank, 1=home page, 3=restore previous session
};
};
};
programs.chromium = {
enable = true;
# commandLineArgs = [
# "--homepage=https://sheets.julian-mutter.de"
# "--no-first-run"
# ];
};
# Autostart link # Autostart link
home.file = { home.file = {
".config/autostart/sheet-organizer.desktop".source = # ".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop"; ".config/autostart/firefox.desktop".source = "${pkgs.firefox}/share/applications/firefox.desktop";
".config/autostart/onboard.desktop".source = "${pkgs.onboard}/share/applications/onboard.desktop";
# ".config/autostart/chromium.desktop".source = "${pkgs.chromium}/share/applications/chromium.desktop";
".config/sheet-organizer/config.toml".text = '' ".config/sheet-organizer/config.toml".text = ''
working_directory = "/home/julian/Klavier" working_directory = "/home/julian/Klavier"
''; '';

View File

@@ -2,8 +2,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
imports = [ imports = [
../global ../global
@@ -14,16 +13,19 @@
../features/yazi ../features/yazi
../features/emacs ../features/emacs
../features/nix-helper ../features/nix-helper
../features/qt-distrobox
]; ];
hostName = "aspi"; hostName = "aspi";
is-nixos = false; is-nixos = false;
# terminal = "kitty"; # terminal = "kitty";
home.sessionPath = ["/snap/bin"];
home.packages = home.packages =
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; }) lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
[ [
./fonts.nix ./fonts.nix
./packages.nix ./packages.nix
]; ];
} }

View File

@@ -1,13 +1,11 @@
{ pkgs, ... }: {pkgs, ...}:
with pkgs; [
with pkgs; nerd-fonts.fira-code
[
(nerdfonts.override { fonts = [ "FiraCode" ]; })
font-awesome font-awesome
dejavu_fonts dejavu_fonts
noto-fonts noto-fonts
noto-fonts-cjk-sans noto-fonts-cjk-sans
noto-fonts-emoji noto-fonts-color-emoji
liberation_ttf liberation_ttf
fira-code fira-code
fira-code-symbols fira-code-symbols

View File

@@ -1,7 +1,5 @@
{ pkgs, ... }: {pkgs, ...}:
with pkgs; [
with pkgs;
[
# Rust setup # Rust setup
rustc rustc
rustfmt rustfmt
@@ -33,7 +31,7 @@ with pkgs;
ffmpeg ffmpeg
julia-bin julia-bin
poppler_utils # Pdf utils including pdfimages poppler-utils # Pdf utils including pdfimages
sage sage
pkg-config # Often needed to build something pkg-config # Often needed to build something

View File

@@ -1,128 +1,61 @@
{
pkgs,
...
}:
{ {
imports = [ imports = [
# inputs.hardware.nixosModules.common-cpu-amd # TODO something useful for me?
./hardware-configuration.nix ./hardware-configuration.nix
../common/global ../common/global
../common/users/julian ../common/users/julian
../common/users/yukari
../common/users/pob
../common/optional/binarycaches.nix
# ../common/optional/openssh.nix
# ../common/optional/greetd.nix
../common/optional/pipewire.nix
../common/optional/remote-builder.nix ../common/optional/remote-builder.nix
../common/optional/boot-efi.nix ../common/optional/boot-efi.nix
../common/optional/greetd.nix
../common/optional/authentication.nix
../common/optional/pcmanfm.nix ../common/optional/pcmanfm.nix
../common/optional/i3.nix ../common/optional/pipewire.nix
../common/optional/gdm.nix
../common/optional/redshift.nix ../common/optional/gamemode.nix
../common/optional/virtualbox.nix ../common/optional/virtualbox.nix
../common/optional/xdg-portal.nix
../common/optional/polkit.nix # TODO: maybe not needed! ../common/optional/podman.nix
../common/optional/keyring.nix # TODO: maybe not needed! ../common/optional/wireguard.nix
../common/optional/flatpak.nix
../common/optional/avahi.nix
]; ];
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
boot.blacklistedKernelModules = [ "pcspkr" ]; # Disables "beep"
networking.hostName = "aspi"; networking.hostName = "aspi";
networking.networkmanager.enable = true; system.stateVersion = "24.05";
# networking.networkmanager.dns = "systemd-resolved";
services.resolved.enable = true;
time.timeZone = "Europe/Berlin"; # networking.firewall.checkReversePath = false; # Makes wg interface with all ips work
hardware.graphics.enable = true;
modules = { modules = {
syncthing = { syncthing = {
enable = true; enable = true;
overrideSettings = false; overrideSettings = false;
}; };
frajulAutoUpgrade = {
enable = true;
flakePath = "/home/julian/.dotfiles";
};
}; };
users.mutableUsers = false; programs.hyprland.enable = true;
services.desktopManager.plasma6.enable = true;
services.blueman.enable = true; services.blueman.enable = true;
services.upower.enable = true; services.upower.enable = true;
programs.steam.enable = true; programs.steam.enable = true;
programs.dconf.enable = true; # TODO: not working
services.logind.lidSwitch = "lock"; # services.logind.lidSwitch = "lock";
services.logind.lidSwitchDocked = "lock"; # services.logind.lidSwitchDocked = "lock";
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support
services.libinput.enable = true; services.libinput.enable = true;
# This interface is started on boot / switch
networking.wg-quick.interfaces = {
julian = {
configFile = "/etc/wireguard/julian.conf";
};
};
# List services that you want to enable:
services.openssh.enable = false;
services.flatpak.enable = true;
security.krb5.enable = true;
security.krb5.settings = {
# domain_realm = {
# ".julian-mutter.de" = "julian-mutter.de";
# "julian-mutter.de" = "julian-mutter.de";
# };
libdefaults = {
default_realm = "julian-mutter.de";
# dns_lookup_realm = true;
# dns_lookup_kdc = true;
# ticket_lifetime = "24h";
# renew_lifetime = "7d";
};
realms = {
"julian-mutter.de" = {
kdc = [ "kerberos.julian-mutter.de" ];
admin_server = "kerberos-admin.julian-mutter.de";
default_domain = "julian-mutter.de";
};
};
};
virtualisation.docker.enable = true;
# hardware.nvidia-container-toolkit.enable = true;
# services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia.open = false;
# Do not alway generate man-cache, making builds much faster
documentation.man.generateCaches = false;
# MDNS on local network
services.avahi = {
enable = true;
nssmdns4 = true;
};
# Packages needed as root
environment.systemPackages = with pkgs; [
vim
htop
mc
xorg.xhost
pavucontrol
frajul.pulseaudio-popup
gparted-xhost # needs to be installed as system package so it can be actually opened
xclip
brightnessctl
];
# ======================== DO NOT CHANGE THIS ========================
system.stateVersion = "24.05";
# ======================== DO NOT CHANGE THIS ========================
} }

View File

@@ -1,17 +1,22 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
]; ...
}: {
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ]; boot.initrd.availableKernelModules = [
boot.initrd.kernelModules = [ "dm-snapshot" ]; "vmd"
boot.kernelModules = [ "kvm-intel" ]; "xhci_pci"
boot.extraModulePackages = [ ]; "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 = { boot.initrd.luks.devices = {
root = { root = {
@@ -21,32 +26,42 @@
}; };
}; };
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c"; device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=root" "compress=zstd" ]; 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"; }
]; ];
};
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 # 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 # (the default) this is the recommended approach. When using systemd-networkd it's
@@ -59,4 +74,5 @@
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.nvidia.open = false;
} }

View File

@@ -1,55 +1,39 @@
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118 # sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
# or # or
# deploy .#builder # deploy .#builder
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
../common/global ../common/global/fish.nix # fish for admin
../common/global/locale.nix
../common/global/nix.nix
../common/global/sops.nix
../common/global/root.nix
]; ];
# 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" ];
networking.hostName = "builder"; networking.hostName = "builder";
system.stateVersion = "23.11";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.nameservers = [
"192.168.3.252"
"172.30.20.10"
"1.1.1.1"
];
time.timeZone = "Europe/Berlin"; users.mutableUsers = false;
modules = {
keymap.enable = true;
locales.enable = true;
sops.enable = true;
};
users.users.nix = { users.users.nix = {
isNormalUser = true; isNormalUser = true;
description = "Nix"; description = "Nix";
extraGroups = [ extraGroups = [
"networkmanager" "networkmanager"
"wheel" "wheel"
"docker"
]; ];
}; };
@@ -63,17 +47,36 @@
substituters = [ substituters = [
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org/" "https://cache.nixos.org/"
"https://hyprland.cachix.org"
"https://devenv.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
]; ];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
trusted-users = [ "nix" ]; trusted-users = ["nix"];
max-jobs = "auto"; max-jobs = "auto";
cores = 0; cores = 0;
# Ensure we can still build when missing-server is not accessible
fallback = true;
}; };
# system.autoUpgrade = {
# enable = true;
# flake = "git+https://gitlab.julian-mutter.de/julian/dotfiles";
# flags = [
# "--recreate-lock-file" # update lock file
# ];
# dates = "02:13";
# };
# optimize store by hardlinking store files # optimize store by hardlinking store files
nix.optimise.automatic = true; nix.optimise.automatic = true;
nix.optimise.dates = [ "03:15" ]; nix.optimise.dates = ["03:15"];
# nix.gc.automatic = true; # nix.gc.automatic = true;
# nix.gc.dates = "daily"; # nix.gc.dates = "daily";
@@ -88,17 +91,6 @@
max-free = ${toString (100 * 1024 * 1024 * 1024)} max-free = ${toString (100 * 1024 * 1024 * 1024)}
''; '';
environment.systemPackages = with pkgs; [
vim
htop
mc
# # AMD GPU tools
# pciutils
# nvtopPackages.amd
# linuxPackages.amdgpu-pro
];
nix.nrBuildUsers = 64; nix.nrBuildUsers = 64;
# prevent memory to get filled # prevent memory to get filled
@@ -127,9 +119,28 @@
services.openssh = { services.openssh = {
enable = true; enable = true;
# require public key authentication for better security # require public key authentication for better security
settings.PasswordAuthentication = true; settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false; settings.KbdInteractiveAuthentication = false;
settings.PermitRootLogin = "yes"; settings.PermitRootLogin = "yes";
# Add older algorithms for jenkins ssh-agents-plugin to be compatible
settings.Macs = [
"hmac-sha2-512-etm@openssh.com"
"hmac-sha2-256-etm@openssh.com"
"umac-128-etm@openssh.com"
"hmac-sha2-512"
"hmac-sha2-256"
"umac-128@openssh.com"
];
settings.KexAlgorithms = [
"diffie-hellman-group-exchange-sha1"
"diffie-hellman-group14-sha1"
"mlkem768x25519-sha256"
"sntrup761x25519-sha512"
"sntrup761x25519-sha512@openssh.com"
"curve25519-sha256"
"curve25519-sha256@libssh.org"
"diffie-hellman-group-exchange-sha256"
];
}; };
users.users."root".openssh.authorizedKeys.keys = [ users.users."root".openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
@@ -212,8 +223,7 @@
}; };
virtualHosts."binarycache.julian-mutter.de" = { virtualHosts."binarycache.julian-mutter.de" = {
locations."/".proxyPass = locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
}; };
clientMaxBodySize = "2G"; clientMaxBodySize = "2G";
@@ -228,7 +238,16 @@
url = "https://gitlab.julian-mutter.de"; url = "https://gitlab.julian-mutter.de";
name = "builder"; name = "builder";
tokenFile = config.sops.secrets."gitea_token".path; tokenFile = config.sops.secrets."gitea_token".path;
labels = [ ]; # use default labels labels = [
# provide a debian base with nodejs for actions
"debian-latest:docker://node:18-bullseye"
# fake the ubuntu name, because node provides no ubuntu builds
"ubuntu-latest:docker://node:18-bullseye"
# devenv
"devenv:docker://ghcr.io/cachix/devenv/devenv:latest"
# provide native execution on the host
"nixos:host"
];
}; };
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
@@ -242,7 +261,7 @@
sops.secrets."gitea_token" = { sops.secrets."gitea_token" = {
owner = config.users.users.nix.name; owner = config.users.users.nix.name;
sopsFile = ../../../secrets/secrets-builder.yaml; sopsFile = ./secrets.yaml;
}; };
# =========== Binary Cache ========== # =========== Binary Cache ==========
@@ -252,7 +271,7 @@
}; };
# =========== Binary Cache with attic ========== # =========== Binary Cache with attic ==========
sops.secrets."attic_token".sopsFile = ../../../secrets/secrets-builder.yaml; sops.secrets."attic_token".sopsFile = ./secrets.yaml;
services.atticd = { services.atticd = {
enable = true; enable = true;
@@ -260,7 +279,7 @@
settings = { settings = {
listen = "[::]:8080"; listen = "[::]:8080";
jwt = { }; jwt = {};
# Data chunking # Data chunking
# #
@@ -287,7 +306,40 @@
}; };
}; };
# ======================== DO NOT CHANGE THIS ======================== services.gitlab-runner.enable = true;
system.stateVersion = "23.11"; # runner for everything else
# ======================== DO NOT CHANGE THIS ======================== #
sops.secrets."gitlab_runner_token".sopsFile = ./secrets.yaml;
services.gitlab-runner.services.default = {
# File should contain at least these two variables:
authenticationTokenConfigFile = config.sops.secrets."gitlab_runner_token".path;
dockerImage = "alpine:latest";
dockerVolumes = [
"/var/run/docker.sock:/var/run/docker.sock"
];
};
### Jenkins node
users.users.jenkins = {
createHome = true;
home = "/var/lib/jenkins";
group = "jenkins";
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ36sQhVz3kUEi8754G7r3rboihhG4iqFK/UvQm6SING jenkins@home"
];
packages = with pkgs; [
git
devenv
];
extraGroups = [
"docker"
];
};
users.groups.jenkins = {};
programs.java = {
enable = true;
package = pkgs.jdk21; # Same as jenkins version on home
};
} }

View File

@@ -1,17 +1,4 @@
# Do not modify this file! It was generated by nixos-generate-config {lib, ...}: {
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"ata_piix" "ata_piix"
"uhci_hcd" "uhci_hcd"
@@ -21,8 +8,8 @@
"sr_mod" "sr_mod"
]; ];
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support # boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f"; device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
@@ -37,4 +24,27 @@
# networking.interfaces.ens18.useDHCP = lib.mkDefault true; # networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 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

@@ -1,28 +1,50 @@
# Common config for all hosts # Common config for all hosts
{ {
inputs, inputs,
outputs, outputs,
pkgs,
lib,
... ...
}: }: {
{
imports = imports =
[ [
./fish.nix # fish for admin ./fish.nix # fish for admin
./locale.nix ./locale.nix
./nix.nix ./nix.nix
./podman.nix
./sops.nix ./sops.nix
./xserver.nix ./root.nix
] ]
++ [ ++ [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
] ]
++ (builtins.attrValues outputs.nixosModules); ++ (builtins.attrValues outputs.nixosModules);
home-manager.useGlobalPkgs = true; # 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;
plugins = with pkgs; [
networkmanager-openconnect
];
};
services.resolved.enable = true;
# MDNS Taken by avahi
services.resolved.extraConfig = ''
MulticastDNS=false
'';
networking.nameservers = lib.mkDefault [
"1.1.1.1"
"8.8.8.8"
];
# HM module
home-manager.useGlobalPkgs = true; # hm module uses the pkgs of the nixos config
home-manager.backupFileExtension = "hm-backup"; # backup conflicting files. So hm activation never fails
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs;
}; };
} }

View File

@@ -19,4 +19,8 @@
layout = "de"; layout = "de";
variant = ""; variant = "";
}; };
console.keyMap = "de";
time.timeZone = "Europe/Berlin";
} }

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