diff --git a/lib/default.nix b/lib/default.nix index f7a8b1c..b66d67d 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -45,6 +45,4 @@ lib.makeExtensible (_: rec { lib.mapAttrs' mkModule modulesInDir; mapModules' = f: dir: lib.attrValues (mapModules f dir); - - listModules = mapModules' (path: path); }) diff --git a/modules/config/bin/default.nix b/modules/config/bin/default.nix index 5cbf5ed..7f4520e 100644 --- a/modules/config/bin/default.nix +++ b/modules/config/bin/default.nix @@ -9,6 +9,7 @@ let cfg = config.my.bin; cycleSinks = import ./cycleSinks.nix { inherit pkgs; }; protonge = import ./protonge.nix { inherit pkgs; }; + randomWallpaper = import ./randomWallpaper.nix { inherit pkgs; }; share = import ./share.nix { inherit pkgs; }; sxhkdHelp = import ./sxhkdHelp.nix { inherit pkgs; }; in @@ -16,9 +17,10 @@ in options.my.bin.enable = mkEnableOption "bin"; config = mkIf cfg.enable { - environment.systemPackages = [ + environment.systemPackages = with pkgs; [ cycleSinks protonge + randomWallpaper share sxhkdHelp ]; diff --git a/modules/config/bin/randomWallpaper.nix b/modules/config/bin/randomWallpaper.nix new file mode 100644 index 0000000..e9be064 --- /dev/null +++ b/modules/config/bin/randomWallpaper.nix @@ -0,0 +1,17 @@ +{ pkgs }: +pkgs.writeShellApplication { + name = "randomWallpaper"; + + runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq ]; + + text = '' + wallpaper="$(find ~/.config/wallpapers/ -type f,l | shuf -n 1)" + if [ -z ''${WAYLAND_DISPLAY+x} ]; then + feh --bg-fill "$wallpaper" + else + hyprctl hyprpaper preload "$wallpaper" + hyprctl monitors -j | jq '.[].name' | xargs -I{} hyprctl hyprpaper wallpaper '{}',"$wallpaper" + hyprctl hyprpaper unload all + fi + ''; +} diff --git a/modules/config/default.nix b/modules/config/default.nix index 1a044e4..f2be122 100644 --- a/modules/config/default.nix +++ b/modules/config/default.nix @@ -1,5 +1,10 @@ -{ lib, ... }: - { - imports = lib.my.listModules ./.; + imports = [ + ./bin + ./nix.nix + ./shell.nix + ./theming + ./wallpapers.nix + ./yubikey.nix + ]; } diff --git a/modules/programs/nix.nix b/modules/config/nix.nix similarity index 96% rename from modules/programs/nix.nix rename to modules/config/nix.nix index 413936f..12fcc32 100644 --- a/modules/programs/nix.nix +++ b/modules/config/nix.nix @@ -6,10 +6,10 @@ with lib; let - cfg = config.my.programs.nix; + cfg = config.my.nix; in { - options.my.programs.nix = { + options.my.nix = { gc = { enable = mkEnableOption "nix-gc"; minimumFreedGB = mkOption { diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 9f35c6a..e2d4b4b 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -32,6 +32,10 @@ in time.timeZone = "Europe/Berlin"; my = { + nix = { + gc.enable = true; + optimise.enable = true; + }; bin.enable = true; shell = { abbreviations = { @@ -59,10 +63,6 @@ in git.enable = true; gpg.enable = true; navi.enable = true; - nix = { - gc.enable = true; - optimise.enable = true; - }; tmux.enable = true; tmux.keybinds = { prefix = { diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index ac348a0..855c581 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -29,7 +29,6 @@ with lib; { spotify.enable = mkDefault true; ssh.enable = mkDefault true; thunar.enable = mkDefault true; - wallpaper.enable = mkDefault true; zathura.enable = mkDefault true; }; services = { diff --git a/modules/programs/bspwm/default.nix b/modules/programs/bspwm/default.nix index fba274c..81e1a60 100644 --- a/modules/programs/bspwm/default.nix +++ b/modules/programs/bspwm/default.nix @@ -45,7 +45,7 @@ in focus_follows_pointer = true; }; startupPrograms = [ - "wallpaper -r" + "randomWallpaper" ]; extraConfig = builtins.readFile ./bspwmrc; }; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 1a044e4..bf1d830 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,5 +1,33 @@ -{ lib, ... }: - { - imports = lib.my.listModules ./.; + imports = [ + ./adb.nix + ./bspwm + ./chromium.nix + ./code.nix + ./direnv.nix + ./firefox.nix + ./fish.nix + ./git.nix + ./gnome.nix + ./gpg.nix + ./helix.nix + ./hub.nix + ./hyprland + ./kakoune.nix + ./kitty.nix + ./ledger + ./logseq.nix + ./miracast.nix + ./navi + ./nvim + ./python.nix + ./rofi + ./spotify.nix + ./ssh.nix + ./sway.nix + ./thunar.nix + ./tmux.nix + ./zathura.nix + ./zsh.nix + ]; } diff --git a/modules/programs/hyprland/config.nix b/modules/programs/hyprland/config.nix index 5feef36..bbc63ef 100644 --- a/modules/programs/hyprland/config.nix +++ b/modules/programs/hyprland/config.nix @@ -165,26 +165,26 @@ in bind = $mainMod , RETURN , exec , kitty # XF86 keys - binde = , XF86AudioLowerVolume , exec , pamixer -d 5 - binde = , XF86AudioRaiseVolume , exec , pamixer -i 5 + bind = , XF86AudioLowerVolume , exec , pamixer -d 5 + bind = , XF86AudioRaiseVolume , exec , pamixer -i 5 bind = , XF86AudioMute , exec , pamixer -t bind = , XF86AudioNext , exec , playerctl -p "spotifyd,firefox" next bind = , XF86AudioPlay , exec , playerctl -p "spotifyd,firefox" play-pause bind = , XF86AudioPrev , exec , playerctl -p "spotifyd,firefox" previous - binde = , XF86MonBrightnessDown , exec , brightnessctl s 10%- - binde = , XF86MonBrightnessUp , exec , brightnessctl s 10%+ + bind = , XF86MonBrightnessDown , exec , brightnessctl s 10%- + bind = , XF86MonBrightnessUp , exec , brightnessctl s 10%+ # Move focus with mainMod + hjkl - binde = $mainMod, H, movefocus, l - binde = $mainMod, L, movefocus, r - binde = $mainMod, K, movefocus, u - binde = $mainMod, J, movefocus, d + bind = $mainMod, H, movefocus, l + bind = $mainMod, L, movefocus, r + bind = $mainMod, K, movefocus, u + bind = $mainMod, J, movefocus, d # Change current active window size with mainMod + SHIFT + hjkl - binde = $mainMod SHIFT, H, resizeactive, -10 0 - binde = $mainMod SHIFT, J, resizeactive, 0 10 - binde = $mainMod SHIFT, K, resizeactive, 0 -10 - binde = $mainMod SHIFT, L, resizeactive, 10 0 + bind = $mainMod SHIFT, H, resizeactive, -10 0 + bind = $mainMod SHIFT, J, resizeactive, 0 10 + bind = $mainMod SHIFT, K, resizeactive, 0 -10 + bind = $mainMod SHIFT, L, resizeactive, 10 0 # Move current active window with mainMod + ALT + hjkl bind = $mainMod ALT, H, movewindow, l @@ -223,4 +223,6 @@ in # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow + + exec-once=randomWallpaper '' diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 654a13a..f8db719 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -30,12 +30,9 @@ in config = mkIf cfg.enable { my = { programs = { - wallpaper.enable = true; kitty.enable = true; rofi.enable = true; - }; - wallpapers.enable = true; services.dunst.enable = true; }; @@ -145,41 +142,33 @@ in }; in { + enable = true; + partOf = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/sleep 0.5"; ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper -c ${config}"; - RestartSec = "500ms"; + RestartSec = "1s"; 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" ]; wantedBy = [ "graphical-session.target" ]; before = [ "graphical-session.target" ]; }; systemd.user.services.xdg-desktop-portal-hyprland = { - after = [ "hyrpland-session.target" ]; - requiredBy = [ "xdg-desktop-portal.service" ]; + after = [ "hyprland-session.target" ]; + wantedBy = [ "hyprland-session.target" ]; }; - home-manager.users.moritz.systemd.user.services.nextcloud-client.Service = { - RestartSec = "500ms"; - Restart = "on-failure"; + home-manager.users.moritz.systemd.user.services.nextcloud-client = { + Service = { + RestartSec = "1s"; + Restart = "on-failure"; + }; }; # add user packages for wayland and hyprland in particular @@ -240,7 +229,7 @@ in security.rtkit.enable = true; - # desktop portal (for screensharing) + # dekstop portal (for screensharing) xdg.portal = { enable = true; wlr.enable = mkForce false; diff --git a/modules/programs/sway.nix b/modules/programs/sway.nix index a11b077..162a1b9 100644 --- a/modules/programs/sway.nix +++ b/modules/programs/sway.nix @@ -71,7 +71,7 @@ in command = "systemctl --user restart waybar"; always = true; } - { command = "wallpaper -r"; } + { command = "randomWallpaper"; } ]; }; }; diff --git a/modules/programs/wallpaper/default.nix b/modules/programs/wallpaper/default.nix deleted file mode 100644 index 0412238..0000000 --- a/modules/programs/wallpaper/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ lib, config, pkgs, ... }: - - -with lib; -let - cfg = config.my.programs.wallpaper; - - - script = pkgs.writeShellApplication { - name = "wallpaper"; - runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq fzf viu ]; - text = builtins.readFile ./wallpaper.sh; - }; -in -{ - options.my.programs.wallpaper = { - enable = mkEnableOption "wallpaper"; - package = mkOption { - type = types.package; - default = script; - }; - }; - - config = mkIf cfg.enable { - environment.systemPackages = - [ - cfg.package - ]; - }; -} diff --git a/modules/programs/wallpaper/wallpaper.sh b/modules/programs/wallpaper/wallpaper.sh deleted file mode 100644 index 5b52710..0000000 --- a/modules/programs/wallpaper/wallpaper.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash - -WALLPAPERS_PATH="$HOME/.config/wallpapers" -WALLPAPERS=$(find "$WALLPAPERS_PATH" -type f,l) - -function help() { - echo "Usage:" - echo -e " wallpaper [OPTIONS] [PATH]" - echo "" - echo "Options:" - echo -e " -h, --help \n\t Show this help message and exit" - echo -e " -r, --random \n\t Set a random wallpaper" - echo -e " -s, --set \n\t Set a wallpaper" -} - -function randomWallpaper() { - find ~/.config/wallpapers/ -type f,l | shuf -n 1 -} - -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 -} - -# Parse arguments -# https://stackoverflow.com/a/14203146 -POSITIONAL=() -while [[ $# -gt 0 ]]; do - key="$1" - - case $key in - -h | --help) - help - exit 0 - ;; - -r | --random) - WALLPAPER=$(randomWallpaper) - shift # past argument - ;; - -s | --set) - WALLPAPER="$2" - shift # past argument - shift # past value - ;; - *) - POSITIONAL+=("$1") # save it in an array for later - shift # past argument - ;; - esac -done - -set -- "${POSITIONAL[@]}" # restore positional arguments - -if [[ $# -gt 1 ]]; then - help - exit 1 -fi - -if [[ $# -eq 1 ]]; then - WALLPAPER="$1" -fi - -if [[ -z ${WALLPAPER+x} ]]; then - WALLPAPER=$(echo "$WALLPAPERS" | fzf --preview="viu -sb -h 30 {}" --preview-window=right:70%:wrap) -fi - -WALLPAPER=$(realpath "$WALLPAPER") - -if [[ ! -e "$WALLPAPER" ]]; then - echo "File not found: $WALLPAPER" - exit 1 -fi - -echo "Setting wallpaper: '$WALLPAPER'" -setWallpaper "$WALLPAPER" diff --git a/modules/services/default.nix b/modules/services/default.nix index 1a044e4..9cadf62 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -1,5 +1,13 @@ -{ lib, ... }: - { - imports = lib.my.listModules ./.; + imports = [ + ./dunst.nix + ./gammastep.nix + ./kdeconnect.nix + ./mullvad.nix + ./openconnect.nix + ./picom.nix + ./printing.nix + ./synology-drive.nix + ./wireguard.nix + ]; } diff --git a/modules/virtualisation/default.nix b/modules/virtualisation/default.nix index 1a044e4..bcc1863 100644 --- a/modules/virtualisation/default.nix +++ b/modules/virtualisation/default.nix @@ -1,5 +1,6 @@ -{ lib, ... }: - { - imports = lib.my.listModules ./.; + imports = [ + ./podman.nix + ./virtualisation.nix + ]; } diff --git a/overlays/default.nix b/overlays/default.nix index 6713493..e3d2d4d 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }@args: +{ inputs, lib }: lib.composeManyExtensions - (lib.my.mapModules' (file: import file args) ./.) + (lib.my.mapModules' (file: import file { inherit inputs lib; }) ./.)