From 888b3246a7c22d2c4f7677b3ae379ffd2be75ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 31 May 2023 15:51:50 +0200 Subject: [PATCH 1/7] feat(porgrams): add nix-edit --- modules/profiles/desktop.nix | 1 + modules/programs/nix-edit/default.nix | 26 ++++++++++++++++++++++++++ modules/programs/nix-edit/nix-edit.sh | 15 +++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 modules/programs/nix-edit/default.nix create mode 100755 modules/programs/nix-edit/nix-edit.sh diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index b909535..70819aa 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -33,6 +33,7 @@ in gpg.enable = mkDefault true; hyprland.enable = mkDefault true; logseq.enable = mkDefault true; + nix-edit.enable = mkDefault true; nvim.enable = mkDefault true; python.versions."311".enable = mkDefault true; spotify.enable = mkDefault true; diff --git a/modules/programs/nix-edit/default.nix b/modules/programs/nix-edit/default.nix new file mode 100644 index 0000000..c2fda85 --- /dev/null +++ b/modules/programs/nix-edit/default.nix @@ -0,0 +1,26 @@ +{ lib +, config +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.nix-edit; +in +{ + options.my.programs.nix-edit.enable = mkEnableOption "nix-edit"; + + config = mkIf cfg.enable { + environment.systemPackages = + let + nix-edit = pkgs.writeShellApplication { + name = "nix-edit"; + runtimeInputs = with pkgs; [ nix gnugrep ]; + text = builtins.readFile ./nix-edit.sh; + }; + in + [ nix-edit ]; + }; + +} diff --git a/modules/programs/nix-edit/nix-edit.sh b/modules/programs/nix-edit/nix-edit.sh new file mode 100755 index 0000000..f48b779 --- /dev/null +++ b/modules/programs/nix-edit/nix-edit.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +input=$( + echo ":lf nixpkgs" + echo "pkgs = legacyPackages.\${builtins.currentSystem}" + echo ":doc $1" + echo ":e $1" +) +echo "$input" | nix repl --quiet 2> >(grep -v "ioctl" | + grep -v "^error: value does not have documentation$" | + grep -vP "error: .* has no source location information" | + grep -vP "Welcome to Nix \d+\.\d+\.\d+\." | + grep -vP "Added \d+ variables." | + grep -v -e '^[[:space:]]*$' +) From 254af322b50bd16e9d48f48c9bd1b6c4c66d22f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 31 May 2023 15:53:21 +0200 Subject: [PATCH 2/7] refactor(hyprland): wrap waybar to add hyprctl --- modules/programs/hyprland/default.nix | 11 ++++++++++- overlays/wayland.nix | 8 -------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index dc58269..1d1ec62 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -58,7 +58,16 @@ in enable = true; # use package with hyprland support for switching workspaces - package = pkgs.waybar-hyprland; + package = pkgs.symlinkJoin { + name = "waybar-hyprland"; + paths = [ pkgs.waybar-hyprland ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/waybar \ + --prefix PATH ":" "${hyprland}/bin" + ''; + }; + # start using systemd service systemd = { diff --git a/overlays/wayland.nix b/overlays/wayland.nix index 0ad9931..dc0f140 100644 --- a/overlays/wayland.nix +++ b/overlays/wayland.nix @@ -22,12 +22,4 @@ final: prev: { --add-flags "--socket=wayland --enable-features=UseOzonePlatform --ozone-platform=wayland" ''; }; - - waybar-hyprland = prev.waybar.overrideAttrs (old: { - pname = "${old.pname}-hyprland"; - postPatch = old.postPatch or "" + '' - sed -i 's,zext_workspace_handle_v1_activate(workspace_handle_);,const std::string command = "${final.hyprland}/bin/hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());,g' src/modules/wlr/workspace_manager.cpp - ''; - mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; - }); } From de578facefe74e35c0ecaeb90213a492b73cb796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 31 May 2023 15:54:35 +0200 Subject: [PATCH 3/7] feat(virtualisation): add virt-viewer --- modules/virtualisation/virtualisation.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/virtualisation/virtualisation.nix b/modules/virtualisation/virtualisation.nix index f51862f..67f4c17 100644 --- a/modules/virtualisation/virtualisation.nix +++ b/modules/virtualisation/virtualisation.nix @@ -19,7 +19,7 @@ in users.users.moritz = { extraGroups = [ "libvirtd" ]; - packages = with pkgs; [ virt-manager ]; + packages = with pkgs; [ virt-manager virt-viewer ]; }; }; } From a8e5001710e1823eba18bb0741f218b0831546a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 31 May 2023 15:55:38 +0200 Subject: [PATCH 4/7] feat(firefox): disable start page --- modules/profiles/personal.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index e1cb308..bfea3e2 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -31,8 +31,7 @@ in "browser.urlbar.suggest.searches" = true; # startup page - "browser.startup.homepage" = "https://searxng.moritzboeh.me/"; - "browser.startup.page" = 1; + "browser.startup.page" = 0; # drm "media.eme.enabled" = true; From 18bd4d0e022e0bd295a0579475e7004d04d37db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 31 May 2023 15:56:23 +0200 Subject: [PATCH 5/7] feat(hyprland): change waybar height --- modules/programs/hyprland/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 1d1ec62..a7c5eed 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -79,7 +79,7 @@ in mainBar = { layer = "top"; position = "top"; - height = 30; + height = 20; modules-left = [ "wlr/workspaces" ]; modules-center = [ "hyprland/window" ]; modules-right = [ "network" "memory" "cpu" "battery" "clock" ]; From ccc796c83dfd08dfcc9f10b2ece5c700c5ca69dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 7 Jun 2023 14:10:20 +0200 Subject: [PATCH 6/7] feat(desktop): add fd as find alternative --- modules/profiles/desktop.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index 678df5c..fb14c32 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -53,6 +53,7 @@ in environment.systemPackages = with pkgs; [ anki calibre + fd keepassxc nixpkgs-review pavucontrol From e3a95c6dc2299c1745d5f343c2c832908660bd84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Thu, 8 Jun 2023 11:38:08 +0200 Subject: [PATCH 7/7] feat(wallpaper): use swaybg instead of hyprpaper --- modules/programs/hyprland/_config.nix | 2 ++ modules/programs/hyprland/default.nix | 35 ------------------------- modules/programs/wallpaper/default.nix | 2 +- modules/programs/wallpaper/wallpaper.sh | 25 ++++++++++-------- 4 files changed, 17 insertions(+), 47 deletions(-) mode change 100644 => 100755 modules/programs/wallpaper/wallpaper.sh diff --git a/modules/programs/hyprland/_config.nix b/modules/programs/hyprland/_config.nix index eaa5a2e..c508c8a 100644 --- a/modules/programs/hyprland/_config.nix +++ b/modules/programs/hyprland/_config.nix @@ -221,4 +221,6 @@ in # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow + + exec-once=${getExe config.my.programs.wallpaper.package} -r '' diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index a7c5eed..aec526e 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -92,7 +92,6 @@ in }; }; - # lock screen after timeout home-manager.users.moritz = { services.swayidle = { @@ -138,40 +137,6 @@ in # adds pam module for swaylock security.pam.services.swaylock = { }; - - # start hyprpaper daemon using systemd unit (to set wallpaper) - systemd.user.services.hyprpaper = - let - wallpaper = "/home/moritz/.config/wallpapers/a_short_walk.png"; - config = pkgs.writeTextFile { - name = "hyprpaper.conf"; - text = '' - preload = ${wallpaper} - wallpaper = ,${wallpaper} - ''; - }; - in - { - wantedBy = [ "graphical-session.target" ]; - serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/sleep 0.5"; - ExecStart = "${getExe pkgs.hyprpaper} -c ${config}"; - RestartSec = "500ms"; - Restart = "on-failure"; - }; - }; - - systemd.user.services.random-wallpaper = { - wantedBy = [ "graphical-session.target" ]; - requires = [ "hyprpaper.service" ]; - serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/sleep 0.5"; - ExecStart = "${getExe config.my.programs.wallpaper.package} -r"; - RestartSec = "500ms"; - Restart = "on-failure"; - }; - }; - # only consider graphical-session.target started when hyprland-sesstion.target is reached systemd.user.targets.hyprland-session = { partOf = [ "graphical-session.target" ]; diff --git a/modules/programs/wallpaper/default.nix b/modules/programs/wallpaper/default.nix index 0412238..2fdec75 100644 --- a/modules/programs/wallpaper/default.nix +++ b/modules/programs/wallpaper/default.nix @@ -8,7 +8,7 @@ let script = pkgs.writeShellApplication { name = "wallpaper"; - runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq fzf viu ]; + runtimeInputs = with pkgs; [ findutils coreutils feh swaybg fzf viu ]; text = builtins.readFile ./wallpaper.sh; }; in diff --git a/modules/programs/wallpaper/wallpaper.sh b/modules/programs/wallpaper/wallpaper.sh old mode 100644 new mode 100755 index 2cc7e17..8e94670 --- a/modules/programs/wallpaper/wallpaper.sh +++ b/modules/programs/wallpaper/wallpaper.sh @@ -14,20 +14,23 @@ function help() { } function randomWallpaper() { - find ~/.config/wallpapers/ -type f,l | shuf -n 1 + echo "$WALLPAPERS" | shuf -n 1 +} + +function setWallpaperX { + feh --bg-fill "$1" +} + +function setWallpaperWayland { + swaybg --mode fill -i "$1" 2>/dev/null & } function setWallpaper() { - case "${XDG_CURRENT_DESKTOP,,}" in - hyprland) - hyprctl hyprpaper preload "$1" &>/dev/null - hyprctl monitors -j | jq '.[].name' | xargs -I{} -P 0 hyprctl hyprpaper wallpaper '{}',"$1" &>/dev/null - hyprctl hyprpaper unload all &>/dev/null - ;; - *) - feh --bg-fill "$1" &>/dev/null - ;; - esac +if [[ -z ${WAYLAND_DISPLAY+x} ]]; then + setWallpaperX "$1" + else + setWallpaperWayland "$1" + fi } # Parse arguments