diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index dafc913..bae0d2f 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; @@ -53,6 +54,7 @@ in environment.systemPackages = with pkgs; [ anki calibre + fd keepassxc nixpkgs-review pavucontrol 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; 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 dc58269..aec526e 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 = { @@ -70,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" ]; @@ -83,7 +92,6 @@ in }; }; - # lock screen after timeout home-manager.users.moritz = { services.swayidle = { @@ -129,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/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:]]*$' +) 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 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 ]; }; }; } 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" ]; - }); }