This commit is contained in:
Lukas Wurzinger 2023-09-17 13:32:14 +02:00
parent 1e9b3e0ab1
commit ad9bd080eb
24 changed files with 48 additions and 1295 deletions

View file

@ -8,18 +8,10 @@
imports = [
./features/bottom.nix
./features/cava.nix
./features/cursor.nix
./features/darkman.nix
./features/direnv.nix
./features/fish.nix
./features/fnott.nix
./features/foot.nix
./features/fuzzel.nix
./features/gammastep.nix
./features/git.nix
./features/helix.nix
./features/i3status-rust.nix
./features/imv.nix
./features/joshuto.nix
./features/mmtc.nix
./features/mpd.nix
@ -28,10 +20,6 @@
./features/qutebrowser
./features/readline.nix
./features/ssh.nix
./features/swayidle.nix
./features/swaylock.nix
./features/sway.nix
./features/zathura.nix
];
home.packages = with pkgs; [
@ -53,147 +41,19 @@
progress
pv
rage
ripdrag
rsync
sops
systeroid
tokei
tutanota-desktop
vscodium
wf-recorder
];
xdg = {
enable = true;
mime.enable = true;
mimeApps = {
enable = true;
defaultApplications = let
mkDefaultApplication = mimeTypes: desktopFile: (lib.genAttrs mimeTypes (_: desktopFile));
in
lib.attrsets.mergeAttrsList [
(
mkDefaultApplication [
"x-scheme-handler/http"
"x-scheme-handler/https"
"text/html"
] "qutebrowser.desktop"
)
(
mkDefaultApplication [
"x-scheme-handler/mailto"
] "tutanota-desktop.desktop"
)
# TODO
# (
# mkDefaultApplication [
# "inode/directory"
# ] ""
# )
# (
# mkDefaultApplication [
# "x-scheme-handler/geo"
# ] ""
# )
(
mkDefaultApplication [
"image/png"
"image/jpeg"
"image/webp"
"image/avif"
"image/heif"
"image/bmp"
"image/x-icns"
] "imv.desktop"
)
(
mkDefaultApplication [
"audio/aac"
"audio/mp4"
"audio/mpeg"
"audio/mpegurl"
"audio/ogg"
"audio/vnd.rn-realaudio"
"audio/vorbis"
"audio/x-flac"
"audio/x-mp3"
"audio/x-mpegurl"
"audio/x-ms-wma"
"audio/x-musepack"
"audio/x-oggflac"
"audio/x-pn-realaudio"
"audio/x-scpls"
"audio/x-speex"
"audio/x-vorbis"
"audio/x-vorbis+ogg"
"audio/x-wav"
] "mpv.desktop"
)
(
mkDefaultApplication [
"application/pdf"
] "zathura.desktop"
)
(
mkDefaultApplication [
# TODO: Add more text filetypes
"text/plain"
"text/x-cmake"
"text/markdown"
"application/x-docbook+xml"
"application/json"
"application/x-yaml"
] "helix.desktop"
)
(
mkDefaultApplication [
"video/3gp"
"video/3gpp2"
"video/divx"
"video/fli"
"video/mp2t"
"video/mp4v-es"
"video/msvideo"
"video/quicktime"
"video/vnd.mpegurl"
"video/x-avi"
"video/x-m4v"
"video/x-mpeg2"
"video/x-msvideo"
"video/x-ms-wmx"
"video/x-ogm+ogg"
"video/x-theora+ogg"
"video/3gpp"
"video/avi"
"video/dv"
"video/flv"
"video/mp4"
"video/mpeg"
"video/ogg"
"video/vnd.divx"
"video/vnd.rn-realvideo"
"video/x-flv"
"video/x-matroska"
"video/x-ms-asf"
"video/x-ms-wmv"
"video/x-ogm"
"video/x-theora"
"application/x-matroska"
] "mpv.desktop"
)
];
};
userDirs = {
enable = true;
createDirectories = true;
desktop = "${config.home.homeDirectory}/desk";
documents = "${config.home.homeDirectory}/doc";
download = "${config.home.homeDirectory}/dl";
music = "${config.home.homeDirectory}/music";
pictures = "${config.home.homeDirectory}/pic";
publicShare = "${config.home.homeDirectory}/pub";
templates = "${config.home.homeDirectory}/tpl";
videos = "${config.home.homeDirectory}/vid";
};
};

View file

@ -1,9 +0,0 @@
{pkgs, ...}: {
home.pointerCursor = {
name = "Bibata-Modern-Classic";
size = 16;
package = pkgs.bibata-cursors;
gtk.enable = true;
x11.enable = true;
};
}

View file

@ -1,30 +0,0 @@
{pkgs, ...}: {
systemd.user.services.darkman = {
Unit = {
Description = "Framework for dark-mode and light-mode transitions";
Documentation = ["man:darkman(1)"];
};
Service = {
Type = "dbus";
BusName = "nl.whynothugo.darkman";
ExecStart = "${pkgs.darkman}/bin/darkman run";
Restart = "on-failure";
TimeoutStopSec = 15;
Slice = "background.slice";
LockPersonality = true;
RestrictNamespaces = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"@timer"
"mincore"
];
MemoryDenyWriteExecute = true;
};
Install = {
WantedBy = ["default.target"];
};
};
}

View file

@ -1,22 +0,0 @@
{
services.dunst = {
enable = true;
settings = {
global = {
width = 500;
height = 200;
offset = "20x50";
origin = "top-right";
transparency = 10;
frame_color = "#eceff1";
font = "monospace 12";
};
urgency_normal = {
background = "#37474f";
foreground = "#eceff1";
timeout = 10;
};
};
};
}

View file

@ -1,66 +0,0 @@
{pkgs, ...}: {
services.fnott = {
enable = true;
settings = {
main = {
min-width = 400;
max-icon-size = 96;
stacking-order = "bottom-up";
anchor = "top-right";
notification-margin = 5;
selection-helper = "${pkgs.bemenu}/bin/bemenu";
background = "263238ff";
border-color = "546e7acf";
border-size = 2;
padding-vertical = 20;
padding-horizontal = 20;
title-font = "sans-serif";
title-color = "ffffffff";
title-format = "<i>%a%A</i>";
summary-font = "sans-serif";
summary-color = "ffffffff";
summary-format = "<b>%s</b>\n";
body-font = "sans-serif";
body-color = "ffffffff";
body-format = "%b";
progress-bar-height = 20;
progress-bar-color = "ffffffff";
max-timeout = 0;
default-timeout = 10;
idle-timeout = 0;
};
# TODO
low = {
background = "2632388f";
title-color = "888888ff";
summary-color = "888888ff";
body-color = "888888ff";
};
normal = {
background = "263238ff";
title-color = "ffffffff";
summary-color = "ffffffff";
body-color = "ffffffff";
};
critical = {
background = "546e7aaf";
title-color = "888888ff";
summary-color = "888888ff";
body-color = "888888ff";
};
};
};
}

View file

@ -1,53 +0,0 @@
{pkgs, ...}: {
programs.foot = {
enable = true;
settings = {
main = {
app-id = "foot";
font = "monospace:size=12";
initial-window-size-chars = "80x24";
notify = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
};
scrollback = {
lines = 10000;
};
url = {
launch = "${pkgs.xdg-utils}/bin/xdg-open \${url}";
};
cursor = {
style = "block";
blink = "yes";
};
mouse = {
hide-when-typing = "yes";
};
colors = {
alpha = "0.9";
foreground = "a9b1d6";
background = "09090a";
regular0 = "212121";
regular1 = "f07178";
regular2 = "c3e88d";
regular3 = "ffcb6b";
regular4 = "82aaff";
regular5 = "c792ea";
regular6 = "89ddff";
regular7 = "eeffff";
bright0 = "4a4a4a";
bright1 = "f07178";
bright2 = "c3e88d";
bright3 = "ffcb6b";
bright4 = "82aaff";
bright5 = "c792ea";
bright6 = "89ddff";
bright7 = "ffffff";
};
};
};
}

View file

@ -1,25 +0,0 @@
{config, ...}: {
programs.fuzzel = {
enable = true;
settings = {
main = {
font = "Iosevka Nerd Font";
terminal = "${config.programs.foot.package}/bin/foot";
layer = "overlay";
};
colors = {
background = "263238c0";
text = "ffffffff";
match = "eeffffff";
selection = "82aaffdd";
selection-text = "eeffffff";
border = "314549fa";
};
border = {
width = 2;
radius = 5;
};
};
};
}

View file

@ -1,7 +0,0 @@
{
services.gammastep = {
enable = true;
provider = "geoclue2";
tray = true;
};
}

View file

@ -1,93 +0,0 @@
{
programs.i3status-rust = {
enable = true;
bars = {
default = {
icons = "material-nf";
settings = {
theme.overrides = {
idle_bg = "#000000";
idle_fg = "#c5c8c6";
info_bg = "#3971ed";
info_fg = "#0e0e0ef0";
good_bg = "#198844";
good_fg = "#0e0e0ef0";
warning_bg = "#fba922";
warning_fg = "#0e0e0ef0";
critical_bg = "#cc342b";
critical_fg = "#0e0e0ef0";
separator = "";
separator_bg = "auto";
separator_fg = "auto";
};
};
blocks = [
{
block = "focused_window";
format = "{ $title $visible_marks |}";
}
{
block = "net";
format = " $icon ^icon_net_up $speed_up ^icon_net_down $speed_down ";
interval = 1;
}
{
block = "memory";
format = " $icon $mem_used ";
interval = 5;
}
{
block = "cpu";
format = " $icon $barchart ";
interval = 5;
}
{
block = "disk_space";
path = "/home";
info_type = "available";
alert_unit = "GB";
alert = 10;
warning = 15;
format = " $icon $used/$total ";
}
{
block = "battery";
interval = 10;
format = " $icon $percentage ";
missing_format = "";
device = "BAT0";
}
{
block = "battery";
interval = 10;
format = " $icon $percentage {$time |}";
missing_format = "";
device = "BAT1";
}
{
block = "sound";
format = " $icon {$volume |}";
device_kind = "sink";
}
{
block = "sound";
format = " $icon {$volume |}";
device_kind = "source";
}
{
block = "music";
format = "{ $icon $combo $prev $play $next |}";
}
{
block = "time";
interval = 1;
format = " $icon $timestamp.datetime(f:'%H:%M:%S, %b %d.') ";
}
];
};
};
};
}

View file

@ -1,12 +0,0 @@
{
programs.imv = {
enable = true;
settings = {
options = {
background = "checks";
loop_input = false;
overlay = true;
};
};
};
}

View file

@ -37,12 +37,10 @@
config.bind("td", "config-cycle colors.webpage.darkmode.enabled;; restart")
c.tabs.show = "multiple"
c.tabs.tabs_are_windows = True
c.content.local_content_can_access_remote_urls = True
c.tabs.show = "multiple"
c.url.default_page = Path("${./start.html}").as_uri()
c.url.start_pages = [c.url.default_page]

View file

@ -1,537 +0,0 @@
{
pkgs,
config,
lib,
...
}: {
imports = [
./cursor.nix
];
# TODO: darkman
wayland.windowManager.sway = let
wpctl = "${pkgs.wireplumber}/bin/wpctl";
xdg-user-dir = "${pkgs.xdg-user-dirs}/bin/xdg-user-dir";
notify-send = "${pkgs.libnotify}/bin/notify-send";
slurp = "${pkgs.slurp}/bin/slurp";
grim = "${pkgs.grim}/bin/grim";
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
swaynag = "${config.wayland.windowManager.sway.package}/bin/swaynag";
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
mpc = "${pkgs.mpc-cli}/bin/mpc";
fnottctl = "${config.services.fnott.package}/bin/fnottctl";
modifier = "Mod4";
terminal = "${config.programs.foot.package}/bin/foot";
in {
enable = true;
systemd = {
enable = true;
xdgAutostart = true;
};
wrapperFeatures = {
base = true;
gtk = true;
};
# TODO: Remove GTK_THEME
extraSessionCommands = ''
export MOZ_ENABLE_WAYLAND=1
export MOZ_DBUS_REMOTE=1
export QT_QPA_PLATFORM=wayland-egl
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export _JAVA_AWT_WM_NONREPARENTING=1
export SDL_VIDEODRIVER=wayland
export BEMENU_OPTS='--tb #3971ed --tf #1d1f21 --fb #1d1f21 --ff #c5c8c6 --nb #1d1f21 --nf #c5c8c6 --hb #282a2e --hf #ffffff --sb #1d1f21 --sf #c5c8c6 --scb #373b41 --scf #3971ed --scrollbar autohide --fn monospace --bottom'
export GTK_THEME=Adwaita:dark
export XDG_SESSION_DESKTOP="''${XDG_SESSION_DESKTOP:-sway}"
export SUDO_ASKPASS=${
pkgs.writeShellScript "askpass" ''
echo -n | ${pkgs.bemenu}/bin/bemenu --password --prompt askpass
''
}
export GDK_SCALE=1
'';
config = {
inherit modifier terminal;
startup = [
{command = "${pkgs.dex}/bin/dex --autostart";}
];
# FIXME: Currently done by extraConfig
# defaultWorkspace = "workspace number 1";
gaps = {
smartBorders = "on";
smartGaps = true;
};
window = {
titlebar = false;
commands = [
{
command = "inhibit_idle fullscreen";
criteria.app_id = "mpv";
}
];
};
workspaceAutoBackAndForth = true;
input = {
"type:keyboard" = {
xkb_layout = lib.mkDefault "us";
repeat_rate = "45";
repeat_delay = "250";
};
"type:pointer" = {
accel_profile = "flat";
};
"type:touchpad" = {
tap = "enabled";
natural_scroll = "enabled";
dwt = "enabled";
};
};
bars = [
{
statusCommand = "${config.programs.i3status-rust.package}/bin/i3status-rs ~/.config/i3status-rust/config-default.toml";
command = "${config.wayland.windowManager.sway.package}/bin/swaybar";
position = "top";
trayOutput = "*";
fonts = {
names = ["Iosevka Nerd Font" "monospace"];
style = "Regular";
size = 13.0;
};
colors = {
background = "#000000";
separator = "#121616f4";
statusline = "#121616f4";
focusedWorkspace = {
border = "#3971ed";
background = "#3971ed";
text = "#0e0e0ef0";
};
activeWorkspace = {
border = "#c5c8c6";
background = "#969896";
text = "#0e0e0ef0";
};
inactiveWorkspace = {
border = "#000000";
background = "#000000";
text = "#c5c8c6";
};
urgentWorkspace = {
border = "#cc342b";
background = "#cc342b";
text = "#0e0e0ef0";
};
bindingMode = {
border = "#fba922";
background = "#fba922";
text = "#0e0e0ef0";
};
};
}
];
colors = {
focused = {
border = "#c5c8c6";
background = "#3971ed";
text = "#0e0e0ef0";
indicator = "#3971ed";
childBorder = "#3971ed";
};
focusedInactive = {
border = "#121616f4";
background = "#121616f4";
text = "#c5c8c6";
indicator = "#969896";
childBorder = "#121616f4";
};
unfocused = {
border = "#121616f4";
background = "#0e0e0ef0";
text = "#c5c8c6";
indicator = "#121616f4";
childBorder = "#121616f4";
};
urgent = {
border = "#cc342b";
background = "#cc342b";
text = "#0e0e0ef0";
indicator = "#cc342b";
childBorder = "#cc342b";
};
placeholder = {
border = "#0e0e0ef0";
background = "#0e0e0ef0";
text = "#c5c8c6";
indicator = "#0e0e0ef0";
childBorder = "#0e0e0ef0";
};
background = "#ffffff";
};
floating.criteria = [
{app_id = "neovidefloat";}
{app_id = "mpvfloat";}
{app_id = "footfloat";}
];
keybindings = {
"${modifier}+Shift+q" = "kill";
"${modifier}+d" = "exec ${config.programs.fuzzel.package}/bin/fuzzel";
"${modifier}+Shift+d" = "exec ${pkgs.bemenu}/bin/bemenu-run --no-exec | xargs ${swaymsg} exec --";
"${modifier}+Return" = "exec ${terminal}";
"${modifier}+Shift+Return" = "exec ${terminal} --class footfloat";
"${modifier}+Left" = "focus left";
"${modifier}+Down" = "focus down";
"${modifier}+Up" = "focus up";
"${modifier}+Right" = "focus right";
"${modifier}+h" = "focus left";
"${modifier}+j" = "focus down";
"${modifier}+k" = "focus up";
"${modifier}+l" = "focus right";
"${modifier}+Shift+Left" = "move left";
"${modifier}+Shift+Down" = "move down";
"${modifier}+Shift+Up" = "move up";
"${modifier}+Shift+Right" = "move right";
"${modifier}+Shift+h" = "move left";
"${modifier}+Shift+j" = "move down";
"${modifier}+Shift+k" = "move up";
"${modifier}+Shift+l" = "move right";
"${modifier}+s" = "layout stacking";
"${modifier}+w" = "layout tabbed";
"${modifier}+e" = "layout toggle split";
"${modifier}+Space" = "focus mode_toggle";
"${modifier}+Shift+Space" = "floating toggle";
"${modifier}+1" = "workspace number 1";
"${modifier}+2" = "workspace number 2";
"${modifier}+3" = "workspace number 3";
"${modifier}+4" = "workspace number 4";
"${modifier}+5" = "workspace number 5";
"${modifier}+6" = "workspace number 6";
"${modifier}+7" = "workspace number 7";
"${modifier}+8" = "workspace number 8";
"${modifier}+9" = "workspace number 9";
"${modifier}+0" = "workspace number 10";
"${modifier}+F1" = "workspace number 11";
"${modifier}+F2" = "workspace number 12";
"${modifier}+F3" = "workspace number 13";
"${modifier}+F4" = "workspace number 14";
"${modifier}+F5" = "workspace number 15";
"${modifier}+F6" = "workspace number 16";
"${modifier}+F7" = "workspace number 17";
"${modifier}+F8" = "workspace number 18";
"${modifier}+F9" = "workspace number 19";
"${modifier}+F10" = "workspace number 20";
"${modifier}+F11" = "workspace number 21";
"${modifier}+F12" = "workspace number 22";
"${modifier}+Shift+1" = "move container to workspace number 1";
"${modifier}+Shift+2" = "move container to workspace number 2";
"${modifier}+Shift+3" = "move container to workspace number 3";
"${modifier}+Shift+4" = "move container to workspace number 4";
"${modifier}+Shift+5" = "move container to workspace number 5";
"${modifier}+Shift+6" = "move container to workspace number 6";
"${modifier}+Shift+7" = "move container to workspace number 7";
"${modifier}+Shift+8" = "move container to workspace number 8";
"${modifier}+Shift+9" = "move container to workspace number 9";
"${modifier}+Shift+0" = "move container to workspace number 10";
"${modifier}+Shift+F1" = "move container to workspace number 11";
"${modifier}+Shift+F2" = "move container to workspace number 12";
"${modifier}+Shift+F3" = "move container to workspace number 13";
"${modifier}+Shift+F4" = "move container to workspace number 14";
"${modifier}+Shift+F5" = "move container to workspace number 15";
"${modifier}+Shift+F6" = "move container to workspace number 16";
"${modifier}+Shift+F7" = "move container to workspace number 17";
"${modifier}+Shift+F8" = "move container to workspace number 18";
"${modifier}+Shift+F9" = "move container to workspace number 19";
"${modifier}+Shift+F10" = "move container to workspace number 20";
"${modifier}+Shift+F11" = "move container to workspace number 21";
"${modifier}+Shift+F12" = "move container to workspace number 22";
Print =
"exec "
+ pkgs.writeShellScript "grabraw" ''
set -e
set -o pipefail
f=$(${xdg-user-dir} PICTURES)/$(date +'screenshot-%Y%m%d-%H%M%S').png
${grim} -t png - | tee -- "$f" | ${wl-copy} --type image/png
${notify-send} --icon "$f" -- "$f copied to clipboard."
'';
"Shift+Print" =
"exec "
+ pkgs.writeShellScript "grabregion" ''
set -e
set -o pipefail
f=$(${xdg-user-dir} PICTURES)/$(date +'screenshot-%Y%m%d-%H%M%S').png
${slurp} | ${grim} -t png -g - - | tee -- "$f" | ${wl-copy} --type image/png
${notify-send} --icon "$f" -- "$f copied to clipboard."
'';
"Control+Shift+Print" =
"exec "
+ pkgs.writeShellScript "grabcolor" ''
set -e
set -o pipefail
c=$(${slurp} -b 00000000 -p | ${grim} -g - - | ${pkgs.imagemagick}/bin/convert - -format '%[pixel:p{0,0}]' txt:- | tail --lines 1 | cut -d ' ' -f 4)
${wl-copy} --type text/plain --trim-newline <<< "$c"
${notify-send} -- "$c copied to clipboard."
'';
"${modifier}+x" = "split h";
"${modifier}+y" = "split v";
"${modifier}+f" = "fullscreen toggle";
"${modifier}+a" = "focus parent";
"${modifier}+c" = "focus child";
"${modifier}+Shift+c" = "reload";
"${modifier}+Shift+r" = "restart";
"${modifier}+Shift+z" = ''
exec ${swaynag} \
-t warning \
-m 'What do you want to do?' \
-b 'Exit sway' 'systemctl --user stop sway-session.target && ${swaymsg} exit' \
-b 'Shutdown' 'systemctl --user stop sway-session.target && shutdown now' \
-b 'Reboot' 'systemctl --user stop sway-session.target && reboot' \
-b 'Suspend' 'loginctl lock-session && systemctl suspend' \
-b 'Hibernate' 'loginctl lock-session && systemctl hibernate'
'';
"${modifier}+b" = "exec ${fnottctl} dismiss";
"${modifier}+Shift+b" = "exec ${fnottctl} actions";
XF86AudioRaiseVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%+";
XF86AudioLowerVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%-";
"Shift+XF86AudioRaiseVolume" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 10%+";
"Shift+XF86AudioLowerVolume" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 10%-";
XF86AudioMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ 1";
"Shift+XF86AudioMute" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ 0";
XF86AudioMicMute = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ 1";
"Shift+XF86AudioMicMute" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ 0";
"${modifier}+n" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ 1";
"${modifier}+Shift+n" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ 0";
"${modifier}+m" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ 1";
"${modifier}+Shift+m" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ 0";
XF86AudioPause = "exec ${mpc} pause";
XF86AudioPlay = "exec ${mpc} play";
XF86AudioPrev = "exec ${mpc} prev";
XF86AudioNext = "exec ${mpc} next";
XF86MonBrightnessUp = "exec ${brightnessctl} set +1%";
XF86MonBrightnessDown = "exec ${brightnessctl} set 1%-";
"Shift+XF86MonBrightnessUp" = "exec ${brightnessctl} set +10%";
"Shift+XF86MonBrightnessDown" = "exec ${brightnessctl} set 10%-";
"${modifier}+Apostrophe" = "move workspace to output right";
"${modifier}+Minus" = "scratchpad show";
"${modifier}+Shift+Minus" = "move scratchpad";
"${modifier}+Underscore" = "move container to scratchpad";
"${modifier}+Shift+s" = "exec loginctl lock-session";
XF86PowerOff = "exec loginctl lock-session";
"Shift+XF86PowerOff" = "exec systemctl suspend-then-hibernate";
XF86Eject = "exec loginctl lock-session";
"Shift+XF86Eject" = "exec systemctl suspend-then-hibernate";
Pause = "exec loginctl lock-session";
"Shift+Pause" = "exec systemctl suspend-then-hibernate";
"${modifier}+r" = "mode resize";
"${modifier}+g" = "mode gaps";
"${modifier}+p" = "mode mpc";
"${modifier}+i" = "mode microphone";
"${modifier}+t" = "mode clipboard";
"${modifier}+v" = "mode volume";
"${modifier}+u" = "mode brightness";
};
modes = {
resize = {
h = "resize shrink width 1 px or 1 ppt";
j = "resize grow height 1 px or 1 ppt";
k = "resize shrink height 1 px or 1 ppt";
l = "resize grow width 1 px or 1 ppt";
"Shift+h" = "resize shrink width 10 px or 10 ppt";
"Shift+j" = "resize grow height 10 px or 10 ppt";
"Shift+k" = "resize shrink height 10 px or 10 ppt";
"Shift+l" = "resize grow width 10 px or 10 ppt";
Return = "mode default";
Escape = "mode default";
};
volume = {
k = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%+";
j = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 1%-";
"Shift+k" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 10%+";
"Shift+j" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 10%-";
Return = "mode default";
Escape = "mode default";
};
microphone = {
XF86AudioRaiseVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 1%+";
XF86AudioLowerVolume = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 1%-";
"Shift+XF86AudioRaiseVolume" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 10%+";
"Shift+XF86AudioLowerVolume" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SOURCE@ 10%-";
Return = "mode default";
Escape = "mode default";
};
brightness = {
j = "exec ${brightnessctl} set 1%-";
k = "exec ${brightnessctl} set +1%";
Return = "mode default";
Escape = "mode default";
};
clipboard = {
c = "exec ${wl-copy} --clear";
Return = "mode default";
Escape = "mode default";
};
"gaps inner" = {
plus = "gaps inner current plus 1";
minus = "gaps inner current minus 1";
"0" = "gaps inner current set 0";
"Shift+plus" = "gaps inner all plus 1";
"Shift+minus" = "gaps inner all minus 1";
"Shift+0" = "gaps inner all set 0";
Return = "mode default";
Escape = "mode default";
};
"gaps outer" = {
plus = "gaps outer current plus 1";
minus = "gaps outer current minus 1";
"0" = "gaps outer current set 0";
"Shift+plus" = "gaps outer all plus 1";
"Shift+minus" = "gaps outer all minus 1";
"Shift+0" = "gaps outer all set 0";
Return = "mode default";
Escape = "mode default";
};
gaps = {
o = ''mode "gaps outer"'';
i = ''mode "gaps inner"'';
Return = "mode default";
Escape = "mode default";
};
"mpc volume" = {
j = "exec ${mpc} volume -1";
k = "exec ${mpc} volume +1";
"Shift+j" = "exec exec ${mpc} volume -10";
"Shift+k" = "exec exec ${mpc} volume +10";
Return = "mode default";
Escape = "mode default";
};
mpc = {
XF86AudioRaiseVolume = "exec ${mpc} volume +1";
XF86AudioLowerVolume = "exec ${mpc} volume -1";
"Shift+XF86AudioRaiseVolume" = "exec ${mpc} volume +10";
"Shift+XF86AudioLowerVolume" = "exec ${mpc} volume -10";
j = "exec ${mpc} next";
k = "exec ${mpc} prev";
c = "exec ${mpc} toggle";
o = "exec ${mpc} consume on";
"Shift+o" = "exec ${mpc} consume off";
"1" = "exec ${mpc} single on";
"Shift+1" = "exec ${mpc} single off";
r = "exec ${mpc} random on";
"Shift+r" = "exec ${mpc} random off";
p = "exec ${mpc} stop";
s = "exec ${mpc} shuffle";
h = "exec ${mpc} seek -00:00:01";
l = "exec ${mpc} seek +00:00:01";
"Shift+h" = "exec ${mpc} seek -00:00:10";
"Shift+l" = "exec ${mpc} seek +00:00:10";
v = ''mode "mpc volume"'';
Return = "mode default";
Escape = "mode default";
};
# TODO: bind
# wall = {
# s = pkgs.writeShellScript "setwall" ''
# set -euo pipefail
# shopt -s nullglob
# shopt -s globstar
# # select the output first...
# file=$(
# for file in *
# do
# echo "''${file@Q}"
# done | ${pkgs.bemenu}/bin/bemenu --lines 10 --prompt askpass
# )
# if [[ $? != 0 ]]; then
# exit 1
# fi
# '';
# };
};
seat."*".xcursor_theme = "${config.home.pointerCursor.name} ${builtins.toString config.home.pointerCursor.size}";
};
# FIXME: Should be done by defaultWorkspace
extraConfig = ''
workspace number 1
'';
};
}

View file

@ -1,28 +0,0 @@
{
pkgs,
config,
...
}: {
services.swayidle = {
enable = true;
events = [
{
event = "lock";
command = "${config.programs.swaylock.package}/bin/swaylock --daemonize";
}
{
event = "before-sleep";
command = "${pkgs.systemd}/bin/loginctl lock-session";
}
];
timeouts = [
{
timeout = 600;
command = "${pkgs.chayang}/bin/chayang && ${pkgs.systemd}/bin/loginctl lock-session && ${config.wayland.windowManager.sway.package}/bin/swaymsg output \\\\* power off";
resumeCommand = "${config.wayland.windowManager.sway.package}/bin/swaymsg output \\\\* power on";
}
];
};
}

View file

@ -1,18 +0,0 @@
{
programs.swaylock = {
enable = true;
settings = {
ignore-empty-password = true;
show-failed-attempts = true;
indicator-caps-lock = true;
color = "000000";
ring-color = "111111";
line-color = "00000000";
inside-color = "00000088";
separator-color = "00000000";
key-hl-color = "000033";
indicator-radius = 100;
indicator-thickness = 12;
};
};
}

View file

@ -1,3 +0,0 @@
{
programs.zathura.enable = true;
}

View file

@ -14,15 +14,13 @@
./features/fonts.nix
./features/fwupd.nix
./features/geoclue.nix
./features/greetd.nix
./features/opengl.nix
./features/openssh.nix
./features/pipewire.nix
./features/plasma.nix
./features/sops.nix
./features/sudo.nix
./features/swaylock.nix
./features/users.nix
./features/xdpw.nix
];
fileSystems = {
@ -115,10 +113,7 @@
programs.dconf.enable = true;
# TODO
# xdg.portal.xdgOpenUsePortal = true;
xdg.portal.xdgOpenUsePortal = true;
environment.systemPackages = with pkgs; [
bibata-cursors
];
programs.kdeconnect.enable = true;
}

View file

@ -1,10 +0,0 @@
{pkgs, ...}: {
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway";
};
};
};
}

View file

@ -0,0 +1,41 @@
{pkgs, ...}: {
services = {
xserver = {
enable = true;
desktopManager.plasma5.enable = true;
displayManager = {
defaultSession = "plasmawayland";
sddm = {
enable = true;
autoNumlock = true;
settings = {
Theme = {
CursorTheme = "breeze_cursors";
};
};
};
};
excludePackages = with pkgs; [
xterm
];
};
};
programs.dconf.enable = true;
xdg.portal.extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
environment.sessionVariables = {
"SUDO_ASKPASS" = pkgs.writeShellScript "kdialogaskpass" ''
exec ${pkgs.kdialog} --password Askpass
'';
"MOZ_USE_XINPUT2" = "1";
"GDK_SCALE" = "1";
};
environment.systemPackages = with pkgs; [
discover
];
}

View file

@ -1,3 +0,0 @@
{
security.pam.services.swaylock = {};
}

View file

@ -1,9 +0,0 @@
{pkgs, ...}: {
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-wlr
pkgs.xdg-desktop-portal-gtk
];
};
}

View file

@ -1,66 +1,6 @@
{pkgs, ...}: {
{
home = {
username = "lukas";
stateVersion = "23.11";
};
wayland.windowManager.sway = {
config = {
input."type:keyboard".xkb_layout = "de";
output.eDP-1 = {
mode = "1920x1080";
position = "0,0";
background = ''"$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/sway/primary" fill'';
};
workspaceOutputAssign = [
{
output = "e-DP1";
workspace = "number 1";
}
{
output = "e-DP1";
workspace = "number 2";
}
{
output = "e-DP1";
workspace = "number 3";
}
{
output = "e-DP1";
workspace = "number 4";
}
{
output = "e-DP1";
workspace = "number 5";
}
{
output = "e-DP1";
workspace = "number 6";
}
{
output = "e-DP1";
workspace = "number 7";
}
{
output = "e-DP1";
workspace = "number 8";
}
{
output = "e-DP1";
workspace = "number 9";
}
{
output = "e-DP1";
workspace = "number 10";
}
];
gaps = {
inner = 4;
outer = 6;
};
};
};
}

View file

@ -7,92 +7,4 @@
];
stateVersion = "23.11";
};
wayland.windowManager.sway = let
primary = "Acer Technologies XB283K KV 120918F984200";
secondary = "LG Electronics LG HDR 4K 0x00008FEE";
in {
config = {
output.${primary} = {
mode = "3840x2160@144.004Hz";
position = "0,0";
background = ''"$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/sway/primary" fill'';
};
output.${secondary} = {
mode = "3840x2160@59.997Hz";
position = "3840,-1680";
transform = "90";
background = ''"$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/sway/secondary" fill'';
};
workspaceOutputAssign = [
{
output = primary;
workspace = "1";
}
{
output = primary;
workspace = "2";
}
{
output = primary;
workspace = "3";
}
{
output = primary;
workspace = "4";
}
{
output = primary;
workspace = "5";
}
{
output = primary;
workspace = "6";
}
{
output = primary;
workspace = "7";
}
{
output = primary;
workspace = "8";
}
{
output = primary;
workspace = "9";
}
{
output = primary;
workspace = "10";
}
{
output = secondary;
workspace = "11";
}
{
output = secondary;
workspace = "12";
}
{
output = secondary;
workspace = "13";
}
{
output = secondary;
workspace = "14";
}
];
gaps = {
inner = 12;
outer = 14;
};
input."Razer Razer DeathAdder V3" = {
pointer_accel = "0.0";
};
};
};
}

View file

@ -1,66 +1,6 @@
{pkgs, ...}: {
{
home = {
username = "lukas";
stateVersion = "23.11";
};
wayland.windowManager.sway = {
config = {
input."type:keyboard".xkb_layout = "de";
output.eDP-1 = {
mode = "1920x1080";
position = "0,0";
background = ''"$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/sway/primary" fill'';
};
workspaceOutputAssign = [
{
output = "e-DP1";
workspace = "number 1";
}
{
output = "e-DP1";
workspace = "number 2";
}
{
output = "e-DP1";
workspace = "number 3";
}
{
output = "e-DP1";
workspace = "number 4";
}
{
output = "e-DP1";
workspace = "number 5";
}
{
output = "e-DP1";
workspace = "number 6";
}
{
output = "e-DP1";
workspace = "number 7";
}
{
output = "e-DP1";
workspace = "number 8";
}
{
output = "e-DP1";
workspace = "number 9";
}
{
output = "e-DP1";
workspace = "number 10";
}
];
gaps = {
inner = 4;
outer = 6;
};
};
};
}

View file

@ -42,12 +42,4 @@
];
services.mullvad-vpn.enable = true;
services.xserver = {
enable = true;
layout = "us";
libinput.enable = true;
windowManager.i3.enable = true;
displayManager.startx.enable = true;
};
}