From ec8358fe55984ee0f09b7c57251d7b3dd44a6bab Mon Sep 17 00:00:00 2001 From: Tristan Date: Fri, 28 Apr 2023 16:18:39 +0100 Subject: [PATCH] sway, fix screensharing (again) --- custom/brave-nightly/default.nix | 29 ++++++++++--------- system/global/home.nix | 49 ++++++++++++++++++++++++++++++-- system/global/system.nix | 2 +- system/work/home.nix | 26 +++++++++++++---- system/work/system.nix | 21 ++++++++++---- 5 files changed, 98 insertions(+), 29 deletions(-) diff --git a/custom/brave-nightly/default.nix b/custom/brave-nightly/default.nix index 989baff..16f0436 100644 --- a/custom/brave-nightly/default.nix +++ b/custom/brave-nightly/default.nix @@ -86,14 +86,15 @@ let # The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935 disableFeatures = optional enableVideoAcceleration "UseChromeOSDirectVideoDecoder"; + braveChannel = "nightly"; in stdenv.mkDerivation rec { - pname = "brave-nightly"; + pname = "brave-${braveChannel}"; version = "1.52.54"; src = fetchurl { - url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser-nightly_${version}_amd64.deb"; + url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser-${braveChannel}_${version}_amd64.deb"; sha256 = "sha256-k9Vxk9e9514II78pe0FPRNNXwSHKRqLigqefSOmNVjg="; }; @@ -125,28 +126,28 @@ stdenv.mkDerivation rec { cp -R usr/share $out cp -R opt/ $out/opt - export BINARYWRAPPER=$out/opt/brave.com/brave-nightly/brave-browser-nightly + export BINARYWRAPPER=$out/opt/brave.com/brave-${braveChannel}/brave-browser-${braveChannel} # Fix path to bash in $BINARYWRAPPER substituteInPlace $BINARYWRAPPER \ --replace /bin/bash ${stdenv.shell} - ln -sf $BINARYWRAPPER $out/bin/brave-nightly + ln -sf $BINARYWRAPPER $out/bin/brave-${braveChannel} - for exe in $out/opt/brave.com/brave-nightly/{brave,chrome_crashpad_handler}; do + for exe in $out/opt/brave.com/brave-${braveChannel}/{brave,chrome_crashpad_handler}; do patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "${rpath}" $exe done # Fix paths - substituteInPlace $out/share/applications/brave-browser-nightly.desktop \ - --replace /usr/bin/brave-browser-nightly $out/bin/brave-nightly - substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser-nightly.xml \ + substituteInPlace $out/share/applications/brave-browser-${braveChannel}.desktop \ + --replace /usr/bin/brave-browser-${braveChannel} $out/bin/brave-${braveChannel} + substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser-${braveChannel}.xml \ --replace /opt/brave.com $out/opt/brave.com - substituteInPlace $out/share/menu/brave-browser-nightly.menu \ + substituteInPlace $out/share/menu/brave-browser-${braveChannel}.menu \ --replace /opt/brave.com $out/opt/brave.com - substituteInPlace $out/opt/brave.com/brave-nightly/default-app-block \ + substituteInPlace $out/opt/brave.com/brave-${braveChannel}/default-app-block \ --replace /opt/brave.com $out/opt/brave.com # Correct icons location @@ -155,12 +156,12 @@ stdenv.mkDerivation rec { for icon in ''${icon_sizes[*]} do mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps - ln -s $out/opt/brave.com/brave-nightly/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser-nightly.png + ln -s $out/opt/brave.com/brave-${braveChannel}/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser-${braveChannel}.png done # Replace xdg-settings and xdg-mime - ln -sf ${xdg-utils}/bin/xdg-settings $out/opt/brave.com/brave-nightly/xdg-settings - ln -sf ${xdg-utils}/bin/xdg-mime $out/opt/brave.com/brave-nightly/xdg-mime + ln -sf ${xdg-utils}/bin/xdg-settings $out/opt/brave.com/brave-${braveChannel}/xdg-settings + ln -sf ${xdg-utils}/bin/xdg-mime $out/opt/brave.com/brave-${braveChannel}/xdg-mime runHook postInstall ''; @@ -187,7 +188,7 @@ stdenv.mkDerivation rec { installCheckPhase = '' # Bypass upstream wrapper which suppresses errors - $out/opt/brave.com/brave-nightly/brave-browser-nightly --version + $out/opt/brave.com/brave-${braveChannel}/brave-browser-${braveChannel} --version ''; passthru.updateScript = ./update.sh; diff --git a/system/global/home.nix b/system/global/home.nix index 1cf6ea4..5229b46 100644 --- a/system/global/home.nix +++ b/system/global/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, user, name, editor, ... }: +{ config, pkgs, user, name, lib, ... }: # https://nix-community.github.io/home-manager/options.html let my-deps = { @@ -14,6 +14,7 @@ let wc = "${pkgs.coreutils}/bin/wc"; xargs = "${pkgs.findutils}/bin/xargs"; menu = "${pkgs.wofi}/bin/wofi --dmenu"; + fileman = "${pkgs.pcmanfm}/bin/pcmanfm"; }; my-scripts = { play-pause = (pkgs.writeShellScriptBin "play-pause" '' @@ -151,6 +152,7 @@ in input { kb_layout = gb kb_options = caps:escape + kb_numpad = enable touchpad { natural_scroll = yes @@ -272,7 +274,7 @@ in }; battery = { format = "{icon} {capacity}%"; - format-icons = [ "🤏" "đŸĒĢ" "🔋" ]; + format-icons = [ "🤏" "đŸĒĢ" "🔋" "🔋" ]; states = { warning = 30; critical = 15; @@ -282,7 +284,7 @@ in }; programs.waybar.systemd = { enable = true; - target = "hyprland-session.target"; + target = "graphical-session.target"; }; services.udiskie = { @@ -813,5 +815,46 @@ color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a- indicator = true; }; + wayland.windowManager.sway = { + config = { + modifier = "Mod4"; + input = { + "type:keyboard" = { + xkb_layout = "gb"; + xkb_options = "caps:escape"; + xkb_numlock = "enable"; + }; + "type:touchpad" = { + natural_scroll = "enabled"; + tap = "enabled"; + }; + }; + gaps = { + inner = 10; + }; + keybindings = let + modifier = config.wayland.windowManager.sway.config.modifier; + in lib.mkOptionDefault { + "${modifier}+Shift+x" = "kill"; + "${modifier}+d" = "exec ${pkgs.wofi}/bin/wofi --show drun"; + "${modifier}+o" = "exec ${my-deps.fileman}"; + XF86AudioRaiseVolume = "exec ${ my-deps.amixer } sset Master 5%+ && ${ my-deps.amixer } sset Master unmute"; + XF86AudioLowerVolume = "exec ${ my-deps.amixer } sset Master 5%-"; + XF86AudioPlay = "exec ${ my-scripts.play-pause }/bin/play-pause"; + XF86AudioNext = "exec ${ my-deps.playerctl } next"; + XF86AudioPrev = "exec ${ my-deps.playerctl } previous"; + XF86MonBrightnessUp = "exec ${ my-scripts.brightness-up }/bin/brightness-up"; + XF86MonBrightnessDown = "exec ${ my-scripts.brightness-down }/bin/brightness-down"; + "${modifier}+P" = "exec ${ my-scripts.bwmenu }/bin/bwmenu"; + "${modifier}+SHIFT+P" = "exec ${ my-scripts.bwotpmenu }/bin/bwotpmenu"; + "${modifier}+SHIFT+S" = "exec ${ my-scripts.screenshot }/bin/screenshot"; + "${modifier}+M" = "exec ${ my-deps.terminal } -e ncmpcpp"; + "${modifier}+C" = "exec ${ my-scripts.open-code }/bin/open-code"; + "${modifier}+Z" = "exec ${pkgs.swaylock-effects}/bin/swaylock -f"; + }; + bars = []; + }; + }; + } diff --git a/system/global/system.nix b/system/global/system.nix index 7d01900..f027edc 100644 --- a/system/global/system.nix +++ b/system/global/system.nix @@ -122,7 +122,7 @@ services.dbus.enable = true; programs.light.enable = true; programs.dconf.enable = true; - programs.hyprland.enable = true; + programs.sway.enable = true; programs.tmux.enable = true; programs.tmux.extraConfig = '' diff --git a/system/work/home.nix b/system/work/home.nix index b70b37d..c44442f 100644 --- a/system/work/home.nix +++ b/system/work/home.nix @@ -1,8 +1,5 @@ { config, pkgs, user, name, lib, ... }: # https://nix-community.github.io/home-manager/options.html -let - brave-nightly = pkgs.callPackage ../../custom/brave-nightly/. { }; -in { # don't change home.stateVersion = "22.05"; @@ -20,12 +17,12 @@ in ansible thunderbird (pkgs.writeShellScriptBin "my-editor" '' - code $@ + ${pkgs.vscode}/bin/code --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations $@ '') (pkgs.makeDesktopItem { name = "teams"; desktopName = "Microsoft Teams"; - exec = "${brave-nightly}/opt/brave.com/brave-nightly/brave-browser-nightly --app-id=cifhbcnohmdccbgoicgdjpfamggdegmo --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations,WebRTCPipeWireCapturer"; + exec = "${brave}/opt/brave.com/brave/brave-browser --app-id=cifhbcnohmdccbgoicgdjpfamggdegmo --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations,WebRTCPipeWireCapturer"; icon = "brave-cifhbcnohmdccbgoicgdjpfamggdegmo-Default"; }) (pkgs.makeDesktopItem { @@ -51,7 +48,7 @@ in ## work laptop configuration exec-once = ${pkgs.swaybg}/bin/swaybg -o eDP-1 -i ~/Pictures/backgrounds/nix-wallpaper-simple-red.png & - monitor = ,preferred,auto, 1.2 + monitor = eDP-1, preferred, 0x0, 1.2 workspace = eDP-1, 5 input { @@ -83,4 +80,21 @@ in }; }; + # xdph + chromium = ): + wayland.windowManager.hyprland.enable = lib.mkForce false; + wayland.windowManager.sway.enable = true; + wayland.windowManager.sway.config = { + input = { + "type:keyboard" = { + xkb_variant = "dvorak"; + }; + }; + output = { + eDP-1 = { + scale = "1.2"; + bg = "~/Pictures/backgrounds/nix-wallpaper-watersplash.png fill"; + }; + }; + }; + } diff --git a/system/work/system.nix b/system/work/system.nix index 48310bf..55f3159 100644 --- a/system/work/system.nix +++ b/system/work/system.nix @@ -21,6 +21,7 @@ "vscode" ]; + services.tailscale.enable = true; networking = { networkmanager = { @@ -69,15 +70,25 @@ ]; # dangerous - users.users.tristan.extraGroups = [ "docker" ]; + # users.users.tristan.extraGroups = [ "docker" ]; virtualisation.docker = { enable = true; storageDriver = "btrfs"; - # rootless = { - # enable = true; - # setSocketVariable = true; - # }; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; + + services.greetd = { + settings = rec { + sway_session = { + command = "sway"; + user = "tristan"; + }; + default_session = lib.mkForce sway_session; + }; }; }