diff --git a/flake.lock b/flake.lock index 7b2733e..cdab8fa 100644 --- a/flake.lock +++ b/flake.lock @@ -180,11 +180,11 @@ ] }, "locked": { - "lastModified": 1710062421, - "narHash": "sha256-FiCNRfyUgJOLYIokLiFsfI7B+Zn9HDnOzFR3uVr5qsQ=", + "lastModified": 1710164657, + "narHash": "sha256-l64+ZjaQAVkHDVaK0VHwtXBdjcBD6nLBD+p7IfyBp/w=", "owner": "nix-community", "repo": "home-manager", - "rev": "36f873dfc8e2b6b89936ff3e2b74803d50447e0a", + "rev": "017b12de5b899ef9b64e2c035ce257bfe95b8ae2", "type": "github" }, "original": { diff --git a/overlays/default.nix b/overlays/default.nix index b03b091..cf0a521 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -3,11 +3,10 @@ let inherit (prev) callPackage; inherit (prev) fetchFromGitHub; inherit (prev) fetchPypi; - inherit (prev) fetchpatch; inherit (prev) makeWrapper; inherit (prev) python3Packages; in -rec { +{ pww = callPackage ../pkgs/pww { }; ianny = callPackage ../pkgs/ianny { }; diff --git a/users/rouven/modules/git/default.nix b/users/rouven/modules/git/default.nix index d446667..8bdd0de 100644 --- a/users/rouven/modules/git/default.nix +++ b/users/rouven/modules/git/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { programs.git = { enable = true; diff --git a/users/rouven/modules/wayland/default.nix b/users/rouven/modules/wayland/default.nix index e68e13b..93452e2 100644 --- a/users/rouven/modules/wayland/default.nix +++ b/users/rouven/modules/wayland/default.nix @@ -60,6 +60,18 @@ }; }; + systemd.user.services.swaybg = { + Unit = { + Description = "Wallpaper tool for Wayland compositors"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + Service = { + ExecStart = "${pkgs.swaybg}/bin/swaybg -i ${../../../../images/wallpaper.png} -m fill"; + }; + Install = { WantedBy = [ "graphical-session.target" ]; }; + }; + services.wlsunset = { enable = true; longitude = "13"; diff --git a/users/rouven/modules/wayland/river.nix b/users/rouven/modules/wayland/river.nix index 632fd56..8c1e41f 100644 --- a/users/rouven/modules/wayland/river.nix +++ b/users/rouven/modules/wayland/river.nix @@ -1,95 +1,86 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { - home.packages = with pkgs; [ - river - ]; - systemd.user.targets.river-session = { - Unit = { - After = "graphical-session-pre.target"; - BindsTo = "graphical-session.target"; - Description = "river compositor session"; - Wants = "graphical-session-pre.target"; - }; - }; - xdg.configFile = { - "river/init" = { - source = - pkgs.writeShellScript "river-init.sh" '' - riverctl focus-follows-cursor always - riverctl set-cursor-warp on-focus-change - riverctl attach-mode bottom - riverctl spawn rivertile - riverctl default-layout rivertile - riverctl output-layout rivertile - riverctl keyboard-layout -variant dvorak-alt-intl us - riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad tap enabled - riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad drag enabled - riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad middle-emulation enabled - riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad accel-profile adaptive + wayland.windowManager.river = { + enable = true; + systemd.extraCommands = [ "systemctl --user start river-session.target" ]; + settings = { + focus-follows-cursor = "always"; + set-cursor-warp = "on-focus-change"; + attach-mode = "bottom"; + default-layout = "rivertile"; + output-layout = "rivertile"; - - riverctl spawn "${pkgs.swaybg}/bin/swaybg -i ${../../../../images/wallpaper.png} -m fill" + keyboard-layout = "-variant dvorak-alt-intl us"; + input."pointer-2-7-SynPS/2_Synaptics_TouchPad" = { + tap = "enabled"; + drag = "enabled"; + middle-emulation = "enabled"; + accel-profile = "adaptive"; + }; - riverctl map normal Super Return spawn footclient - riverctl map normal Super+Shift Return zoom - riverctl map normal Super+Shift Q close - riverctl map normal Super F toggle-fullscreen + map.normal = lib.attrsets.zipAttrs [ + { + "Super" = { + Return = "spawn footclient"; + Space = "toggle-float"; + A = "spawn\"${pkgs.wofi-emoji}/bin/wofi-emoji\""; + F = "toggle-fullscreen"; + H = "focus-output previous"; + J = "focus-view previous"; + K = "focus-view next"; + L = "focus-output next"; + O = "send-to-output next"; + S = "send-to-output next"; + }; + "Super+Shift" = { + Return = "zoom"; + Q = "close"; + H = ''send-layout-cmd rivertile "main-ratio -0.05"''; + J = ''send-layout-cmd rivertile "main-count -1"''; + K = ''send-layout-cmd rivertile "main-count +1"''; + L = ''send-layout-cmd rivertile "main-ratio +0.05"''; + }; + "Alt" = builtins.mapAttrs (_key: bind: "spawn " + bind) { + Space = "${pkgs.fuzzel}/bin/fuzzel"; + }; + "None" = builtins.mapAttrs (_key: bind: "spawn \"" + bind + "\"") { + Print = "${pkgs.sway-contrib.grimshot}/bin/grimshot copy area"; + XF86Launch2 = "${pkgs.sway-contrib.grimshot}/bin/grimshot save area - | ${pkgs.swappy}/bin/swappy -f -"; + XF86MonBrightnessUp = "${pkgs.light}/bin/light -A 10"; + XF86MonBrightnessDown = "${pkgs.light}/bin/light -U 10"; + XF86AudioMute = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; + XF86AudioMicMute = "${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"; + XF86AudioRaiseVolume = "${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%"; + XF86AudioLowerVolume = "${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%"; + XF86Favorites = "${pkgs.systemd}/bin/loginctl lock-session"; + XF86Messenger = "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-panel"; + Cancel = "${pkgs.swaynotificationcenter}/bin/swaync-client --hide-latest"; + }; + "Shift" = builtins.mapAttrs (_key: bind: "spawn \"" + bind + "\"") { + XF86AudioRaiseVolume = "${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%"; + XF86AudioLowerVolume = "${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%"; + Cancel = "${pkgs.swaynotificationcenter}/bin/swaync-client --cloes-all"; + }; + } + # fuckery. Encodes https://github.com/riverwm/river/blob/c474be1537c833da35682ef54194c3d6ddf1eee0/example/init#L77 in nix + (lib.attrsets.mapAttrs + (_mod: value: lib.attrsets.genAttrs (lib.lists.forEach (lib.lists.range 1 9) (num: toString num)) + (tag: value + builtins.replaceStrings [ "TAG" ] [ tag ] " $((1 << (TAG - 1)))")) + { + "Super" = "set-focused-tags"; + "Super+Shift" = "set-view-tags"; + "Super+Control" = "toggle-focused-tags"; + "Super+Shift+Control" = "toggle-view-tags"; + }) + ]; + map-pointer.normal = { + "Super BTN_LEFT" = "move-view"; + "Super BTN_RIGHT" = "resize-view"; + }; - riverctl map normal Super S send-to-output next - - riverctl map normal Super+Shift K send-layout-cmd rivertile "main-count +1" - riverctl map normal Super+Shift J send-layout-cmd rivertile "main-count -1" - riverctl map normal Super+Shift L send-layout-cmd rivertile "main-ratio +0.05" - riverctl map normal Super+Shift H send-layout-cmd rivertile "main-ratio -0.05" - - riverctl map normal Super K focus-view next - riverctl map normal Super J focus-view previous - riverctl map normal Super L focus-output next - riverctl map normal Super H focus-output previous - riverctl map normal Super O send-to-output next - riverctl map-pointer normal Super BTN_LEFT move-view - - riverctl map-pointer normal Super BTN_RIGHT resize-view - - riverctl map normal Alt Space spawn "${pkgs.fuzzel}/bin/fuzzel" - riverctl map normal Alt A spawn "${pkgs.wofi-emoji}/bin/wofi-emoji"; - riverctl map normal Super Space toggle-float - - for i in $(seq 1 9) - do - tags=$((1 << ($i - 1))) - - # Super+[1-9] to focus tag [0-8] - riverctl map normal Super $i set-focused-tags $tags - - # Super+Shift+[1-9] to tag focused view with tag [0-8] - riverctl map normal Super+Shift $i set-view-tags $tags - - # Super+Control+[1-9] to toggle focus of tag [0-8] - riverctl map normal Super+Control $i toggle-focused-tags $tags - - # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view - riverctl map normal Super+Shift+Control $i toggle-view-tags $tags - done - - riverctl map normal None Print spawn "${pkgs.sway-contrib.grimshot}/bin/grimshot copy area" - riverctl map normal None XF86Launch2 spawn "${pkgs.sway-contrib.grimshot}/bin/grimshot save area - | ${pkgs.swappy}/bin/swappy -f -" - riverctl map normal None XF86MonBrightnessUp spawn "${pkgs.light}/bin/light -A 10" - riverctl map normal None XF86MonBrightnessDown spawn "${pkgs.light}/bin/light -U 10" - riverctl map normal None XF86AudioMute spawn "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" - riverctl map normal None XF86AudioMicMute spawn "${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" - riverctl map normal None XF86AudioRaiseVolume spawn "${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" - riverctl map normal None XF86AudioLowerVolume spawn "${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" - riverctl map normal Shift XF86AudioRaiseVolume spawn "${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%" - riverctl map normal Shift XF86AudioLowerVolume spawn "${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%" - riverctl map normal None XF86Favorites spawn "${pkgs.systemd}/bin/loginctl lock-session" - riverctl map normal None XF86Messenger spawn "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-panel" - riverctl map normal None Cancel spawn "${pkgs.swaynotificationcenter}/bin/swaync-client --hide-latest" - riverctl map normal Shift Cancel spawn "${pkgs.swaynotificationcenter}/bin/swaync-client --cloes-all" - - ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL - systemctl --user start river-session.target - ''; + spawn = [ + "rivertile" + ]; }; }; } diff --git a/users/rouven/modules/wayland/sway.nix b/users/rouven/modules/wayland/sway.nix index 34304ff..10ca9a5 100644 --- a/users/rouven/modules/wayland/sway.nix +++ b/users/rouven/modules/wayland/sway.nix @@ -6,9 +6,6 @@ enable = true; config = rec { startup = [ - { - command = "${lib.getExe pkgs.swaybg} -i ${../../../../images/wallpaper.png} -m fill"; - } { command = "${pkgs.autotiling-rs}/bin/autotiling-rs"; } diff --git a/users/rouven/modules/wayland/waybar.nix b/users/rouven/modules/wayland/waybar.nix index cc4fe9a..579dd31 100644 --- a/users/rouven/modules/wayland/waybar.nix +++ b/users/rouven/modules/wayland/waybar.nix @@ -1,4 +1,4 @@ -{ config, pkgs, lib, ... }: +{ config, pkgs, ... }: { systemd.user.services.waybar.Service.Environment = "PATH=${pkgs.swaynotificationcenter}/bin"; programs.waybar = {