diff --git a/machines/beagle/modules/kanidm.nix b/machines/beagle/modules/kanidm.nix index 12a5f3c..705e1d1 100644 --- a/machines/beagle/modules/kanidm.nix +++ b/machines/beagle/modules/kanidm.nix @@ -1,9 +1,15 @@ -{pkgs, ...}: { +{ + pkgs, + lib, + config, + ... +}: +{ services.kanidm = { enableServer = true; enableClient = true; - package = pkgs.kanidm_1_7; + package = pkgs.kanidm_1_8; serverSettings = { version = "2"; # Configuration file version. @@ -11,7 +17,7 @@ domain = "idm.peprolinbot.com"; bindaddress = "[::1]:8443"; ldapbindaddress = "[::]:636"; - http_client_address_info.x-forward-for = ["::1"]; + http_client_address_info.x-forward-for = [ "::1" ]; tls_chain = "/var/lib/kanidm/cert.pem"; tls_key = "/var/lib/kanidm/key.pem"; }; @@ -27,6 +33,43 @@ chown kanidm:kanidm /var/lib/kanidm/{cert,key,chain}.pem chmod 400 /var/lib/kanidm/{cert,key,chain}.pem ''; - reloadServices = ["kanidm.service"]; + reloadServices = [ "kanidm.service" ]; + }; + + clan.core.state.kanidm = { + folders = [ "/var/backup/kanidm" ]; + + preBackupScript = '' + export PATH=${ + lib.makeBinPath [ + pkgs.coreutils + config.services.kanidm.package + ] + } + + mkdir -p /var/backup/kanidm + + kanidmd database backup /var/backup/kanidm/backup.json + ''; + + postRestoreScript = '' + export PATH=${ + lib.makeBinPath [ + config.systemd.package + pkgs.coreutils + config.services.kanidm.package + ] + } + + service_status="$(systemctl is-active kanidm)" + + systemctl stop kanidm + + kanidmd database restore /var/backup/kanidm/backup.json + + if [ "$service_status" = "active" ]; then + systemctl start kanidm + fi + ''; }; } diff --git a/machines/beagle/modules/matrix.nix b/machines/beagle/modules/matrix.nix index 016af62..d1254db 100644 --- a/machines/beagle/modules/matrix.nix +++ b/machines/beagle/modules/matrix.nix @@ -1,40 +1,79 @@ { config, pkgs, + lib, ... }: { - services.postgresql = - let - databases = [ - "matrix-synapse" - "mautrix-signal" - "mautrix-whatsapp" - "mautrix-telegram" - ]; - in - { - enable = true; - - ensureDatabases = databases; - # Create a user for each database - ensureUsers = map (id: { - name = id; - ensureDBOwnership = true; - }) databases; - - initialScript = pkgs.writeText "backend-initScript" '' - CREATE ROLE "matrix-synapse" WITH LOGIN; - CREATE DATABASE "matrix-synapse" - WITH ENCODING = 'UTF8' - TEMPLATE = template0 - OWNER = "matrix-synapse" - LC_COLLATE = 'C' - LC_CTYPE = 'C'; - ''; + clan.core.postgresql = { + enable = true; + users = { + matrix-synapse = { }; + mautrix-signal = { }; + mautrix-whatsapp = { }; + mautrix-telegram = { }; }; + databases = { + matrix-synapse = { + create.options = { + ENCODING = "UTF8"; + TEMPLATE = "template0"; + OWNER = "matrix-synapse"; + LC_COLLATE = "C"; + LC_CTYPE = "C"; + }; + restore.stopOnRestore = [ "matrix-synapse" ]; + }; + mautrix-signal = { + restore.stopOnRestore = [ "mautrix-signal" ]; + }; + mautrix-whatsapp = { + restore.stopOnRestore = [ "mautrix-whatsapp" ]; + }; + mautrix-telegram = { + restore.stopOnRestore = [ "mautrix-telegram" ]; + }; + }; + }; + + clan.core.state.matrix = { + folders = [ "/var/backup/matrix-synapse" ]; + + preBackupScript = '' + export PATH=${ + lib.makeBinPath [ + pkgs.coreutils + pkgs.rsync + ] + } + mkdir -p /var/backup/matrix-synapse + + rsync -avH --delete --numeric-ids --include='homeserver.signing.key' --include='media_store' --exclude='media_store/remote_*' --exclude='media_store/url_cache*' /var/lib/matrix-synapse /var/backup/matrix-synapse/ + ''; + + postRestoreScript = '' + export PATH=${ + lib.makeBinPath [ + config.systemd.package + pkgs.coreutils + pkgs.rsync + ] + } + + service_status="$(systemctl is-active matrix-synapse)" + + systemctl stop matrix-synapse + + rsync -avH --delete --numeric-ids /var/backup/matrix-synapse/ /var/lib/matrix-synapse/ + + if [ "$service_status" = "active" ]; then + systemctl start matrix-synapse + fi + ''; + }; + services.matrix-synapse = { enable = true; settings = { diff --git a/machines/beagle/modules/reverse-proxy.nix b/machines/beagle/modules/reverse-proxy.nix index 85521f6..fea3844 100644 --- a/machines/beagle/modules/reverse-proxy.nix +++ b/machines/beagle/modules/reverse-proxy.nix @@ -20,6 +20,15 @@ recommendedTlsSettings = true; virtualHosts = { + "_" = { + default = true; + rejectSSL = true; # Avoid serving a certificate + + locations."/" = { + return = "404"; + }; + }; + "idm.peprolinbot.com" = { forceSSL = true; enableACME = true; diff --git a/machines/frues-pc/configuration.nix b/machines/frues-pc/configuration.nix index 3c08496..910cfa3 100644 --- a/machines/frues-pc/configuration.nix +++ b/machines/frues-pc/configuration.nix @@ -22,6 +22,17 @@ services.sunshine.autoStart = true; + programs.steam.gamescopeSession = { + enable = true; + args = [ + "--prefer-output" + "DP-1,*" + "--rt" + "--adaptive-sync" + "--steam" + ]; + }; + home-manager.users.pedro.wayland.windowManager.hyprland.settings = { monitor = [ "DP-2, 1920x1080@60, 0x0, 1" diff --git a/modules/base.nix b/modules/base.nix index d13d10f..215a874 100644 --- a/modules/base.nix +++ b/modules/base.nix @@ -11,4 +11,7 @@ dates = "weekly"; options = "--delete-older-than 30d"; }; + + security.polkit.enable = true; + security.sudo.enable = true; } diff --git a/modules/desktop/gaming.nix b/modules/desktop/gaming.nix index 29e7639..9900999 100644 --- a/modules/desktop/gaming.nix +++ b/modules/desktop/gaming.nix @@ -1,12 +1,16 @@ -{ pkgs, lib, ... }: +{ lib, ... }: { programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = false; + gamescopeSession.enable = true; }; - environment.systemPackages = [ pkgs.gamescope ]; + programs.gamescope = { + enable = true; + capSysNice = true; + }; programs.gamemode.enable = true; diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index d29e3d3..ec31e9e 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -1,10 +1,10 @@ { - pkgs, lib, config, ... -}: { - imports = [./regreet.nix]; +}: +{ + imports = [ ./regreet.nix ]; options = { programs.hyprland.autoLogin.username = lib.mkOption { @@ -21,19 +21,10 @@ withUWSM = true; }; - xdg.portal = { - enable = true; - wlr.enable = true; - xdgOpenUsePortal = true; - extraPortals = [ - pkgs.xdg-desktop-portal-hyprland - pkgs.xdg-desktop-portal-gtk - ]; - }; - - services.greetd.settings.initial_session = let - username = config.programs.hyprland.autoLogin.username; - in + services.greetd.settings.initial_session = + let + username = config.programs.hyprland.autoLogin.username; + in lib.mkIf (!isNull username) { command = "uwsm start hyprland-uwsm.desktop"; user = username; diff --git a/users/pedro/home-configuration/hyprland/hyprland.nix b/users/pedro/home-configuration/hyprland/hyprland.nix index 6c54725..480876f 100644 --- a/users/pedro/home-configuration/hyprland/hyprland.nix +++ b/users/pedro/home-configuration/hyprland/hyprland.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ wayland.windowManager.hyprland = { enable = true; xwayland = { @@ -10,119 +11,120 @@ pkgs.hyprlandPlugins.hyprgrass ]; - settings = let - app_menu = "${pkgs.fuzzel}/bin/fuzzel"; - in { - # Autostart - exec-once = [ - "uwsm app -- nm-applet" - "uwsm app -- ${pkgs.wl-clip-persist}/bin/persist --clipboard regular" - "uwsm app -- bash -c 'if [ ! -f ~/.config/hypr/wallpaper.png ]; then wall-change ~/.config/hypr/default_wallpaper.png; fi'" - "uwsm app -- ${pkgs.swaybg}/bin/swaybg -m fill -i ~/.config/hypr/wallpaper.png &" - "uwsm app -- ${pkgs.poweralertd}/bin/poweralertd" - "uwsm app -- waybar" - "uwsm app -- element-desktop --hidden" - ]; - - input = { - kb_layout = "es,us"; - kb_options = "grp:alt_caps_toggle"; - numlock_by_default = true; - follow_mouse = 1; - sensitivity = 0; - touchpad = { - natural_scroll = true; - }; - }; - - general = { - "$mainMod" = "SUPER"; - layout = "dwindle"; - gaps_in = 0; - gaps_out = 0; - border_size = 2; - no_border_on_floating = false; - }; - - misc = { - disable_autoreload = true; - disable_hyprland_logo = true; - always_follow_on_dnd = true; - layers_hog_keyboard_focus = true; - animate_manual_resizes = false; - enable_swallow = true; - focus_on_activate = true; - }; - - dwindle = { - force_split = 0; - special_scale_factor = 1.0; - split_width_multiplier = 1.0; - use_active_for_splits = true; - pseudotile = true; - preserve_split = true; - }; - - master = { - new_status = "master"; - special_scale_factor = 1; - }; - - decoration = { - rounding = 0; - - blur = { - enabled = true; - size = 1; - passes = 1; - brightness = 1; - contrast = 1.400; - ignore_opacity = true; - noise = 0; - new_optimizations = true; - xray = false; - }; - - shadow = { - enabled = true; - - ignore_window = true; - offset = "0 2"; - range = 20; - render_power = 3; - }; - }; - - animations = { - enabled = true; - - bezier = [ - "fluent_decel, 0, 0.2, 0.4, 1" - "easeOutCirc, 0, 0.55, 0.45, 1" - "easeOutCubic, 0.33, 1, 0.68, 1" - "easeinoutsine, 0.37, 0, 0.63, 1" + settings = + let + app_menu = "${pkgs.fuzzel}/bin/fuzzel"; + in + { + # Autostart + exec-once = [ + "uwsm app -- nm-applet" + "uwsm app -- ${pkgs.wl-clip-persist}/bin/persist --clipboard regular" + "uwsm app -- bash -c 'if [ ! -f ~/.config/hypr/wallpaper.png ]; then wall-change ~/.config/hypr/default_wallpaper.png; fi'" + "uwsm app -- ${pkgs.swaybg}/bin/swaybg -m fill -i ~/.config/hypr/wallpaper.png &" + "uwsm app -- ${pkgs.poweralertd}/bin/poweralertd" + "uwsm app -- waybar" + "uwsm app -- element-desktop --hidden" ]; - animation = [ - # Windows - "windowsIn, 1, 3, easeOutCubic, popin 30%" # window open - "windowsOut, 1, 3, fluent_decel, popin 70%" # window close. - "windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing. + input = { + kb_layout = "es,us"; + kb_options = "grp:alt_caps_toggle"; + numlock_by_default = true; + follow_mouse = 1; + sensitivity = 0; + touchpad = { + natural_scroll = true; + }; + }; - # Fade - "fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows - "fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows - "fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity - "fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows - "fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows - "border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed - "borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop - "workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert - ]; - }; + general = { + "$mainMod" = "SUPER"; + layout = "dwindle"; + gaps_in = 0; + gaps_out = 0; + border_size = 2; + no_border_on_floating = false; + }; - bind = - [ + misc = { + disable_autoreload = true; + disable_hyprland_logo = true; + always_follow_on_dnd = true; + layers_hog_keyboard_focus = true; + animate_manual_resizes = false; + enable_swallow = true; + focus_on_activate = true; + }; + + dwindle = { + force_split = 0; + special_scale_factor = 1.0; + split_width_multiplier = 1.0; + use_active_for_splits = true; + pseudotile = true; + preserve_split = true; + }; + + master = { + new_status = "master"; + special_scale_factor = 1; + }; + + decoration = { + rounding = 0; + + blur = { + enabled = true; + size = 1; + passes = 1; + brightness = 1; + contrast = 1.400; + ignore_opacity = true; + noise = 0; + new_optimizations = true; + xray = false; + }; + + shadow = { + enabled = true; + + ignore_window = true; + offset = "0 2"; + range = 20; + render_power = 3; + }; + }; + + animations = { + enabled = true; + + bezier = [ + "fluent_decel, 0, 0.2, 0.4, 1" + "easeOutCirc, 0, 0.55, 0.45, 1" + "easeOutCubic, 0.33, 1, 0.68, 1" + "easeinoutsine, 0.37, 0, 0.63, 1" + ]; + + animation = [ + # Windows + "windowsIn, 1, 3, easeOutCubic, popin 30%" # window open + "windowsOut, 1, 3, fluent_decel, popin 70%" # window close. + "windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing. + + # Fade + "fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows + "fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows + "fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity + "fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows + "fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows + "border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed + "borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop + "workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert + ]; + }; + + bind = [ # show keybinds list "$mainMod, F1, exec, show-keybinds" @@ -160,17 +162,19 @@ # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} builtins.concatLists ( builtins.genList ( - x: let - ws = let - c = (x + 1) / 10; - in + x: + let + ws = + let + c = (x + 1) / 10; + in builtins.toString (x + 1 - (c * 10)); - in [ + in + [ "$mainMod, ${ws}, workspace, ${toString (x + 1)}" "$mainMod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}" ] - ) - 10 + ) 10 ) ) ++ [ @@ -184,24 +188,40 @@ # Window focus, movement and control builtins.concatLists ( let - keys = ["H" "L" "K" "J"]; - directions = ["l" "r" "u" "d"]; + keys = [ + "H" + "L" + "K" + "J" + ]; + directions = [ + "l" + "r" + "u" + "d" + ]; resize = toString 80; # Change this to change how much a window resizes each keypress - resize_list = ["-${resize} 0" "${resize} 0" "0 -${resize}" "0 ${resize}"]; + resize_list = [ + "-${resize} 0" + "${resize} 0" + "0 -${resize}" + "0 ${resize}" + ]; in - builtins.genList ( - x: let - k = builtins.elemAt keys x; - d = builtins.elemAt directions x; - r = builtins.elemAt resize_list x; - in [ - "$mainMod, ${k}, movefocus, ${d}" - "$mainMod SHIFT, ${k}, movewindow, ${d}" - "$mainMod CTRL, ${k}, resizeactive, ${r}" - "$mainMod ALT, ${k}, moveactive, ${r}" - ] - ) - 4 + builtins.genList ( + x: + let + k = builtins.elemAt keys x; + d = builtins.elemAt directions x; + r = builtins.elemAt resize_list x; + in + [ + "$mainMod, ${k}, movefocus, ${d}" + "$mainMod SHIFT, ${k}, movewindow, ${d}" + "$mainMod CTRL, ${k}, resizeactive, ${r}" + "$mainMod ALT, ${k}, moveactive, ${r}" + ] + ) 4 ) ) ++ [ @@ -218,172 +238,167 @@ "$mainMod, V, exec, cliphist list | fuzzel --dmenu --prompt '📋 ' | cliphist decode | wl-copy" ]; - # Bindings that work when locked - bindl = [ - # media and volume controls - ",XF86AudioRaiseVolume,exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ && wp-vol" - ",XF86AudioLowerVolume,exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && wp-vol" - ",XF86AudioMute,exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - ",XF86AudioStop, exec, playerctl stop" - ]; + # Bindings that work when locked + bindl = [ + # media and volume controls + ",XF86AudioRaiseVolume,exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ && wp-vol" + ",XF86AudioLowerVolume,exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && wp-vol" + ",XF86AudioMute,exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + ",XF86AudioStop, exec, playerctl stop" + ]; - # mouse binding - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; + # mouse binding + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; - # windowrule - windowrule = [ - "float,class:vimiv" - "center,class:vimiv" - "float,class:mpv" - "center,class:mpv" - "size 1200 725,class:mpv" - "float,title:^(float_kitty)$" - "center,title:^(float_kitty)$" - "size 950 600,title:^(float_kitty)$" - "tile, class:neovide" - "idleinhibit focus,class:mpv" - "float,class:udiskie" - "float,title:^(Volume Control)$" - "float,title:^(Firefox — Sharing Indicator)$" - "move 0 0,title:^(Firefox — Sharing Indicator)$" - "size 700 450,title:^(Volume Control)$" - "move 40 55%,title:^(Volume Control)$" - "float, title:^(Picture-in-Picture)$" - "opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$" - "pin, title:^(Picture-in-Picture)$" - "opacity 1.0 override 1.0 override, class:(Aseprite)" - "opacity 1.0 override 1.0 override, class:(Unity)" - "idleinhibit focus, class:^(mpv)$" - "idleinhibit fullscreen, class:^(firefox)$" - "float,class:^(zenity)$" - "center,class:^(zenity)$" - "size 850 500,class:^(zenity)$" - "float,class:^(pavucontrol)$" - "float,class:^(.sameboy-wrapped)$" - "float,class:^(file_progress)$" - "float,class:^(confirm)$" - "float,class:^(dialog)$" - "float,class:^(download)$" - "float,class:^(notification)$" - "float,class:^(error)$" - "float,class:^(confirmreset)$" - "float,title:^(Open File)$" - "float,title:^(branchdialog)$" - "float,title:^(Confirm to replace files)$" - "float,title:^(File Operation Progress)$" + gesture = [ + "3, horizontal, workspace" + ]; - "opacity 0.0 override,class:^(xwaylandvideobridge)$" - "noanim,class:^(xwaylandvideobridge)$" - "noinitialfocus,class:^(xwaylandvideobridge)$" - "maxsize 1 1,class:^(xwaylandvideobridge)$" - "noblur,class:^(xwaylandvideobridge)$" - ]; + # windowrule + windowrule = [ + "float,class:vimiv" + "center,class:vimiv" + "float,class:mpv" + "center,class:mpv" + "size 1200 725,class:mpv" + "float,title:^(float_kitty)$" + "center,title:^(float_kitty)$" + "size 950 600,title:^(float_kitty)$" + "tile, class:neovide" + "idleinhibit focus,class:mpv" + "float,class:udiskie" + "float,title:^(Volume Control)$" + "float,title:^(Firefox — Sharing Indicator)$" + "move 0 0,title:^(Firefox — Sharing Indicator)$" + "size 700 450,title:^(Volume Control)$" + "move 40 55%,title:^(Volume Control)$" + "float, title:^(Picture-in-Picture)$" + "opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$" + "pin, title:^(Picture-in-Picture)$" + "opacity 1.0 override 1.0 override, class:(Aseprite)" + "opacity 1.0 override 1.0 override, class:(Unity)" + "idleinhibit focus, class:^(mpv)$" + "idleinhibit fullscreen, class:^(firefox)$" + "float,class:^(zenity)$" + "center,class:^(zenity)$" + "size 850 500,class:^(zenity)$" + "float,class:^(pavucontrol)$" + "float,class:^(.sameboy-wrapped)$" + "float,class:^(file_progress)$" + "float,class:^(confirm)$" + "float,class:^(dialog)$" + "float,class:^(download)$" + "float,class:^(notification)$" + "float,class:^(error)$" + "float,class:^(confirmreset)$" + "float,title:^(Open File)$" + "float,title:^(branchdialog)$" + "float,title:^(Confirm to replace files)$" + "float,title:^(File Operation Progress)$" - monitor = [ - ",preferred,auto,1" - ]; + "opacity 0.0 override,class:^(xwaylandvideobridge)$" + "noanim,class:^(xwaylandvideobridge)$" + "noinitialfocus,class:^(xwaylandvideobridge)$" + "maxsize 1 1,class:^(xwaylandvideobridge)$" + "noblur,class:^(xwaylandvideobridge)$" + ]; - xwayland = { - force_zero_scaling = true; - }; + monitor = [ + ",preferred,auto,1" + ]; - gestures = { - workspace_swipe = true; - workspace_swipe_direction_lock = false; - }; - ecosystem = { - no_update_news = true; - no_donation_nag = true; - }; - plugin = { - touch_gestures = { - # The default sensitivity is probably too low on tablet screens, - # I recommend turning it up to 4.0 - sensitivity = 5.0; + xwayland = { + force_zero_scaling = true; + }; - # must be >= 3 - workspace_swipe_fingers = 3; + ecosystem = { + no_update_news = true; + no_donation_nag = true; + }; - # switching workspaces by swiping from an edge, this is separate from workspace_swipe_fingers - # and can be used at the same time - # possible values: l, r, u, or d - # to disable it set it to anything else - workspace_swipe_edge = "no"; + plugin = { + touch_gestures = { + # The default sensitivity is probably too low on tablet screens, + # I recommend turning it up to 4.0 + sensitivity = 5.0; - # in milliseconds - long_press_delay = 400; + # must be >= 3 + workspace_swipe_fingers = 3; - # resize windows by long-pressing on window borders and gaps. - # If general:resize_on_border is enabled, general:extend_border_grab_area is used for floating - # windows - resize_on_border_long_press = true; + # switching workspaces by swiping from an edge, this is separate from workspace_swipe_fingers + # and can be used at the same time + # possible values: l, r, u, or d + # to disable it set it to anything else + workspace_swipe_edge = "no"; - # in pixels, the distance from the edge that is considered an edge - edge_margin = 20; + # in milliseconds + long_press_delay = 400; - # emulates touchpad swipes when swiping in a direction that does not trigger workspace swipe. - # ONLY triggers when finger count is equal to workspace_swipe_fingers - # - # might be removed in the future in favor of event hooks - emulate_touchpad_swipe = false; + # resize windows by long-pressing on window borders and gaps. + # If general:resize_on_border is enabled, general:extend_border_grab_area is used for floating + # windows + resize_on_border_long_press = true; - hyprgrass-bind = [ - # swipe left from right edge - ", edge:r:l, exec, playerctl next" + # in pixels, the distance from the edge that is considered an edge + edge_margin = 20; - # swipe right from left edge - ", edge:l:r, exec, playerctl previous" + # emulates touchpad swipes when swiping in a direction that does not trigger workspace swipe. + # ONLY triggers when finger count is equal to workspace_swipe_fingers + # + # might be removed in the future in favor of event hooks + emulate_touchpad_swipe = false; - # swipe up from bottom edge - ", edge:d:u, exec, pkill -SIGUSR2 wvkbd" # Show wvkbd + hyprgrass-bind = [ + # swipe left from right edge + ", edge:r:l, exec, playerctl next" - # swipe down to bottom edge - ", edge:u:d, exec, pkill -SIGUSR1 wvkbd" # Hide wvkbd + # swipe right from left edge + ", edge:l:r, exec, playerctl previous" - # tap with 3 fingers - ", tap:4, exec, pkill -SIGRTMIN wvkbd" # Toggles wvkbd + # swipe up from bottom edge + ", edge:d:u, exec, pkill -SIGUSR2 wvkbd" # Show wvkbd - # swipe up from left edge - ", edge:l:u, exec, pamixer -i 4" + # swipe down to bottom edge + ", edge:u:d, exec, pkill -SIGUSR1 wvkbd" # Hide wvkbd - # swipe down from left edge - ", edge:l:d, exec, pamixer -d 4" + # tap with 3 fingers + ", tap:4, exec, pkill -SIGRTMIN wvkbd" # Toggles wvkbd - # swipe up with 3 fingers - ", swipe:3:u, exec, ${pkgs.nwg-drawer}/bin/nwg-drawer" + # swipe up from left edge + ", edge:l:u, exec, pamixer -i 4" - # swipe down with 3 fingers - ", swipe:3:d, killactive" + # swipe down from left edge + ", edge:l:d, exec, pamixer -d 4" - # swipe diagonally left and down with 3 fingers - ", swipe:3:ld, exec, uwsm app -- librewolf" + # swipe up with 3 fingers + ", swipe:3:u, exec, ${pkgs.nwg-drawer}/bin/nwg-drawer" - # swipe diagonally right and down with 3 fingers - ", swipe:3:rd, exec, uwsm app -- xournalpp" + # swipe down with 3 fingers + ", swipe:3:d, killactive" - # tap with 3 fingers - ", tap:3, exec, playerctl play-pause" - ]; + # swipe diagonally left and down with 3 fingers + ", swipe:3:ld, exec, uwsm app -- librewolf" - # longpress can trigger mouse binds: - hyprgrass-bindm = [ - ", longpress:2, movewindow" - ", longpress:3, resizewindow" - ]; + # swipe diagonally right and down with 3 fingers + ", swipe:3:rd, exec, uwsm app -- xournalpp" - experimental = { - # send proper cancel events to windows instead of hacky touch_up events, - # NOT recommended as it crashed a few times, once it's stabilized I'll make it the default - send_cancel = 0; + # tap with 3 fingers + ", tap:3, exec, playerctl play-pause" + ]; + + # longpress can trigger mouse binds: + hyprgrass-bindm = [ + ", longpress:2, movewindow" + ", longpress:3, resizewindow" + ]; }; }; }; - }; }; } diff --git a/users/pedro/home-configuration/hyprland/variables.nix b/users/pedro/home-configuration/hyprland/variables.nix index bb68b39..138683b 100644 --- a/users/pedro/home-configuration/hyprland/variables.nix +++ b/users/pedro/home-configuration/hyprland/variables.nix @@ -1,15 +1,9 @@ -{lib, ...}: let +{ lib, ... }: +let variables = { NIXOS_OZONE_WL = 1; ELECTRON_OZONE_PLATFORM_HINT = "auto"; - __GL_GSYNC_ALLOWED = 0; - __GL_VRR_ALLOWED = 0; - _JAVA_AWT_WM_NONEREPARENTING = 1; - DISABLE_QT5_COMPAT = 0; GDK_BACKEND = "wayland,x11,*"; - ANKI_WAYLAND = 1; - DIRENV_LOG_FORMAT = ""; - WLR_DRM_NO_ATOMIC = 1; QT_AUTO_SCREEN_SCALE_FACTOR = 1; QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; QT_QPA_PLATFORM = "wayland;xcb"; @@ -19,13 +13,11 @@ SDL_VIDEODRIVER = "wayland"; CLUTTER_BACKEND = "wayland"; }; -in { +in +{ home.sessionVariables = variables; xdg.configFile."uwsm/env".text = builtins.concatStringsSep "\n" ( - lib.attrsets.mapAttrsToList ( - name: value: "export ${name}=\"${builtins.toString value}\"" - ) - variables + lib.attrsets.mapAttrsToList (name: value: "export ${name}=\"${builtins.toString value}\"") variables ); } diff --git a/vars/per-machine/frues-pc/yggdrasil/address/value b/vars/per-machine/frues-pc/yggdrasil/address/value new file mode 100644 index 0000000..98b5315 --- /dev/null +++ b/vars/per-machine/frues-pc/yggdrasil/address/value @@ -0,0 +1 @@ +200:b7b4:1291:e536:e66d:3a7e:6df1:cecd \ No newline at end of file diff --git a/vars/per-machine/frues-pc/yggdrasil/privateKey/machines/frues-pc b/vars/per-machine/frues-pc/yggdrasil/privateKey/machines/frues-pc new file mode 120000 index 0000000..52e22d8 --- /dev/null +++ b/vars/per-machine/frues-pc/yggdrasil/privateKey/machines/frues-pc @@ -0,0 +1 @@ +../../../../../../sops/machines/frues-pc \ No newline at end of file diff --git a/vars/per-machine/frues-pc/yggdrasil/privateKey/secret b/vars/per-machine/frues-pc/yggdrasil/privateKey/secret new file mode 100644 index 0000000..3285cc2 --- /dev/null +++ b/vars/per-machine/frues-pc/yggdrasil/privateKey/secret @@ -0,0 +1,22 @@ +{ + "data": "ENC[AES256_GCM,data:cb6DFoAjunhjqGJ6mptyF8Gq0sRxwk/5DX7yXaS+FOzSN+PdCbXlNhRp4dNfu3bl4OxRF/RxMvkzdadkwkpjct8LsZnTjUwWVdLezqCelNt+LzSBRdrz2+J9n5UrTUR2XK/fdz89gWHK6rYVHt1rXGKnM4pDPXA=,iv:1doVMX6zSp58tTwxPeo1ySXX5u1Rv7uuEpnZTXUOWKU=,tag:d/zk+ISsok2r+M2x1rZL9g==,type:str]", + "sops": { + "age": [ + { + "recipient": "age17pu3mvhwlvlffhvu2p4ut4wx60j6srdmjtk3889t9cs7jp60ws5qsc8myu", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4MFNtZmlaQm5VSGdVRWVS\nT1prRHZvLzNRMDBnNm02VEtPRi82blF5SXpJCjNhV2lheEpkRmVaZGF6Rm9NU0px\nTVU1VTE2TGE0V0tPdmhtY0ZrbXc3VFkKLS0tIDlYWittOWUyQkt1ZFRtNFhMSmti\nMlE4L2VINGJsYXhyeHRnUUJpQS9TbVEKvGTkpH6jFHrLIPXr1xIUfeWD7o8WrpVg\n81a3PKHw5PgXuOFldkOk5LW7iUI+zSYWW27n+19yM+Ko7JnVgRkt6Q==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1lrg2j5a90yy4ccj4c8yrmkk4rx029t5hfh6n5a2nte77pwlspp8qvgmtmg", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqN3RveSthSS91UjQwSzVs\nRm9lS3lJelNmQWQyU1NyN1FVeTNPckloRUNFCmluR1VmOUJCbi9zaE93Y2EzQVdj\nVGFZRWgySjNqak5nM0M1VTY1UzlsWFkKLS0tIEhmQjZkOFp1bTNNUHVYNG9nd1VT\nK0JQd0k1Y0toZHN0ZkN1T2JkekdEcVUK5Cmb18yJDG5IXN2u5SDvdf6h7CepVzo1\nbBc5SrF9p9ZtwCqY2xrgz92MumHf955qS1ZYc5Qz/ZmqDdh+K06ZHQ==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1r2sw9uncvkqtklypw4rttufhw86lhhqrghed8l2kda6hdrd9ypyqm7y863", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0UnIwNVZrK1hDN1RVeDcw\naW1FSWtaNC84ZlZGRFJqbFNYbndrd1pBMTBvCmVVaUlCaGJyYWNGeGRPUEtVRHll\nVVcwbW5sVXI3bGVOZ1d5L0tIU2tQdzgKLS0tICtzRkgwL0lIZ2VoRlhaZVRuVCtr\ndVdZWmROL0Fkc3UzRHI4N0M3VVRvVU0KCavSqo9UgDRrOMpL/aVevsXyNZmlRmm1\nnpikKEEB4aJuYLFxg/7tUukb28kOKhJIQfG5nS2lxH5YIfwzxEvF6w==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2025-12-02T14:01:20Z", + "mac": "ENC[AES256_GCM,data:qWJswiFDqT1ma7EmdokcelESKiW8lvf6E49XnVDEdoKEa2EgEiyBy9HuKsbc8RCnHxrVHAoksa0bRFOeaJFhy30ETmUYlFT5oVU94p3bzCXJ+4gCA7jTx+Uw6qaHU6LDNVDQrEULHJ5jsX3fHNhCd+iuNo+ukCj7DYMLQftZ7W4=,iv:ioY0NyoTokhUa91tbZ71CktCEKZBZdHjsGHe7/HbQMk=,tag:LuwZZMyOVA8xSpThqL51Xg==,type:str]", + "version": "3.11.0" + } +} diff --git a/vars/per-machine/frues-pc/yggdrasil/privateKey/users/pedro b/vars/per-machine/frues-pc/yggdrasil/privateKey/users/pedro new file mode 120000 index 0000000..ae0c694 --- /dev/null +++ b/vars/per-machine/frues-pc/yggdrasil/privateKey/users/pedro @@ -0,0 +1 @@ +../../../../../../sops/users/pedro \ No newline at end of file diff --git a/vars/per-machine/frues-pc/yggdrasil/publicKey/value b/vars/per-machine/frues-pc/yggdrasil/publicKey/value new file mode 100644 index 0000000..5a45f74 --- /dev/null +++ b/vars/per-machine/frues-pc/yggdrasil/publicKey/value @@ -0,0 +1,3 @@ +-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEApCX2tw1kjMliwMkHGJkF9ESroWlA2sZWbm+TuZ9z9t8= +-----END PUBLIC KEY----- diff --git a/vars/per-machine/frues-port/yggdrasil/address/value b/vars/per-machine/frues-port/yggdrasil/address/value new file mode 100644 index 0000000..9d50bd2 --- /dev/null +++ b/vars/per-machine/frues-port/yggdrasil/address/value @@ -0,0 +1 @@ +208:59de:77d4:a7f8:8b17:362a:1e2a:4f4a \ No newline at end of file diff --git a/vars/per-machine/frues-port/yggdrasil/privateKey/machines/frues-port b/vars/per-machine/frues-port/yggdrasil/privateKey/machines/frues-port new file mode 120000 index 0000000..a686d31 --- /dev/null +++ b/vars/per-machine/frues-port/yggdrasil/privateKey/machines/frues-port @@ -0,0 +1 @@ +../../../../../../sops/machines/frues-port \ No newline at end of file diff --git a/vars/per-machine/frues-port/yggdrasil/privateKey/secret b/vars/per-machine/frues-port/yggdrasil/privateKey/secret new file mode 100644 index 0000000..03a3c72 --- /dev/null +++ b/vars/per-machine/frues-port/yggdrasil/privateKey/secret @@ -0,0 +1,22 @@ +{ + "data": "ENC[AES256_GCM,data:s66xsaza39EBU1zKPmlt2+iYz6mRaNQ8mNRiii3IRnM9cwy6fcVY6f2tzng9GchmP81yXf476uWUehTozd/WOFX9RiZ+8kc9zYBn9OEAxkIYBdjGAi5H7wWuIAQbhULlwwv07G8lbV0MKKLx9RV1ZkvaR/QHaIs=,iv:QGhBBGmbfEaLKXw097Xj2afEF8x43g32z4ikQc8tDHo=,tag:VtCDc141e1TqjcILlFvVBw==,type:str]", + "sops": { + "age": [ + { + "recipient": "age19grcgxeu95xnjtpaakcek36rjd9kzr5aqlak5m5gzmstwayglpmqyvhl87", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLdFBCMHcwOWhVeFJGM0h0\nTEM1alNkK0o5ZkV1eEM2Ukl6Z2dsZ0VFRDNJCldlWksvbFJ4YXYwMy9SUzBrOWlh\nZzhNR3R3VEFIMzlkQW56eWQ5ZEUrY0UKLS0tIHR4eTV0ZnlaRFJ3Q2cwZ28vaGhS\na0lUYVA3NG56d2JyUHY5SG0rOW1XQTgKthAyDUrc2VVqo1eQErxQgPV6FGcZsIPe\nbFtKVytyAeYdvTo3uv4jLT+qaVux9wS4OdKC2ePmGDJVm9LaKnqtxQ==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1lrg2j5a90yy4ccj4c8yrmkk4rx029t5hfh6n5a2nte77pwlspp8qvgmtmg", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGWWZ5OGhHODN2UDVJWmRU\nMTNpeW1XdlZXUjViWGJpdWxGNW80eUg2NG40Cmt3SEVyd1NJMHRMQ0JPRm0rTWM5\neTB0K0tqVXE5RkNrNk1rN1B2VU5yaWcKLS0tIGtUZG9LTzZPOER5dC85M1ZPRnlv\na3J0dThRb01xWE1HWVRsM2lTN0Jjd2sK2IABW8vQ2AtqAueEWdkkH5qFEUGEg+s+\n24tBn0FtSMGZtWFxSqYkXPYZ87e8dUMoxjLgsVwWFW+dZ1fXP0EYvg==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1r2sw9uncvkqtklypw4rttufhw86lhhqrghed8l2kda6hdrd9ypyqm7y863", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBla2FFdTFhcUFWWDlOaFJR\nUkc2NEl1eDdCb0lNU3BtOUIzQlUxM0Z4TEZZCjAzNlFWNkRJSlp3cnFDTmVubU91\ncmlQKzkvZU5xNE1CVzFoOHJqMExWUEkKLS0tIEZ1ZTBGUnhKMFBtZ3NYUlJYc0lF\nWTlNam5BMFlia0Y3UkJ0L0UvaXZpR28KHmXjRJMZ860xeBOTS9IcOa/8ipaqRxv3\nxWKoD65vUY3koKCfzbHqPxVqcrFogcYcKhF79+ywL9SNWjvll12vJQ==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2025-12-02T14:01:29Z", + "mac": "ENC[AES256_GCM,data:LxG/reqmP9j980rYOWEpMrbOr8qb+9Qmz411wtr+xwg7JqAXjVa0EzbBIb+ObBlt5t4i7wH2dfw/R5eEcmXGMYW/O/IcfNmMPs2pmIL4EgGsdP+Owr4u+qRs3jWdaOlJ730Wo7ru9z1ZI3ISw+RxhK1LtoGbNFiWXMkm8JrrrWM=,iv:DZ0Iij8IyR1PbUfz8o6yDi0kAGfcTiLxbQtl7VTCTVo=,tag:DuqwiWfz2PuhWi0tv6AC1g==,type:str]", + "version": "3.11.0" + } +} diff --git a/vars/per-machine/frues-port/yggdrasil/privateKey/users/pedro b/vars/per-machine/frues-port/yggdrasil/privateKey/users/pedro new file mode 120000 index 0000000..ae0c694 --- /dev/null +++ b/vars/per-machine/frues-port/yggdrasil/privateKey/users/pedro @@ -0,0 +1 @@ +../../../../../../sops/users/pedro \ No newline at end of file diff --git a/vars/per-machine/frues-port/yggdrasil/publicKey/value b/vars/per-machine/frues-port/yggdrasil/publicKey/value new file mode 100644 index 0000000..03d8607 --- /dev/null +++ b/vars/per-machine/frues-port/yggdrasil/publicKey/value @@ -0,0 +1,3 @@ +-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEAANMQxBWsA7p0ZOrw6tha/pWl79vFqUzfXdeHM0iNYhc= +-----END PUBLIC KEY----- diff --git a/vars/per-machine/frues-surface3/yggdrasil/address/value b/vars/per-machine/frues-surface3/yggdrasil/address/value new file mode 100644 index 0000000..0b5d8b1 --- /dev/null +++ b/vars/per-machine/frues-surface3/yggdrasil/address/value @@ -0,0 +1 @@ +200:cb0a:334b:b6bb:be70:d6c4:f5dd:64d8 \ No newline at end of file diff --git a/vars/per-machine/frues-surface3/yggdrasil/privateKey/machines/frues-surface3 b/vars/per-machine/frues-surface3/yggdrasil/privateKey/machines/frues-surface3 new file mode 120000 index 0000000..14d276d --- /dev/null +++ b/vars/per-machine/frues-surface3/yggdrasil/privateKey/machines/frues-surface3 @@ -0,0 +1 @@ +../../../../../../sops/machines/frues-surface3 \ No newline at end of file diff --git a/vars/per-machine/frues-surface3/yggdrasil/privateKey/secret b/vars/per-machine/frues-surface3/yggdrasil/privateKey/secret new file mode 100644 index 0000000..9ef80e0 --- /dev/null +++ b/vars/per-machine/frues-surface3/yggdrasil/privateKey/secret @@ -0,0 +1,22 @@ +{ + "data": "ENC[AES256_GCM,data:Yp132atsXuIh29lWZpGQOnAxJ6XxqrZ886l/BDwDz7NIAHBv86ItMf9+XA5MWQwJI9MWkXzCod40c1wmpjmfCYIdUrmeOi8GhX+l2nFGVF/6+qxQBy5Kl5uIaokVdMdN8R5ZppNbUhV607tSRy4vokHvi3uTGEk=,iv:BJ6CGOcoEJngKmtBup0WnIVDbptVjCYAEye0svac9Fs=,tag:xHIiXoCFsg2BEIJV9KvQ7Q==,type:str]", + "sops": { + "age": [ + { + "recipient": "age1c2r28vncfxtz34kx9vzx4a7hqnmz3mtq7rfm2ldyja437dh9yfrqm0vgde", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiTm9aYm5WT2tWdW1HaG9D\nZmdVQWVSUTZDR2lSMU5ram1hbkZzNVBuaVIwCmpYYnpGNW5nRHhualN5RWhGZ2t0\nb2ZReTQ1OWdsdjRKQ3Y5YnVRVXdQRTQKLS0tIHZqcXNJZ1ovbnJTU09hVGJTejF1\nTU91NXhKZDBEcFJhbzc1VXVPUWlnc3cKgd6cL67ZLsdxUzScqyXNIr9OAbEStM4Y\nwi3hBWjxGw7DFjBZ2n5CZD+Vs7/JmzJrCHXvzXLBkxJWQCFGRwmguw==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1lrg2j5a90yy4ccj4c8yrmkk4rx029t5hfh6n5a2nte77pwlspp8qvgmtmg", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3R3RZeEs2ZkFlK2dPWmln\nZjZzL1ZvQ2NZdXIrZTZndzViekJUV1daSVRVCmdvZUl6N2kvV3lGSWQyMm83b3Fo\neTZLT1BsZ0lhOHUrMWlZOHNnR0J4YkEKLS0tIFZuQ2VzQ1JkRWQ1NTJwMzVPb1N3\nMTN1dXZhKzl2cUVkTGI2OUVVWGg5ckkKR5UpBCyWGfcKMHgshYF6c+AZjw9aDvDj\n3CcKgZLNo1GNsJAiFuRL9XD+DAfryqngPFRR29d5U/G3k7l85+W8Jw==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1r2sw9uncvkqtklypw4rttufhw86lhhqrghed8l2kda6hdrd9ypyqm7y863", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoS3FIczR1aldvUnIxTEdh\nTUMyZkFwK242UmlveDdIUlBCUzR1bGQ0RFFFClRXZ0VWblhhOUFtY0NCcmhsbEJ3\nbkU2ZVFTeHZCeWhRc0hKSkVIQUovVTQKLS0tIEFndUpWNVFMWklzaXBKeEc3WDlG\nRlorQ0FjT0IvTldzYXkzYVR6dkk3bDgKk0sBenaw4wUmvzSNATQN/W59gGg5zHm9\ngUzTN5EVrVj9zDdvLxm4Aa54pQ2Sa81tLG5NdohMQ271UxuAOZ+/+w==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2025-12-02T14:01:35Z", + "mac": "ENC[AES256_GCM,data:sPnb+g8jk2C/4pyHiPOogbv9D+m3S9MD1+WT4bBR//c/V2xGfVsapGithz1TnxvCLr38OLIKqjHi35st1AOxEBJwFK/LUspcqeTcX7v7Yk7DukYaQaOLNWHSqpEQ4kzjtIeZb3gEYIcUBOM4uON5kMzG8wpij7aWCXbwDq3CQI4=,iv:y0Vv7VCACZRNvn69q2jOzcAwYOiolBo7/1SlQQPFBC8=,tag:IM2Bnonxx0p3kWufmSg/9Q==,type:str]", + "version": "3.11.0" + } +} diff --git a/vars/per-machine/frues-surface3/yggdrasil/privateKey/users/pedro b/vars/per-machine/frues-surface3/yggdrasil/privateKey/users/pedro new file mode 120000 index 0000000..ae0c694 --- /dev/null +++ b/vars/per-machine/frues-surface3/yggdrasil/privateKey/users/pedro @@ -0,0 +1 @@ +../../../../../../sops/users/pedro \ No newline at end of file diff --git a/vars/per-machine/frues-surface3/yggdrasil/publicKey/value b/vars/per-machine/frues-surface3/yggdrasil/publicKey/value new file mode 100644 index 0000000..8e5fffa --- /dev/null +++ b/vars/per-machine/frues-surface3/yggdrasil/publicKey/value @@ -0,0 +1,3 @@ +-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEAmnrmWiSiIMeUnYURTZOmd5zfaN/rN7a9putmpjJAbdw= +-----END PUBLIC KEY-----