diff --git a/flake.lock b/flake.lock index cdab8fa..7b2733e 100644 --- a/flake.lock +++ b/flake.lock @@ -180,11 +180,11 @@ ] }, "locked": { - "lastModified": 1710164657, - "narHash": "sha256-l64+ZjaQAVkHDVaK0VHwtXBdjcBD6nLBD+p7IfyBp/w=", + "lastModified": 1710062421, + "narHash": "sha256-FiCNRfyUgJOLYIokLiFsfI7B+Zn9HDnOzFR3uVr5qsQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "017b12de5b899ef9b64e2c035ce257bfe95b8ae2", + "rev": "36f873dfc8e2b6b89936ff3e2b74803d50447e0a", "type": "github" }, "original": { diff --git a/overlays/default.nix b/overlays/default.nix index cf0a521..b03b091 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -3,10 +3,11 @@ 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 8bdd0de..d446667 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 93452e2..e68e13b 100644 --- a/users/rouven/modules/wayland/default.nix +++ b/users/rouven/modules/wayland/default.nix @@ -60,18 +60,6 @@ }; }; - 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 8c1e41f..632fd56 100644 --- a/users/rouven/modules/wayland/river.nix +++ b/users/rouven/modules/wayland/river.nix @@ -1,86 +1,95 @@ -{ pkgs, lib, ... }: +{ pkgs, ... }: { - 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"; + 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 - 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 spawn "${pkgs.swaybg}/bin/swaybg -i ${../../../../images/wallpaper.png} -m fill" - 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 Return spawn footclient + riverctl map normal Super+Shift Return zoom + riverctl map normal Super+Shift Q close + riverctl map normal Super F toggle-fullscreen - spawn = [ - "rivertile" - ]; + 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 + ''; }; }; } diff --git a/users/rouven/modules/wayland/sway.nix b/users/rouven/modules/wayland/sway.nix index 10ca9a5..34304ff 100644 --- a/users/rouven/modules/wayland/sway.nix +++ b/users/rouven/modules/wayland/sway.nix @@ -6,6 +6,9 @@ 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 579dd31..cc4fe9a 100644 --- a/users/rouven/modules/wayland/waybar.nix +++ b/users/rouven/modules/wayland/waybar.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { systemd.user.services.waybar.Service.Environment = "PATH=${pkgs.swaynotificationcenter}/bin"; programs.waybar = {