diff options
-rw-r--r-- | accounts/gkleen@sif/default.nix | 172 | ||||
-rw-r--r-- | accounts/gkleen@sif/hyprland.nix | 26 | ||||
-rw-r--r-- | accounts/gkleen@sif/systemd.nix | 20 | ||||
-rw-r--r-- | accounts/gkleen@sif/zshrc | 175 |
4 files changed, 35 insertions, 358 deletions
diff --git a/accounts/gkleen@sif/default.nix b/accounts/gkleen@sif/default.nix index 3a051a7a..231913d9 100644 --- a/accounts/gkleen@sif/default.nix +++ b/accounts/gkleen@sif/default.nix | |||
@@ -4,13 +4,6 @@ with lib; | |||
4 | 4 | ||
5 | let | 5 | let |
6 | cfg = config.home-manager.users.${userName}; | 6 | cfg = config.home-manager.users.${userName}; |
7 | deHaskell = flakeInputs.nixpkgs-stable.legacyPackages.x86_64-linux.haskell.packages.ghc92.override (oldAttrs: { | ||
8 | overrides = pkgs.lib.composeExtensions (oldAttrs.overrides or (_: _: {})) | ||
9 | (hself: hsuper: { | ||
10 | dbus = pkgs.haskell.lib.doJailbreak hsuper.dbus; | ||
11 | }); | ||
12 | }); | ||
13 | xmonad = import ./xmonad deHaskell; | ||
14 | emacsScratch = pkgs.stdenv.mkDerivation (sources.emacs-scratch_el // rec { | 7 | emacsScratch = pkgs.stdenv.mkDerivation (sources.emacs-scratch_el // rec { |
15 | phases = [ "installPhase" ]; | 8 | phases = [ "installPhase" ]; |
16 | 9 | ||
@@ -151,15 +144,6 @@ in { | |||
151 | 144 | ||
152 | config = { | 145 | config = { |
153 | services.displayManager.defaultSession = "Hyprland"; # "none+xmonad"; | 146 | services.displayManager.defaultSession = "Hyprland"; # "none+xmonad"; |
154 | services.xserver = { | ||
155 | windowManager.session = [{ | ||
156 | name = "xmonad"; | ||
157 | start = '' | ||
158 | ${pkgs.systemd}/bin/systemd-cat -t xmonad -- ${pkgs.coreutils}/bin/env -u SHLVL -- ${xmonad}/bin/xmonad & | ||
159 | waitPID=$! | ||
160 | ''; | ||
161 | }]; | ||
162 | }; | ||
163 | 147 | ||
164 | home-manager.users.${userName} = { | 148 | home-manager.users.${userName} = { |
165 | imports = [ | 149 | imports = [ |
@@ -254,12 +238,8 @@ in { | |||
254 | }; | 238 | }; |
255 | }; | 239 | }; |
256 | 240 | ||
257 | alacritty = { | ||
258 | enable = true; | ||
259 | settings = import ./alacritty.nix; | ||
260 | }; | ||
261 | |||
262 | zathura.enable = true; | 241 | zathura.enable = true; |
242 | imv.enable = true; | ||
263 | 243 | ||
264 | mpv.config = { | 244 | mpv.config = { |
265 | demuxer-max-bytes = 1073741824; | 245 | demuxer-max-bytes = 1073741824; |
@@ -267,24 +247,6 @@ in { | |||
267 | # gpu-api = "vulkan"; | 247 | # gpu-api = "vulkan"; |
268 | }; | 248 | }; |
269 | 249 | ||
270 | autorandr = { | ||
271 | enable = true; | ||
272 | hooks = { | ||
273 | preswitch = { | ||
274 | "stop-tray" = '' | ||
275 | ${pkgs.systemd}/bin/systemctl --user try-restart tray.target | ||
276 | ''; | ||
277 | }; | ||
278 | postswitch = { | ||
279 | # "restart-compton" = "${pkgs.systemd}/bin/systemctl --user try-restart picom"; | ||
280 | "restart-tray" = '' | ||
281 | ${pkgs.systemd}/bin/systemctl --user try-restart tray.target | ||
282 | ''; | ||
283 | }; | ||
284 | }; | ||
285 | profiles = customUtils.nixImport rec { dir = ./autorandr-profiles; _import = name: _base: import "${toString dir}/${name}" inputs; }; | ||
286 | }; | ||
287 | |||
288 | zsh.initExtra = "source ${./zshrc}"; | 250 | zsh.initExtra = "source ${./zshrc}"; |
289 | zsh.dirHashes = let | 251 | zsh.dirHashes = let |
290 | flakeHashes = mapAttrs' (n: v: nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; | 252 | flakeHashes = mapAttrs' (n: v: nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; |
@@ -333,14 +295,6 @@ in { | |||
333 | # notify_on_cmd_finish = "invisible 120"; | 295 | # notify_on_cmd_finish = "invisible 120"; |
334 | }; | 296 | }; |
335 | }; | 297 | }; |
336 | wofi = { | ||
337 | enable = true; | ||
338 | settings = { | ||
339 | location = "top"; | ||
340 | run-always_parse_args = true; | ||
341 | run-show_all = false; | ||
342 | }; | ||
343 | }; | ||
344 | waybar = { | 298 | waybar = { |
345 | enable = true; | 299 | enable = true; |
346 | systemd = { | 300 | systemd = { |
@@ -605,41 +559,6 @@ in { | |||
605 | mode = "center"; | 559 | mode = "center"; |
606 | }; | 560 | }; |
607 | }; | 561 | }; |
608 | hyprlock = { | ||
609 | enable = false; | ||
610 | settings = { | ||
611 | general = { | ||
612 | disable_loading_bar = false; | ||
613 | grace = 60; | ||
614 | hide_cursor = true; | ||
615 | no_fade_in = false; | ||
616 | }; | ||
617 | |||
618 | background = [ | ||
619 | { | ||
620 | path = "screenshot"; | ||
621 | blur_passes = 3; | ||
622 | blur_size = 8; | ||
623 | } | ||
624 | ]; | ||
625 | |||
626 | input-field = [ | ||
627 | { | ||
628 | size = "200, 50"; | ||
629 | position = "0, -80"; | ||
630 | monitor = ""; | ||
631 | dots_center = true; | ||
632 | fade_on_empty = false; | ||
633 | font_color = "rgb(202, 211, 245)"; | ||
634 | inner_color = "rgb(91, 96, 120)"; | ||
635 | outer_color = "rgb(24, 25, 38)"; | ||
636 | outline_thickness = 5; | ||
637 | placeholder_text = "'<span foreground=\"##cad3f5\">Password...</span>'"; | ||
638 | shadow_passes = 2; | ||
639 | } | ||
640 | ]; | ||
641 | }; | ||
642 | }; | ||
643 | fuzzel = { | 562 | fuzzel = { |
644 | enable = true; | 563 | enable = true; |
645 | settings = { | 564 | settings = { |
@@ -690,13 +609,7 @@ in { | |||
690 | grab | 609 | grab |
691 | ''; | 610 | ''; |
692 | }; | 611 | }; |
693 | taffybar = { | ||
694 | enable = false; | ||
695 | package = import ./taffybar { haskellPackages = deHaskell; }; | ||
696 | }; | ||
697 | # status-notifier-watcher.enable = true; | ||
698 | xembed-sni-proxy.enable = true; | 612 | xembed-sni-proxy.enable = true; |
699 | pasystray.enable = false; | ||
700 | udiskie = { | 613 | udiskie = { |
701 | enable = true; | 614 | enable = true; |
702 | automount = false; | 615 | automount = false; |
@@ -709,23 +622,9 @@ in { | |||
709 | }; | 622 | }; |
710 | }; | 623 | }; |
711 | }; | 624 | }; |
712 | unclutter = { | ||
713 | enable = false; | ||
714 | timeout = 5; | ||
715 | }; | ||
716 | network-manager-applet.enable = true; | 625 | network-manager-applet.enable = true; |
717 | blueman-applet.enable = true; | 626 | blueman-applet.enable = true; |
718 | 627 | ||
719 | sxhkd = { | ||
720 | enable = true; | ||
721 | keybindings = { | ||
722 | "button8" = "${muteScript}/bin/mute unmute"; | ||
723 | "@button8" = "${muteScript}/bin/mute mute"; | ||
724 | "button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 1"; | ||
725 | "@button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 0"; | ||
726 | }; | ||
727 | }; | ||
728 | |||
729 | unison = { | 628 | unison = { |
730 | enable = true; | 629 | enable = true; |
731 | pairs = { | 630 | pairs = { |
@@ -746,24 +645,6 @@ in { | |||
746 | 645 | ||
747 | easyeffects = { | 646 | easyeffects = { |
748 | enable = true; | 647 | enable = true; |
749 | preset = "LoudnessEqualizer"; | ||
750 | }; | ||
751 | |||
752 | screen-locker = { | ||
753 | enable = false; | ||
754 | lockCmd = toString (pkgs.writeShellScript "lock" '' | ||
755 | ${pkgs.playerctl}/bin/playerctl -a status | ${pkgs.gnugrep}/bin/grep -q "Playing" && exit 0 | ||
756 | |||
757 | cleanup() { | ||
758 | ${cfg.services.dunst.package}/bin/dunstctl set-paused false | ||
759 | } | ||
760 | trap cleanup EXIT INT TERM | ||
761 | |||
762 | # ${pkgs.playerctl}/bin/playerctl -a pause | ||
763 | ${cfg.services.dunst.package}/bin/dunstctl set-paused true | ||
764 | ${pkgs.xsecurelock}/bin/xsecurelock | ||
765 | ''); | ||
766 | xss-lock.extraOptions = ["--transfer-sleep-lock"]; | ||
767 | }; | 648 | }; |
768 | 649 | ||
769 | etesync-dav = { | 650 | etesync-dav = { |
@@ -771,30 +652,6 @@ in { | |||
771 | serverUrl = "https://etesync.yggdrasil.li"; | 652 | serverUrl = "https://etesync.yggdrasil.li"; |
772 | }; | 653 | }; |
773 | 654 | ||
774 | hypridle = { | ||
775 | enable = false; | ||
776 | settings = { | ||
777 | general = { | ||
778 | after_sleep_cmd = "hyprctl dispatch dpms on"; | ||
779 | before_sleep_cmd = "hyprlock"; | ||
780 | ignore_dbus_inhibit = false; | ||
781 | ignore_systemd_inhibit = false; | ||
782 | lock_cmd = "hyprlock"; | ||
783 | }; | ||
784 | |||
785 | listener = [ | ||
786 | { | ||
787 | timeout = 300; | ||
788 | on-timeout = "hyprlock"; | ||
789 | } | ||
790 | { | ||
791 | timeout = 600; | ||
792 | on-timeout = "hyprctl dispatch dpms off"; | ||
793 | on-resume = "hyprctl dispatch dpms on"; | ||
794 | } | ||
795 | ]; | ||
796 | }; | ||
797 | }; | ||
798 | swayidle = { | 655 | swayidle = { |
799 | enable = true; | 656 | enable = true; |
800 | events = [ | 657 | events = [ |
@@ -856,33 +713,23 @@ in { | |||
856 | }; | 713 | }; |
857 | }; | 714 | }; |
858 | 715 | ||
859 | xsession = { | 716 | xsession.preferStatusNotifierItems = true; |
860 | enable = true; | ||
861 | |||
862 | initExtra = '' | ||
863 | ${pkgs.xorg.xinput}/bin/xinput disable 'Synaptics TM3512-010' | ||
864 | ${pkgs.xorg.xmodmap}/bin/xmodmap -e 'keysym Caps_Lock = Multi_key' | ||
865 | ''; | ||
866 | |||
867 | preferStatusNotifierItems = true; | ||
868 | }; | ||
869 | 717 | ||
870 | xresources.properties = import ./xresources.nix; | 718 | xresources.properties = import ./xresources.nix; |
871 | 719 | ||
872 | home = { | 720 | home = { |
873 | packages = with pkgs; [ | 721 | packages = with pkgs; [ |
874 | fira fira-code powerline-fonts nerdfonts pavucontrol | 722 | fira fira-code powerline-fonts nerdfonts pavucontrol |
875 | wrappedKeepassxc sxiv xclip mumble pulseaudio-ctl pamixer | 723 | wrappedKeepassxc wl-clipboard-rs mumble pulseaudio-ctl |
876 | libnotify synergy xorg.xbacklight screen-message | 724 | pamixer libnotify screen-message wrappedYTMDesktop qt5ct |
877 | wrappedYTMDesktop qt5ct playerctl evince thunderbird | 725 | playerctl evince thunderbird zoom-us steam steam-run |
878 | zoom-us steam steam-run wireshark virt-manager | 726 | wireshark virt-manager rclone cached-nix-shell worktime |
879 | rclone cached-nix-shell xournal xmonad worktime | ||
880 | fira-code-symbols libreoffice xournalpp google-chrome | 727 | fira-code-symbols libreoffice xournalpp google-chrome |
881 | nixos-shell virt-viewer freerdp gnome-icon-theme | 728 | nixos-shell virt-viewer freerdp gnome-icon-theme |
882 | paper-icon-theme sshpassSecret weechat element-desktop | 729 | paper-icon-theme sshpassSecret weechat element-desktop |
883 | matrix-synapse-tools.synadm | 730 | matrix-synapse-tools.synadm |
884 | flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs | 731 | flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs |
885 | sieve-connect gimp inkscape udiskie glab scrot nitrokey-app | 732 | sieve-connect gimp inkscape udiskie glab nitrokey-app |
886 | pynitrokey gtklock wlrctl nvidiaOffloadScript | 733 | pynitrokey gtklock wlrctl nvidiaOffloadScript |
887 | ]; | 734 | ]; |
888 | 735 | ||
@@ -935,6 +782,9 @@ in { | |||
935 | "gtklock/config.ini" = { | 782 | "gtklock/config.ini" = { |
936 | source = (pkgs.formats.ini {}).generate "config.ini" { | 783 | source = (pkgs.formats.ini {}).generate "config.ini" { |
937 | main = { | 784 | main = { |
785 | idle-hide = true; | ||
786 | follow-focus = true; | ||
787 | start-hidden = true; | ||
938 | }; | 788 | }; |
939 | }; | 789 | }; |
940 | }; | 790 | }; |
@@ -1035,7 +885,7 @@ in { | |||
1035 | doFilter = n: v: (filters.${n} or id) (filter (d: d != "emacs.desktop") v); | 885 | doFilter = n: v: (filters.${n} or id) (filter (d: d != "emacs.desktop") v); |
1036 | in mapAttrs doFilter (cfg.lib.xdg.mimeAssociations [ | 886 | in mapAttrs doFilter (cfg.lib.xdg.mimeAssociations [ |
1037 | cfg.programs.zathura.package | 887 | cfg.programs.zathura.package |
1038 | pkgs.sxiv | 888 | cfg.programs.imv.package |
1039 | cfg.programs.emacs.package | 889 | cfg.programs.emacs.package |
1040 | cfg.programs.firefox.package | 890 | cfg.programs.firefox.package |
1041 | ]) // { | 891 | ]) // { |
diff --git a/accounts/gkleen@sif/hyprland.nix b/accounts/gkleen@sif/hyprland.nix index c295997b..7491dcb4 100644 --- a/accounts/gkleen@sif/hyprland.nix +++ b/accounts/gkleen@sif/hyprland.nix | |||
@@ -15,7 +15,7 @@ in { | |||
15 | ]; | 15 | ]; |
16 | 16 | ||
17 | env = [ | 17 | env = [ |
18 | # "XCURSOR_SIZE,12" | 18 | "XCURSOR_SIZE,12" |
19 | "NIXOS_OZONE_WL,1" | 19 | "NIXOS_OZONE_WL,1" |
20 | "QT_QPA_PLATFORM,wayland" | 20 | "QT_QPA_PLATFORM,wayland" |
21 | "GDK_BACKEND,wayland" | 21 | "GDK_BACKEND,wayland" |
@@ -29,7 +29,7 @@ in { | |||
29 | general = { | 29 | general = { |
30 | gaps_in = 3; | 30 | gaps_in = 3; |
31 | gaps_out = 9; | 31 | gaps_out = 9; |
32 | "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; | 32 | "col.active_border" = "rgba(33ccffee) rgba(00ff95ee) 45deg"; |
33 | "col.inactive_border" = "rgba(595959aa)"; | 33 | "col.inactive_border" = "rgba(595959aa)"; |
34 | 34 | ||
35 | resize_on_border = false; | 35 | resize_on_border = false; |
@@ -294,14 +294,26 @@ in { | |||
294 | "suppressevent maximize fullscreen, class:.*" | 294 | "suppressevent maximize fullscreen, class:.*" |
295 | 295 | ||
296 | # "maximize, class:^(Element|thunderbird)$" | 296 | # "maximize, class:^(Element|thunderbird)$" |
297 | "workspace special:keepass, class:^org\.keepassxc\.KeePassXC$, title:^(?!KeePassXC - Access Request)$" | 297 | "workspace special:pavucontrol, class:^org\.pulseaudio\.pavucontrol$" |
298 | "workspace special:easyeffects, class:^com\.github\.wwmm\.easyeffects$" | ||
299 | "workspace special:blueman, class:^\.blueman-manager-wrapped$" | ||
300 | "workspace special:keepass silent, class:^org\.keepassxc\.KeePassXC$, title:^(?!Unlock Database.*)(?!.*Access Request)" | ||
298 | # "group set always lock invade, class:^Element$" | 301 | # "group set always lock invade, class:^Element$" |
302 | "workspace 2, class:^firefox$" | ||
299 | "workspace 4, class:^evince$" | 303 | "workspace 4, class:^evince$" |
304 | "workspace 4, class:^imv$" | ||
305 | "workspace 4, class:^org\.pwmt\.zathura$" | ||
300 | "workspace 10, class:^mpv$" | 306 | "workspace 10, class:^mpv$" |
301 | "float, class:^org\.keepassxc\.KeePassXC$, title:^KeePassXC - Access Request$" | 307 | "float, class:^org\.keepassxc\.KeePassXC$, title:Access Request$" |
302 | "center, class:^org\.keepassxc\.KeePassXC$, title:^KeePassXC - Access Request$" | 308 | "center, class:^org\.keepassxc\.KeePassXC$, title:Access Request$" |
303 | 309 | "float, class:^org\.keepassxc\.KeePassXC$, title:^Unlock Database" | |
304 | "bordercolor rgba(ffee33ee) rgba(ff9500ee) 45deg, fullscreen:1" | 310 | "center, class:^org\.keepassxc\.KeePassXC$, title:^Unlock Database" |
311 | "float, class:^xdg-desktop-portal-gtk$" | ||
312 | "center, class:^xdg-desktop-portal-gtk$" | ||
313 | |||
314 | "bordercolor rgba(ffaa33ee) rgba(bfff00ee) 45deg, fullscreen:1" | ||
315 | "bordercolor rgba(3366ffee) rgba(6a00ffee) 45deg, xwayland:1" | ||
316 | "bordercolor rgba(6633ffee) rgba(ea00ffee) 45deg, xwayland:1, fullscreen:1" | ||
305 | ]; | 317 | ]; |
306 | 318 | ||
307 | workspace = [ | 319 | workspace = [ |
diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix index 5902946c..92404b61 100644 --- a/accounts/gkleen@sif/systemd.nix +++ b/accounts/gkleen@sif/systemd.nix | |||
@@ -126,11 +126,6 @@ in { | |||
126 | After = ["graphical-session-pre.target"]; | 126 | After = ["graphical-session-pre.target"]; |
127 | }; | 127 | }; |
128 | }; | 128 | }; |
129 | taffybar = { | ||
130 | Service = { | ||
131 | Environment = with pkgs; "PATH=${worktime}/bin:${systemd}/bin"; | ||
132 | }; | ||
133 | }; | ||
134 | dunst = { | 129 | dunst = { |
135 | Service = { | 130 | Service = { |
136 | ExecStart = lib.mkForce "${cfg.services.dunst.package}/bin/dunst"; | 131 | ExecStart = lib.mkForce "${cfg.services.dunst.package}/bin/dunst"; |
@@ -140,14 +135,6 @@ in { | |||
140 | WantedBy = ["graphical-session.target"]; | 135 | WantedBy = ["graphical-session.target"]; |
141 | }; | 136 | }; |
142 | }; | 137 | }; |
143 | xiccd = { | ||
144 | Service = { | ||
145 | Type = "simple"; | ||
146 | WorkingDirectory = "~"; | ||
147 | ExecStart = "${pkgs.xiccd}/bin/xiccd"; | ||
148 | Restart = "always"; | ||
149 | }; | ||
150 | }; | ||
151 | keepassxc = { | 138 | keepassxc = { |
152 | Service = { | 139 | Service = { |
153 | Type = "dbus"; | 140 | Type = "dbus"; |
@@ -161,11 +148,6 @@ in { | |||
161 | After = ["graphical-session-pre.target"]; | 148 | After = ["graphical-session-pre.target"]; |
162 | }; | 149 | }; |
163 | }; | 150 | }; |
164 | xss-lock = { | ||
165 | Service = { | ||
166 | Environment = [ "XSECURELOCK_WANT_FIRST_KEYPRESS=1" ]; | ||
167 | }; | ||
168 | }; | ||
169 | mpris-proxy = { | 151 | mpris-proxy = { |
170 | Unit.Description = "Mpris proxy"; | 152 | Unit.Description = "Mpris proxy"; |
171 | Unit.After = [ "network.target" "sound.target" ]; | 153 | Unit.After = [ "network.target" "sound.target" ]; |
@@ -244,7 +226,7 @@ in { | |||
244 | }; | 226 | }; |
245 | tray = { | 227 | tray = { |
246 | Unit = { | 228 | Unit = { |
247 | Wants = ["blueman-applet.service" "udiskie.service" "pasystray.service" "network-manager-applet.service"]; | 229 | Wants = ["blueman-applet.service" "udiskie.service" "network-manager-applet.service"]; |
248 | }; | 230 | }; |
249 | }; | 231 | }; |
250 | }; | 232 | }; |
diff --git a/accounts/gkleen@sif/zshrc b/accounts/gkleen@sif/zshrc index 83e86270..82e66337 100644 --- a/accounts/gkleen@sif/zshrc +++ b/accounts/gkleen@sif/zshrc | |||
@@ -1,106 +1,3 @@ | |||
1 | filebin() { | ||
2 | basePath=/srv/www/files | ||
3 | ssh ymir find /srv/www/files -type f -printf "$'%T@ %TY-%Tm-%TdT%TH:%TM %P\\\\0'" | sort -zn | cut -z -d ' ' -f 2- \ | ||
4 | | while IFS= read -r -d $'\0' l; do | ||
5 | IFS=' ' read -r t p <<<"${l}" | ||
6 | printf "%s https://f.141.li/%s\n" "${t}" "${p}" | ||
7 | done | ||
8 | } | ||
9 | |||
10 | push2bin() { | ||
11 | if [[ ${#@} -eq 1 && ! -r ${1} ]]; then | ||
12 | uux -p 'ymir!push2bin' $(echo -n "${1:t}" | tr -c $'[:alnum:]+-=.' '_') | ||
13 | else | ||
14 | for f (${@}); do | ||
15 | uux -p 'ymir!push2bin' $(echo -n "${f:t}" | tr -c $'[:alnum:]+-=.' '_') <${f} | ||
16 | done | ||
17 | fi | ||
18 | } | ||
19 | |||
20 | genmail() { | ||
21 | local baseName="" | ||
22 | local target="" | ||
23 | if [[ ${#@} -ge 1 ]]; then | ||
24 | target=${1} | ||
25 | shift | ||
26 | fi | ||
27 | |||
28 | if [[ ${#@} -ge 1 ]]; then | ||
29 | baseName=$(pwgen ${@}) | ||
30 | else | ||
31 | baseName=$(pwgen -v -A -0 16 1) | ||
32 | fi | ||
33 | baseName=$(tr -cd $'[:alnum:]!#$%&*+-/=?^_{|}~.' <<<${baseName}) | ||
34 | address=${baseName}@141.li | ||
35 | insertAddr() { | ||
36 | echo "${baseName} gkleen" | ssh ymir tee -a /srv/mail/spm 1>/dev/null \ | ||
37 | } | ||
38 | |||
39 | printf "%s\n" ${address} | ||
40 | read -q 'cont?Continue [y/N]? ' || return | ||
41 | |||
42 | insertAddr | ||
43 | } | ||
44 | |||
45 | s() { | ||
46 | dir=$(pwd) | ||
47 | [[ ${#@} -ge 1 ]] && dir=$1 | ||
48 | |||
49 | shellFile=$(findNix ${@}) | ||
50 | [[ ${#@} -ge 1 ]] && shift | ||
51 | |||
52 | typeset -a cmd | ||
53 | if [[ -d ${dir}/.nix-gc-roots ]]; then | ||
54 | cmd=(persistent-nix-shell ${shellFile} ${S_EXTRA_ARGS} ${@}) | ||
55 | else | ||
56 | cmd=(nix-shell ${shellFile} ${S_EXTRA_ARGS} ${@}) | ||
57 | fi | ||
58 | |||
59 | if [[ -n "${S_SYSTEMD}" ]]; then | ||
60 | systemd-run --user --slice=development.slice --collect -E PATH=${PATH} -p WorkingDirectory=${dir} -- ${cmd} | ||
61 | else | ||
62 | ( | ||
63 | cd ${dir} | ||
64 | |||
65 | exec ${cmd} | ||
66 | ) | ||
67 | fi | ||
68 | } | ||
69 | |||
70 | sz() { | ||
71 | typeset -a S_EXTRA_ARGS | ||
72 | S_EXTRA_ARGS=(--run "env __ETC_ZSHENV_SOURCED=1 zsh") s ${@} | ||
73 | } | ||
74 | st() { | ||
75 | typeset -a S_EXTRA_ARGS | ||
76 | S_EXTRA_ARGS=(--run "tmux new-session env __ETC_ZSHENV_SOURCED=1 zsh") s ${@} | ||
77 | } | ||
78 | stt() { | ||
79 | typeset -a S_EXTRA_ARGS | ||
80 | S_SYSTEMD=true S_EXTRA_ARGS=(--run "urxvt -e tmux -S .tmux.sock new-session env __ETC_ZSHENV_SOURCED=1 zsh") s ${@} | ||
81 | } | ||
82 | se() { | ||
83 | typeset -a S_EXTRA_ARGS | ||
84 | S_SYSTEMD=true S_EXTRA_ARGS=(--run "emacs") s ${@} | ||
85 | } | ||
86 | |||
87 | findNix() { | ||
88 | if [[ $#@ -eq 0 ]]; then | ||
89 | findNix $(pwd) | ||
90 | elif [[ -f "$1" ]]; then | ||
91 | print ${1:a} | ||
92 | elif [[ -d "$1" && -f "$1"/shell.nix ]]; then | ||
93 | print ${1:a}/shell.nix | ||
94 | elif [[ -d "$1" && -f "$1"/default.nix ]]; then | ||
95 | print ${1:a}/default.nix | ||
96 | elif [[ -d "$1" && "$1" != "/" ]]; then | ||
97 | findNix ${1:h} | ||
98 | else | ||
99 | printf "Traversed directories to ‘/’ and found no shell specification\n" >&2 | ||
100 | return 1 | ||
101 | fi | ||
102 | } | ||
103 | |||
104 | dir() { | 1 | dir() { |
105 | curlArchive=false | 2 | curlArchive=false |
106 | templateArchive="" | 3 | templateArchive="" |
@@ -231,60 +128,9 @@ dir() { | |||
231 | fi | 128 | fi |
232 | 129 | ||
233 | 130 | ||
234 | # if [[ -n ${notmuchMsg} ]]; then | ||
235 | # getMimeTypes() { | ||
236 | # nix-shell -p mailcap --run "find \${buildInputs} -path '*/etc/mime.types' | head -n 1 | xargs -- cat" | ||
237 | # } | ||
238 | |||
239 | # typeset -a messages | ||
240 | # messages=(${(z)$(notmuch search --output=messages ${notmuchMsg})}) | ||
241 | |||
242 | # for message (${messages}); do | ||
243 | # typeset -A notmuchAtts | ||
244 | # notmuchAtts=() | ||
245 | |||
246 | # while IFS= read -r -d $'\n' line; do | ||
247 | # [[ ${line} =~ '(attachment|part)\{ ID: ([0-9]+)' ]] || continue | ||
248 | # attId=${match[2]} | ||
249 | |||
250 | # [[ ${line} =~ 'Content-type: multipart/' ]] && continue | ||
251 | |||
252 | # fName="part_${attId}" | ||
253 | # [[ ${line} =~ 'Filename: (([^,]|,[^ ])+)' ]] && fName=${match[1]} | ||
254 | |||
255 | # if [[ ${#messages} -gt 1 ]]; then | ||
256 | # fName="${message}/${fName}" | ||
257 | # fi | ||
258 | |||
259 | # fExt="${fName:e}" | ||
260 | # [[ -n "${fExt}" ]] && fName="${fName:r}" | ||
261 | |||
262 | # if [[ -z "${fExt}" && ${line} =~ 'Content-type: (([^,]|,[^ ])+)$' ]]; then | ||
263 | # fExt=$(getMimeTypes | grep ${match[1]}$'\t' | head -n 1 | awk '{ print $2; }') | ||
264 | # fi | ||
265 | |||
266 | # mkdir -p ${fName:h} | ||
267 | # if [[ -n "${fExt}" ]]; then | ||
268 | # fName=$(mktemp -p . "${fName}.XXXXXX.${fExt}") | ||
269 | # else | ||
270 | # fName=$(mktemp -p . "${fName}.XXXXXX") | ||
271 | # fi | ||
272 | |||
273 | # notmuchAtts[${attId}]=${fName} | ||
274 | # done <<(notmuch show --decrypt=false -- ${message} | tr -d $'\f') | ||
275 | |||
276 | # for attId fName in ${(kv)notmuchAtts}; do | ||
277 | # [[ -d ${fName:h} ]] || mkdir -p ${fName:h} | ||
278 | # printf "#%d → ‘%s’\n" "${attId}" "${fName}" >&2 | ||
279 | |||
280 | # notmuch show --decrypt=false --part=${attId} -- ${message} | pv -W -D 2 -i 0.1 >${fName} | ||
281 | # done | ||
282 | # done | ||
283 | # fi | ||
284 | |||
285 | |||
286 | ${wormhole} && wormhole receive | 131 | ${wormhole} && wormhole receive |
287 | 132 | ||
133 | |||
288 | if ${quickserve}; then | 134 | if ${quickserve}; then |
289 | quickserve --root . --upload . --show-hidden --tar gz | 135 | quickserve --root . --upload . --show-hidden --tar gz |
290 | fi | 136 | fi |
@@ -370,16 +216,6 @@ tmpdir() { | |||
370 | ) | 216 | ) |
371 | } | 217 | } |
372 | 218 | ||
373 | inhibit-sleep() { | ||
374 | if systemctl --user is-active prevent-suspend.service 1>/dev/null; then | ||
375 | echo "Allowing suspend" | ||
376 | systemctl --user stop prevent-suspend.service | ||
377 | else | ||
378 | echo "Inhibiting suspend" | ||
379 | systemctl --user start prevent-suspend.service | ||
380 | fi | ||
381 | } | ||
382 | |||
383 | qr() { | 219 | qr() { |
384 | qrencode -l M -o - -t ANSIUTF8 $@ | 220 | qrencode -l M -o - -t ANSIUTF8 $@ |
385 | } | 221 | } |
@@ -422,7 +258,7 @@ swap() { | |||
422 | } | 258 | } |
423 | 259 | ||
424 | ls() { | 260 | ls() { |
425 | exa --all --group-directories-first --colour=always $@ | less --mouse -FR | 261 | eza --all --group-directories-first --colour=always $@ | less --mouse -FR |
426 | } | 262 | } |
427 | 263 | ||
428 | l() { | 264 | l() { |
@@ -437,10 +273,6 @@ ure() { | |||
437 | systemctl --user --restart $@ | 273 | systemctl --user --restart $@ |
438 | } | 274 | } |
439 | 275 | ||
440 | u2wdb() { | ||
441 | ssh -t postgres@uniworxdb2 psql uni2work | ||
442 | } | ||
443 | |||
444 | ssh-installer() { | 276 | ssh-installer() { |
445 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/gkleen@sif.midgard.yggdrasil $@ | 277 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/gkleen@sif.midgard.yggdrasil $@ |
446 | } | 278 | } |
@@ -483,4 +315,5 @@ bindkey -e | |||
483 | bindkey ';5C' emacs-forward-word | 315 | bindkey ';5C' emacs-forward-word |
484 | bindkey ';5D' emacs-backward-word | 316 | bindkey ';5D' emacs-backward-word |
485 | bindkey '^[[1;5C' emacs-forward-word | 317 | bindkey '^[[1;5C' emacs-forward-word |
486 | bindkey '^[[1;5D' emacs-backward-word \ No newline at end of file | 318 | bindkey '^[[1;5D' emacs-backward-word |
319 | bindkey '^H' backward-kill-word | ||