diff --git a/SwarselSystems.org b/SwarselSystems.org index a683057..3a53aa0 100644 --- a/SwarselSystems.org +++ b/SwarselSystems.org @@ -4941,6 +4941,7 @@ Also, the system state version is set here. No need to touch it. ./xdg-portal.nix # ./yubikey-touch-detector.nix ./safeeyes.nix + ./lid.nix ]; nix = @@ -5013,7 +5014,7 @@ This ensures that all user-configuration happens here in the config file. isNormalUser = true; description = "Leon S"; hashedPasswordFile = lib.mkIf (!config.swarselsystems.initialSetup) config.sops.secrets.swarseluser.path; - extraGroups = [ "networkmanager" "root" "docker""wheel" "lp" "audio" "video" "vboxusers" "scanner" ]; + extraGroups = [ "networkmanager" "docker" "wheel" "lp" "audio" "video" "vboxusers" "scanner" ]; packages = with pkgs; [ ]; }; }; @@ -5148,7 +5149,6 @@ Enable OpenGL, Sound, Bluetooth and various drivers. keyboard.qmk.enable = true; - pulseaudio = { enable = lib.mkIf (!config.services.pipewire.enable) true; package = pkgs.pulseaudioFull; @@ -5187,6 +5187,7 @@ Pipewire handles communication on Wayland. This enables several sound tools as w pulse.enable = true; jack.enable = true; audio.enable = true; + wireplumber.enable = true; alsa = { enable = true; support32Bit = true; @@ -5748,6 +5749,7 @@ Enables the blueman service including the nice system tray icon. _: { services.blueman.enable = true; + services.hardware.bolt.enable = true; } #+end_src @@ -6292,6 +6294,39 @@ A friend of mine used this service and I used to make fun of him. But I have to } #+end_src +**** Handle lid switch correctly + +This turns off the display when the lid is closed. + +#+begin_src nix :tangle profiles/common/nixos/lid.nix + { config, pkgs, ... }: + { + services.logind = { + lidSwitch = "suspend"; + lidSwitchDocked = "ignore"; + }; + services.acpid = { + enable = true; + lidEventCommands = + '' + export PATH=$PATH:/run/current-system/sw/bin + export WAYLAND_DISPLAY=wayland-1 + export XDG_RUNTIME_DIR=/run/user/1000 + export SWAYSOCK=$(ls /run/user/1000/sway-ipc.* | head -n 1) + + LID_STATE=$(cat /proc/acpi/button/lid/*/state | grep -q closed && echo "closed" || echo "open") + DOCKED=$(swaymsg -t get_outputs | grep -q 'HDMI\|DP' && echo "docked" || echo "undocked") + + if [ "$LID_STATE" == "closed" ] && [ "$DOCKED" == "docked" ]; then + swaymsg output eDP-2 disable + else + swaymsg output eDP-2 enable + fi + ''; + }; + } +#+end_src + *** Optional :PROPERTIES: @@ -6420,6 +6455,7 @@ Integrates 1password mostly. There are more options at [[#h:f0b2ea93-94c8-48d8-8 { pkgs, ... }: { # boot.initrd.luks.yubikeySupport = true; + programs.browserpass.enable = true; programs._1password.enable = true; programs._1password-gui = { enable = true; @@ -6555,7 +6591,6 @@ This holds packages that I can use as provided, or with small modifications (as picard-tools audacity sox - google-chrome # printing cups @@ -7663,270 +7698,270 @@ The rest of the related configuration is found here: - [[#h:f93f66f9-6b8b-478e-b139-b2f382c1f25e][waybarupdate]] #+begin_src nix :tangle profiles/common/home/waybar.nix - { config, lib, pkgs, ... }: - { - programs.waybar = { +{ config, lib, pkgs, ... }: +{ + programs.waybar = { - enable = true; - systemd = { - enable = true; - target = "sway-sessions.target"; + enable = true; + systemd = { + enable = true; + target = "sway-sessions.target"; + }; + settings = { + mainBar = { + layer = "top"; + position = "top"; + modules-left = [ "sway/workspaces" "custom/outer-right-arrow-dark" "sway/window" ]; + modules-center = [ "sway/mode" "privacy" "custom/github" "custom/configwarn" "custom/nix-updates" ]; + "sway/mode" = { + format = "{}"; }; - settings = { - mainBar = { - layer = "top"; - position = "top"; - modules-left = [ "sway/workspaces" "custom/outer-right-arrow-dark" "sway/window" ]; - modules-center = [ "sway/mode" "privacy" "custom/github" "custom/configwarn" "custom/nix-updates" ]; - "sway/mode" = { - format = "{}"; - }; - modules-right = config.swarselsystems.waybarModules; + modules-right = config.swarselsystems.waybarModules; - "custom/pseudobat" = lib.mkIf (!config.swarselsystems.isLaptop) { - format = ""; - on-click-right = "wlogout -p layer-shell"; - }; + "custom/pseudobat" = lib.mkIf (!config.swarselsystems.isLaptop) { + format = ""; + on-click-right = "wlogout -p layer-shell"; + }; - "custom/configwarn" = { - exec = "waybarupdate"; - interval = 60; - }; + "custom/configwarn" = { + exec = "waybarupdate"; + interval = 60; + }; - "custom/scratchpad-indicator" = { - interval = 3; - exec = "swaymsg -t get_tree | jq 'recurse(.nodes[]) | first(select(.name==\"__i3_scratch\")) | .floating_nodes | length | select(. >= 1)'"; - format = "{} "; - on-click = "swaymsg 'scratchpad show'"; - on-click-right = "swaymsg 'move scratchpad'"; - }; + "custom/scratchpad-indicator" = { + interval = 3; + exec = "swaymsg -t get_tree | jq 'recurse(.nodes[]) | first(select(.name==\"__i3_scratch\")) | .floating_nodes | length | select(. >= 1)'"; + format = "{} "; + on-click = "swaymsg 'scratchpad show'"; + on-click-right = "swaymsg 'move scratchpad'"; + }; - "custom/github" = { - format = "{}  "; - return-type = "json"; - interval = 60; - exec = "github-notifications"; - on-click = "xdg-open https://github.com/notifications"; - }; + "custom/github" = { + format = "{}  "; + return-type = "json"; + interval = 60; + exec = "github-notifications"; + on-click = "xdg-open https://github.com/notifications"; + }; - "custom/nix-updates" = { - exec = "update-checker"; - on-click = "update-checker && notify-send 'The system has been updated'"; - interval = "once"; - tooltip = true; - return-type = "json"; - format = "{} {icon}"; - format-icon = { - "has-updates" = ""; - "updated" = " "; - }; - }; + # "custom/nix-updates" = { + # exec = "update-checker"; + # on-click = "update-checker && notify-send 'The system has been updated'"; + # interval = "once"; + # tooltip = true; + # return-type = "json"; + # format = "{} {icon}"; + # format-icon = { + # "has-updates" = ""; + # "updated" = " "; + # }; + # }; - idle_inhibitor = { - format = "{icon}"; - format-icons = { - activated = ""; - deactivated = ""; - }; - }; - - "group/hardware" = { - orientation = "inherit"; - drawer = { - "transition-left-to-right" = false; - }; - modules = [ - "tray" - "temperature" - "power-profiles-daemon" - "custom/left-arrow-light" - "custom/left-arrow-dark" - "custom/scratchpad-indicator" - "custom/left-arrow-light" - "disk" - "custom/left-arrow-dark" - "memory" - "custom/left-arrow-light" - "cpu" - "custom/left-arrow-dark" - "backlight/slider" - "idle_inhibitor" - ]; - }; - - "backlight/slider" = { - min = 0; - max = 100; - orientation = "horizontal"; - device = "intel_backlight"; - }; - - power-profiles-daemon = { - format = "{icon}"; - tooltip-format = "Power profile: {profile}\nDriver: {driver}"; - tooltip = true; - format-icons = { - "default" = ""; - "performance" = ""; - "balanced" = ""; - "power-saver" = ""; - }; - }; - - temperature = { - hwmon-path = lib.mkIf (!config.swarselsystems.temperatureHwmon.isAbsolutePath) config.swarselsystems.temperatureHwmon.path; - hwmon-path-abs = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.path; - input-filename = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.input-filename; - critical-threshold = 80; - format-critical = " {temperatureC}°C"; - format = " {temperatureC}°C"; - - }; - - mpris = { - format = "{player_icon} {title} [{position}/{length}]"; - format-paused = "{player_icon} {title} [{position}/{length}]"; - player-icons = { - "default" = "▶ "; - "mpv" = "🎵 "; - "spotify" = " "; - }; - status-icons = { - "paused" = " "; - }; - interval = 1; - title-len = 20; - artist-len = 20; - album-len = 10; - }; - "custom/left-arrow-dark" = { - format = ""; - tooltip = false; - }; - "custom/outer-left-arrow-dark" = { - format = ""; - tooltip = false; - }; - "custom/left-arrow-light" = { - format = ""; - tooltip = false; - }; - "custom/right-arrow-dark" = { - format = ""; - tooltip = false; - }; - "custom/outer-right-arrow-dark" = { - format = ""; - tooltip = false; - }; - "custom/right-arrow-light" = { - format = ""; - tooltip = false; - }; - "sway/workspaces" = { - disable-scroll = true; - format = "{name}"; - }; - - "clock#1" = { - min-length = 8; - interval = 1; - format = "{:%H:%M:%S}"; - # on-click-right= "gnome-clocks"; - tooltip-format = "{:%Y %B}\n{calendar}"; - }; - - "clock#2" = { - format = "{:%d. %B %Y}"; - # on-click-right= "gnome-clocks"; - tooltip-format = "{:%Y %B}\n{calendar}"; - }; - - pulseaudio = { - format = "{icon} {volume:2}%"; - format-bluetooth = "{icon} {volume}%"; - format-muted = "MUTE"; - format-icons = { - headphones = ""; - default = [ - "" - "" - ]; - }; - scroll-step = 1; - on-click = "pamixer -t"; - on-click-right = "pavucontrol"; - }; - - memory = { - interval = 5; - format = " {}%"; - tooltip-format = "Memory: {used:0.1f}G/{total:0.1f}G\nSwap: {swapUsed}G/{swapTotal}G"; - }; - cpu = { - format = config.swarselsystems.cpuString; - min-length = 6; - interval = 5; - format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ]; - # on-click-right= "com.github.stsdc.monitor"; - on-click-right = "kitty -o confirm_os_window_close=0 btm"; - - }; - "custom/vpn" = { - format = "()"; - exec = "echo '{\"class\": \"connected\"}'"; - exec-if = "test -d /proc/sys/net/ipv4/conf/tun0"; - return-type = "json"; - interval = 5; - }; - battery = { - states = { - "warning" = 60; - "error" = 30; - "critical" = 15; - }; - interval = 5; - format = "{icon} {capacity}%"; - format-charging = "{capacity}% "; - format-plugged = "{capacity}% "; - format-icons = [ - "" - "" - "" - "" - "" - ]; - on-click-right = "wlogout -p layer-shell"; - }; - disk = { - interval = 30; - format = "Disk {percentage_used:2}%"; - path = "/"; - states = { - "warning" = 80; - "critical" = 90; - }; - tooltip-format = "{used} used out of {total} on {path} ({percentage_used}%)\n{free} free on {path} ({percentage_free}%)"; - }; - tray = { - icon-size = 20; - }; - network = { - interval = 5; - format-wifi = "{signalStrength}% "; - format-ethernet = ""; - format-linked = "{ifname} (No IP) "; - format-disconnected = "Disconnected ⚠"; - format-alt = "{ifname}: {ipaddr}/{cidr}"; - tooltip-format-ethernet = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr}\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}"; - tooltip-format-wifi = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr} \n{signaldBm}dBm @ {frequency}MHz\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}"; - }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; }; }; - style = builtins.readFile ../../../programs/waybar/style.css; + + "group/hardware" = { + orientation = "inherit"; + drawer = { + "transition-left-to-right" = false; + }; + modules = [ + "tray" + "temperature" + "power-profiles-daemon" + "custom/left-arrow-light" + "custom/left-arrow-dark" + "custom/scratchpad-indicator" + "custom/left-arrow-light" + "disk" + "custom/left-arrow-dark" + "memory" + "custom/left-arrow-light" + "cpu" + "custom/left-arrow-dark" + "backlight/slider" + "idle_inhibitor" + ]; + }; + + "backlight/slider" = { + min = 0; + max = 100; + orientation = "horizontal"; + device = "intel_backlight"; + }; + + power-profiles-daemon = { + format = "{icon}"; + tooltip-format = "Power profile: {profile}\nDriver: {driver}"; + tooltip = true; + format-icons = { + "default" = ""; + "performance" = ""; + "balanced" = ""; + "power-saver" = ""; + }; + }; + + temperature = { + hwmon-path = lib.mkIf (!config.swarselsystems.temperatureHwmon.isAbsolutePath) config.swarselsystems.temperatureHwmon.path; + hwmon-path-abs = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.path; + input-filename = lib.mkIf config.swarselsystems.temperatureHwmon.isAbsolutePath config.swarselsystems.temperatureHwmon.input-filename; + critical-threshold = 80; + format-critical = " {temperatureC}°C"; + format = " {temperatureC}°C"; + + }; + + mpris = { + format = "{player_icon} {title} [{position}/{length}]"; + format-paused = "{player_icon} {title} [{position}/{length}]"; + player-icons = { + "default" = "▶ "; + "mpv" = "🎵 "; + "spotify" = " "; + }; + status-icons = { + "paused" = " "; + }; + interval = 1; + title-len = 20; + artist-len = 20; + album-len = 10; + }; + "custom/left-arrow-dark" = { + format = ""; + tooltip = false; + }; + "custom/outer-left-arrow-dark" = { + format = ""; + tooltip = false; + }; + "custom/left-arrow-light" = { + format = ""; + tooltip = false; + }; + "custom/right-arrow-dark" = { + format = ""; + tooltip = false; + }; + "custom/outer-right-arrow-dark" = { + format = ""; + tooltip = false; + }; + "custom/right-arrow-light" = { + format = ""; + tooltip = false; + }; + "sway/workspaces" = { + disable-scroll = true; + format = "{name}"; + }; + + "clock#1" = { + min-length = 8; + interval = 1; + format = "{:%H:%M:%S}"; + # on-click-right= "gnome-clocks"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + + "clock#2" = { + format = "{:%d. %B %Y}"; + # on-click-right= "gnome-clocks"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + + pulseaudio = { + format = "{icon} {volume:2}%"; + format-bluetooth = "{icon} {volume}%"; + format-muted = "MUTE"; + format-icons = { + headphones = ""; + default = [ + "" + "" + ]; + }; + scroll-step = 1; + on-click = "pamixer -t"; + on-click-right = "pavucontrol"; + }; + + memory = { + interval = 5; + format = " {}%"; + tooltip-format = "Memory: {used:0.1f}G/{total:0.1f}G\nSwap: {swapUsed}G/{swapTotal}G"; + }; + cpu = { + format = config.swarselsystems.cpuString; + min-length = 6; + interval = 5; + format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ]; + # on-click-right= "com.github.stsdc.monitor"; + on-click-right = "kitty -o confirm_os_window_close=0 btm"; + + }; + "custom/vpn" = { + format = "()"; + exec = "echo '{\"class\": \"connected\"}'"; + exec-if = "test -d /proc/sys/net/ipv4/conf/tun0"; + return-type = "json"; + interval = 5; + }; + battery = { + states = { + "warning" = 60; + "error" = 30; + "critical" = 15; + }; + interval = 5; + format = "{icon} {capacity}%"; + format-charging = "{capacity}% "; + format-plugged = "{capacity}% "; + format-icons = [ + "" + "" + "" + "" + "" + ]; + on-click-right = "wlogout -p layer-shell"; + }; + disk = { + interval = 30; + format = "Disk {percentage_used:2}%"; + path = "/"; + states = { + "warning" = 80; + "critical" = 90; + }; + tooltip-format = "{used} used out of {total} on {path} ({percentage_used}%)\n{free} free on {path} ({percentage_free}%)"; + }; + tray = { + icon-size = 20; + }; + network = { + interval = 5; + format-wifi = "{signalStrength}% "; + format-ethernet = ""; + format-linked = "{ifname} (No IP) "; + format-disconnected = "Disconnected ⚠"; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + tooltip-format-ethernet = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr}\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}"; + tooltip-format-wifi = "{ifname} via {gwaddr}: {essid} {ipaddr}/{cidr} \n{signaldBm}dBm @ {frequency}MHz\n\n⇡{bandwidthUpBytes} ⇣{bandwidthDownBytes}"; + }; }; - } + }; + style = builtins.readFile ../../../programs/waybar/style.css; + }; +} #+end_src **** Firefox @@ -8249,6 +8284,10 @@ Currently, I am too lazy to explain every option here, but most of it is very se "${modifier}+Ctrl+Shift+m" = "move container to workspace 11:M"; "${modifier}+Ctrl+s" = "workspace 12:S"; "${modifier}+Ctrl+Shift+s" = "move container to workspace 12:S"; + "${modifier}+Ctrl+e" = "workspace 13:E"; + "${modifier}+Ctrl+Shift+e" = "move container to workspace 13:E"; + "${modifier}+Ctrl+t" = "workspace 14:T"; + "${modifier}+Ctrl+Shift+t" = "move container to workspace 14:T"; "${modifier}+Left" = "focus left"; "${modifier}+Right" = "focus right"; "${modifier}+Down" = "focus down"; @@ -8355,6 +8394,12 @@ Currently, I am too lazy to explain every option here, but most of it is very se app_id = "firefox"; }; } + { + command = "opacity 0.99"; + criteria = { + app_id = "chromium-browser"; + }; + } { command = "sticky enable, shadows enable"; criteria = { @@ -8561,51 +8606,72 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]] { home.packages = with pkgs; [ stable.teams-for-linux - google-chrome shellcheck dig docker ]; - programs.ssh = { - matchBlocks = { - "uc" = { - hostname = "uc.clip.vbc.ac.at"; - user = "stack"; - }; - "uc-stg" = { - hostname = "uc.staging.clip.vbc.ac.at"; - user = "stack"; - }; - "cbe" = { - hostname = "cbe.vbc.ac.at"; - user = "dc_adm_schwarzaeugl"; - }; - "cbe-stg" = { - hostname = "cbe.staging.vbc.ac.at"; - user = "dc_adm_schwarzaeugl"; - }; - "*.vbc.ac.at" = { - user = "dc_adm_schwarzaeugl"; + programs = { + git.userEmail = "leon.schwarzaeugl@imba.oeaw.ac.at"; + + ssh = { + matchBlocks = { + "uc" = { + hostname = "uc.clip.vbc.ac.at"; + user = "stack"; + }; + "uc-stg" = { + hostname = "uc.staging.clip.vbc.ac.at"; + user = "stack"; + }; + "cbe" = { + hostname = "cbe.vbc.ac.at"; + user = "dc_adm_schwarzaeugl"; + }; + "cbe-stg" = { + hostname = "cbe.staging.vbc.ac.at"; + user = "dc_adm_schwarzaeugl"; + }; + "*.vbc.ac.at" = { + user = "dc_adm_schwarzaeugl"; + }; }; }; - }; - programs.firefox = { - profiles = { - dc_adm = { - id = 1; - <> - }; - cl_adm = { - id = 2; - <> - }; - ws_adm = { - id = 3; - <> + firefox = { + profiles = { + dc_adm = { + id = 1; + <> + }; + cl_adm = { + id = 2; + <> + }; + ws_adm = { + id = 3; + <> + }; }; }; + + chromium = { + enable = true; + package = pkgs.chromium; + + extensions = [ + # 1password + "gejiddohjgogedgjnonbofjigllpkmbf" + # dark reader + "eimadpbcbfnmbkopoojfekhnkhdbieeh" + # ublock origin + "cjpalhdlnbpafiamejdnhcphjbkeiagm" + # i still dont care about cookies + "edibdbjcniadpccecjdfdjjppcpchdlm" + # browserpass + "naepdomgkenhinolocfifgehidddafch" + ]; + }; }; xdg.desktopEntries = @@ -8637,7 +8703,6 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]] }; }; - programs.git.userEmail = "leon.schwarzaeugl@imba.oeaw.ac.at"; } diff --git a/profiles/common/home/packages.nix b/profiles/common/home/packages.nix index a78023e..97de800 100644 --- a/profiles/common/home/packages.nix +++ b/profiles/common/home/packages.nix @@ -12,7 +12,6 @@ picard-tools audacity sox - google-chrome # printing cups diff --git a/profiles/common/home/sway.nix b/profiles/common/home/sway.nix index daa0e25..78936dc 100644 --- a/profiles/common/home/sway.nix +++ b/profiles/common/home/sway.nix @@ -80,6 +80,10 @@ in "${modifier}+Ctrl+Shift+m" = "move container to workspace 11:M"; "${modifier}+Ctrl+s" = "workspace 12:S"; "${modifier}+Ctrl+Shift+s" = "move container to workspace 12:S"; + "${modifier}+Ctrl+e" = "workspace 13:E"; + "${modifier}+Ctrl+Shift+e" = "move container to workspace 13:E"; + "${modifier}+Ctrl+t" = "workspace 14:T"; + "${modifier}+Ctrl+Shift+t" = "move container to workspace 14:T"; "${modifier}+Left" = "focus left"; "${modifier}+Right" = "focus right"; "${modifier}+Down" = "focus down"; @@ -186,6 +190,12 @@ in app_id = "firefox"; }; } + { + command = "opacity 0.99"; + criteria = { + app_id = "chromium-browser"; + }; + } { command = "sticky enable, shadows enable"; criteria = { diff --git a/profiles/common/home/waybar.nix b/profiles/common/home/waybar.nix index 0b922a3..339b139 100644 --- a/profiles/common/home/waybar.nix +++ b/profiles/common/home/waybar.nix @@ -45,18 +45,18 @@ on-click = "xdg-open https://github.com/notifications"; }; - "custom/nix-updates" = { - exec = "update-checker"; - on-click = "update-checker && notify-send 'The system has been updated'"; - interval = "once"; - tooltip = true; - return-type = "json"; - format = "{} {icon}"; - format-icon = { - "has-updates" = ""; - "updated" = " "; - }; - }; + # "custom/nix-updates" = { + # exec = "update-checker"; + # on-click = "update-checker && notify-send 'The system has been updated'"; + # interval = "once"; + # tooltip = true; + # return-type = "json"; + # format = "{} {icon}"; + # format-icon = { + # "has-updates" = ""; + # "updated" = " "; + # }; + # }; idle_inhibitor = { format = "{icon}"; diff --git a/profiles/common/nixos/blueman.nix b/profiles/common/nixos/blueman.nix index 6e1cdc1..63ce655 100644 --- a/profiles/common/nixos/blueman.nix +++ b/profiles/common/nixos/blueman.nix @@ -1,4 +1,5 @@ _: { services.blueman.enable = true; + services.hardware.bolt.enable = true; } diff --git a/profiles/common/nixos/default.nix b/profiles/common/nixos/default.nix index 3700531..483b7d1 100644 --- a/profiles/common/nixos/default.nix +++ b/profiles/common/nixos/default.nix @@ -34,6 +34,7 @@ ./xdg-portal.nix # ./yubikey-touch-detector.nix ./safeeyes.nix + ./lid.nix ]; nix = diff --git a/profiles/common/nixos/hardware.nix b/profiles/common/nixos/hardware.nix index 456cff3..45afc54 100644 --- a/profiles/common/nixos/hardware.nix +++ b/profiles/common/nixos/hardware.nix @@ -15,7 +15,6 @@ keyboard.qmk.enable = true; - pulseaudio = { enable = lib.mkIf (!config.services.pipewire.enable) true; package = pkgs.pulseaudioFull; diff --git a/profiles/common/nixos/lid.nix b/profiles/common/nixos/lid.nix new file mode 100644 index 0000000..33e3d32 --- /dev/null +++ b/profiles/common/nixos/lid.nix @@ -0,0 +1,26 @@ +{ config, pkgs, ... }: +{ + services.logind = { + lidSwitch = "suspend"; + lidSwitchDocked = "ignore"; + }; + services.acpid = { + enable = true; + lidEventCommands = + '' + export PATH=$PATH:/run/current-system/sw/bin + export WAYLAND_DISPLAY=wayland-1 + export XDG_RUNTIME_DIR=/run/user/1000 + export SWAYSOCK=$(ls /run/user/1000/sway-ipc.* | head -n 1) + + LID_STATE=$(cat /proc/acpi/button/lid/*/state | grep -q closed && echo "closed" || echo "open") + DOCKED=$(swaymsg -t get_outputs | grep -q 'HDMI\|DP' && echo "docked" || echo "undocked") + + if [ "$LID_STATE" == "closed" ] && [ "$DOCKED" == "docked" ]; then + swaymsg output eDP-2 disable + else + swaymsg output eDP-2 enable + fi + ''; + }; +} diff --git a/profiles/common/nixos/pipewire.nix b/profiles/common/nixos/pipewire.nix index b557f03..d4e29f5 100644 --- a/profiles/common/nixos/pipewire.nix +++ b/profiles/common/nixos/pipewire.nix @@ -6,6 +6,7 @@ _: { pulse.enable = true; jack.enable = true; audio.enable = true; + wireplumber.enable = true; alsa = { enable = true; support32Bit = true; diff --git a/profiles/common/nixos/users.nix b/profiles/common/nixos/users.nix index a68c3e3..205d1d2 100644 --- a/profiles/common/nixos/users.nix +++ b/profiles/common/nixos/users.nix @@ -6,7 +6,7 @@ isNormalUser = true; description = "Leon S"; hashedPasswordFile = lib.mkIf (!config.swarselsystems.initialSetup) config.sops.secrets.swarseluser.path; - extraGroups = [ "networkmanager" "root" "docker" "wheel" "lp" "audio" "video" "vboxusers" "scanner" ]; + extraGroups = [ "networkmanager" "docker" "wheel" "lp" "audio" "video" "vboxusers" "scanner" ]; packages = with pkgs; [ ]; }; }; diff --git a/profiles/optional/home/work.nix b/profiles/optional/home/work.nix index 3fc0368..7a3299f 100644 --- a/profiles/optional/home/work.nix +++ b/profiles/optional/home/work.nix @@ -3,270 +3,291 @@ { home.packages = with pkgs; [ stable.teams-for-linux - google-chrome shellcheck dig docker ]; - programs.ssh = { - matchBlocks = { - "uc" = { - hostname = "uc.clip.vbc.ac.at"; - user = "stack"; - }; - "uc-stg" = { - hostname = "uc.staging.clip.vbc.ac.at"; - user = "stack"; - }; - "cbe" = { - hostname = "cbe.vbc.ac.at"; - user = "dc_adm_schwarzaeugl"; - }; - "cbe-stg" = { - hostname = "cbe.staging.vbc.ac.at"; - user = "dc_adm_schwarzaeugl"; - }; - "*.vbc.ac.at" = { - user = "dc_adm_schwarzaeugl"; + programs = { + git.userEmail = "leon.schwarzaeugl@imba.oeaw.ac.at"; + + ssh = { + matchBlocks = { + "uc" = { + hostname = "uc.clip.vbc.ac.at"; + user = "stack"; + }; + "uc-stg" = { + hostname = "uc.staging.clip.vbc.ac.at"; + user = "stack"; + }; + "cbe" = { + hostname = "cbe.vbc.ac.at"; + user = "dc_adm_schwarzaeugl"; + }; + "cbe-stg" = { + hostname = "cbe.staging.vbc.ac.at"; + user = "dc_adm_schwarzaeugl"; + }; + "*.vbc.ac.at" = { + user = "dc_adm_schwarzaeugl"; + }; }; }; - }; - programs.firefox = { - profiles = { - dc_adm = { - id = 1; + firefox = { + profiles = { + dc_adm = { + id = 1; - isDefault = false; - userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - tridactyl - browserpass - clearurls - darkreader - enhancer-for-youtube - istilldontcareaboutcookies - translate-web-pages - ublock-origin - reddit-enhancement-suite - sponsorblock - web-archives - onepassword-password-manager - single-file - widegithub - enhanced-github - unpaywall - don-t-fuck-with-paste - plasma-integration - ]; + isDefault = false; + userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + tridactyl + browserpass + clearurls + darkreader + enhancer-for-youtube + istilldontcareaboutcookies + translate-web-pages + ublock-origin + reddit-enhancement-suite + sponsorblock + web-archives + onepassword-password-manager + single-file + widegithub + enhanced-github + unpaywall + don-t-fuck-with-paste + plasma-integration + ]; - search.engines = { - "Nix Packages" = { - urls = [{ - template = "https://search.nixos.org/packages"; - params = [ - { name = "type"; value = "packages"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@np" ]; + search.engines = { + "Nix Packages" = { + urls = [{ + template = "https://search.nixos.org/packages"; + params = [ + { name = "type"; value = "packages"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@np" ]; + }; + + "NixOS Wiki" = { + urls = [{ + template = "https://nixos.wiki/index.php?search={searchTerms}"; + }]; + iconUpdateURL = "https://nixos.wiki/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; # every day + definedAliases = [ "@nw" ]; + }; + + "NixOS Options" = { + urls = [{ + template = "https://search.nixos.org/options"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@no" ]; + }; + + "Home Manager Options" = { + urls = [{ + template = "https://home-manager-options.extranix.com/"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@hm" "@ho" "@hmo" ]; + }; + + "Google".metaData.alias = "@g"; }; + search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart - "NixOS Wiki" = { - urls = [{ - template = "https://nixos.wiki/index.php?search={searchTerms}"; - }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; - updateInterval = 24 * 60 * 60 * 1000; # every day - definedAliases = [ "@nw" ]; - }; - - "NixOS Options" = { - urls = [{ - template = "https://search.nixos.org/options"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@no" ]; - }; - - "Home Manager Options" = { - urls = [{ - template = "https://home-manager-options.extranix.com/"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@hm" "@ho" "@hmo" ]; - }; - - "Google".metaData.alias = "@g"; }; - search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart + cl_adm = { + id = 2; - }; - cl_adm = { - id = 2; + isDefault = false; + userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + tridactyl + browserpass + clearurls + darkreader + enhancer-for-youtube + istilldontcareaboutcookies + translate-web-pages + ublock-origin + reddit-enhancement-suite + sponsorblock + web-archives + onepassword-password-manager + single-file + widegithub + enhanced-github + unpaywall + don-t-fuck-with-paste + plasma-integration + ]; - isDefault = false; - userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - tridactyl - browserpass - clearurls - darkreader - enhancer-for-youtube - istilldontcareaboutcookies - translate-web-pages - ublock-origin - reddit-enhancement-suite - sponsorblock - web-archives - onepassword-password-manager - single-file - widegithub - enhanced-github - unpaywall - don-t-fuck-with-paste - plasma-integration - ]; + search.engines = { + "Nix Packages" = { + urls = [{ + template = "https://search.nixos.org/packages"; + params = [ + { name = "type"; value = "packages"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@np" ]; + }; - search.engines = { - "Nix Packages" = { - urls = [{ - template = "https://search.nixos.org/packages"; - params = [ - { name = "type"; value = "packages"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@np" ]; + "NixOS Wiki" = { + urls = [{ + template = "https://nixos.wiki/index.php?search={searchTerms}"; + }]; + iconUpdateURL = "https://nixos.wiki/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; # every day + definedAliases = [ "@nw" ]; + }; + + "NixOS Options" = { + urls = [{ + template = "https://search.nixos.org/options"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@no" ]; + }; + + "Home Manager Options" = { + urls = [{ + template = "https://home-manager-options.extranix.com/"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@hm" "@ho" "@hmo" ]; + }; + + "Google".metaData.alias = "@g"; }; + search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart - "NixOS Wiki" = { - urls = [{ - template = "https://nixos.wiki/index.php?search={searchTerms}"; - }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; - updateInterval = 24 * 60 * 60 * 1000; # every day - definedAliases = [ "@nw" ]; - }; - - "NixOS Options" = { - urls = [{ - template = "https://search.nixos.org/options"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@no" ]; - }; - - "Home Manager Options" = { - urls = [{ - template = "https://home-manager-options.extranix.com/"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@hm" "@ho" "@hmo" ]; - }; - - "Google".metaData.alias = "@g"; }; - search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart + ws_adm = { + id = 3; - }; - ws_adm = { - id = 3; + isDefault = false; + userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + tridactyl + browserpass + clearurls + darkreader + enhancer-for-youtube + istilldontcareaboutcookies + translate-web-pages + ublock-origin + reddit-enhancement-suite + sponsorblock + web-archives + onepassword-password-manager + single-file + widegithub + enhanced-github + unpaywall + don-t-fuck-with-paste + plasma-integration + ]; - isDefault = false; - userChrome = builtins.readFile ../../../programs/firefox/chrome/userChrome.css; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - tridactyl - browserpass - clearurls - darkreader - enhancer-for-youtube - istilldontcareaboutcookies - translate-web-pages - ublock-origin - reddit-enhancement-suite - sponsorblock - web-archives - onepassword-password-manager - single-file - widegithub - enhanced-github - unpaywall - don-t-fuck-with-paste - plasma-integration - ]; + search.engines = { + "Nix Packages" = { + urls = [{ + template = "https://search.nixos.org/packages"; + params = [ + { name = "type"; value = "packages"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@np" ]; + }; - search.engines = { - "Nix Packages" = { - urls = [{ - template = "https://search.nixos.org/packages"; - params = [ - { name = "type"; value = "packages"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@np" ]; + "NixOS Wiki" = { + urls = [{ + template = "https://nixos.wiki/index.php?search={searchTerms}"; + }]; + iconUpdateURL = "https://nixos.wiki/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; # every day + definedAliases = [ "@nw" ]; + }; + + "NixOS Options" = { + urls = [{ + template = "https://search.nixos.org/options"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@no" ]; + }; + + "Home Manager Options" = { + urls = [{ + template = "https://home-manager-options.extranix.com/"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@hm" "@ho" "@hmo" ]; + }; + + "Google".metaData.alias = "@g"; }; + search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart - "NixOS Wiki" = { - urls = [{ - template = "https://nixos.wiki/index.php?search={searchTerms}"; - }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; - updateInterval = 24 * 60 * 60 * 1000; # every day - definedAliases = [ "@nw" ]; - }; - - "NixOS Options" = { - urls = [{ - template = "https://search.nixos.org/options"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@no" ]; - }; - - "Home Manager Options" = { - urls = [{ - template = "https://home-manager-options.extranix.com/"; - params = [ - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@hm" "@ho" "@hmo" ]; - }; - - "Google".metaData.alias = "@g"; }; - search.force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart - }; }; + + chromium = { + enable = true; + package = pkgs.chromium; + + extensions = [ + # 1password + "gejiddohjgogedgjnonbofjigllpkmbf" + # dark reader + "eimadpbcbfnmbkopoojfekhnkhdbieeh" + # ublock origin + "cjpalhdlnbpafiamejdnhcphjbkeiagm" + # i still dont care about cookies + "edibdbjcniadpccecjdfdjjppcpchdlm" + # browserpass + "naepdomgkenhinolocfifgehidddafch" + ]; + }; }; xdg.desktopEntries = @@ -298,6 +319,5 @@ }; }; - programs.git.userEmail = "leon.schwarzaeugl@imba.oeaw.ac.at"; } diff --git a/profiles/optional/nixos/work.nix b/profiles/optional/nixos/work.nix index d694976..d9685ed 100644 --- a/profiles/optional/nixos/work.nix +++ b/profiles/optional/nixos/work.nix @@ -1,6 +1,7 @@ { pkgs, ... }: { # boot.initrd.luks.yubikeySupport = true; + programs.browserpass.enable = true; programs._1password.enable = true; programs._1password-gui = { enable = true;