Compare commits

..

44 commits

Author SHA1 Message Date
28e84d34df mostly dotfiles 2026-04-15 22:04:14 +02:00
b4b1f4a63f dotfiles 2026-04-12 18:48:42 +02:00
e945735fa1 laptop 2026-03-29 14:23:01 +02:00
d8032cc35d system stuff even 2026-03-23 14:32:09 +01:00
c62c8e46f3 getting there 2026-03-23 14:31:58 +01:00
030e459540 changes 2026-03-23 01:12:56 +01:00
48f66e6227 niri 2026-03-21 12:45:36 +01:00
686d607155 unstable 2026-03-21 12:02:45 +01:00
fdd7e1c583 updates 2026-03-17 13:14:41 +01:00
bbe8684a57 block linkedin address 2026-03-17 13:13:00 +01:00
d8ed4fea1c encrypt, no auto_edit 2026-03-10 14:34:13 +01:00
91b5421848 reorganization 2026-03-10 14:34:01 +01:00
bc44678dac telegram? 2026-03-07 16:47:03 +01:00
3dab1d7d12 tree 2026-03-07 11:00:27 +01:00
5b344eacc5 aliases, eza 2026-03-07 10:54:40 +01:00
8d0b874958 include fundkorb 2026-03-07 10:28:02 +01:00
193686d59f calendars, static ip 2026-03-06 23:16:02 +01:00
09014f7af5 uploadsize 2026-03-06 23:14:39 +01:00
809e20f981 matrix 2026-03-05 22:55:08 +01:00
49e588d569 nginx recomended settings, matrix 2026-03-05 22:14:06 +01:00
2159780ece fixes 2026-03-05 22:01:29 +01:00
6f30269e1e git ssh don't force user 2026-03-05 10:22:10 +01:00
accc04e214 refactor, prep 2026-03-05 09:59:10 +01:00
82115af252 prep arielle 2026-03-05 09:11:17 +01:00
96e5924fb0 nh 2026-03-04 19:50:45 +01:00
312d6d63ef diesdas 2026-02-27 21:41:24 +01:00
8099faa9ae mail by index 2026-02-16 01:41:59 +01:00
f7fd3a7fe9 no sig on list reply 2026-02-12 15:36:56 +01:00
438cf6da97 list reply 2026-02-12 15:33:40 +01:00
9fdeb99a61 diesdas 2026-02-12 15:28:48 +01:00
40539ae163 prep roundcube, from ktiu.net, nvim stuff 2026-02-05 00:25:04 +01:00
d4474ef5ce vimwiki and vim-pandoc 2026-02-04 13:38:28 +01:00
f511922568 btrbk, git 2026-02-04 09:53:52 +01:00
fb5a44b5f0 nim 2026-01-30 12:35:40 +01:00
648602c92e refactor 2026-01-29 17:22:27 +01:00
92cfae9488 mail, ssh 2026-01-29 16:13:21 +01:00
26ed81dbee refactor 2026-01-28 14:00:40 +01:00
7f9c096123 working 2026-01-23 11:09:06 +01:00
415e3c1caf risky business 2026-01-23 01:32:06 +01:00
120d26b0e4 preserving hardware-configuration 2026-01-23 01:31:43 +01:00
8d34db82c8 looking good 2026-01-22 17:07:22 +01:00
a1e9bb892a no warnings 2026-01-22 17:00:18 +01:00
50d6a79e31 it works! 2026-01-22 16:44:45 +01:00
386d889455 refactored system 2026-01-22 00:19:40 +01:00
156 changed files with 2792 additions and 2342 deletions

View file

@ -0,0 +1,34 @@
[colors]
cursor=232634 f2d5cf
foreground=c6d0f5
background=303446
regular0=51576d
regular1=e78284
regular2=a6d189
regular3=e5c890
regular4=8caaee
regular5=f4b8e4
regular6=81c8be
regular7=b5bfe2
bright0=626880
bright1=e78284
bright2=a6d189
bright3=e5c890
bright4=8caaee
bright5=f4b8e4
bright6=81c8be
bright7=a5adce
16=ef9f76
17=f2d5cf
selection-foreground=c6d0f5
selection-background=4f5369
search-box-no-match=232634 e78284
search-box-match=c6d0f5 414559
jump-labels=232634 ef9f76
urls=8caaee

View file

@ -0,0 +1,34 @@
[colors-light]
cursor=eff1f5 dc8a78
foreground=4c4f69
background=eff1f5
regular0=5c5f77
regular1=d20f39
regular2=40a02b
regular3=df8e1d
regular4=1e66f5
regular5=ea76cb
regular6=179299
regular7=acb0be
bright0=6c6f85
bright1=d20f39
bright2=40a02b
bright3=df8e1d
bright4=1e66f5
bright5=ea76cb
bright6=179299
bright7=bcc0cc
16=fe640b
17=dc8a78
selection-foreground=4c4f69
selection-background=ccced7
search-box-no-match=dce0e8 d20f39
search-box-match=4c4f69 ccd0da
jump-labels=dce0e8 fe640b
urls=1e66f5

View file

@ -0,0 +1,34 @@
[colors]
cursor=181926 f4dbd6
foreground=cad3f5
background=24273a
regular0=494d64
regular1=ed8796
regular2=a6da95
regular3=eed49f
regular4=8aadf4
regular5=f5bde6
regular6=8bd5ca
regular7=b8c0e0
bright0=5b6078
bright1=ed8796
bright2=a6da95
bright3=eed49f
bright4=8aadf4
bright5=f5bde6
bright6=8bd5ca
bright7=a5adcb
16=f5a97f
17=f4dbd6
selection-foreground=cad3f5
selection-background=454a5f
search-box-no-match=181926 ed8796
search-box-match=cad3f5 363a4f
jump-labels=181926 f5a97f
urls=8aadf4

View file

@ -0,0 +1,34 @@
[colors-dark]
cursor=11111b f5e0dc
foreground=cdd6f4
background=1e1e2e
regular0=45475a
regular1=f38ba8
regular2=a6e3a1
regular3=f9e2af
regular4=89b4fa
regular5=f5c2e7
regular6=94e2d5
regular7=bac2de
bright0=585b70
bright1=f38ba8
bright2=a6e3a1
bright3=f9e2af
bright4=89b4fa
bright5=f5c2e7
bright6=94e2d5
bright7=a6adc8
16=fab387
17=f5e0dc
selection-foreground=cdd6f4
selection-background=414356
search-box-no-match=11111b f38ba8
search-box-match=cdd6f4 313244
jump-labels=11111b fab387
urls=89b4fa

25
dotfiles/foot/dank-colors.ini Executable file
View file

@ -0,0 +1,25 @@
[colors-dark]
foreground=e4e2e1
background=131313
selection-foreground=e4e2e1
selection-background=11201d
cursor = 131313 b9cac5
regular0=131313
regular1=e89268
regular2=65ca6a
regular3=fcf071
regular4=acbfba
regular5=4f5d59
regular6=b9cac5
regular7=c7d4d0
bright0=798380
bright1=ffbe9f
bright2=9df2a2
bright3=fff7a5
bright4=ceded9
bright5=effffa
bright6=f5fffc
bright7=f8fffd
dim-blend-towards=black

20
dotfiles/foot/foot.ini Executable file
View file

@ -0,0 +1,20 @@
[main]
font=JetBrains Mono:size=12
pad=15x15
include=~/.config/foot/paper-color.ini
include=~/.config/foot/matugen.ini
[csd]
size=0
[cursor]
blink=true
style=beam
[key-bindings]
show-urls-copy=Control+Shift+y
show-urls-launch=Control+Shift+g
color-theme-toggle=Control+comma
[mouse]
hide-when-typing=yes

2
dotfiles/foot/matugen.ini Executable file
View file

@ -0,0 +1,2 @@
initial-color-theme=dark

49
dotfiles/foot/paper-color.ini Executable file
View file

@ -0,0 +1,49 @@
# -*- conf -*-
# PaperColorDark
# Palette based on https://github.com/NLKNguyen/papercolor-theme
[colors-dark]
cursor=1c1c1c eeeeee
background=1c1c1c
foreground=eeeeee
regular0=1c1c1c # black
regular1=af005f # red
regular2=5faf00 # green
regular3=d7af5f # yellow
regular4=5fafd7 # blue
regular5=808080 # magenta
regular6=d7875f # cyan
regular7=d0d0d0 # white
bright0=bcbcbc # bright black
bright1=5faf5f # bright red
bright2=afd700 # bright green
bright3=af87d7 # bright yellow
bright4=ffaf00 # bright blue
bright5=ff5faf # bright magenta
bright6=00afaf # bright cyan
bright7=5f8787 # bright white
# selection-foreground=1c1c1c
# selection-background=af87d7
[colors-light]
cursor=eeeeee 444444
background=eeeeee
foreground=444444
regular0=eeeeee # black
regular1=af0000 # red
regular2=008700 # green
regular3=5f8700 # yellow
regular4=0087af # blue
regular5=878787 # magenta
regular6=005f87 # cyan
regular7=764e37 # white
bright0=bcbcbc # bright black
bright1=d70000 # bright red
bright2=d70087 # bright green
bright3=8700af # bright yellow
bright4=d75f00 # bright blue
bright5=d75f00 # bright magenta
bright6=4c7a5d # bright cyan
bright7=005faf # bright white
# selection-foreground=eeeeee
# selection-background=0087af

View file

@ -0,0 +1,16 @@
# compose
macro index,pager go "<shell-escape>mbsync $my_account && notmuch new<enter>" "Sync this account"
macro index,pager gO "<shell-escape>mbsync -a && notmuch new<enter>" "Sync all accounts"
bind index,pager / noop
macro index,pager // "<vfolder-from-query-readonly>folder:/$my_account/" "Find in account"
macro index,pager g/ "<vfolder-from-query-readonly>" "Find in all accounts"
macro index,pager /! "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_spoolfile" "Find in inbox"
macro index,pager /< "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_record" "Find in sent"
macro index,pager /> "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_mbox" "Find in archive"
macro index,pager /d "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_postponed" "Find in drafts"
macro index,pager /t "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_trash" "Find in trash"
macro index,pager /j "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_junk" "Find in junk"

View file

@ -0,0 +1,27 @@
# color index_flags brightmagenta default '.*'
# color index_date cyan default
color header brightblack default ".*"
color header brightgreen default "^(Subject)"
color header yellow default "^(From|To|CC|BCC)"
color header blue default "^Date"
color message cyan default
color error red default
color tilde black default
color normal default default
color attachment brightblack default
color search black yellow
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature cyan default
color underline black default
color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body red default "(BAD signature)"
color body green default "(Good signature)"
color body brightblack default "^gpg: .*"
color body green default "^gpg: Good signature .*"
color body red default "^gpg: BAD signature from.*"

View file

@ -0,0 +1,43 @@
# External
set my_download_folder = ~/tmp
# Status bar
set status_chars = "✔↻٪A"
unset help
# Index
set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s"
set strict_threads
set send_charset = "utf-8:iso-8859-1:us-ascii"
set charset = "utf-8"
# Pager view
set pager_index_lines = 10
set pager_context = 3
set pager_stop
set smart_wrap
set menu_scroll
set tilde
unset markers
ignore *
unignore from: to: cc: bcc: date: subject:
unhdr_order *
hdr_order from: to: cc: bcc: date: subject:
alternative_order text/plain text/enriched text/html
auto_view text/html
# Attachments
set rfc2047_parameters
set attach_save_dir = $my_download_folder
# Alias
set alias_file = ~/.local/share/neomutt/aliases.neomuttrc
source $alias_file
source colors.neomuttrc

203
dotfiles/niri/config.kdl Executable file
View file

@ -0,0 +1,203 @@
/-output "eDP-1" {
mode "1920x1080@120.030"
scale 2
transform "normal"
position x=1280 y=0
}
layout {
preset-column-widths {
proportion 0.381966
proportion 0.5
proportion 0.618034
}
default-column-width { proportion 0.5; }
}
environment {
TERMINAL "foot"
XDG_CURRENT_DESKTOP "niri"
}
hotkey-overlay {
skip-at-startup
}
prefer-no-csd
screenshot-path "~/media/img/screenshots/screenshot_%Y-%m-%d_%H-%M-%S.png"
// debug {
// honor-xdg-activation-with-invalid-serial
// }
recent-windows {
binds {
Super+Tab { next-window scope="output"; }
Super+Shift+Tab { previous-window scope="output"; }
Super+grave { next-window filter="app-id"; }
Super+Shift+grave { previous-window filter="app-id"; }
}
}
animations {
workspace-switch {
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
window-open {
duration-ms 50
curve "ease-out-expo"
}
window-close {
duration-ms 50
curve "ease-out-quad"
}
horizontal-view-movement {
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
window-movement {
// spring damping-ratio=0.75 stiffness=323 epsilon=0.0001
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
window-resize {
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
config-notification-open-close {
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
screenshot-ui-open {
duration-ms 50
curve "ease-out-quad"
}
overview-open-close {
spring damping-ratio=0.9 stiffness=2000 epsilon=0.001
}
}
input {
keyboard {
xkb {
layout "us,de,th"
variant "altgr-intl"
options "grp:alt_space_toggle"
}
numlock
}
touchpad {
tap
natural-scroll
click-method "clickfinger"
}
trackball {
natural-scroll
accel-speed -0.3
}
mouse {
}
trackpoint {
}
// warp-mouse-to-focus
focus-follows-mouse max-scroll-amount="0%"
}
layer-rule {
match namespace="^quickshell$"
place-within-backdrop false
}
layer-rule {
match namespace="dms:blurwallpaper"
place-within-backdrop true
}
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
window-rule {
match app-id=r#"^org\.gnome\."#
draw-border-with-background false
geometry-corner-radius 12
clip-to-geometry true
}
window-rule {
match app-id=r#"^gnome-control-center$"#
match app-id=r#"^pavucontrol$"#
match app-id=r#"^nm-connection-editor$"#
default-column-width { proportion 0.5; }
open-floating false
}
window-rule {
match app-id=r#"^gnome-calculator$"#
match app-id=r#"^galculator$"#
match app-id=r#"^blueman-manager$"#
match app-id=r#"^org\.gnome\.Nautilus$"#
match app-id=r#"^xdg-desktop-portal$"#
open-floating true
}
window-rule {
match app-id=r#"^steam$"# title=r#"^notificationtoasts_\d+_desktop$"#
default-floating-position x=10 y=10 relative-to="bottom-right"
open-focused false
}
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
match app-id="Alacritty"
match app-id="zen"
match app-id="com.mitchellh.ghostty"
match app-id="kitty"
draw-border-with-background false
}
window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
match app-id="zoom"
open-floating true
}
window-rule {
match app-id="firefox"
default-column-width {}
open-on-workspace "browser"
}
window-rule {
match app-id=r#"org.quickshell$"#
open-floating true
}
window-rule {
match app-id=r#"org.quickshell$"# title="^Settings$"
open-floating false
}
// include optional=true "user-config.kdl"
include "user-config.kdl"
// Include dms files
include "dms/colors.kdl"
include "dms/layout.kdl"
include "dms/alttab.kdl"
include "dms/outputs.kdl"
include "dms/cursor.kdl"
include "dms/binds.kdl"

10
dotfiles/niri/dms/alttab.kdl Executable file
View file

@ -0,0 +1,10 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
recent-windows {
highlight {
corner-radius 9
}
}

115
dotfiles/niri/dms/binds.kdl Executable file
View file

@ -0,0 +1,115 @@
binds {
Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; }
Ctrl+XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "decrement" "3"; }
Ctrl+XF86AudioRaiseVolume allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "increment" "3"; }
Mod+Backspace hotkey-overlay-title="Lock Screen" { spawn "dms" "ipc" "call" "lock" "lock"; }
Mod+Comma hotkey-overlay-title="Settings" { spawn "dms" "ipc" "call" "settings" "focusOrToggle"; }
Mod+Ctrl+R hotkey-overlay-title="Rename Workspace" { spawn "dms" "ipc" "call" "workspace-rename" "open"; }
Mod+N hotkey-overlay-title="Notification Center" { spawn "dms" "ipc" "call" "notifications" "toggle"; }
Mod+O hotkey-overlay-title="Show dash overview" { spawn "dms" "ipc" "call" "dash" "toggle" ""; }
Mod+P hotkey-overlay-title="Show dash music" { spawn "dms" "ipc" "call" "dash" "toggle" "media"; }
Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; }
Mod+Slash hotkey-overlay-title="Application Launcher" { spawn "dms" "ipc" "call" "spotlight" "toggle"; }
Mod+T hotkey-overlay-title="Task Manager" { spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; }
Mod+W hotkey-overlay-title="Show dash weather" { spawn "dms" "ipc" "call" "dash" "toggle" "weather"; }
Mod+Y hotkey-overlay-title="Browse Wallpapers" { spawn "dms" "ipc" "call" "dankdash" "wallpaper"; }
Super+X hotkey-overlay-title="Power Menu: Toggle" { spawn "dms" "ipc" "call" "powermenu" "toggle"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "decrement" "3"; }
XF86AudioMicMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "micmute"; }
XF86AudioMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "mute"; }
XF86AudioNext allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "next"; }
XF86AudioPause allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "playPause"; }
XF86AudioPlay allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "playPause"; }
XF86AudioPrev allow-when-locked=true { spawn "dms" "ipc" "call" "mpris" "previous"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "increment" "3"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; }
XF86MonBrightnessUp allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+D { focus-workspace-down; }
Mod+J { focus-window-or-workspace-down; }
Mod+K { focus-window-or-workspace-up; }
Mod+Shift+1 { move-column-to-workspace 1; }
Mod+Shift+2 { move-column-to-workspace 2; }
Mod+Shift+3 { move-column-to-workspace 3; }
Mod+Shift+4 { move-column-to-workspace 4; }
Mod+Shift+5 { move-column-to-workspace 5; }
Mod+Shift+6 { move-column-to-workspace 6; }
Mod+Shift+7 { move-column-to-workspace 7; }
Mod+Shift+8 { move-column-to-workspace 8; }
Mod+Shift+9 { move-column-to-workspace 9; }
Mod+Shift+D { move-workspace-down; }
Mod+Shift+J { move-window-down-or-to-workspace-down; }
Mod+Shift+K { move-window-up-or-to-workspace-up; }
Mod+Shift+U { move-workspace-up; }
Mod+U { focus-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+B hotkey-overlay-title="Open Browser" { spawn "nirius" "focus-or-spawn" "-a" "^firefox$" "firefox"; }
Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Ctrl+H { focus-monitor-left; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+J { focus-monitor-down; }
Mod+Ctrl+K { focus-monitor-up; }
Mod+Ctrl+L { focus-monitor-right; }
Mod+Ctrl+Shift+H { move-column-to-monitor-left; }
Mod+Ctrl+Shift+J { move-column-to-monitor-down; }
Mod+Ctrl+Shift+K { move-column-to-monitor-up; }
Mod+Ctrl+Shift+L { move-column-to-monitor-right; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+End { focus-column-last; }
Mod+Equal { set-column-width "+10%"; }
Mod+Escape { fullscreen-window; }
Mod+F hotkey-overlay-title="Open Files" { spawn "nirius" "focus-or-spawn" "-t" "^vifm" "foot" "--" "-e" "vifm"; }
Mod+G { switch-focus-between-floating-and-tiling; }
Mod+H { focus-column-left; }
Mod+Home { focus-column-first; }
Mod+L { focus-column-right; }
Mod+M hotkey-overlay-title="Open Mail" { spawn "nirius" "focus-or-spawn" "-t" "^neomutt" "foot" "--" "-e" "neomutt"; }
Mod+Minus { set-column-width "-10%"; }
Mod+Print { screenshot-window; }
Mod+Q repeat=false { close-window; }
Mod+R { switch-preset-column-width; }
Mod+Shift+BracketLeft { consume-or-expel-window-left; }
Mod+Shift+BracketRight { consume-or-expel-window-right; }
Mod+Shift+Equal { set-window-height "+10%"; }
Mod+Shift+G { toggle-window-floating; }
Mod+Shift+H { move-column-left; }
Mod+Shift+L { move-column-right; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Period { expel-window-from-column; }
Mod+Shift+R { expand-column-to-available-width; }
Mod+Shift+T { toggle-column-tabbed-display; }
Mod+Shift+V { reset-window-height; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Shift+Z { maximize-window-to-edges; }
Mod+V { switch-preset-window-height; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+WheelScrollRight { focus-column-right; }
Mod+XF86Launch1 { screenshot-window; }
Mod+Z { maximize-column; }
Mod+Ctrl+P { power-off-monitors; }
Ctrl+Print { screenshot-screen; }
Ctrl+XF86Launch1 { screenshot-screen; }
Print { screenshot; }
XF86Launch1 { screenshot; }
Mod+Shift+Q { quit; }
Mod+Return hotkey-overlay-title="Open Terminal" { spawn "foot"; }
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Space repeat=false { toggle-overview; }
}

39
dotfiles/niri/dms/colors.kdl Executable file
View file

@ -0,0 +1,39 @@
// ! Auto-generated file. Do not edit directly.
// Remove `include "dms/colors.kdl"` from your config to override.
layout {
background-color "transparent"
focus-ring {
active-color "#b9cac5"
inactive-color "#8c9290"
urgent-color "#ffb4ab"
}
border {
active-color "#b9cac5"
inactive-color "#8c9290"
urgent-color "#ffb4ab"
}
shadow {
color "#00000070"
}
tab-indicator {
active-color "#b9cac5"
inactive-color "#8c9290"
urgent-color "#ffb4ab"
}
insert-hint {
color "#b9cac580"
}
}
recent-windows {
highlight {
active-color "#11201d"
urgent-color "#ffb4ab"
}
}

11
dotfiles/niri/dms/cursor.kdl Executable file
View file

@ -0,0 +1,11 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
cursor {
xcursor-theme "phinger-cursors-dark"
xcursor-size 24
hide-when-typing
hide-after-inactive-ms 5000
}

22
dotfiles/niri/dms/layout.kdl Executable file
View file

@ -0,0 +1,22 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
layout {
gaps 6
border {
width 2
}
focus-ring {
width 2
}
}
window-rule {
geometry-corner-radius 9
clip-to-geometry true
tiled-state true
draw-border-with-background false
}

20
dotfiles/niri/dms/outputs.kdl Executable file
View file

@ -0,0 +1,20 @@
// Auto-generated by DMS - do not edit manually
output "DP-3" {
mode "3840x2160@59.997"
scale 1.75
position x=0 y=0
}
output "DP-1" {
mode "3840x2160@59.997"
scale 1.75
position x=0 y=0
}
output "eDP-1" {
mode "1920x1200@60.026"
scale 1.25
position x=2194 y=274
}

View file

9
dotfiles/niri/dms/wpblur.kdl Executable file
View file

@ -0,0 +1,9 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
layer-rule {
match namespace="dms:blurwallpaper"
place-within-backdrop true
}

View file

@ -1,2 +1,2 @@
split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore
split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore;
select-pane -l

45
dotfiles/tmux/tmux.conf Normal file
View file

@ -0,0 +1,45 @@
# Key bindings
bind C-l next-window
bind C-h previous-window
bind C-b last-window
bind n new-window
bind C-n new-window -c '#{pane_current_path}'
bind v split-window -h
bind C-v split-window -hc '#{pane_current_path}'
bind s split-window -v
bind C-s split-window -vc '#{pane_current_path}'
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
# Layouts
bind f new-window -c '#{pane_current_path}' vifm
bind R source rloft.conf
# Unbind
unbind p
unbind '"'
unbind %
# Eye candy
set-option -g status-right ""
set-option -g status-left ""
set-option -g status-justify "centre"
# set-option -g status-style fg=magenta
# set-option -g pane-border-style fg=brightwhite
set-option -g pane-active-border-style fg=magenta
# set-option -g window-status-current-style bg=brightwhite
# Some more specifics
set-option -g focus-events on
set -g base-index 1
setw -g pane-base-index 1
set -g default-terminal "tmux-256color"
set -as terminal-features ",xterm-256color:RGB"

101
flake.lock generated
View file

@ -1,24 +1,25 @@
{
"nodes": {
"flake-parts": {
"firefox-addons": {
"inputs": {
"nixpkgs-lib": [
"nur",
"nixpkgs"
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
"dir": "pkgs/firefox-addons",
"lastModified": 1776052978,
"narHash": "sha256-WR0Svwg/JreBNW006qjHET6RRRmmjWCMfrkS5JmDZK8=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "6c0e7f01d9315f4806a187c2ec58d0f3b6961876",
"type": "gitlab"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"home-manager": {
@ -28,11 +29,11 @@
]
},
"locked": {
"lastModified": 1767910483,
"narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=",
"lastModified": 1775425411,
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c",
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
"type": "github"
},
"original": {
@ -42,13 +43,33 @@
"type": "github"
}
},
"home-manager-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1776046499,
"narHash": "sha256-Wzc4nn07/0RL21ypPHRzNDQZcjhIC8LaYo7QJQjM5T4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "287f84846c1eb3b72c986f5f6bebcff0bd67440d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1768028080,
"narHash": "sha256-50aDK+8eLvsLK39TzQhKNq50/HcXyP4hyxOYoPoVxjo=",
"lastModified": 1775811116,
"narHash": "sha256-t+HZK42pB6N+i5RGbuy7Xluez/VvWbembBdvzsc23Ss=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d03088749a110d52a4739348f39a63f84bb0be14",
"rev": "54170c54449ea4d6725efd30d719c5e505f1c10e",
"type": "github"
},
"original": {
@ -58,46 +79,50 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs-unstable": {
"locked": {
"lastModified": 1768127708,
"narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=",
"owner": "nixos",
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github"
},
"original": {
"owner": "nixos",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"quickshell": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1768226540,
"narHash": "sha256-7ITnaEIsloaaOpqxIEYjUvodWz3VcT0ERi0NiZx7U/g=",
"owner": "nix-community",
"repo": "nur",
"rev": "b87f89e9dc56296f29fb3caa93f7fb6058f8c5f3",
"type": "github"
"lastModified": 1775720097,
"narHash": "sha256-p+vqkCuFfVNyQBo370wr6MebNUvz55RZiC0m8YKUhvQ=",
"ref": "refs/heads/master",
"rev": "d4c92973b53d9fa34cc110d3b974eb6bde5b3027",
"revCount": 800,
"type": "git",
"url": "https://git.outfoxxed.me/quickshell/quickshell"
},
"original": {
"owner": "nix-community",
"repo": "nur",
"type": "github"
"type": "git",
"url": "https://git.outfoxxed.me/quickshell/quickshell"
}
},
"root": {
"inputs": {
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"home-manager-unstable": "home-manager-unstable",
"nixpkgs": "nixpkgs",
"nur": "nur"
"nixpkgs-unstable": "nixpkgs-unstable",
"quickshell": "quickshell"
}
}
},

233
flake.nix
View file

@ -2,150 +2,137 @@
description = "Complete system and home config";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nur.url = "github:nix-community/nur";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager-unstable = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
quickshell = {
url = "git+https://git.outfoxxed.me/quickshell/quickshell";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, home-manager-unstable, ... }@inputs: {
nixosConfigurations = {
nova = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
{
networking.hostName = "nova";
}
./system
./system/alt.nix
./system/btrbk.nix
./system/cast.nix
./system/desktop.nix
./system/ergodox.nix
./system/gnome.nix
./system/guest.nix
./system/hardware/nova.nix
./system/plasma.nix
./system/steam.nix
./system/yubikey.nix
# ./system/distrobox.nix
];
};
tron = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
{
networking.hostName = "tron";
}
./system
./system/desktop.nix
./system/hardware/tron.nix
./system/gnome.nix
./system/btrbk.nix
./system/yubikey.nix
];
};
romulus = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
{
networking.hostName = "romulus";
environment.systemPackages = [
nixpkgs.wl-clipboard
];
programs.sway.enable = true;
security.rtkit.enable = true;
}
./system
./system/desktop.nix
./system/hardware/romulus.nix
];
};
arielle = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
{
networking.hostName = "arielle";
networking.domain = "ktiu.net";
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
./hosts/arielle
home-manager.nixosModules.home-manager {
home-manager = {
extraSpecialArgs = { inherit inputs; };
useGlobalPkgs = true;
useUserPackages = true;
users = {
till = {
imports = [
./home/minimal
./users/till/home.nix
];
};
};
};
}
./system/hardware/arielle.nix
./system
./system/web-server
{
#infrastructure
./system/web-server/mail
./system/web-server/radicale.nix
./system/web-server/outline.nix
./system/web-server/forgejo.nix
# ./system/web-server/jenkins.nix
# firefox-addons.config.allowUnfreePredicate = pkg:
# builtins.elem (nixpkgs.lib.getName pkg) [
# "tampermonkey"
# ];
# web hosting
./system/web-server/oopsidentify.nix
./system/web-server/fundkorb-button.nix
./system/web-server/ksh-map.nix
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (nixpkgs.lib.getName pkg) [
"outline"
];
}
];
};
homer = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
{
networking.hostName = "homer";
./hosts/homer
];
};
mila = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./hosts/mila
];
};
nova = nixpkgs-unstable.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./hosts/nova
home-manager-unstable.nixosModules.home-manager {
home-manager = {
extraSpecialArgs = { inherit inputs; };
useGlobalPkgs = true;
useUserPackages = true;
users = {
till = {
imports = [
./home/desktop-full
./users/till/home.nix
];
};
alt = {
imports = [
./home/desktop-slim
./users/alt/home.nix
];
};
guest = {
imports = [
./home/desktop-slim
./users/guest/home.nix
];
};
};
};
}
./system
./system/desktop.nix
./system/hardware/homer.nix
./system/gnome.nix
./system/steam.nix
./system/remote-desktop.nix
./system/media.nix
./system/guest.nix
];
};
{
};
# firefox-addons.config.allowUnfreePredicate = pkg:
# builtins.elem (nixpkgs.lib.getName pkg) [
# "tampermonkey"
# ];
homeConfigurations = {
till = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default;
extraSpecialArgs = { inherit inputs; };
modules = [
./home
];
};
"till@romulus" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default;
extraSpecialArgs = { inherit inputs; };
modules = [
./home/slim-desktop.nix
];
};
"till@arielle" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inherit inputs; };
modules = [
./home/on-server.nix
];
};
alt = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default;
extraSpecialArgs = { inherit inputs; };
modules = [
./home/alt.nix
];
};
guest = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux.extend inputs.nur.overlays.default;
extraSpecialArgs = { inherit inputs; };
modules = [
./home/guest.nix
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (nixpkgs.lib.getName pkg) [
"corefonts"
"textfonts"
"keymapp"
"steam"
"steam-unwrapped"
# "tampermonkey"
];
}
];
};
};

View file

@ -1,73 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.username = "alt";
home.homeDirectory = "/home/alt";
home.stateVersion = "22.11";
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
};
};
programs.home-manager.enable = true;
xdg.userDirs = {
enable = true;
createDirectories = true;
download = "${config.home.homeDirectory}/tmp";
music = "${config.home.homeDirectory}/media/music";
pictures = "${config.home.homeDirectory}/media/img";
videos = "${config.home.homeDirectory}/media/vid";
documents = "${config.home.homeDirectory}/misc";
templates = "${config.xdg.dataHome}/templates";
};
home.file.".npmrc".text = ''
prefix = ${config.xdg.dataHome}/npm/packages
'';
home.packages = with pkgs; [
fzf
silver-searcher
tmux
nodejs
wl-clipboard
qbittorrent
vlc
# mullvad-vpn
ffmpeg
libnotify
];
imports = [
./gnome
./firefox.nix
./foot.nix
./fish.nix
./vifm
./tmux
./nvim
];
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
programs.git = {
enable = true;
userName = "Till";
userEmail = "till@ktiu.net";
lfs = {
enable = true;
};
extraConfig = {
init = {
defaultBranch = "main";
};
};
};
}

View file

@ -1,53 +0,0 @@
# vim: set ft=conf
[2.5admins]
url=https://2.5admins.com/feed/podcast
[50plus2]
url=https://50plus2.podigee.io/feed/mp3
album_tag=50+2
[drei90]
url=http://feeds.feedburner.com/Drei90
album_tag=drei90
[efpodcast]
url=https://www.eintracht-podcast.de/feed/mp3
[latenightlinux]
url=https://latenightlinux.com/feed/mp3
[linuxafterdark]
url=https://linuxafterdark.net/feed/podcast
[linuxdevtime]
url=https://latenightlinux.com/feed/extra
[linuxmatters]
url=https://linuxmatters.sh/episode/index.xml
[logbuchnetzpolitik]
url=https://feeds.metaebene.me/lnp/mp3
album_tag=Logbuch Netzpolitik
[schlusskonferenz]
url=https://schlusskonferenz.podigee.io/feed/mp3
[tribünengespräch]
url=https://tribuenengespraech.podigee.io/feed/mp3
[wettbrötchen]
url=https://www.wett-broetchen.de/feed/mp3
album_tag=Wettbrötchen
[edeltalk]
url=https://cdn.julephosting.de/podcasts/573-edeltalk-mit-dominik-kevin/feed.rss
album_tag=Edeltalk
[youredeadtome]
url=https://podcasts.files.bbci.co.uk/p07mdbhg.rss
[*]
genre_tag=Podcast
spool=/home/till/.local/share/podcasts
filename=%(channel_title)_%(date)_%(title).mp3

View file

@ -1,58 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.packages = with pkgs; [
# messenger
signal-desktop
telegram-desktop
# office
xournalpp
pdfpc
# text publishing
libreoffice
jdk
poppler-utils
zotero
lorem
typst
# graphics
gimp
inkscape
# web
chromium
nyxt
# media
anki-bin
qbittorrent
nicotine-plus
# other
quickemu
keymapp
gnome-solanum
eduvpn-client
yt-dlp
];
imports = [
./slim-desktop.nix
./gnome
./firefox.nix
./librewolf.nix
./tex.nix
./fonts.nix
./r.nix
];
programs.obs-studio.enable = true;
# programs.freetube.enable = true;
}

View file

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
aichat
glow
];
programs.fish.shellAliases = {
vibe = "aichat -c";
clank = "aichat -e";
slop = "aichat";
};
}

View file

@ -3,7 +3,7 @@
let
myRemote = slug: {
passwordCommand = [ "pass" "ktiu/radicale" ];
passwordCommand = [ "pass" "accounts/ktiu-radicale" ];
userName = "ktiu";
type = "caldav";
url = "https://kalender.ktiu.net/ktiu/${slug}";
@ -126,9 +126,12 @@ in
khal.color = "light green";
remote = {
type = "caldav";
url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/";
passwordCommand = [ "pass" "grid/nextcloud" ];
userName = "till";
# url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/";
# passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ];
# userName = "till";
url = "https://kalender.humangeographie.de/grid/96dedda9-cc91-c2fe-3bd8-020296904489/";
userName = "grid";
passwordCommand = [ "pass" "uni/grid-kalender-radicale" ];
};
};
};

View file

@ -0,0 +1,42 @@
{ pkgs, ... }:
{
imports = [
../desktop-slim
./aichat.nix
./calendars.nix
./khard-dump.nix
./mail.nix
./messaging.nix
./office-gui.nix
./r.nix
./tasks.nix
./tex.nix
];
home.packages = with pkgs; [
bat
ghostscript
hunspell
hunspellDicts.de_DE
hunspellDicts.en_US
hunspellDicts.th_TH
hyphen
hyphenDicts.de_DE
hyphenDicts.en_US
imagemagick
khal
khard
msmtp
notmuch
openssl
pandoc
pdftk
quarto
ripmime
urlscan
visidata
w3m
];
}

284
home/desktop-full/mail.nix Normal file
View file

@ -0,0 +1,284 @@
{ config, pkgs, lib, ... }:
let
makeConfig = accountName:
''
unset reverse_name
unset smime_is_default
set my_account='${ accountName }'
macro index,pager / "<vfolder-from-query>tag:${ accountName } "
unalternates *
set nm_record_tags = "+sent -inbox -unread +${ accountName }";
set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.${accountName}.signature.text }
set status_format = " [ %r ] $my_account %f (%lB) %> %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? "
source colors.neomuttrc
'';
makeAccount = accountName: {
signature.showSignature = "append";
smtp.tls.useStartTls = true;
msmtp.enable = true;
mbsync = {
enable = true;
create = "maildir";
expunge = "both";
};
neomutt = {
enable = true;
sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ accountName }";
};
notmuch = {
enable = true;
neomutt = {
virtualMailboxes = [
{ name = "Inbox"; query = "tag:${ accountName } and tag:inbox"; }
{ name = "Archive"; query = "tag:${ accountName } and not tag:sent and not tag:draft"; }
{ name = "Sent"; query = "tag:${ accountName } and tag:sent"; }
{ name = "Drafts"; query = "tag:${ accountName } and tag:draft"; }
{ name = "Spam"; query = "tag:${ accountName } and tag:spam"; }
{ name = "Trash"; query = "tag:${ accountName } and tag:trash"; }
];
};
};
};
mailcap_path = pkgs.writeText "neomutt_mailcap" ''
application/pdf; zathura %s
multipart; xdg-open %s
text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal
text/html; w3m -v -F -T text/html -dump %s; copiousoutput
text/calendar; khal import %s
text; neomutt %s
application; xdg-open %s
image; xdg-open %s
video; xdg-open %s
audio; xdg-open %s
message; xdg-open %s
model; xdg-open %s
'';
in
{
programs.mu.enable = true;
accounts.email = {
maildirBasePath = "${config.xdg.dataHome}/mail";
accounts = {
gu = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
primary = true;
address = "straube@geo.uni-frankfurt.de";
realName = "Till Straube";
imap.host = "imap.server.uni-frankfurt.de";
smtp.host = "smtpauth.rz.uni-frankfurt.de";
userName = "tstraube";
passwordCommand = "pass uni/hrz";
signature = {
text = ''
Dr. Till Straube (he/him)
Dept. of Human Geography
Goethe University Frankfurt
'';
};
neomutt = {
extraConfig = makeConfig name + ''
color status blue default
color index blue default '~N'
alternates ^tstraube@(em|rz)?.uni-frankfurt.de$
set smime_is_default
'';
};
};
t9e = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
address = "till.straube@t9e.me";
realName = "Till Straube";
imap.host = "arielle.ktiu.net";
smtp.host = "arielle.ktiu.net";
userName = "till.straube@t9e.me";
signature.text = ''
Till Straube (he/him)
PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me
'';
neomutt = {
extraConfig = makeConfig name + ''
color status green default
color index green default '~N'
alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$
set reverse_name
'';
};
msmtp.extraConfig.port = "587";
passwordCommand = "pass accounts/ktiu-imap";
};
ksh = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
address = "kein_schlussstrich_hessen@systemli.org";
realName = "Kein Schlussstrich Hessen";
imap.host = "mail.systemli.org";
smtp.host = "mail.systemli.org";
userName = "kein_schlussstrich_hessen@systemli.org";
signature.text = ''
Kein Schlussstrich Hessen
PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org
'';
neomutt = {
extraConfig = makeConfig name + ''
color status red default
color index red default '~N'
'';
};
passwordCommand = "pass ksh/systemli";
};
};
};
programs.msmtp.enable = true;
programs.mbsync.enable = true;
programs.notmuch = {
enable = true;
search.excludeTags = [ "trash" "spam" ];
new.tags = [ "new" "unread" ];
hooks = {
preNew = ''
notmuch tag +draft -- 'folder:"/\/Drafts$/"'
mbsync --all
'';
postNew = ''
notmuch tag +gu -- tag:new path:gu/**
notmuch tag +t9e -- tag:new path:t9e/**
notmuch tag +ksh -- tag:new path:ksh/**
notmuch tag +inbox -- tag:new 'folder:"/\/Inbox$/"'
notmuch tag +sent -unread -- tag:new 'folder:"/\/Sent$/"'
notmuch tag +trash -unread -- tag:new 'folder:"/\/Trash$/"'
notmuch tag +draft -unread -- tag:new 'folder:"/\/Drafts$/"'
notmuch tag +spam -- tag:new 'folder:"/\/Spam$/"'
notmuch tag +spam -- tag:new 'folder:"/\/Junk$/"'
notmuch tag -new -- tag:new
'';
};
};
programs.neomutt = {
enable = true;
vimKeys = true;
changeFolderWhenSourcingAccount = true;
editor = "nvim -c 'call woof#init#Init()'";
sort = "reverse-date-received";
unmailboxes = true;
settings = {
abort_noattach = "ask-yes";
abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\"";
auto_edit = "no";
beep = "no";
confirm_append = "no";
crypt_auto_sign = "yes";
crypt_replyencrypt = "yes";
crypt_replysign = "yes";
crypt_replysignencrypted = "yes";
crypt_verify_sig = "yes";
edit_headers = "yes";
forward_attachments = "yes";
forward_format = "\"Fwd: %s\"";
forward_quote = "yes";
help = "no";
include = "yes";
mail_check_stats = "yes";
mailcap_path = "${ mailcap_path }";
mark_old = "no";
markers = "no";
mbox_type = "Maildir";
menu_scroll = "yes";
mime_type_query_command = "\"file -b --mime-type %s\"";
nm_record = "yes";
pager_context = "3";
pager_index_lines = "5";
pager_stop = "yes";
query_command= "\"khard email --parsable '%s'\"";
recall = "no";
resume_draft_files = "yes";
reverse_real_name = "no";
shell = "/bin/sh";
sleep_time = "0";
smart_wrap = "yes";
status_chars = "٪A";
tilde = "yes";
use_envelope_from = "yes";
virtual_spool_file = "yes";
wait_key = "no";
};
binds = [
{ key = "m"; map = [ "index" "pager" ]; action = "noop"; }
{ key = "k"; map = [ "pager" ]; action = "previous-entry"; }
{ key = "j"; map = [ "pager" ]; action = "next-entry"; }
{ key = "<return>"; map = [ "index" ]; action = "display-message"; }
{ key = "<space>"; map = [ "index" ]; action = "entire-thread"; }
{ key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; }
{ key = "<Tab>"; map = [ "editor" ]; action = "complete-query"; }
{ key = "P"; map = [ "compose" ]; action = "pgp-menu"; }
{ key = "p"; map = [ "compose" ]; action = "postpone-message"; }
];
macros = [
{ key = "gu"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/gu<enter>g!"; }
{ key = "gm"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/t9e<enter>g!"; }
{ key = "gk"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/ksh<enter>g!"; }
{ key = "Y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>"; }
{ key = "y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>-inbox -unread -spam -trash<enter><sync-mailbox>"; }
{ key = "J"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+spam -inbox -unread -trash<enter><sync-mailbox>"; }
{ key = "I"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+inbox -old -spam -trash<enter><sync-mailbox>"; }
{ key = "Y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>"; }
{ key = "dd"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+trash -inbox -unread -spam<enter><sync-mailbox>"; }
{ key = "g!"; map = [ "index" "pager" ]; action = "<change-vfolder>Inbox<enter>"; }
{ key = "g<"; map = [ "index" "pager" ]; action = "<change-vfolder>Sent<enter>"; }
{ key = "g>"; map = [ "index" "pager" ]; action = "<change-vfolder>Archive<enter>"; }
{ key = "gj"; map = [ "index" "pager" ]; action = "<change-vfolder>Spam<enter>"; }
{ key = "gd"; map = [ "index" "pager" ]; action = "<change-vfolder>Drafts<enter>"; }
{ key = "gt"; map = [ "index" "pager" ]; action = "<change-vfolder>Trash<enter>"; }
{ key = "go"; map = [ "index" "pager" ]; action = "<shell-escape>notmuch new<enter>"; }
{ key = "V"; map = ["index" "pager"]; action = "<view-attachments><search>html<enter><view-mailcap><exit>"; }
{ key = "mar"; map = [ "index" "pager" ]; action = "<tag-pattern>new<enter><tag-prefix-cond><clear-flag>n<enter><tag-prefix-cond><clear-flag>*<enter>"; }
{ key = "A"; map = [ "index" "pager" ]; action = "<pipe-message>khard add-email --vcard-version=4.0<return>"; }
{ key = "S"; map = [ "index" "pager" ]; action = "<pipe-message>ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; }
{ key = "gb"; map = [ "index" "pager" ]; action = "<pipe-message>urlscan<enter>"; }
{ key = "I"; map = [ "compose" ]; action = "<attach-file>`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`<enter>"; }
{ key = "p"; map = [ "compose" ]; action = "<postpone-message>"; }
{ key = "c"; map = [ "index" "pager" ]; action = "<enter-command>set signature=$my_signature<enter><mail>"; }
{ key = "r"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><reply>"; }
{ key = "a"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><group-reply>"; }
{ key = "f"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><forward-message>"; }
{ key = "l"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><list-reply>"; }
];
extraConfig = builtins.readFile ../../dotfiles/neomutt/config.neomuttrc;
};
xdg.configFile."neomutt/colors.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/neomutt/colors.neomuttrc";
xdg.configFile."neomutt/bindings.neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/neomutt/bindings.neomuttrc";
programs.neovim.plugins = with pkgs.vimPlugins; [
{
plugin = vim-pathogen;
type = "viml";
config = "execute pathogen#infect()";
}
];
xdg.configFile."nvim/bundle/woof-vim" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/till/devel/woof-vim";
recursive = true;
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
signal-desktop
# telegram-desktop
simplex-chat-desktop
];
}

View file

@ -0,0 +1,4 @@
{ pkgs, ... }:
{
}

View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
chromium
eduvpn-client
gimp
gnome-solanum
inkscape
libreoffice
lorem
pdfpc
poppler-utils
typst
xournalpp
zotero
];
programs.obs-studio.enable = true;
}

63
home/desktop-full/r.nix Normal file
View file

@ -0,0 +1,63 @@
{ pkgs, ... }:
let
customPackages = with pkgs.rPackages; [
bookdown
catmaply
clipr
DAAG
devtools
dplyr
eurostat
extrafont
ggplot2
ggridges
jsonlite
kableExtra
knitr
languageserver
magrittr
mapproj
openxlsx
osmdata
plotly
progress
purrr
qrcode
quarto
RColorBrewer
readODS
revealjs
rlist
rmarkdown
rnaturalearth
rnaturalearthdata
roxygen2
rvest
sf
stringr
testthat
tidyr
tidyverse
tmap
tufte
xlsx
yaml
];
R-packed = pkgs.rWrapper.override { packages = customPackages; };
RStudio-packed = pkgs.rstudioWrapper.override { packages = customPackages; };
in
{
home.packages = with pkgs; [
R-packed
# RStudio-packed
];
home.shellAliases = {
r = "R --no-save --no-restore";
R = "R --no-save --no-restore";
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
{
home.packages = with pkgs; [
taskopen
];
programs.taskwarrior = {
enable = true;
package = pkgs.taskwarrior3;
dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks";
colorTheme = "no-color";
config = {
report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"];
report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"];
};
extraConfig = "
hooks.location=${config.xdg.dataHome}/taskwarrior/hooks
verbose=affected,context,edit,label,header,new-id,project,special,sync,recur
";
};
}

View file

@ -0,0 +1,31 @@
{ pkgs, ... }:
{
imports = [
../minimal
./devel.nix
./firefox.nix
./fonts.nix
./gpg.nix
./media.nix
./niri.nix
./foot.nix
./password-store.nix
./user-dirs.nix
];
home.packages = with pkgs; [
anki-bin
appimage-run
drawing
keepassxc
libnotify
usbutils
wl-clipboard
yubioath-flutter
zathura
];
services.syncthing.enable = true;
}

View file

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

View file

@ -1,4 +1,4 @@
{ config, pkgs, osConfig, ... }:
{ config, pkgs, inputs, osConfig, ... }:
{
programs.firefox = {
@ -33,14 +33,12 @@
${config.home.username} = {
name = config.home.username;
isDefault = true;
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
adaptive-tab-bar-colour
extensions.packages = with inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [
auto-tab-discard
keepassxc-browser
passff
tampermonkey
# tampermonkey
ublock-origin
vimium
web-archives
zotero-connector
];
@ -53,6 +51,7 @@
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
@ -66,14 +65,27 @@
definedAliases = [ "@nw" ];
};
"NixOS Options" = {
urls = [{ template = "https://search.nixos.org/options?query={searchTerms}"; }];
urls = [{
template = "https://search.nixos.org/options";
params = [
# { name = "channel"; value = "${osConfig.system.nixos.release}"; }
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "https://nixos.org/favicon.png";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@no" ];
};
"Home manager options" = {
# urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-${osConfig.system.nixos.release}"; }];
urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=release-25.05"; }];
urls = [{
template = "https://home-manager-options.extranix.com";
params = [
# { name = "release"; value = "release-${osConfig.system.nixos.release}"; }
{ name = "release"; value = "master"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "https://mipmip.github.io/home-manager-option-search/images/favicon.png";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@hm" ];

View file

@ -1,11 +1,11 @@
{ config, pkgs, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
anonymousPro
cantarell-fonts
cascadia-code
charis-sil
charis
cm_unicode
corefonts
dejavu_fonts

View file

@ -0,0 +1,11 @@
{ config, ... }:
{
programs.foot = {
enable = true;
};
xdg.configFile."foot" = {
recursive = true;
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/foot";
};
}

34
home/desktop-slim/gpg.nix Normal file
View file

@ -0,0 +1,34 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
pinentry-all
];
# moved to system
# services.gpg-agent = {
# enable = true;
# pinentry.package = pkgs.pinentry-all;
# pinentry.program = "pinentry";
# # enableSshSupport = true;
# };
programs.gpg = {
enable = true;
settings = {
no-emit-version = true;
no-comments = true;
keyserver = "hkps://keys.openpgp.org/";
keyserver-options = [
"no-honor-keyserver-url"
"include-revoked"
];
personal-cipher-preferences = "AES256 AES192 AES CAST5";
personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224";
cert-digest-algo = "SHA512";
default-preference-list = "SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed";
};
};
}

View file

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
castget
feh
ffmpeg
nicotine-plus
qbittorrent
vlc
yt-dlp
zathura
];
}

View file

@ -0,0 +1,22 @@
{ pkgs, config, ... }:
{
services.swayidle.enable = true;
services.polkit-gnome.enable = true;
home.packages = with pkgs; [
dgop
dsearch
wl-mirror
xwayland-satellite
adw-gtk3
];
xdg.configFile = {
"niri/config.kdl".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/niri/config.kdl";
"niri/dms" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/niri/dms";
recursive = true;
};
};
}

View file

@ -1,7 +1,6 @@
{ config, pkgs, ... }:
{
programs.password-store = {
enable = true;
settings = {
@ -13,12 +12,18 @@
pkgs.passff-host
];
services.gnome-keyring.enable = false;
services.pass-secret-service = {
enable = true;
};
home.packages = with pkgs; [
pinentry-all
];
xdg.configFile."scdaemon" = {
text = ''
disable-ccid
pcsc-shared
'';
target = "../.gnupg/scdaemon.conf";
};
}

View file

@ -0,0 +1,18 @@
{ config, ... }:
{
xdg.userDirs = {
enable = true;
createDirectories = true;
setSessionVariables = false;
desktop = "${config.home.homeDirectory}/desktop";
documents = "${config.home.homeDirectory}/misc";
download = "${config.home.homeDirectory}/tmp";
music = "${config.home.homeDirectory}/media/music";
pictures = "${config.home.homeDirectory}/media/img";
publicShare = "${config.home.homeDirectory}/box";
templates = "${config.xdg.dataHome}/templates";
videos = "${config.home.homeDirectory}/media/vid";
};
}

View file

@ -1,13 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.packages = with pkgs; [
bundler
bundix
nodejs
yarn-berry
duckdb
tippecanoe
pmtiles
];
}

View file

@ -1,58 +0,0 @@
{ config, pkgs, ... }:
{
programs.foot = {
enable = true;
settings = {
main = {
shell = "${pkgs.fish}/bin/fish -c 'tmux attach'";
pad = "34x34";
# font = "JetBrains Mono:size=16";
font = "Adwaita Mono:size=17";
font-bold = "Adwaita Mono:size=17:weight=bold";
font-italic = "Adwaita Mono:size=17:slant=italic";
font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic";
initial-window-mode = "maximized";
# line-height = "20";
};
mouse.hide-when-typing = "yes";
cursor = {
style = "beam";
blink = true;
};
csd.size = "0";
colors = {
cursor = "eeeeee 1c1c1c";
alpha = "1.0";
background = "eeeeee";
foreground = "1c1c1c";
regular0 = "1c1c1c"; # black
bright0 = "585858"; # bright black
regular1 = "af0000"; # red
bright1 = "d70000"; # bright red
regular2 = "008700"; # green
bright2 = "5faf5f"; # bright green
regular3 = "d75f00"; # yellow
bright3 = "ffaf00"; # bright yellow
regular4 = "005faf"; # blue
bright4 = "0087af"; # bright blue
regular5 = "d70087"; # magenta
bright5 = "ff5faf"; # bright magenta
regular6 = "005f87"; # cyan
bright6 = "00afaf"; # bright cyan
regular7 = "ffffff"; # white
bright7 = "bcbcbc"; # bright white
};
key-bindings = {
show-urls-launch = "Control+Shift+g";
show-urls-copy = "Control+Shift+y";
};
};
};
}

View file

@ -1,40 +0,0 @@
# Here you list all the shortcuts.
#
# The shortcuts may be defined in two ways:
#
# 1. Run-or-raise form: shortcut,launch-command,[wm_class],[title]
# * wm_class and title are optional and case sensitive
# * if none is set, lowercased launch-command is compared with lowercased windows wm_classes and titles
#
# 2. Run only form: shortcut,calculate
#
# =================
# Run or raise form
# =================
#
# This line cycles any open gnome-terminal (matched by wm_class = Gnome-terminal on Ubuntu 17.10) OR if not found, launches new one.
# If you're using Arch, you may want to match by wm_class = gnome-terminal-server , just check yourself by Alt+F2/lg/Windows
<Super>b,firefox,,
<Super>f,nautilus,,
<Super>return,foot,,
<Super>p,keepassxc,,,
# You may use regular expression in title or wm_class.
# Just put the regular expression between slashes.
# E.g. to jump to pidgin conversation window you may use this line
# (that means any windows of wm_class Pidgin, not containing the title Buddy List)"
# <Super>KP_1,pidgin,Pidgin,/^((?!Buddy List).)*$/
# Have the mail always at numpad-click.
# <Super>KP_2,chromium-browser --app=https://mail.google.com/mail/u/0/#inbox
# =============
# Run only form
# =============
#
# This line will launch notify-send command.
# <Super>h,notify-send Hello world
# Blank lines are allowed. Line starting with "#" means a comment.
# Now delete these shortcuts and put here yours.
# How to know wm_class? Alt+f2, lg, "windows" tab (at least on Ubuntu 17.10)

View file

@ -1,128 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3840"
height="2160"
viewBox="0 0 3600.0001 2025"
id="svg2"
version="1.1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="papercolor_grey.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.25780956"
inkscape:cx="500.36934"
inkscape:cy="1068.6182"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1014"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer7"
inkscape:label="bg"
style="display:inline">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bcbcbc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect5389"
width="3600"
height="2024.7382"
x="132.5822"
y="-957.77832"
transform="translate(-132.5822,958.04022)" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="gradient-logo"
style="display:inline;opacity:1"
transform="translate(-132.5822,958.04022)">
<g
id="g4"
transform="matrix(1.8009416,0,0,1.8009416,-1547.8855,-43.619081)"
style="stroke-width:0.555265">
<g
id="g2"
style="fill:#9d9da1;fill-opacity:1;stroke-width:0.555265">
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3439-6"
d="m 1864.6278,-49.22711 -154.8754,268.22157 -36.1595,-61.29501 41.7398,-71.834875 -82.8948,-0.217865 -17.667,-30.627963 18.0405,-31.326737 117.9921,0.372571 42.4056,-73.105854 z"
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3445-0"
d="m 1876.5091,165.18522 309.7244,0.0152 -35.0032,61.96257 -83.0808,-0.23034 41.2588,71.89798 -17.6911,30.61406 -36.15,0.0398 -58.6734,-102.37043 -84.5144,-0.17145 z"
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3449-5"
d="m 2056.7797,47.657079 -154.849,-268.236809 71.1628,-0.66757 41.3409,72.06522 41.6361,-71.68011 35.3581,0.0139 18.1095,31.2869 -59.3187,101.99786 42.1087,73.2773 z"
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g3"
style="fill:#87878c;fill-opacity:1;stroke-width:0.555265">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 1808.7367,61.262431 154.849,268.236809 -71.1628,0.66757 -41.3409,-72.06522 -41.6361,71.68011 -35.3581,-0.0139 -18.1095,-31.2869 59.3187,-101.99786 -42.1087,-73.27717 z"
id="path4260-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 1988.3675,-56.881714 -309.7243,-0.01524 35.0032,-61.962576 83.0808,0.23034 -41.2588,-71.89797 17.6911,-30.61407 36.15,-0.0398 58.6734,102.37043 84.5143,0.17138 z"
id="use4354-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2000.5368,158.10537 154.8754,-268.22158 36.1595,61.295012 -41.7398,71.83488 82.8948,0.217865 17.667,30.627963 -18.0405,31.326737 -117.9921,-0.372571 -42.4055,73.105794 z"
id="use4362-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

View file

@ -1,27 +0,0 @@
{ config, pkgs, ... }:
{
programs.gpg.settings = {
no-emit-version = true;
no-comments = true;
keyserver = "hkps://keys.openpgp.org/";
keyserver-options = [
"no-honor-keyserver-url"
"include-revoked"
];
personal-cipher-preferences = "AES256 AES192 AES CAST5";
personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224";
cert-digest-algo = "SHA512";
default-preference-list = "SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed";
};
xdg.configFile."scdaemon" = {
text = ''
disable-ccid
pcsc-shared
'';
target = "../.gnupg/scdaemon.conf";
};
}

View file

@ -1,60 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.username = "guest";
home.homeDirectory = "/home/guest";
home.stateVersion = "22.11";
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
};
};
programs.home-manager.enable = true;
xdg.userDirs = {
enable = true;
createDirectories = true;
download = "${config.home.homeDirectory}/tmp";
music = "${config.home.homeDirectory}/media/music";
pictures = "${config.home.homeDirectory}/media/img";
videos = "${config.home.homeDirectory}/media/vid";
documents = "${config.home.homeDirectory}/misc";
templates = "${config.xdg.dataHome}/templates";
};
home.packages = with pkgs; [
fzf
silver-searcher
tmux
nodejs
wl-clipboard
qbittorrent
vlc
mpv
ffmpeg
yt-dlp
libnotify
keepassxc
];
services.syncthing.enable = true;
imports = [
./gnome
./firefox.nix
./foot.nix
./fish.nix
./tmux
./nvim
./fonts.nix
];
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
}

View file

@ -1,5 +0,0 @@
{ config, pkgs, ... }:
{
programs.librewolf.enable = true;
}

View file

@ -1,85 +0,0 @@
# Navigation
bind pager k previous-entry
bind pager j next-entry
# bind index,pager \Cu half-up
# bind index,pager \Cd half-down
# bind pager gg top
# bind index gg first-entry
# bind pager G bottom
# bind index G last-entry
# bind index,pager N search-opposite
bind index <return> display-message
bind index <space> collapse-thread
bind index,pager gf change-folder
# Read HTML
bind index,pager V noop
macro index,pager V "<view-attachments><search>html<enter><view-mailcap><exit>"
# compose
bind compose p postpone-message
bind compose P pgp-menu
# macro compose I "<attach-file>`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > "$tmpfile" && echo "$tmpfile"`<enter>" "attach image from clipboard"
bind editor <Tab> complete-query
bind editor ^T complete
bind index,pager a group-reply
bind index,pager m noop
macro index,pager mar "<tag-pattern>new<enter><tag-prefix-cond><clear-flag>n<enter><tag-prefix-cond><clear-flag>*<enter>" "Mark all read"
# compose with signature management
macro index,pager @ "<enter-command>set signature=$my_signature<enter><compose-to-sender>" "Compose to sender"
macro index,pager c "<enter-command>set signature=$my_signature<enter><mail>" "Compose new message"
macro index,pager r "<enter-command>unset signature<enter><reply>" "Reply to message"
macro index,pager a "<enter-command>unset signature<enter><group-reply>" "Reply all"
macro index,pager f "<enter-command>unset signature<enter><forward-message>" "Forward message"
# moving messages
macro index,pager J ":set resolve=no\n<clear-flag>n:set resolve=yes\n<save-message>$my_junk<enter>" \
"Move to junk folder"
macro index,pager y ":set resolve=no\n<clear-flag>n:set resolve=yes\n<save-message>$mbox<enter>" \
"Move message to the archive"
macro index,pager I "<save-message>$spoolfile<enter>" "Move message to the inbox"
# switch folders
macro index,pager g! "<change-folder>$spoolfile<enter><refresh>" "Go to inbox"
macro index,pager gd "<change-folder>$postponed<enter><refresh>" "Go to drafts"
macro index,pager g< "<change-folder>$record<enter><refresh>" "Go to sent"
macro index,pager ga "<change-folder>$mbox<enter>" "Go to archive"
macro index,pager g> "<change-folder>$mbox<enter><refresh>" "Go to archive"
macro index,pager gt "<change-folder>$trash<enter><refresh>" "Go to trash"
macro index,pager gj "<change-folder>$my_junk<enter><refresh>" "Go to junk"
# accounts
macro index,pager gu "<change-folder>~/.local/share/mail/gu/Inbox<enter><refresh>" "Go to GU"
# macro index,pager gp "<change-folder>+systemli/IMAP/Inbox<enter><refresh>" "Go to Systemli"
macro index,pager gm "<change-folder>~/.local/share/mail/t9e/Inbox<enter><refresh>" "Go to t9e"
# macro index,pager gm "<change-folder>+gmail/IMAP/Inbox<enter><refresh>" "Go to Gmail"
macro index,pager gk "<change-folder>~/.local/share/mail/ksh/Inbox<enter><refresh>" "Go to KSH"
macro index,pager gi "<change-folder>~/.local/share/mail/ktiu/Inbox<enter><refresh>" "Go to ktiu"
# macro index,pager gf "<change-folder>~/.local/share/mail/dkg/Inbox<enter><refresh>" "Go to DKG"
macro index,pager L "<limit>all\n" "Show all messages (undo limit)"
# macro index,pager go "<shell-escape>mbsync -c ~/.config/mbsync/mbsyncrc $my_mbsync_acct && notmuch new &<enter>" \
# "Run mbsync to sync mail for this account"
macro index,pager go "<shell-escape>mbsync $my_mbsync_acct && notmuch new<enter>" \
macro index,pager g/ "<vfolder-from-query-readonly>" "find in nm"
macro index,pager A \
"<pipe-message>khard add-email --vcard-version=4.0<return>" \
"add the sender email address to khard"
macro index,pager S \
"<pipe-message> ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" \
"save all non-text attachments using ripmime"
macro index,pager gb \
"<pipe-message> urlscan<enter>" \
"extract URLs out of a message"
macro index,pager gO \
"<shell-escape>mbsync -a && notmuch new<enter>" \
"run mbsync to sync all mail"

View file

@ -1,153 +0,0 @@
set alias_file = ~/.local/share/neomutt/aliases.neomuttrc
source $alias_file
set mailcap_path = ~/.config/neomutt/mailcap
# source ./smime.neomuttrc
set my_download_folder = ~/tmp
# Caching and tmp
set header_cache = $XDG_CACHE_HOME/neomutt/headers
set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies
set header_cache_backend = "lmdb"
set tmpdir = $XDG_CACHE_HOME/neomutt/tmp
# Basic options
unset wait_key
set mbox_type = Maildir
# set delete
set mail_check_stats
unset confirm_append
unset beep
unset mark_old
set sleep_time = 0
# set shell = /bin/bash
# Sending
set use_envelope_from
unset reverse_realname
# Searching
set nm_default_url = "notmuch:///home/till/.local/share/mail/"
# Multi-account setup
# source ~/.config/neomutt/accounts/dkg.neomuttrc
# source ~/.config/neomutt/accounts/gu.neomuttrc
# bind index,pager g noop
# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc
# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc
# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc
# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc
# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc
# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc
# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc
folder-hook . source ~/.config/neomutt/bindings.neomuttrc
# # Source config
# source ~/.config/neomutt/views.neomuttrc
# source ~/.config/neomutt/sidebar.neomuttrc
# source ~/.config/neomutt/colors.neomuttrc
# source ~/.config/neomutt/smime.neomuttrc
# source ~/.config/neomutt/pgp.neomuttrc
# Compose
set editor = "nvim -c 'call woof#init#Init()'"
set edit_headers
set forward_format = "Fwd: %s"
set forward_attachments
set fast_reply
set include
set forward_quote
unset recall
set resume_draft_files
set abort_noattach_regex = "(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)"
set abort_noattach = ask-yes
set mime_type_query_command = "file -b --mime-type %s"
set query_command= "khard email --parsable '%s'"
# Status bar
set status_chars = "✔↻٪A"
set status_format = "— [ %r ] %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —"
unset help
# Index
set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s"
set strict_threads
set send_charset = "utf-8:iso-8859-1:us-ascii"
set charset = "utf-8"
# sorting
set sort = threads
set sort_aux = reverse-last-date-received
# Pager view
set pager_index_lines = 10
set pager_context = 3
set pager_stop
set smart_wrap
set menu_scroll
set tilde
unset markers
ignore *
unignore from: to: cc: bcc: date: subject:
unhdr_order *
hdr_order from: to: cc: bcc: date: subject:
alternative_order text/plain text/enriched text/html
auto_view text/html
# Attachments
set rfc2047_parameters
set attach_save_dir = $my_download_folder
## Indicator
color indicator brightwhite brightblack
## Index
color index_flags brightmagenta default '.*'
color index_date cyan default
## New mail
color index brightblack default '~N'
## Header colors
color header brightblack default ".*"
color header brightgreen default "^(Subject)"
color header yellow default "^(From|To|CC|BCC)"
color header blue default "^Date"
## Status
# color status yellow default '\[ ↻ \]'
# color status green default '\[ ✔ \]'
# color status magenta default '\[ ٪ \]'
# color status black default '\[ [0-9]+ new \]'
# color status red default '\[ [0-9]+ to delete \]'
## Mutt
color message cyan default
color error red default
color tilde black default
## Pager
color normal default default
color attachment brightblack default
color search black yellow
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature cyan default
color underline black default
## Email
color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body red default "(BAD signature)"
color body green default "(Good signature)"
color body brightblack default "^gpg: .*"
color body green default "^gpg: Good signature .*"
color body red default "^gpg: BAD signature from.*"

View file

@ -1,233 +0,0 @@
{ config, pkgs, ... }:
{
programs.msmtp = {
enable = true;
configContent = ''
defaults
logfile ${config.xdg.stateHome}/msmtp/msmtp.log
port 587
'';
};
programs.mbsync.enable = true;
programs.neomutt = {
enable = true;
vimKeys = true;
extraConfig = builtins.readFile ./config.neomuttrc;
};
programs.notmuch.enable = true;
xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc;
xdg.configFile."neomutt/smime.neomuttrc".source = ./smime.neomuttrc;
xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap;
accounts.email = {
maildirBasePath = "${config.xdg.dataHome}/mail";
accounts = {
gu = {
primary = true;
address = "straube@geo.uni-frankfurt.de";
realName = "Till Straube";
imap.host = "imap.server.uni-frankfurt.de";
smtp.host = "smtpauth.rz.uni-frankfurt.de";
smtp.tls.useStartTls = true;
userName = "tstraube";
notmuch.enable = true;
passwordCommand = "pass uni/hrz";
signature = {
text = ''
Dr. Till Straube (he/him)
Dept. of Human Geography
Goethe University Frankfurt
'';
showSignature = "append";
};
mbsync.enable = true;
mbsync.create = "maildir";
msmtp.enable = true;
neomutt = {
enable = true;
sendMailCommand = "/home/till/.nix-profile/bin/msmtp";
extraConfig = ''
set mbox='+Archive'
set my_junk='+Spamverdacht'
set my_mbsync_acct='gu'
set crypt_auto_smime
unset crypt_auto_pgp
set crypt_autosign
set crypt_replyencrypt
set crypt_replysign
set crypt_replysignencrypted
set crypt_verify_sig
# set smime_default_key = "f1355556.0"
set smime_sign_as = "f1355556.0"
set pgp_default_key = ""
# unset crypt_use_gpgme
unalternates *
alternates ^straube@em.uni-frankfurt.de$ \
^tstraube@em.uni-frankfurt.de$ \
^tstraube@rz.uni-frankfurt.de$ \
^tstraube@uni-frankfurt.de$
unset reverse_name
set my_signature = ${
pkgs.writeText
"signature.txt"
config.accounts.email.accounts.gu.signature.text
}
color status blue default
'';
};
};
t9e = {
address = "till.straube@t9e.me";
realName = "Till Straube";
imap.host = "arielle.ktiu.net";
smtp.host = "arielle.ktiu.net";
smtp.tls.useStartTls = true;
notmuch.enable = true;
userName = "till.straube@t9e.me";
signature.text = ''
Till Straube (he/him)
PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me
'';
signature.showSignature = "append";
gpg = {
key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3";
signByDefault = true;
};
neomutt = {
enable = true;
sendMailCommand = "/home/till/.nix-profile/bin/msmtp";
extraConfig = ''
set my_mbsync_acct='t9e'
set mbox='+Archive'
set my_junk='+Junk'
set crypt_auto_pgp
unset crypt_auto_smime
unalternates *
alternates @t9e.me$ @ktiu.net$
set reverse_name
set my_signature = ${
pkgs.writeText
"signature.txt"
config.accounts.email.accounts.t9e.signature.text
}
color status green default
'';
};
mbsync.enable = true;
mbsync.create = "maildir";
msmtp = {
enable = true;
extraConfig.from = "*@t9e.me";
};
passwordCommand = "pass mail/arielle.ktiu.net";
};
ktiu = {
address = "till@ktiu.net";
realName = "Till Straube";
imap.host = "shorbut.ktiu.net";
smtp.host = "shorbut.ktiu.net";
smtp.tls.useStartTls = true;
notmuch.enable = true;
userName = "till";
signature.text = ''
Till Straube (he/him)
PGP key: https://keys.openpgp.org/search?q=till@ktiu.net
'';
signature.showSignature = "append";
gpg = {
key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3";
signByDefault = true;
};
neomutt = {
enable = true;
sendMailCommand = "/home/till/.nix-profile/bin/msmtp";
extraConfig = ''
set my_mbsync_acct='ktiu'
set mbox='+Archive'
set my_junk='+Junk'
set crypt_auto_pgp
unset crypt_auto_smime
unalternates *
alternates @ktiu.net$
set reverse_name
set my_signature = ${
pkgs.writeText
"signature.txt"
config.accounts.email.accounts.ktiu.signature.text
}
color status green default
'';
};
mbsync.enable = true;
mbsync.create = "maildir";
msmtp = {
enable = true;
extraConfig.from = "*@ktiu.net";
};
passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till";
};
ksh = {
address = "kein_schlussstrich_hessen@systemli.org";
realName = "Kein Schlussstrich Hessen";
imap.host = "mail.systemli.org";
smtp.host = "mail.systemli.org";
smtp.tls.useStartTls = true;
notmuch.enable = true;
userName = "kein_schlussstrich_hessen@systemli.org";
signature.text = ''
Kein Schlussstrich Hessen
PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org
'';
signature.showSignature = "append";
neomutt = {
enable = true;
sendMailCommand = "/home/till/.nix-profile/bin/msmtp";
extraConfig = ''
set my_mbsync_acct='ksh'
set mbox='+Erledigt'
set my_junk='+Junk'
set postponed='+Drafts'
set record='+Sent'
set trash='+Trash'
set crypt_auto_pgp
unset crypt_auto_smime
unalternates *
set reverse_name
set my_signature = ${
pkgs.writeText
"signature.txt"
config.accounts.email.accounts.ksh.signature.text
}
color status cyan default
'';
};
mbsync.enable = true;
mbsync.create = "maildir";
msmtp = {
enable = true;
extraConfig.from = "kein_schlussstrich_hessen@systemli.org";
};
passwordCommand = "secret-tool lookup server mail.systemli.org account kein_schlussstrich_hessen@systemli.org";
};
};
};
}

View file

@ -1,11 +0,0 @@
application/pdf; zathura %s
multipart; xdg-open %s
text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal
text/html; w3m -v -F -T text/html -dump %s; copiousoutput
text; neomutt %s
application; xdg-open %s
image; xdg-open %s
video; xdg-open %s
audio; xdg-open %s
message; xdg-open %s
model; xdg-open %s

View file

@ -1,24 +0,0 @@
# Locations
# set smime_ca_location="~/.keys/neomutt/smime/ca"
# set smime_certificates="~/.keys/neomutt/smime/public"
# set smime_keys="~/.keys/neomutt/smime/private"
# Commands (smime_keys)
set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out"
set smime_get_cert_command="openssl pkcs7 -print_certs -in %f"
set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null"
set smime_get_cert_email_command="openssl x509 -in %f -noout -email"
set smime_import_cert_command="smime_keys add_cert %f"
# Outgoing
set smime_encrypt_with="aes256"
set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c"
set smime_sign_digest_alg="sha256"
set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER"
# Incoming
set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c"
set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f"
set smime_verify_opaque_command="\
openssl smime -verify -inform DER -in %s %C || \
openssl smime -verify -inform DER -in %s -noverify 2>/dev/null"

View file

@ -1,78 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.username = "till";
home.homeDirectory = "/home/till";
home.stateVersion = "22.11";
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
};
};
programs.home-manager.enable = true;
xdg.userDirs = {
enable = true;
desktop = "${config.home.homeDirectory}/desktop";
documents = "${config.home.homeDirectory}/misc";
download = "${config.home.homeDirectory}/tmp";
music = "${config.home.homeDirectory}/media/music";
pictures = "${config.home.homeDirectory}/media/img";
publicShare = "${config.home.homeDirectory}/box";
templates = "${config.xdg.dataHome}/templates";
videos = "${config.home.homeDirectory}/media/vid";
};
home.packages = with pkgs; [
dust
fzf
jq
progress
rename
silver-searcher
tldr
tmux
];
imports = [
./fish.nix
./tmux
./password-store.nix
./vifm
./nvim
./gpg.nix
./ssh.nix
];
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
programs.git = {
enable = true;
settings = {
user.name = "Till";
user.email = "till@ktiu.net";
pull.rebase = true;
extraConfig = {
init = {
defaultBranch = "main";
};
};
};
lfs = {
enable = true;
};
};
programs.bottom = {
enable = true;
settings.styles.theme = "default-light";
};
}

52
home/minimal/default.nix Normal file
View file

@ -0,0 +1,52 @@
{ config, pkgs, ... }:
{
programs.home-manager.enable = true;
home.homeDirectory = "/home/${config.home.username}";
imports = [
./fish.nix
./vifm.nix
./nvim
./tmux.nix
./git.nix
];
home.packages = with pkgs; [
dust
eza
fastfetch
fzf
jq
nh
nix-search
progress
rename
silver-searcher
tldr
tmux
yq
];
home.shellAliases = {
cdg = "cd \$(git rev-parse --show-toplevel)";
dmy = "date +'%-d.-%-m.%Y'";
du = "dust";
ls = "eza";
tree = "eza --tree";
top = "btm --battery";
ymd = "date +'%Y-%m-%d'";
};
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
programs.bottom = {
enable = true;
};
home.stateVersion = "22.11";
}

View file

@ -1,20 +1,11 @@
{ config, pkgs, ... }:
{ config, ... }:
{
home.shellAliases = {
top = "btm --battery";
ymd = "date +'%Y-%m-%d'";
dmy = "date +'%-d.-%-m.%Y'";
v = "nvim";
r = "R --no-save --no-restore";
R = "R --no-save --no-restore";
cdg = "cd \$(git rev-parse --show-toplevel)";
};
programs.fish = {
enable = true;
interactiveShellInit = "fish_add_path ${config.xdg.dataHome}/npm/packages/bin";
shellAbbrs = {
openconnect = "openconnect --config=/home/till/.config/openconnect/config";
};
shellInit = ''
set -gx EDITOR "nvim"
set -gx VISUAL "nvim"
@ -50,6 +41,10 @@
end
end
function diary --description 'Create or edit today\'s diary entry'
nvim -c "call Diary()"
end
set -U fish_prompt_pwd_dir_length 0
function fish_prompt --description "Write out the prompt"

13
home/minimal/git.nix Normal file
View file

@ -0,0 +1,13 @@
{...}:
{
programs.git = {
enable = true;
signing.format = "openpgp";
settings = {
pull.rebase = true;
extraConfig.init.defaultBranch = "main";
};
lfs.enable = true;
};
}

View file

@ -23,25 +23,26 @@ set splitright
set tabstop=2
set updatetime=300
set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()
let g:netrw_liststyle = 3
let g:netrw_fastbrowse = 0
nnoremap Y y$
nnoremap <leader>cd :lcd %:h<CR>
nnoremap <leader>ew :e <C-R>=expand("%:p:h") . "/" <CR>
nnoremap gF :edit <cfile><return>
nnoremap gx :! xdg-open <cfile><return>
nnoremap <silent> <tab> :bnext<return>
nnoremap <silent> <S-tab> :bnext<return>
nnoremap <silent> Q :bdelete<return>
nnoremap <c-h> <c-w>h
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-l> <c-w>l
nnoremap <c-q> :hide<return>
nnoremap <leader>m :make<return>
nnoremap <leader>M :!home-manager switch<return>
tnoremap <esc> <c-\><c-n>
@ -52,9 +53,13 @@ onoremap <silent> al :normal val<return>
xnoremap i% GoggV
onoremap <silent> i% :normal vi%<return>
" highlight Normal guibg=NONE
function CreateNote(title)
execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md"
execute "set ft=markdown"
execute "normal! i" . a:title
execute "normal V\<tab>yaml_note\<tab>"
execute "VimwikiIndex"
execute "VimwikiGoto " . a:title
endfunction
function Diary()
execute "VimwikiMakeDiaryNote"
endfunction

View file

@ -0,0 +1,255 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
astro-language-server
marksman
nil
tree-sitter
typescript-language-server
vim-language-server
];
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
extraConfig = builtins.readFile ./config.vim;
plugins = with pkgs.vimPlugins;
[
cmp-buffer
cmp-cmdline
cmp-emoji
cmp-fish
cmp-nvim-lsp
cmp-nvim-ultisnips
cmp-path
{
plugin = vim-fugitive;
type = "lua";
config = ''
vim.api.nvim_set_keymap("n", "<Leader>g", ":Git<CR>", { noremap = true, silent = true })
'';
}
{
plugin = fzf-vim;
type = "lua";
config = ''
vim.api.nvim_set_keymap('i', '<c-x><c-f>', '<Plug>(fzf-complete-path)', { silent = true })
vim.api.nvim_set_keymap('i', '<c-x><c-k>', '<Plug>(fzf-complete-word)', { silent = true })
vim.api.nvim_set_keymap('i', '<c-x><c-l>', '<Plug>(fzf-complete-line)', { silent = true })
vim.api.nvim_set_keymap('n', '<localleader><tab>', '<Plug>(fzf-maps-n)', { silent = true })
vim.api.nvim_set_keymap('x', '<localleader><tab>', '<Plug>(fzf-maps-x)', { silent = true })
vim.api.nvim_set_keymap('o', '<localleader><tab>', '<Plug>(fzf-maps-o)', { silent = true })
vim.api.nvim_set_keymap('n', '<leader>b', ':Buffers<return>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>o', ':Files<return>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>O', ':Files ~/', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>r', ':Read<return>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>R', ':Read ~/', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>a', ':Ag<return>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>A', ':Ag ~/', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>.', ':Files ~/devel/omniflake/<return>', { noremap = true, silent = true })
vim.api.nvim_create_user_command(
'Read',
'call fzf#run(fzf#wrap({\'sink\': \'read\', \'dir\': <q-args>}))',
{ nargs = '?', complete = 'dir' }
)
'';
}
{
plugin = goyo-vim;
type = "viml";
config = ''
nnoremap <silent> yog :Goyo<CR>
nnoremap <silent> [og :Goyo 80<return>
nnoremap <silent> ]og :Goyo!<return>
'';
}
{
plugin = limelight-vim;
type = "viml";
config = ''
set termguicolors
let g:limelight_conceal_ctermfg = 'darkgray'
nnoremap yof :Limelight!!<return>
nnoremap [of :Limelight<return>
nnoremap ]of :Limelight!<return>
'';
}
nabla-nvim
{
plugin = nvim-cmp;
type = "lua";
config = builtins.readFile ./nvim-cmp.lua;
}
{
plugin = nvim-colorizer-lua;
type = "viml";
config = "lua require 'colorizer'.setup()";
}
{
plugin = nvim-lspconfig;
type = "lua";
config = ''
vim.lsp.enable('astro')
vim.lsp.enable('marksman')
vim.lsp.enable('nil_ls')
vim.lsp.enable('r_language_server')
vim.lsp.enable('rust_analyzer')
vim.lsp.enable('texlab')
vim.lsp.enable('ts_ls')
vim.lsp.enable('vimls')
vim.api.nvim_del_keymap('i', '<c-s>')
vim.keymap.set({ 'i' }, "<c-tab>", vim.lsp.buf.signature_help, { desc = "Show signature help" })
'';
}
{
plugin = (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ]));
type = "lua";
config = ''
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'nix', 'markdown', 'lua', 'r' },
callback = function()
-- Enable Tree-sitter-based folding
vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
vim.o.foldmethod = 'expr'
-- Optional: configure fold behavior
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
end,
})
'';
}
# {
# plugin = catppuccin-nvim;
# type = "viml";
# config = ''
# colorscheme catppuccin-nvim
# '';
# }
{
plugin = papercolor-theme;
type = "viml";
config = ''
colorscheme PaperColor
'';
}
quarto-nvim
typescript-vim
{
plugin = ultisnips;
type = "lua";
config = ''
vim.api.nvim_set_keymap('n', '<leader>se', ':UltiSnipsEdit!<return>', { noremap = true, silent = true })
'';
}
vifm-vim
{
plugin = vim-astro;
type = "viml";
config = ''
let g:astro_typescript = 'enable'
'';
}
vim-commentary
{
plugin = vim-easy-align;
type = "viml";
config = ''
xmap ga <Plug>(EasyAlign)
nmap ga <Plug>(EasyAlign)
'';
}
vim-fish
vim-nix
# {
# plugin = vim-pandoc;
# config = ''
# let g:pandoc#modules#disabled = ["completion", "command", "menu"]
# '';
# }
vim-pandoc-syntax
vim-repeat
{
plugin = vim-slime;
type = "viml";
config = ''
let g:slime_target = "tmux"
let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.2"}
let g:slime_no_mappings = 1
let g:slime_dont_ask_default = 1
xmap s <plug>SlimeRegionSend
nmap s <plug>SlimeMotionSend
nmap ss <plug>SlimeLineSend
nnoremap s: :SlimeSend1
'';
}
vim-snippets
vim-speeddating
vim-surround
{
plugin = vim-unimpaired;
type = "viml";
config = ''
nnoremap =p <Nop>
nnoremap =P <Nop>
nnoremap =s <Nop>
'';
}
{
plugin = vimwiki;
type = "viml";
config = ''
let g:vimwiki_list = [ { 'path': '~/notes/', 'syntax': 'markdown', 'ext': '.md' } ]
nnoremap <Leader>wt <Nop>
nnoremap <Leader>w<Leader>t <Nop>
nmap <C-j> <Plug>VimwikiNextLink
nmap <C-k> <Plug>VimwikiPrevLink
let g:vimwiki_key_mappings = { 'headers': 0, 'text_objs': 0, 'lists': 0, 'lists_return': 0, 'html': 0 }
'';
}
];
withRuby = false;
withPython3 = true;
};
xdg.configFile."nvim" = {
source = ./dotfiles;
recursive = true;
};
home.shellAliases.v = "nvim";
}

View file

@ -9,9 +9,3 @@ augroup netrw
autocmd!
autocmd FileType netrw setl bufhidden=wipe
augroup end
augroup repl
autocmd!
autocmd TermOpen * setlocal nonumber norelativenumber
autocmd TermOpen * nmap <buffer> Q :bdelete!<enter>
augroup end

View file

@ -0,0 +1 @@
setlocal makeprg=nixos-rebuild\ dry-build

View file

@ -0,0 +1,54 @@
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
end,
},
mapping = cmp.mapping.preset.insert(
{
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<Tab>'] = cmp.mapping.confirm({ select = false }),
}
),
sources = cmp.config.sources({
{ name = 'cmp_pandoc' },
{ name = 'emoji' },
{ name = 'fish' },
{ name = 'nvim_lsp' },
{ name = 'path' },
{ name = 'ultisnips' },
}, {
{ name = 'buffer' },
})
})
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline' }
}),
matching = { disallow_symbol_nonprefix_matching = false }
})
-- Set up lspconfig.
local capabilities = require('cmp_nvim_lsp').default_capabilities()

16
home/minimal/tmux.nix Normal file
View file

@ -0,0 +1,16 @@
{ pkgs, config, ... }:
{
programs.tmux = {
enable = true;
escapeTime = 0;
mouse = true;
newSession = true;
shell = "${pkgs.fish}/bin/fish";
};
xdg.configFile."tmux" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/dotfiles/tmux";
recursive = true;
};
}

View file

@ -4,10 +4,9 @@
programs.vifm = {
enable = true;
extraConfig = "
colorscheme light
set vicmd=nvim
filetype * xdg-open
colorscheme Default
";
};
xdg.configFile."vifm/colors/light.vifm".source = ./light.vifm;
}

View file

@ -1 +0,0 @@
prefix = ${HOME}/.npm-packages

View file

@ -1,148 +0,0 @@
{ config, pkgs, ... }:
{
imports = [ ./khard-dump.nix ];
home.packages = with pkgs; [
astro-language-server
marksman
nil
typescript-language-server
];
programs.neovim = {
enable = true;
defaultEditor = true;
extraConfig = builtins.readFile ./config.vim;
plugins = with pkgs.vimPlugins;
let
woof = pkgs.vimUtils.buildVimPlugin {
name = "woof.vim";
src = builtins.fetchGit {
url = "ssh://git@shorbut.ktiu.net/home/git/woof.vim/";
ref = "main";
rev = "c29eb50e30ed75cf9ecdcfff198454fcc2c16922";
};
};
in
[
woof
cmp-nvim-lsp
cmp-buffer
cmp-emoji
cmp-path
cmp-cmdline
cmp-nvim-ultisnips
nvim-cmp
{
plugin = nvim-lspconfig;
type = "lua";
config = builtins.readFile ./lsp.lua;
}
{
plugin = fzf-vim;
config = ''
nnoremap <leader><tab> :Buffers<return>
imap <c-x><c-f> <Plug>(fzf-complete-path)
nnoremap <leader>o :Files<return>
nnoremap <leader>O :Files ~/
nnoremap <leader>r :Read<cr>
nnoremap <leader>R :Read ~/
nnoremap <leader>a :Ag<cr>
nnoremap <leader>b :Buffers<cr>
nnoremap <leader>. :Files ~/devel/omniflake/<return>
command! -nargs=? -complete=dir Read call fzf#run(
\fzf#wrap({'sink': 'read', 'dir': <q-args>})
\)
'';
}
{
plugin = goyo;
config = ''
nnoremap yog :Goyo<return>
nnoremap [og :Goyo 80<return>
nnoremap ]og :Goyo!<return>
'';
}
{
plugin = limelight-vim;
config = ''
set termguicolors
let g:limelight_conceal_ctermfg = 'darkgray'
nnoremap yof :Limelight!!<return>
nnoremap [of :Limelight<return>
nnoremap ]of :Limelight!<return>
'';
}
{
plugin = nvim-colorizer-lua;
config = "lua require 'colorizer'.setup()";
}
{
plugin = papercolor-theme;
config = ''
set background=light
colorscheme PaperColor
'';
}
typescript-vim
{
plugin = ultisnips;
config = ''
nnoremap <leader>se :UltiSnipsEdit!<return>
'';
}
vifm-vim
{
plugin = vim-astro;
config = ''
let g:astro_typescript = 'enable'
'';
}
vim-commentary
{
plugin = vim-easy-align;
config = ''
xmap ga <Plug>(EasyAlign)
nmap ga <Plug>(EasyAlign)
'';
}
vim-fish
vim-nix
vim-repeat
{
plugin = vim-slime;
config = ''
let g:slime_target = "tmux"
let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"}
let g:slime_no_mappings = 1
let g:slime_dont_ask_default = 1
xmap s <plug>SlimeRegionSend
nmap s <plug>SlimeMotionSend
nmap ss <plug>SlimeLineSend
nnoremap s: :SlimeSend1
" let g:slime_target = "neovim"
" autocmd TermOpen * let g:slime_default_config = {"jobid": &channel}
'';
}
vim-snippets
vim-speeddating
vim-surround
vim-unimpaired
];
};
xdg.configFile."nvim/autocommmands.vim".source = ./autocommands.vim;
xdg.configFile."nvim/ftplugin/markdown.vim".source = ./ftplugin/markdown.vim;
xdg.configFile."nvim/after/ftplugin/markdown.vim".source = ./after/ftplugin/markdown.vim;
xdg.configFile."nvim/ftplugin/r.vim".source = ./ftplugin/r.vim;
xdg.configFile."nvim/ftplugin/rmd.vim".source = ./ftplugin/rmd.vim;
xdg.configFile."nvim/ftplugin/tex.vim".source = ./ftplugin/tex.vim;
xdg.configFile."nvim/ftplugin/typescript.vim".source = ./ftplugin/typescript.vim;
xdg.configFile."nvim/syntax/rmd.vim".source = ./syntax/rmd.vim;
}

View file

@ -1,13 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
home.file.".npmrc".text = ''
prefix = ${config.xdg.dataHome}/npm/packages
'';
imports = [
./minimal.nix
./devel.nix
];
}

View file

@ -1,10 +0,0 @@
{ config, pkgs, ... }:
{
home.packages = [ pkgs.openconnect ];
xdg.configFile."openconnect/config".text = ''
server=vpn-einwahl.uni-frankfurt.de
user=tstraube
protocol=anyconnect
'';
}

View file

@ -1,92 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs;
let
customPackages = with rPackages; let
lectuR = pkgs.rPackages.buildRPackage {
name = "lectuR";
src = builtins.fetchGit {
url = "ssh://git@shorbut.ktiu.net/home/git/lectuR/";
ref = "main";
rev = "0aafe4eb057a7ec12b8d6ac40ce0bfc8dab80c2b";
};
propagatedBuildInputs = [ purrr magrittr knitr kableExtra tidyr stringr yaml ];
nativeBuildInputs = [ purrr magrittr knitr kableExtra tidyr stringr yaml ];
};
publishR = pkgs.rPackages.buildRPackage {
name = "publishR";
src = builtins.fetchGit {
url = "ssh://git@shorbut.ktiu.net/home/git/publishR/";
ref = "main";
rev = "ee137a66ca3b713205ac44e5165292e7ad6388b6";
};
propagatedBuildInputs = [];
nativeBuildInputs = [];
};
goethR = pkgs.rPackages.buildRPackage {
name = "goethR";
src = builtins.fetchGit {
url = "ssh://git@arielle.ktiu.net/home/git/goethR/";
ref = "main";
rev = "e3dbfd319f01adfa4a1a1a8abc274014e6498aae";
};
propagatedBuildInputs = [];
nativeBuildInputs = [];
};
in [
bookdown
catmaply
clipr
DAAG
devtools
dplyr
eurostat
extrafont
ggplot2
ggridges
jsonlite
kableExtra
knitr
languageserver
magrittr
mapproj
# networkD3
openxlsx
osmdata
plotly
progress
purrr
qrcode
RColorBrewer
readODS
revealjs
# restatis
rlist
rmarkdown
rnaturalearth
rnaturalearthdata
# roxygen2
# RSQLite
rvest
sf
stringr
# swirl
# testthat
tidyr
tidyverse
tmap
xlsx
yaml
lectuR
publishR
# goethR
# ggtree
];
R-packed = rWrapper.override { packages = customPackages; };
RStudio-packed = rstudioWrapper.override { packages = customPackages; };
in [
R-packed
RStudio-packed
];
}

View file

@ -1,92 +0,0 @@
{ config, pkgs, inputs, lib, ... }:
{
xdg.userDirs.createDirectories = true;
home.file.".npmrc".text = ''
prefix = ${config.xdg.dataHome}/npm/packages
'';
xdg.configFile."castget/castget.conf".source = ./castget/castget.conf;
home.packages = with pkgs; [
aichat
usbutils
wl-clipboard
# email
msmtp
notmuch
w3m
openssl
# gnupg
urlscan
ripmime
# office
khal
khard
taskopen
zathura
pdftk
imagemagick
feh
ghostscript
drawing
castget
# publishing
hunspell
hunspellDicts.de_DE
hunspellDicts.en_US
hunspellDicts.th_TH
hyphen
hyphenDicts.de_DE
hyphenDicts.en_US
pandoc
imagemagick
ghostscript
# media
rhythmbox
vlc
appimage-run
# secrets
# libsecret
keepassxc
yubioath-flutter
];
imports = [
./minimal.nix
./devel.nix
./calendars.nix
./foot.nix
./mail
# ./openconnect.nix
];
programs.taskwarrior = {
enable = true;
package = pkgs.taskwarrior3;
dataLocation = "${config.xdg.dataHome}/taskwarrior/tasks";
colorTheme = "light-256";
config = {
report.list.columns = ["id" "depends.indicator" "priority" "project" "recur.indicator" "scheduled.countdown" "due" "until.age" "status.short" "description.count" "tags"];
report.list.labels= ["ID" "D" "Prio" "Proj" "R" "Scheduled" "Due" "Until" "S" "Description" "Tags"];
};
extraConfig = "
hooks.location=${config.xdg.dataHome}/taskwarrior/hooks
verbose=affected,context,edit,label,header,new-id,project,special,sync,recur
";
};
services.syncthing.enable = true;
}

View file

@ -1,25 +0,0 @@
{ config, ... }:
{
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
gu = {
hostname = "login.server.uni-frankfurt.de";
user = "tstraube";
identityFile = "${config.home.homeDirectory}/.ssh/tstraube";
};
geocom = {
hostname = "geocom.uni-frankfurt.de";
user = "till";
identityFile = "${config.home.homeDirectory}/.ssh/tstraube";
};
};
};
}

View file

@ -1,55 +0,0 @@
{ config, pkgs, ... }:
{
programs.tmux = {
enable = true;
escapeTime = 0;
mouse = true;
newSession = true;
shell = "${pkgs.fish}/bin/fish";
extraConfig = ''
# Key bindings
bind C-l next-window
bind C-h previous-window
bind C-b last-window
bind n new-window
bind C-n new-window -c '#{pane_current_path}'
bind v split-window -h
bind C-v split-window -hc '#{pane_current_path}'
bind s split-window -v
bind C-s split-window -vc '#{pane_current_path}'
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
# Layouts
bind f source-file ~/.config/tmux/vifm.conf
bind R source-file ~/.config/tmux/rloft.conf
bind J source-file ~/.config/tmux/jekyll.conf
# Unbind
unbind p
unbind '"'
unbind %
# Eye candy
# set-option -g status-position top
set-option -g status-right ""
set-option -g status-left ""
set-option -g status-justify "centre"
set-option -g status-style fg=magenta
set-option -g pane-border-style fg=brightwhite
set-option -g pane-active-border-style fg=magenta
set-option -g window-status-current-style bg=brightwhite
# Some more specifics
set-option -g focus-events on
'';
};
xdg.configFile."tmux/vifm.conf".source = ./vifm.conf;
xdg.configFile."tmux/rloft.conf".source = ./rloft.conf;
xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf;
}

View file

@ -1,6 +0,0 @@
split-window -c '#{pane_current_path}' -h nix-shell
send-keys "jekyll serve" Enter
resize-pane -x 40%
split-pane -c '#{pane_current_path}' "git status; fish"
select-pane -L
rename-window "jekyll"

View file

@ -1 +0,0 @@
new-window -c '#{pane_current_path}' vifm

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ pkgs, ... }:
{
home.pointerCursor = {
@ -7,12 +7,9 @@
size = 32;
};
services.gnome-keyring.enable = false;
home.packages = with pkgs.gnomeExtensions; [
run-or-raise
removable-drive-menu
# system-monitor
];
dconf.settings = {
@ -38,7 +35,6 @@
gtk-theme = "Adwaita";
};
"org/gnome/desktop/background" = {
picture-uri = "file://" + ./wallpaper_nix_paper_gray.svg;
picture-options = "zoom";
};
"org/gnome/desktop/wm/keybindings" = {
@ -107,5 +103,12 @@
sleep-inactive-battery-timeout = 1200;
};
};
xdg.configFile."run-or-raise/shortcuts.conf".source = ./run-or-raise.conf;
xdg.configFile."run-or-raise/shortcuts.conf".text = ''
<Super>b,firefox,,
<Super>f,nautilus,,
<Super>g:always-run,tmux new-window -n vifm vifm ~/desktop,foot,
<Super>return,foot,,
<Super>p,keepassxc,,,
'';
}

7
home/unused/hyprland.nix Normal file
View file

@ -0,0 +1,7 @@
{ ... }:
{
wayland.windowManager.hyprland = {
systemd.enable = false;
};
}

5
home/unused/plasma.nix Normal file
View file

@ -0,0 +1,5 @@
{ ... }:
{
services.kdeconnect.enable = true;
}

View file

@ -1,20 +0,0 @@
highlight clear
highlight Win cterm=none ctermfg=black ctermbg=default
highlight Directory cterm=none ctermfg=cyan ctermbg=default
highlight Link cterm=none ctermfg=yellow ctermbg=default
highlight BrokenLink cterm=none ctermfg=white ctermbg=red
highlight Socket cterm=none ctermfg=red ctermbg=default
highlight Device cterm=none ctermfg=red ctermbg=default
highlight Fifo cterm=none ctermfg=black ctermbg=cyan
highlight Executable cterm=none ctermfg=green ctermbg=default
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta
highlight TopLine cterm=bold ctermfg=magenta ctermbg=default
highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white
highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white
"highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default
"highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
highlight Border cterm=none ctermfg=default ctermbg=default
"highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white

42
hosts/arielle/default.nix Normal file
View file

@ -0,0 +1,42 @@
{ ... }:
{
networking = {
hostName = "arielle";
domain = "ktiu.net";
interfaces.enp1s0.ipv4.addresses = [{
address = "116.203.85.135";
prefixLength = 32;
}];
interfaces.enp1s0.ipv6.addresses = [{
address = "2a01:4f8:1c1c:42d8::1";
prefixLength = 64;
}];
nameservers = [
"185.12.64.1"
"185.12.64.2"
];
defaultGateway = {
address = "172.31.1.1";
interface = "enp1s0";
};
defaultGateway6 = {
address = "fe80::1";
interface = "enp1s0";
};
};
imports = [
./hardware-configuration.nix
../../system
../../system/web-server
../../system/mail-server
../../system/matrix-server
];
}

View file

@ -0,0 +1,27 @@
{ lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/087544b8-4941-436b-be6c-e32bc3787b12";
fsType = "ext4";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/9408a2ce-646d-406e-8407-c9bafd0a728c"; }
];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

17
hosts/homer/default.nix Normal file
View file

@ -0,0 +1,17 @@
{ ... }:
{
networking.hostName = "homer";
imports = [
./hardware-configuration.nix
../../system
../../system/desktop
../../system/desktop/gnome.nix
../../system/desktop/steam.nix
../../system/desktop/remote-desktop.nix
../../system/desktop/media-server.nix
../../users/till.nix
../../users/guest.nix
];
}

View file

@ -1,13 +1,13 @@
# 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, ... }:
{ config, lib, modulesPath, ... }:
{
imports =
[ (modulesPath + "/hardware/network/broadcom-43xx.nix")
(modulesPath + "/installer/scan/not-detected.nix")
];
imports = [
(modulesPath + "/hardware/network/broadcom-43xx.nix")
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
@ -53,14 +53,12 @@
];
};
swapDevices = [ ];
swapDevices = [{
device = "/swapfile";
size = 8 * 1045;
}];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

12
hosts/mila/default.nix Normal file
View file

@ -0,0 +1,12 @@
{ ... }:
{
networking.hostname = "mila";
imports = [
./hardware.nix
../system
../system/desktop
../system/desktop/gnome.nix
];
}

55
hosts/nova/default.nix Normal file
View file

@ -0,0 +1,55 @@
{ config, lib, ... }:
{
networking.hostName = "nova";
imports = [
./hardware-configuration.nix
../../users/alt/system.nix
../../users/guest/system.nix
../../system
../../system/desktop
../../system/desktop/laptop.nix
../../system/desktop/ergodox-udev.nix
../../system/desktop/niri.nix
../../system/desktop/steam.nix
../../system/desktop/yubikey-pam.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelModules = [ "v4l2loopback" ];
boot.kernelParams = [ "psmouse.elantech_smbus=0" ];
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
boot.initrd.luks.devices."cryptroot".allowDiscards = true;
fileSystems."/".options = [
"compress=zstd"
"discard=async"
];
fileSystems."/nix".options = [
"compress=zstd"
"noatime"
"discard=async"
];
fileSystems."/home".options = [
"compress=zstd"
"discard=async"
];
swapDevices = [
{
device = "/swapfile";
size = 8 * 1045;
}
];
networking.useDHCP = lib.mkDefault true;
# powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
hardware.trackpoint.enable = true;
}

View file

@ -0,0 +1,46 @@
# 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 =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/mapper/cryptroot";
fsType = "btrfs";
options = [ "subvol=root" ];
};
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/eaad533f-8586-4002-9c53-5aecf8e7abd8";
fileSystems."/nix" =
{ device = "/dev/mapper/cryptroot";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/home" =
{ device = "/dev/mapper/cryptroot";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/7362-C4C4";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

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