From 52650a3c8439f4e9d51f74de66ae3fb054f14d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Tue, 25 Apr 2023 18:55:15 +0200 Subject: [PATCH 01/14] feat(programs): add tmux --- modules/config/theming/catppuccin-frappe.nix | 1 + modules/config/theming/catppuccin-latte.nix | 1 + .../config/theming/catppuccin-macchiato.nix | 1 + modules/config/theming/catppuccin-mocha.nix | 1 + modules/config/theming/catppuccin.nix | 8 +++ modules/config/theming/dracula.nix | 4 ++ modules/profiles/base.nix | 2 +- modules/programs/default.nix | 1 + modules/programs/tmux.nix | 49 +++++++++++++++++++ 9 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 modules/programs/tmux.nix diff --git a/modules/config/theming/catppuccin-frappe.nix b/modules/config/theming/catppuccin-frappe.nix index 8be760f..6be8d62 100644 --- a/modules/config/theming/catppuccin-frappe.nix +++ b/modules/config/theming/catppuccin-frappe.nix @@ -9,6 +9,7 @@ in (import ./catppuccin.nix { inherit config lib pkgs; + flavor = "mocha"; rosewater = "f2d5cf"; flamingo = "eebebe"; pink = "f4b8e4"; diff --git a/modules/config/theming/catppuccin-latte.nix b/modules/config/theming/catppuccin-latte.nix index 3cf64d8..96051cb 100644 --- a/modules/config/theming/catppuccin-latte.nix +++ b/modules/config/theming/catppuccin-latte.nix @@ -9,6 +9,7 @@ in (import ./catppuccin.nix { inherit config lib pkgs; + flavor = "mocha"; rosewater = "dc8a78"; flamingo = "dd7878"; pink = "ea76cb"; diff --git a/modules/config/theming/catppuccin-macchiato.nix b/modules/config/theming/catppuccin-macchiato.nix index f4f02f6..c8e0a6c 100644 --- a/modules/config/theming/catppuccin-macchiato.nix +++ b/modules/config/theming/catppuccin-macchiato.nix @@ -9,6 +9,7 @@ in (import ./catppuccin.nix { inherit config lib pkgs; + flavor = "mocha"; rosewater = "f4dbd6"; flamingo = "f0c6c6"; pink = "f5bde6"; diff --git a/modules/config/theming/catppuccin-mocha.nix b/modules/config/theming/catppuccin-mocha.nix index 6b39aa6..4cfc510 100644 --- a/modules/config/theming/catppuccin-mocha.nix +++ b/modules/config/theming/catppuccin-mocha.nix @@ -9,6 +9,7 @@ in (import ./catppuccin.nix { inherit config lib pkgs; + flavor = "mocha"; rosewater = "f5e0dc"; flamingo = "f2cdcd"; pink = "f5c2e7"; diff --git a/modules/config/theming/catppuccin.nix b/modules/config/theming/catppuccin.nix index 0c8d8a9..17c9118 100644 --- a/modules/config/theming/catppuccin.nix +++ b/modules/config/theming/catppuccin.nix @@ -1,4 +1,6 @@ { config +, pkgs +, flavor , rosewater , flamingo , pink @@ -127,6 +129,12 @@ color7 #${subtext1} color15 #${subtext0} ''; + tmux.plugins = with pkgs.tmuxPlugins; [ + { + plugin = catppuccin; + extraConfig = "set -g @catppuccin_flavour '${flavor}'"; + } + ]; zathura.extraConfig = '' set window-title-basename "true" set selection-clipboard "clipboard" diff --git a/modules/config/theming/dracula.nix b/modules/config/theming/dracula.nix index 317926a..d6aca86 100644 --- a/modules/config/theming/dracula.nix +++ b/modules/config/theming/dracula.nix @@ -1,5 +1,6 @@ { config , lib +, pkgs , ... }: @@ -97,6 +98,9 @@ in active_border_color #f8f8f2 inactive_border_color #6272a4 ''; + tmux.plugins = with pkgs.tmuxPlugins; [ + dracula + ]; zathura.extraConfig = '' set window-title-basename "true" set selection-clipboard "clipboard" diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 7d1c6e7..1dab08b 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -62,6 +62,7 @@ in fish.enable = true; git.enable = true; gpg.enable = true; + tmux.enable = true; }; }; @@ -99,7 +100,6 @@ in gparted neofetch ripgrep - tmux up viu wget diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 788e8fd..1617f40 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -25,6 +25,7 @@ ./ssh.nix ./sway.nix ./thunar.nix + ./tmux.nix ./zathura.nix ./zsh.nix ]; diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix new file mode 100644 index 0000000..7ff3bb6 --- /dev/null +++ b/modules/programs/tmux.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.programs.tmux; +in +{ + options.my.programs.tmux = { + enable = mkEnableOption "tmux"; + autoAttach = mkEnableOption "autoAttach"; + }; + + config = mkIf cfg.enable { + my.shell.abbreviations.t = "tmux"; + home-manager.users.moritz.programs.tmux = { + enable = true; + clock24 = true; + customPaneNavigationAndResize = true; + keyMode = "vi"; + mouse = true; + newSession = true; + prefix = "C-Space"; + sensibleOnTop = false; + plugins = with pkgs.tmuxPlugins; [ + sensible + tmux-fzf + yank + ]; + }; + home-manager.users.moritz.programs = { + fzf.tmux.enableShellIntegration = true; + fish.interactiveShellInit = + let + insideVariables = [ "$TMUX" "$INSIDE_EMACS" "$EMACS" "$VIM" "$VSCODE_RESOLVING_ENVIRONMENT" ]; + insideVariableMissing = concatStringsSep " && " (map (x: "test -z ${x}") insideVariables); + in + mkIf cfg.autoAttach + '' + if ! fish_is_root_user && test "$TERM_PROGRAM" != 'vscode' && ${insideVariableMissing} + if test -z $tmux_autostarted + set -x tmux_autostarted true + tmux a + end + end + ''; + }; + }; + +} From af1f1fec2ed8890574dcffca192b51338eb6e825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Tue, 25 Apr 2023 19:50:28 +0200 Subject: [PATCH 02/14] feat(programs): add navi --- modules/profiles/base.nix | 3 ++- modules/programs/default.nix | 1 + modules/programs/navi/cheats/reptyr.cheat | 6 ++++++ modules/programs/navi/default.nix | 20 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 modules/programs/navi/cheats/reptyr.cheat create mode 100644 modules/programs/navi/default.nix diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 1dab08b..6f2fb3f 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -62,6 +62,7 @@ in fish.enable = true; git.enable = true; gpg.enable = true; + navi.enable = true; tmux.enable = true; }; }; @@ -99,6 +100,7 @@ in exa gparted neofetch + reptyr ripgrep up viu @@ -143,7 +145,6 @@ in ]; }; zoxide.enable = true; - navi.enable = true; }; home = { username = "moritz"; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 1617f40..bf1d830 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -18,6 +18,7 @@ ./ledger ./logseq.nix ./miracast.nix + ./navi ./nvim ./python.nix ./rofi diff --git a/modules/programs/navi/cheats/reptyr.cheat b/modules/programs/navi/cheats/reptyr.cheat new file mode 100644 index 0000000..1ea2e55 --- /dev/null +++ b/modules/programs/navi/cheats/reptyr.cheat @@ -0,0 +1,6 @@ +% tmux, reptyr + +# send background process to tmux +bg && disown && tmux new "$SHELL -c 'reptyr '" + +$ process: ps x -eo pid,tty,stat | awk '$2 ~ /pts/' | awk '$3 ~ /T/' | cut -d" " -f1 --- --preview "ps -p {} -o cmd" diff --git a/modules/programs/navi/default.nix b/modules/programs/navi/default.nix new file mode 100644 index 0000000..1772d61 --- /dev/null +++ b/modules/programs/navi/default.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: + +with lib; +let + cfg = config.my.programs.navi; +in +{ + options.my.programs.navi.enable = mkEnableOption "navi"; + + config = mkIf cfg.enable { + home-manager.users.moritz = { + programs.navi.enable = true; + xdg.dataFile."navi/cheats/personal" = { + enable = true; + recursive = true; + source = ./cheats; + }; + }; + }; +} From 414a3a1fdf3809205ade7841b207bfa8e30d254c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 08:57:59 +0200 Subject: [PATCH 03/14] feat(tmux): add tmux-sessionizer --- modules/programs/tmux.nix | 67 +++++++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index 7ff3bb6..ef01b1f 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -3,6 +3,37 @@ with lib; let cfg = config.my.programs.tmux; + + tmux-sessionizer = pkgs.writeShellApplication { + name = "ts"; + runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd ]; + text = '' + #!/usr/bin/env bash + + if [[ $# -eq 1 ]]; then + selected=$1 + else + selected=$(fd -gH '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf) + fi + + if [[ -z $selected ]]; then + exit 0 + fi + + selected_name=$(basename "$selected" | tr . _) + + if ! tmux has-session -t="$selected_name" 2> /dev/null; then + tmux new-session -ds "$selected_name" -c "$selected" + fi + + if [[ -z ''${TMUX+x} ]]; then + tmux attach -t "$selected_name" + else + tmux switch-client -t "$selected_name" + fi + ''; + }; + in { options.my.programs.tmux = { @@ -12,22 +43,24 @@ in config = mkIf cfg.enable { my.shell.abbreviations.t = "tmux"; - home-manager.users.moritz.programs.tmux = { - enable = true; - clock24 = true; - customPaneNavigationAndResize = true; - keyMode = "vi"; - mouse = true; - newSession = true; - prefix = "C-Space"; - sensibleOnTop = false; - plugins = with pkgs.tmuxPlugins; [ - sensible - tmux-fzf - yank - ]; - }; + + home-manager.users.moritz.home.packages = [ tmux-sessionizer ]; home-manager.users.moritz.programs = { + tmux = { + enable = true; + clock24 = true; + customPaneNavigationAndResize = true; + keyMode = "vi"; + mouse = true; + newSession = true; + prefix = "C-Space"; + sensibleOnTop = false; + plugins = with pkgs.tmuxPlugins; [ + sensible + tmux-fzf + yank + ]; + }; fzf.tmux.enableShellIntegration = true; fish.interactiveShellInit = let @@ -39,11 +72,11 @@ in if ! fish_is_root_user && test "$TERM_PROGRAM" != 'vscode' && ${insideVariableMissing} if test -z $tmux_autostarted set -x tmux_autostarted true - tmux a + ts end end ''; + }; }; - } From 9e531f035a519001a07d253bb0d7de0d14b8cfeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 09:01:44 +0200 Subject: [PATCH 04/14] fix(desktop): move synology-drive-client --- modules/profiles/desktop.nix | 1 - modules/profiles/personal.nix | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index ef5a639..855c581 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -48,7 +48,6 @@ with lib; { pavucontrol stable.libreoffice # HACK to fix build error stable.signal-desktop - synology-drive-client texlive.combined.scheme-full thunderbird vlc diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index 6bf7167..80bb527 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -57,4 +57,8 @@ with lib; }; }; }; + + environment.systemPackages = with pkgs; [ + synology-drive-client + ]; } From 35c5d5ed4b146e63db8b69459cd7be2ddd62fee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 10:57:43 +0200 Subject: [PATCH 05/14] perf(tmux-sessionizer): improve fd command speed --- modules/programs/tmux.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index ef01b1f..e6ebf98 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -13,7 +13,7 @@ let if [[ $# -eq 1 ]]; then selected=$1 else - selected=$(fd -gH '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf) + selected=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf) fi if [[ -z $selected ]]; then From 0b7e18a3f599ff8e5dc463ee2452513c5a57e091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 11:23:28 +0200 Subject: [PATCH 06/14] feat(tmux-sessionizer): fuzzy match input --- modules/programs/tmux.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index e6ebf98..7d5677c 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -9,11 +9,15 @@ let runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd ]; text = '' #!/usr/bin/env bash + + options=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf --filter "''$*") - if [[ $# -eq 1 ]]; then - selected=$1 + if [[ -z $options ]]; then + return 1 + elif [[ $(wc -l <<< "$options") -eq 1 ]]; then + selected="$options" else - selected=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf) + echo "$options" | fzf --query="$*" fi if [[ -z $selected ]]; then From 202f7e4558b3d5adfa7be1f7e7cb3c274c3ed1e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 11:43:34 +0200 Subject: [PATCH 07/14] fix(tmux-sessionizer): unbound variable bug --- modules/programs/tmux.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index 7d5677c..aba543a 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -13,15 +13,15 @@ let options=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf --filter "''$*") if [[ -z $options ]]; then - return 1 + exit 1 elif [[ $(wc -l <<< "$options") -eq 1 ]]; then selected="$options" else - echo "$options" | fzf --query="$*" + selected=$(echo "$options" | fzf --query="$*") fi if [[ -z $selected ]]; then - exit 0 + exit 0 fi selected_name=$(basename "$selected" | tr . _) From 3c8e2c5244f9ed9b06ec1e3f27ced2760a236c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 14:29:11 +0200 Subject: [PATCH 08/14] feat(navi): detach from tmux --- modules/programs/navi/cheats/reptyr.cheat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/navi/cheats/reptyr.cheat b/modules/programs/navi/cheats/reptyr.cheat index 1ea2e55..5f04331 100644 --- a/modules/programs/navi/cheats/reptyr.cheat +++ b/modules/programs/navi/cheats/reptyr.cheat @@ -1,6 +1,6 @@ % tmux, reptyr # send background process to tmux -bg && disown && tmux new "$SHELL -c 'reptyr '" +bg && disown && tmux new -d "$SHELL -c 'reptyr '" $ process: ps x -eo pid,tty,stat | awk '$2 ~ /pts/' | awk '$3 ~ /T/' | cut -d" " -f1 --- --preview "ps -p {} -o cmd" From 7675360be08a70bc07af3dd78b9e321714e2e33a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Wed, 26 Apr 2023 14:29:53 +0200 Subject: [PATCH 09/14] refactor(nvim): inline variable --- modules/programs/nvim/plugins/nvim-autopairs.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/programs/nvim/plugins/nvim-autopairs.lua b/modules/programs/nvim/plugins/nvim-autopairs.lua index 540723f..c537bba 100644 --- a/modules/programs/nvim/plugins/nvim-autopairs.lua +++ b/modules/programs/nvim/plugins/nvim-autopairs.lua @@ -2,5 +2,4 @@ require("nvim-autopairs").setup() -- If you want insert `(` after select function or method item local cmp_autopairs = require("nvim-autopairs.completion.cmp") -local cmp = require("cmp") -cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) +require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done()) From b23382ee8e152e80f1b1fb56d665c5eb27b491a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Fri, 28 Apr 2023 08:11:44 +0200 Subject: [PATCH 10/14] feat(tmux): add keybinds option --- modules/profiles/base.nix | 13 +++++++++++++ modules/programs/tmux.nix | 28 ++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 6f2fb3f..e2d4b4b 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -64,6 +64,19 @@ in gpg.enable = true; navi.enable = true; tmux.enable = true; + tmux.keybinds = { + prefix = { + "-" = "split-window -v"; + "|" = "split-window -h"; + "C-l" = "send-keys C-l"; + "R" = "source-file $XDG_CONFIG_HOME/tmux/tmux.conf \\; display-message 'Reloaded tmux.conf'"; + }; + copy-mode-vi = { + "v" = "send -X begin-selection"; + "V" = "send -X select-line"; + "C-v" = "send -X rectangle-toggle"; + }; + }; }; }; diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index aba543a..00e91ed 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -9,7 +9,7 @@ let runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd ]; text = '' #!/usr/bin/env bash - + options=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf --filter "''$*") if [[ -z $options ]]; then @@ -43,6 +43,22 @@ in options.my.programs.tmux = { enable = mkEnableOption "tmux"; autoAttach = mkEnableOption "autoAttach"; + keybinds = mkOption { + type = with types; attrsOf (attrsOf string); + default = { }; + description = "Keybinds for tmux"; + example = literalExample '' + { + prefix = { + "-" = "split-window -v"; + "|" = "split-window -h"; + }; + copy-mode-vi = { + "v" = "send -X begin-selection"; + }; + } + ''; + }; }; config = mkIf cfg.enable { @@ -64,6 +80,15 @@ in tmux-fzf yank ]; + extraConfig = + let + mkKeybind = table: mapAttrsToList (keybind: value: "bind-key -T ${table} '${keybind}' ${value}"); + keybinds = flatten (mapAttrsToList mkKeybind cfg.keybinds); + in + '' + # Keybinds + ${concatStringsSep "\n" keybinds} + ''; }; fzf.tmux.enableShellIntegration = true; fish.interactiveShellInit = @@ -80,7 +105,6 @@ in end end ''; - }; }; } From 35ddc6a33ccc4e1335fe508a053f1f99e4341809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Fri, 28 Apr 2023 08:12:15 +0200 Subject: [PATCH 11/14] feat: add tmux-vim-navigator --- modules/programs/nvim/default.nix | 1 + modules/programs/nvim/keybinds.lua | 8 -------- modules/programs/tmux.nix | 1 + 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 101343f..092636b 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -88,6 +88,7 @@ in promise-async vim-fugitive vim-lion + vim-tmux-navigator ] ++ pluginsWithConfig; }; }; diff --git a/modules/programs/nvim/keybinds.lua b/modules/programs/nvim/keybinds.lua index 0556448..d792a37 100644 --- a/modules/programs/nvim/keybinds.lua +++ b/modules/programs/nvim/keybinds.lua @@ -26,14 +26,6 @@ require("which-key").register({ }, }) --- fast window move -require("which-key").register({ - [""] = { "h", "Move window left" }, - [""] = { "j", "Move window down" }, - [""] = { "k", "Move window up" }, - [""] = { "l", "Move window right" }, -}) - -- tab require("which-key").register({ [""] = { diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index 00e91ed..912f7ad 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -78,6 +78,7 @@ in plugins = with pkgs.tmuxPlugins; [ sensible tmux-fzf + vim-tmux-navigator yank ]; extraConfig = From 6fad257d5bf05e0e60b618872722b064897cff8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sun, 30 Apr 2023 18:35:46 +0200 Subject: [PATCH 12/14] fix(hyprland): make services more reliable --- modules/programs/hyprland/default.nix | 61 ++++++++++++++++----------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 5496b13..0be3db8 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -44,6 +44,7 @@ in wayland.windowManager.hyprland = { enable = true; package = hyprland; + recommendedEnvironment = true; extraConfig = import ./config.nix args; }; }; @@ -59,7 +60,7 @@ in # start using systemd service systemd = { enable = true; - target = "hyprland-session.target"; + target = "graphical-session.target"; }; settings = { @@ -87,11 +88,11 @@ in events = [ { event = "before-sleep"; - command = "${pkgs.swaylock-effects}/bin/swaylock -fF"; + command = "${pkgs.swaylock}/bin/swaylock -fF"; } { event = "lock"; - command = "${pkgs.swaylock-effects}/bin/swaylock -fF"; + command = "${pkgs.swaylock}/bin/swaylock -fF"; } ]; timeouts = [ @@ -105,10 +106,8 @@ in command = "${pkgs.systemd}/bin/loginctl lock-session"; } ]; + systemdTarget = "hyprland-session.target"; }; - - # start swayidle as part of hyprland, not sway - systemd.user.services.swayidle.Install.WantedBy = lib.mkForce [ "hyprland-session.target" ]; }; # adds pam module for swaylock @@ -116,27 +115,28 @@ in # start hyprpaper daemon using systemd unit (to set wallpaper) - systemd.user.services.hyprpaper = { - enable = true; - path = [ pkgs.hyprpaper ]; - wantedBy = [ "hyprland-session.target" ]; - after = [ "hyprland-session.target" ]; - script = "hyprpaper"; - }; - - # set hyprpaper conf (for setting initial background) - home-manager.users.moritz.xdg.configFile."hypr/hyprpaper.conf" = { - text = - let - setWallpaper = 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 - setWallpaper "/home/moritz/.config/wallpapers/a_short_walk.png"; - onChange = "${pkgs.systemd}/bin/systemctl restart --user hyprpaper.service"; - }; - + }; + in + { + enable = true; + partOf = [ "graphical-session.target" ]; + wantedBy = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper -c ${config}"; + RestartSec = "1s"; + Restart = "on-failure"; + }; + }; # only consider graphical-session.target started when hyprland-sesstion.target is reached systemd.user.targets.hyprland-session = { @@ -144,6 +144,17 @@ in before = [ "graphical-session.target" ]; }; + systemd.user.services.xdg-desktop-portal-hyprland = { + after = [ "hyprland-session.target" ]; + wantedBy = [ "hyprland-session.target" ]; + }; + + home-manager.users.moritz.systemd.user.services.nextcloud-client = { + Service = { + RestartSec = "1s"; + Restart = "on-failure"; + }; + }; # add user packages for wayland and hyprland in particular users.users.moritz.packages = with pkgs; [ @@ -206,7 +217,7 @@ in # dekstop portal (for screensharing) xdg.portal = { enable = true; - wlr.enable = true; + wlr.enable = mkForce false; extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; }; }; From f58c8dc6f8ea7ae5bc97f4778f857d9b6bdab576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 1 May 2023 14:11:51 +0200 Subject: [PATCH 13/14] feat(services): add synology drive module --- modules/profiles/personal.nix | 11 +++++----- modules/programs/bspwm/default.nix | 2 -- modules/programs/hyprland/config.nix | 1 - modules/programs/sway.nix | 1 - modules/services/default.nix | 3 ++- modules/services/synology-drive.nix | 32 ++++++++++++++++++++++++++++ 6 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 modules/services/synology-drive.nix diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index e7d9e6e..2b227c3 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -1,9 +1,12 @@ -{ lib, pkgs, ... }: +{ lib, ... }: with lib; { my = { - services.openconnect.enable = true; + services = { + openconnect.enable = true; + synology-drive.enable = true; + }; programs = { ssh.includeSecrets = mkDefault [ ../../secrets/ssh-home.age ]; git.signing = mkDefault true; @@ -57,8 +60,4 @@ with lib; }; }; }; - - environment.systemPackages = with pkgs; [ - synology-drive-client - ]; } diff --git a/modules/programs/bspwm/default.nix b/modules/programs/bspwm/default.nix index ba50a96..81e1a60 100644 --- a/modules/programs/bspwm/default.nix +++ b/modules/programs/bspwm/default.nix @@ -46,7 +46,6 @@ in }; startupPrograms = [ "randomWallpaper" - "${pkgs.synology-drive-client}/bin/synology-drive" ]; extraConfig = builtins.readFile ./bspwmrc; }; @@ -89,7 +88,6 @@ in feh pamixer playerctl - synology-drive-client ]; }; } diff --git a/modules/programs/hyprland/config.nix b/modules/programs/hyprland/config.nix index 71d512a..bbc63ef 100644 --- a/modules/programs/hyprland/config.nix +++ b/modules/programs/hyprland/config.nix @@ -224,6 +224,5 @@ in bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow - exec-once=synology-drive exec-once=randomWallpaper '' diff --git a/modules/programs/sway.nix b/modules/programs/sway.nix index f7ae605..162a1b9 100644 --- a/modules/programs/sway.nix +++ b/modules/programs/sway.nix @@ -71,7 +71,6 @@ in command = "systemctl --user restart waybar"; always = true; } - { command = "synology-drive"; } { command = "randomWallpaper"; } ]; }; diff --git a/modules/services/default.nix b/modules/services/default.nix index ac126e9..9cadf62 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -1,12 +1,13 @@ { imports = [ ./dunst.nix + ./gammastep.nix ./kdeconnect.nix ./mullvad.nix ./openconnect.nix ./picom.nix ./printing.nix - ./gammastep.nix + ./synology-drive.nix ./wireguard.nix ]; } diff --git a/modules/services/synology-drive.nix b/modules/services/synology-drive.nix new file mode 100644 index 0000000..f67b115 --- /dev/null +++ b/modules/services/synology-drive.nix @@ -0,0 +1,32 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.my.services.synology-drive; +in +{ + options.my.services.synology-drive = { + enable = mkEnableOption "synology-drive"; + package = mkOption { + type = types.package; + default = pkgs.synology-drive-client; + description = "The package to use for synology-drive"; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.synology-drive = { + after = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + wantedBy = [ "graphical-session.target" ]; + serviceConfig = { + ExitType = "cgroup"; + Restart = "on-failure"; + RestartSec = "1s"; + ExecStartPre = "${pkgs.coreutils}/bin/rm -rf %h/.SynologyDrive/SynologyDrive.app %h/.SynologyDrive/cloud-connect.pid"; + ExecStart = "${cfg.package}/bin/synology-drive"; + }; + }; + environment.systemPackages = [ cfg.package ]; + }; +} From cd70254085907639c4a11446f0ac06cec3e7db31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 1 May 2023 14:19:37 +0200 Subject: [PATCH 14/14] fix(synology-drive): start after network is online --- modules/services/synology-drive.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/synology-drive.nix b/modules/services/synology-drive.nix index f67b115..9ff8384 100644 --- a/modules/services/synology-drive.nix +++ b/modules/services/synology-drive.nix @@ -16,7 +16,7 @@ in config = mkIf cfg.enable { systemd.user.services.synology-drive = { - after = [ "graphical-session.target" ]; + after = [ "graphical-session.target" "network.target" ]; partOf = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ]; serviceConfig = {