Compare commits

...

153 Commits
master ... leo

Author SHA1 Message Date
leo 4b4d93888c
secrets: update infra-vars 2023-07-03 15:21:40 +02:00
leo ceadc655e9
starship: add wip/old changes 2023-07-02 13:19:26 +02:00
leo 58faa34b40
kanshi: add sammy confs 2023-07-02 13:15:24 +02:00
leo 2d2739bcb4
screen-share-sway: disable obs aliasing 2023-07-02 13:00:15 +02:00
leo 34d05a85e5
zshrc: add hostname checks 2023-07-01 23:56:45 +02:00
leo 56a026f30e
vimrc: set 256/termguicolors properly 2023-07-01 23:55:40 +02:00
leo 4d6864be38
vimrc: add bib filetype conf 2023-07-01 23:55:01 +02:00
leo d88defb99d
vimrc: update autopairs conf 2023-07-01 23:54:36 +02:00
leo 08168e0280
vimrc(plug): add prettier config 2023-07-01 23:52:47 +02:00
leo 239f712d46
vimrc(plug): add tokyonight theme 2023-07-01 23:44:27 +02:00
leo 9cbb4384b4
cargo.toml: update tool path 2023-07-01 23:43:45 +02:00
leo 7bd669651d
aerc: update config to new format 2023-07-01 23:43:00 +02:00
leo 7942455826
zprofile,zshenv: add changes, host checks 2023-07-01 21:05:01 +02:00
leo c9e3d83c50
aliases.zsh: add clbin alias 2023-07-01 20:55:59 +02:00
leo 08ee327386
aliases.zsh: disable some 2023-07-01 20:55:38 +02:00
leo beeff9db75
homeage: add secrets
* infra backend
* infra vars
* general envs

this way, secrets are only ever stored on the system (including the nix
store) in an encrypted form in ${XDG_RUNTIME_DIR}.
2023-06-27 22:29:00 +02:00
leo bb607f63da
hotfix(albert): patch issue w/ wayland 2023-06-23 23:42:13 +02:00
leo 2160982392
home-manager: bump stateVersion to 23.05
ref:
https://github.com/nix-community/home-manager/issues/4019
2023-06-22 23:53:17 +02:00
leo 01199bc2e3
waybar,hm: add playerctl.sh segment/script 2023-06-22 18:51:52 +02:00
leo cb4a9460f2
home-manager: add xdp-screen-cast snippet 2023-06-13 19:51:49 +02:00
leo f75864e9d2
sway: replace wofi,nwggrid w/ home-managed albert
* run albert as a systemd user service
2023-06-13 19:50:37 +02:00
leo c8bb94806d
nix: manage waybar with home-manager 2023-06-13 12:58:49 +02:00
leo c4438e063b
sway(env): disable LIBVA
TODO: do this conditionally based on hostname or sth
2023-06-06 16:28:19 +02:00
leo cf59413aa4
kitty,starship,qutebrowser: consolidate fonts
... and symbols
2023-06-06 16:26:18 +02:00
leo f243609f9e
nixpkgs/config.nix: fmt 2023-06-06 16:25:15 +02:00
leo ef8db72aa5
kitty: change binding for rotating windows 2023-06-06 16:24:42 +02:00
leo f8fe1631ee
swaylock-wrapper: use 'power' instead of 'dpms' 2023-06-06 16:16:31 +02:00
leo 974de9c42d
sway-locker: update conditions 2023-06-06 16:16:01 +02:00
leo 472736536b
zshenv: export gcloud auth plugin var 2023-06-06 16:11:22 +02:00
leo 6e67a79d7a
zshenv: export $PYTHONPATH and $BEMENU_OPTS 2023-06-06 16:10:54 +02:00
leo 559358be68
zshenv: make $NIX_PATH $USER-dependent 2023-06-06 16:10:00 +02:00
leo 9efd6e07c6
vimrc(nerdcommenter): add bib,dhall delimiters 2023-06-06 16:09:13 +02:00
leo a70339c2dd
sway(env),zsh: make the $kee var $HOST-dependent
* have a fallback in ZSH in case it's not run with sway (in which case
  it could be empty)
2023-06-06 16:07:15 +02:00
leo 272bd71852
sway(env): render using VULKAN on leo 2023-06-06 16:06:46 +02:00
leo 9eb0683c3d
tridactyl: set colo 2023-06-06 16:06:19 +02:00
leo 8e439628f2
qutebrowser: set {start,default}page, fix usr CSS 2023-06-06 16:05:00 +02:00
leo 9b4c159326
qutebrowser: enable lazy_restore 2023-06-06 16:03:50 +02:00
leo ade23c134a
sway: use brightnessctl instead of light 2023-06-06 15:56:30 +02:00
leo 0cbded6e9c
sway: disable dell stuff for leo 2023-06-06 15:56:05 +02:00
leo 80b5c05352
sway: correct chromium binary 2023-06-06 15:54:48 +02:00
leo 6bcedda326
sway: update swayidle cmd
* use 'output * power ...' instead of 'output * dpms ...'
* rm the command instructing outputs to sleep 10s after screen locking
* maintain the periodic (every 15s) check for swaylock that turns of
  outputs if swaylock is running (saves energy)
2023-06-06 15:51:30 +02:00
leo 08fbf762f2
sway: use sway-locker from $PATH 2023-06-06 15:50:56 +02:00
leo 7ca0677fdd
sway(bemenu): change prompt sign 2023-06-06 15:50:21 +02:00
leo a7dcd20900
sway(bindswitch): use kanshictl from $PATH 2023-06-06 15:47:40 +02:00
leo 50f0c113af
sway: float dialogs 2023-06-06 15:46:44 +02:00
leo e1f0f5518d
sway: prevent sleep 2023-06-06 15:46:30 +02:00
leo 7737f3b183
sway(): add more cancel bindings 2023-06-06 15:43:55 +02:00
leo 4ebd5fdb21
sway: import env 'always' 2023-06-06 15:43:19 +02:00
leo eccfdcc51a
sway: consolidate the fonts 2023-06-06 15:43:06 +02:00
leo 85560cb395
sway: -> 2023-06-06 15:37:24 +02:00
leo a33b816aed
sway: add gsetting for nautilus-open-any-terminal 2023-06-06 15:36:37 +02:00
leo 2dbafcd2ed
sway: consolidate how fusuma is run 2023-06-06 15:35:48 +02:00
leo ab5130f76c
sway: run swayrd found in path 2023-06-06 15:35:00 +02:00
leo b82a8ba935
sway: use xdg-desktop-portal-wlr 2023-06-06 15:33:35 +02:00
leo cfe6aed022
home-manager: add autotiling as a systemd service 2023-06-06 15:30:10 +02:00
leo 0cdfc8eef6
home-leo.nix: nix fmt 2023-06-06 15:26:43 +02:00
leo e358aecba1
home-manager: add HM-managed pkgs 2023-06-06 15:25:50 +02:00
leo 46f25dcda0
home-manager: add fzf-passage 2023-06-06 15:23:47 +02:00
leo 3d7b7f0923
home-manager(gdbinit): enable unified history 2023-06-06 15:23:08 +02:00
leo 9cca2e6958
helix: update config as per upstream 2023-05-30 11:48:14 +02:00
leo 6e06f5773f
zprofile: use smarter pre-gui checks 2023-05-24 01:31:25 +02:00
leo fc186ba2de
sway,home-manager: run kdeconnectd using systemd 2023-05-24 01:23:37 +02:00
leo 633b9cf790
sway,home-manager: run kanshi using systemd 2023-05-24 01:20:41 +02:00
leo fa62ef1353
vimrc: edit sts,ts,bs for javascript 2023-05-17 20:36:58 +02:00
leo 19932cbfa6
sway: configure newer inputs (keeb/touchpad) 2023-05-10 14:45:13 +02:00
leo 14d749995a
aliases.zsh: add allkeyz 2023-05-10 10:54:23 +02:00
leo f6d776c8d9
home-manager: create an XDG module 2023-05-06 01:02:09 +02:00
leo d00c1c4d3e
home-manager: add environment.d/sway-session.conf 2023-05-05 13:42:46 +02:00
leo f1bd07eec6
home-manager: add gtk-4.0 stuff 2023-05-05 13:41:53 +02:00
leo d887e7d72d
home-manager: add glow/glow.yml 2023-05-05 13:38:35 +02:00
leo b2e1d48617
home-manager: add go/env 2023-05-05 13:38:02 +02:00
leo 6b17e02256
home-manager: add ccache conf 2023-05-05 13:34:56 +02:00
leo f35d7df90d
zshenv: correct the ccache path 2023-05-05 13:31:58 +02:00
leo aa53d06408
home-manager,nvim: add init.vim 2023-04-28 22:50:37 +02:00
leo 4e27f9ba4f
vimrc: lowercase leader,cr 2023-04-26 14:58:34 +02:00
leo f4f95c450b
vimrc: break out python stuff to its own file 2023-04-26 14:47:19 +02:00
leo 46479405ab
vimrc: add cmd for session saving 2023-04-26 14:42:54 +02:00
leo 30be3d8f24
vimrc: set smoothscroll 2023-04-26 14:42:31 +02:00
leo 5b1b5da4e5
vimrc: use pylsp as python LS 2023-04-26 14:41:33 +02:00
leo 1ad88ff9c1
vimrc: configure tailwindcss LS 2023-04-26 14:41:12 +02:00
leo d607ed7589
vimrc: use terraform-lsp for TF 2023-04-26 14:40:48 +02:00
leo fc66504ecb
vimrc: ft settings for tf,css,tmpl,just 2023-04-26 14:39:59 +02:00
leo 3f72dfa5cd
vimrc: correctly mention javascript filetype 2023-04-26 14:39:16 +02:00
leo abdb84e0fb
vimrc: allow dhall to fmt files 2023-04-26 14:38:49 +02:00
leo cd5bfda9a5
vimrc(vimgo): remap altfile cmds to avoid conflict 2023-04-26 14:38:30 +02:00
leo aea1e9fbbe
vimrc: disable moving visual blocks
...since it breaks stuff...
2023-04-26 14:37:19 +02:00
leo d5090f75af
vimrc: update ale_linters 2023-04-26 14:36:49 +02:00
leo e56344111c
vimrc: don't fold sections in terraform 2023-04-26 14:34:54 +02:00
leo e1813e16c5
vimrc: add dhall support (syntax+lsp) 2023-04-26 14:34:13 +02:00
leo b083ce65d4
vimrc: set encoding early 2023-04-26 14:00:46 +02:00
leo 3676b88491
vimrc: comment some of clipboard-handling mappings 2023-04-26 13:57:55 +02:00
leo 0f6ddbdf43
zshrc: more useful history opts 2023-04-19 22:59:17 +02:00
leo 47830cff8d
zshrc: allow history to grow large 2023-04-19 22:56:28 +02:00
leo a2b688410f
fix swaylock's red screen of death
ref: https://github.com/swaywm/sway/issues/7046

* update sheldon inline cmd to more reliably build swaylock-effects from
  sources
* add host-specific swaylock config
* rm image field from swaylock's config that was added there to prevent
  swaylock (swaylock-effects) from crashing when bluring the screenshot
2023-04-05 15:34:43 +02:00
leo b45d28b5b5
aliases.zsh: add helix alias 2023-03-22 19:29:51 +01:00
leo 27507e96c5
home-manager: don't manage helix-program with hm
however, start managing helix config with hm
2023-03-22 19:28:48 +01:00
leo 9b1c911136
nix: bump flake deps 2023-03-22 15:48:36 +01:00
leo c70827bb4f
home-manager: add,manage host-specific aerc config 2023-03-22 15:34:03 +01:00
leo 0ab1af4419
waybar: use ncpamixer instead of pavucontrol 2023-03-01 18:04:04 +01:00
leo 65e1aa8715
home-manager: add ncpamixer+conf 2023-03-01 16:04:08 +01:00
leo ec0abecb6b
nix(home-manager): add xtime
ref: https://go.dev/blog/pprof
2023-02-24 14:08:36 +01:00
leo dc37295ce7
newsboat: add ianhowson.com feed 2023-02-21 21:09:09 +01:00
leo 71e74f11bf
swaylock: explicitly set image 2023-02-21 21:08:36 +01:00
leo e271b3a1a1
starship: update git_status section 2023-02-21 21:07:45 +01:00
leo e27a0cfffa
starship: update gcloud logo 2023-02-21 21:06:40 +01:00
leo 93eef90016
vimrc: ss -> xs binding 2023-02-21 21:05:23 +01:00
leo 5872f852de
vimrc(vim-go): set go_doc settings 2023-02-21 21:05:08 +01:00
leo 773436b048
vimrc: update CtrlP to use The Silver Searcher 2023-02-21 21:03:36 +01:00
leo fcec9cc75b
vimrc: ALE linting hints 2023-02-21 21:02:20 +01:00
leo fe595a9d63
vimrc(airline): disable branch indicator 2023-02-21 21:01:49 +01:00
leo 9c04375e5c
waybar: set critical temp style 2023-02-21 20:58:35 +01:00
leo 08fce47afe
waybar: move around storage, temperature 2023-02-21 20:55:37 +01:00
leo 2f4ee35d95
waybar: fmt storage 2023-02-21 20:54:44 +01:00
leo f5e3ecf0e2
waybar: fmt tray 2023-02-21 20:54:32 +01:00
leo 7f356a610f
waybar(style): add temperature 2023-02-21 20:54:01 +01:00
leo 7a6e909c77
waybar: edit config filetype 2023-02-21 20:53:07 +01:00
leo 69f671a88d
waybar: fmt 2023-02-21 20:52:45 +01:00
leo 2147b6163c
waybar: add nix snowlake after timezone 2023-02-21 20:51:18 +01:00
leo 390d01582a
waybar: fmt pulseaudio section 2023-02-21 20:50:25 +01:00
leo dc3b40850f
waybar: fmt temperature section 2023-02-21 20:49:42 +01:00
leo 33ef25d385
waybar: fmt network section 2023-02-21 20:49:27 +01:00
leo 52fff734cf
waybar: fmt battery section 2023-02-21 20:48:39 +01:00
leo 67481ba57a
waybar: edit battery format 2023-02-21 20:46:55 +01:00
leo c294c6ecd0
waybar: on-click run btop 2023-02-21 20:46:11 +01:00
leo a4c03c3d9a
waybar: set storage margin to '0 5px' 2023-02-21 20:21:28 +01:00
leo 7c0345c13a
waybar: add padding setting for language 2023-02-21 20:19:57 +01:00
leo b7859d2d9a
waybar: extend font settings 2023-02-21 20:19:18 +01:00
leo fa275bb486
waybar: update tray highlight 2023-02-21 20:17:54 +01:00
leo 6d570db708
waybar: add keyboard-state section 2023-02-21 20:16:32 +01:00
leo d794c009bd
waybar: update pulseaudio section 2023-02-21 20:12:35 +01:00
leo 0d6ef1aca8
nix(home-manager): manage git's allowed_signers 2023-02-21 20:06:36 +01:00
leo a7b29a206c
nix(home-manager): manage qbwork's stylesheets 2023-02-21 20:04:50 +01:00
leo 830b52b75f
nix(home-manager): manage mako 2023-02-21 20:04:11 +01:00
leo 443c1f5179
nix(home-manager): manage gdbinit 2023-02-21 20:03:13 +01:00
leo 848dc1ad32
nix(home-manager): manage bat 2023-02-21 20:02:52 +01:00
leo aa557d061b
nix(home-manager): manage npmrc 2023-02-21 20:01:52 +01:00
leo e1d8cd05f1
zprofile: check bemenu-dracula exists before load 2023-02-21 19:56:15 +01:00
leo 2f558e06ca
zprofile: host-proofing 2023-02-21 19:55:43 +01:00
leo bc7c268c16
zshrc: fool-proof fzf bindings loading 2023-02-21 19:53:31 +01:00
leo 8790dade9c
aliases.zsh: add options to exa 2023-02-21 15:26:48 +01:00
leo d4eb047518
functions.zsh: set exa+bat preview for fzf-open 2023-02-21 15:26:17 +01:00
leo f95e448736
zshrc(FZF_*OPTS): preview using exa;bat optionally 2023-02-21 15:25:08 +01:00
leo b0765cc656
aliases.zsh: fix vimrc alias 2023-01-30 21:05:41 +01:00
leo 10d9d58655
vimrc: update ale_sign_{error,warning} 2023-01-21 16:46:59 +01:00
leo a97819dd0a
aliases.zsh: add alias for home-manager switch 2023-01-21 16:43:41 +01:00
leo ad68783c42
aliases.zsh: update dotfiles alias 2023-01-21 16:42:33 +01:00
leo a62afa4a98
aliases.zsh: point to the repo version of files 2023-01-21 16:41:56 +01:00
leo 546d14cbe1
add git/allowed_signers 2023-01-21 16:40:54 +01:00
leo faa7f4ceea
add bat config 2023-01-21 16:40:33 +01:00
leo 02196ebb22
starship: fix status symbol 2023-01-21 16:39:10 +01:00
leo 3bc263f3b3
starship: disable gcloud module 2023-01-21 16:38:51 +01:00
leo 4cb1486f94
starship: add os module config (disable for now) 2023-01-21 16:37:49 +01:00
leo 6a838dfd07
home-manager: add home-leo.nix et al. 2022-11-27 18:04:47 +01:00
47 changed files with 2626 additions and 353 deletions

View File

@ -1,7 +1,8 @@
[build]
jobs = 2 # number of parallel jobs, defaults to # of CPUs
rustc = ".cargo/bin/rustc" # the rust compiler tool
rustc-wrapper = ".cargo/bin/sccache" # enable sccache
#rustc = ".cargo/bin/rustc" # the rust compiler tool
# rustc-wrapper = "/usr/sbin/sccache" # enable sccache
rustc-wrapper = "sccache" # enable sccache
[future-incompat-report]
frequency = 'always' # when to display a notification about a future incompat report

View File

@ -7,7 +7,12 @@
# with mutt's printf-like syntax.
#
# Default: %D %-17.17n %Z %s
index-format=%D %-17.17n %Z %s
# index-format=%D %-17.17n %Z %s
index-columns = date<*,name<17,flags>4,subject<*
column-subject = {{.ThreadPrefix}}{{.Subject}}
column-date = {{.DateAutoFormat .Date.Local}}
column-name = {{index (.From | names) 0}}
column-flags = {{.Flags | join ""}}
#
# See time.Time#Format at https://godoc.org/time#Time.Format
@ -51,7 +56,9 @@ pinned-tab-marker='`'
# Describes the format string to use for the directory list
#
# Default: %n %>r
dirlist-format=%n %>r
# dirlist-format=%n %>r
dirlist-left = {{.Folder}}
dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
# List of space-separated criteria to sort the messages by, see *sort*
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
@ -177,7 +184,8 @@ image/*=catimg -w $(tput cols) -
#
# Executed when a new email arrives in the selected folder
new-email=exec notify-send "aerc: you have a new email"
# new-email=exec notify-send "aerc: you have a new email"
mail-received = notify-send "aerc: you have a new email"
[templates]
# Templates are used to populate email bodies automatically.

211
.config/aerc/aerc.conf.leo Normal file
View File

@ -0,0 +1,211 @@
#
# aerc main configuration
[ui]
#
# Describes the format for each row in a mailbox view. This field is compatible
# with mutt's printf-like syntax.
#
# Default: %D %-17.17n %Z %s
# index-format=%D %-17.17n %Z %s
index-columns = date<*,name<17,flags>4,subject<*
column-subject = {{.ThreadPrefix}}{{.Subject}}
column-date = {{.DateAutoFormat .Date.Local}}
column-name = {{index (.From | names) 0}}
column-flags = {{.Flags | join ""}}
#
# See time.Time#Format at https://godoc.org/time#Time.Format
#
# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
timestamp-format=2006-01-02 03:04 PM
#
# Width of the sidebar, including the border.
#
# Default: 20
sidebar-width=20
#
# Message to display when viewing an empty folder.
#
# Default: (no messages)
empty-message=(no messages)
# Message to display when no folders exists or are all filtered
#
# Default: (no folders)
empty-dirlist=(no folders)
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
#
# Default: false
mouse-enabled=false
#
# Ring the bell when new messages are received
#
# Default: true
new-message-bell=true
# Marker to show before a pinned tab's name.
#
# Default: `
pinned-tab-marker='`'
# Describes the format string to use for the directory list
#
# Default: %n %>r
# dirlist-format=%n %>r
dirlist-left = {{.Folder}}
dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
# List of space-separated criteria to sort the messages by, see *sort*
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
# reverses that criterion.
#
# Example: "from -r date"
#
# Default: ""
sort=
# Moves to next message when the current message is deleted
#
# Default: true
next-message-on-delete=true
# The directories where the stylesets are stored. It takes a colon-separated
# list of directories.
#
# default: /usr/local/share/aerc/stylesets/
stylesets-dirs=/usr/share/aerc/stylesets/
# Sets the styleset to use for the aerc ui elements.
#
# Default: default
# styleset-name=default
styleset-name=dracula
[viewer]
#
# Specifies the pager to use when displaying emails. Note that some filters
# may add ANSI codes to add color to rendered emails, so you may want to use a
# pager which supports ANSI codes.
#
# Default: less -R
pager=less -R
#
# If an email offers several versions (multipart), you can configure which
# mimetype to prefer. For example, this can be used to prefer plaintext over
# html emails.
#
# Default: text/plain,text/html
alternatives=text/plain,text/html
#
# Default setting to determine whether to show full headers or only parsed
# ones in message viewer.
#
# Default: false
show-headers=false
#
# Layout of headers when viewing a message. To display multiple headers in the
# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
# none of their specified headers are present in the message.
#
# Default: From|To,Cc|Bcc,Date,Subject
header-layout=From|To,Cc|Bcc,Date,Subject
# Whether to always show the mimetype of an email, even when it is just a single part
#
# Default: false
always-show-mime=false
# How long to wait after the last input before auto-completion is triggered.
#
# Default: 250ms
completion-delay=250ms
#
# Global switch for completion popovers
#
# Default: true
completion-popovers=true
[compose]
#
# Specifies the command to run the editor with. It will be shown in an embedded
# terminal, though it may also launch a graphical window if the environment
# supports it. Defaults to $EDITOR, or vi.
editor=
#
# Default header fields to display when composing a message. To display
# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
#
# Default: To|From,Subject
header-layout=To|From,Subject,Cc|Bcc
#
# Specifies the command to be used to tab-complete email addresses. Any
# occurrence of "%s" in the address-book-cmd will be replaced with what the
# user has typed so far.
#
# The command must output the completions to standard output, one completion
# per line. Each line must be tab-delimited, with an email address occurring as
# the first field. Only the email address field is required. The second field,
# if present, will be treated as the contact name. Additional fields are
# ignored.
address-book-cmd=
[filters]
#
# Filters allow you to pipe an email body through a shell command to render
# certain emails differently, e.g. highlighting them with ANSI escape codes.
#
# The first filter which matches the email's mimetype will be used, so order
# them from most to least specific.
#
# You can also match on non-mimetypes, by prefixing with the header to match
# against (non-case-sensitive) and a comma, e.g. subject,text will match a
# subject which contains "text". Use header,~regex to match against a regex.
# subject,~^\[PATCH=awk -f /usr/share/aerc/filters/hldiff
subject,~^\[PATCH=awk -f /usr/libexec/aerc/filters/hldiff
#text/html=/usr/local/share/aerc/filters/html
text/html=/usr/libexec/aerc/filters/html
text/*=awk -f /usr/libexec/aerc/filters/plaintext
image/*=catimg -w $(tput cols) -
[triggers]
#
# Triggers specify commands to execute when certain events occur.
#
# Example:
# new-email=exec notify-send "New email from %n" "%s"
#
# Executed when a new email arrives in the selected folder
# new-email=exec notify-send "aerc: you have a new email"
mail-received = notify-send "aerc: you have a new email"
[templates]
# Templates are used to populate email bodies automatically.
#
# The directories where the templates are stored. It takes a colon-separated
# list of directories.
#
# default: /usr/local/share/aerc/templates/
template-dirs=/usr/share/aerc/templates/
# The template to be used for quoted replies.
#
# default: quoted_reply
quoted-reply=quoted_reply
# The template to be used for forward as body.
#
# default: forward_as_body
forwards=forward_as_body

3
.config/bat/config Normal file
View File

@ -0,0 +1,3 @@
--theme=Dracula
--style="numbers,changes,header"
--italic-text=always

View File

@ -0,0 +1,2 @@
surtur ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBtG6NCgdLHX4ztpfvYNRaslKWZcl6KdTc1DehVH4kAL
leo ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKwshTdBgLzwY4d8N7VainZCngH88OwvPGhZ6bm87rBO

View File

@ -1,8 +1,9 @@
[user]
name = surtur
email = a_mirre@utb.cz
[commit]
gpgsign = true
[gpg]
format = ssh
[gpg "ssh"]
allowedSignersFile = ~/.config/git/allowed_signers
[oh-my-zsh]
hide-status = 1
[cola]

158
.config/helix/config.toml Normal file
View File

@ -0,0 +1,158 @@
# based on https://github.com/LGUG2Z/helix-vim
theme = "base16_default"
[editor]
line-number = "relative"
[editor.lsp]
display-messages = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
[editor.whitespace]
# render.space,tab,newline
render = "all"
[editor.whitespace.characters]
space = "·"
nbsp = "⍽"
# tab = "→"
tab = ">"
newline = "¬"
# Tabs will look like "→···" (depending on tab width)
# tabpad = "·"
tabpad = "-"
[keys.normal]
# Quick iteration on config changes
C-o = ":config-open"
C-r = ":config-reload"
# Some nice Helix stuff
C-h = "select_prev_sibling"
C-j = "shrink_selection"
C-k = "expand_selection"
C-l = "select_next_sibling"
# Upstream's preference
# o = ["open_below", "normal_mode"]
# O = ["open_above", "normal_mode"]
# Muscle memory
"{" = ["goto_prev_paragraph", "collapse_selection"]
"}" = ["goto_next_paragraph", "collapse_selection"]
0 = "goto_line_start"
"$" = "goto_line_end"
"^" = "goto_first_nonwhitespace"
G = "goto_file_end"
"%" = "match_brackets"
V = ["select_mode", "extend_to_line_bounds"]
C = ["extend_to_line_end", "yank_main_selection_to_clipboard", "delete_selection", "insert_mode"]
D = ["extend_to_line_end", "yank_main_selection_to_clipboard", "delete_selection"]
S = "surround_add" # Would be nice to be able to do something after this but it isn't chainable
# Clipboards over registers ye ye
x = "delete_selection"
p = ["paste_clipboard_after", "collapse_selection"]
P = ["paste_clipboard_before", "collapse_selection"]
# Would be nice to add ya and yi, but the surround commands can't be chained
Y = ["extend_to_line_end", "yank_main_selection_to_clipboard", "collapse_selection"]
# Uncanny valley stuff, this makes w and b behave as they do Vim
w = ["move_next_word_start", "move_char_right", "collapse_selection"]
W = ["move_next_long_word_start", "move_char_right", "collapse_selection"]
e = ["move_next_word_end", "collapse_selection"]
E = ["move_next_long_word_end", "collapse_selection"]
b = ["move_prev_word_start", "collapse_selection"]
B = ["move_prev_long_word_start", "collapse_selection"]
# If you want to keep the selection-while-moving behaviour of Helix, this two lines will help a lot,
# especially if you find having text remain selected while you have switched to insert or append mode
#
# There is no real difference if you have overridden the commands bound to 'w', 'e' and 'b' like above
# But if you really want to get familiar with the Helix way of selecting-while-moving, comment the
# bindings for 'w', 'e', and 'b' out and leave the bindings for 'i' and 'a' active below. A world of difference!
i = ["insert_mode", "collapse_selection"]
a = ["append_mode", "collapse_selection"]
# Undoing the 'd' + motion commands restores the selection which is annoying
u = ["undo", "collapse_selection"]
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
esc = ["collapse_selection", "keep_primary_selection"]
# Search for word under cursor
"*" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_next"]
"#" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_prev"]
# Extend and select commands that expect a manual input can't be chained
# I've kept d[X] commands here because it's better to at least have the stuff you want to delete
# selected so that it's just a keystroke away to delete
[keys.normal.d]
d = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection"]
t = ["extend_till_char"]
s = ["surround_delete"]
i = ["select_textobject_inner"]
a = ["select_textobject_around"]
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "delete_selection"]
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "delete_selection"]
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] }
[keys.normal.y]
y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "normal_mode", "collapse_selection"]
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] }
[keys.normal.Z]
Z = ":write-quit"
[keys.insert]
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
esc = ["collapse_selection", "normal_mode"]
[keys.select]
# Muscle memory
"{" = ["extend_to_line_bounds", "goto_prev_paragraph"]
"}" = ["extend_to_line_bounds", "goto_next_paragraph"]
0 = "goto_line_start"
"$" = "goto_line_end"
"^" = "goto_first_nonwhitespace"
G = "goto_file_end"
D = ["extend_to_line_bounds", "delete_selection", "normal_mode"]
C = ["goto_line_start", "extend_to_line_bounds", "change_selection"]
"%" = "match_brackets"
S = "surround_add" # Basically 99% of what I use vim-surround for
u = ["switch_to_lowercase", "collapse_selection", "normal_mode"]
U = ["switch_to_uppercase", "collapse_selection", "normal_mode"]
# Visual-mode specific muscle memory
i = "select_textobject_inner"
a = "select_textobject_around"
# Some extra binds to allow us to insert/append in select mode because it's nice with multiple cursors
tab = ["insert_mode", "collapse_selection"] # tab is read by most terminal editors as "C-i"
C-a = ["append_mode", "collapse_selection"]
# Make selecting lines in visual mode behave sensibly
k = ["extend_line_up", "extend_to_line_bounds"]
j = ["extend_line_down", "extend_to_line_bounds"]
# Clipboards over registers ye ye
d = ["yank_main_selection_to_clipboard", "delete_selection"]
x = ["yank_main_selection_to_clipboard", "delete_selection"]
y = ["yank_main_selection_to_clipboard", "normal_mode", "flip_selections", "collapse_selection"]
Y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "goto_line_start", "collapse_selection", "normal_mode"]
p = "replace_selections_with_clipboard" # No life without this
P = "paste_clipboard_before"
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
esc = ["collapse_selection", "keep_primary_selection", "normal_mode"]

View File

@ -25,6 +25,26 @@
# output "Dell Inc. DELL U2412M YPPY077L1JXS" disable
#}
#profile bigscreen-sammy {
# output eDP-1 enable mode 1920x1080 position 0,0
# output "Samsung Electric Company LU28R55 HNMW101193" mode 2560x1440 enable position 1920,0
#}
#profile bigscreen-sammy4k-clamshell {
# output eDP-1 disable
# output "Samsung Electric Company LU28R55 HNMW101193" mode 3840x2160 enable position 0,0
#}
profile bigscreen-sammy-clamshell {
output eDP-1 disable
output "Samsung Electric Company LU28R55 HNMW101193" mode 2560x1440 enable position 0,0
}
profile bigscreen1 {
output eDP-1 disable
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 enable position 0,0 scale .94
}
profile bigscreen {
output eDP-1 disable
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 enable position 0,0 scale .94
@ -32,8 +52,14 @@ profile bigscreen {
# output eDP-1 enable mode 1920x1080 position 0,0 scale 1
}
# profile bigscreen2-clamshell {
# output eDP-1 disable
# output "Dell Inc. DELL U2412M YPPY077L1JXS" mode 1920x1200 enable position 0,0 scale .94
# # output eDP-1 enable mode 1920x1080 position 0,0 scale 1
# }
profile single-no-clamshell {
output eDP-1 enable position 0,0
output eDP-1 enable mode 1920x1080 position 0,0
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 disable
output "Dell Inc. DELL U2412M YPPY077L1JXS" disable
}

View File

@ -0,0 +1,42 @@
## name: Dracula
## author: Keegan Carruthers-Smith
## license: MIT
## upstream: https://raw.githubusercontent.com/dracula/kitty/master/dracula.conf
foreground #f8f8f2
background #282a36
selection_foreground #ffffff
selection_background #44475a
url_color #8be9fd
color0 #21222c
color8 #6272a4
color1 #ff5555
color9 #ff6e6e
color2 #50fa7b
color10 #69ff94
color3 #f1fa8c
color11 #ffffa5
color4 #bd93f9
color12 #d6acff
color5 #ff79c6
color13 #ff92df
color6 #8be9fd
color14 #a4ffff
color7 #f8f8f2
color15 #ffffff
cursor #f8f8f2
cursor_text_color background
active_tab_foreground #282a36
# active_tab_background #f8f8f2
active_tab_background #ab86e0
# inactive_tab_foreground #282a36
# inactive_tab_background #6272a4
# alt
# inactive_tab_background #2c2f3a
# alt2
# inactive_tab_foreground #6272a4
inactive_tab_foreground #a0cff7
# inactive_tab_background #2b2b2b
inactive_tab_background #282a36
tab_bar_background #282a36
mark1_foreground #282a36

View File

@ -6,10 +6,10 @@
#: individual font faces and even specify special fonts for particular
#: characters.
font_family FiraCode-Retina
bold_font FiraCode-Bold
italic_font CascadiaCodePL-SemiBoldItalic
bold_italic_font CascadiaCodePL-BoldItalic
font_family FiraCodeNFM-Ret
bold_font FiraCodeNFM-Bold
italic_font CascadiaCodeItalic_350wght
bold_italic_font CascadiaCodeItalic_700wght
# italic_font JetBrainsMono-MediumItalic
# bold_italic_font JetBrainsMono-BoldItalic
@ -79,6 +79,7 @@ modify_font cell_width 100%
# file: https://github.com/ryanoasis/nerd-fonts/blob/master/src/glyphs/Symbols-2048-em Nerd Font Complete.ttf
###########################################################
### ## 2022-11-19 @leo: the path above is no longer available, use distro pkg (for archlinux)
# "Nerd Fonts - Pomicons"
symbol_map U+E000-U+E00D Symbols Nerd Font
@ -143,11 +144,11 @@ disable_ligatures never
#: map alt+3 disable_ligatures_in tab cursor
# cv29: {}, cv31 ()
font_features FiraCode-Bold +zero +ss07 +cv31
font_features FiraCode-Light +zero +ss07 +cv31
font_features FiraCode-Medium +zero +ss07 +cv31
font_features FiraCode-Regular +zero +ss07 +cv31
font_features FiraCode-Retina +zero +ss07 +cv31
font_features FiraCodeNFM-Bold +zero +ss07 +cv31
font_features FiraCodeNFM-Light +zero +ss07 +cv31
font_features FiraCodeNFM-Med +zero +ss07 +cv31
font_features FiraCodeNFM-Reg +zero +ss07 +cv31
font_features FiraCodeNFM-Ret +zero +ss07 +cv31
font_features JetBrainsMono-Italic +liga +calt +ss04 +ss05
font_features JetBrainsMono-BoldItalic +liga +calt +ss04 +ss05
font_features JetBrainsMono-MediumItalic +liga +calt +ss04 +ss05
@ -1171,7 +1172,7 @@ map kitty_mod+page_down scroll_page_down
map kitty_mod+home scroll_home
map kitty_mod+end scroll_end
map kitty_mod+h show_scrollback
map kitty_mod+b launch --stdin-source=@screen_scrollback --type=overlay vim -R +":set nomod noma nolist colorcolumn=" -
map kitty_mod+o launch --stdin-source=@screen_scrollback --type=overlay vim -R +":set nomod noma nolist colorcolumn=" -
#: You can pipe the contents of the current screen + history buffer as
#: STDIN to an arbitrary program using the ``launch`` function. For

98
.config/ncpamixer.conf Normal file
View File

@ -0,0 +1,98 @@
"theme" = "c0r73x"
# Default theme {
"theme.default.static_bar" = false
"theme.default.default_indicator" = "♦ "
"theme.default.bar_style.bg" = "░"
"theme.default.bar_style.fg" = "█"
"theme.default.bar_style.indicator" = "█"
"theme.default.bar_style.top" = "▁"
"theme.default.bar_style.bottom" = "▔"
"theme.default.bar_low.front" = 2
"theme.default.bar_low.back" = 0
"theme.default.bar_mid.front" = 3
"theme.default.bar_mid.back" = 0
"theme.default.bar_high.front" = 1
"theme.default.bar_high.back" = 0
"theme.default.volume_low" = 2
"theme.default.volume_mid" = 3
"theme.default.volume_high" = 1
"theme.default.volume_peak" = 1
"theme.default.volume_indicator" = -1
"theme.default.selected" = 2
"theme.default.default" = -1
"theme.default.border" = -1
"theme.default.dropdown.selected_text" = 0
"theme.default.dropdown.selected" = 2
"theme.default.dropdown.unselected" = -1
# }
# c0r73x theme {
"theme.c0r73x.static_bar" = false
"theme.c0r73x.default_indicator" = "♦ "
"theme.c0r73x.bar_style.bg" = "■"
"theme.c0r73x.bar_style.fg" = "■"
"theme.c0r73x.bar_style.indicator" = "■"
"theme.c0r73x.bar_style.top" = ""
"theme.c0r73x.bar_style.bottom" = ""
"theme.c0r73x.bar_low.front" = 0
"theme.c0r73x.bar_low.back" = -1
"theme.c0r73x.bar_mid.front" = 0
"theme.c0r73x.bar_mid.back" = -1
"theme.c0r73x.bar_high.front" = 0
"theme.c0r73x.bar_high.back" = -1
"theme.c0r73x.volume_low" = 6
"theme.c0r73x.volume_mid" = 6
"theme.c0r73x.volume_high" = 6
"theme.c0r73x.volume_peak" = 1
"theme.c0r73x.volume_indicator" = 15
"theme.c0r73x.selected" = 6
"theme.c0r73x.default" = -1
"theme.c0r73x.border" = -1
"theme.c0r73x.dropdown.selected_text" = 0
"theme.c0r73x.dropdown.selected" = 6
"theme.c0r73x.dropdown.unselected" = -1
# }
# Keybinds {
"keycode.9" = "switch" # tab
"keycode.13" = "select" # enter
"keycode.27" = "quit" # escape
"keycode.99" = "dropdown" # c
"keycode.113" = "quit" # q
"keycode.109" = "mute" # m
"keycode.100" = "set_default" # d
"keycode.108" = "volume_up" # l
"keycode.104" = "volume_down" # h
"keycode.261" = "volume_up" # arrow right
"keycode.260" = "volume_down" # arrow left
"keycode.107" = "move_up" # k
"keycode.106" = "move_down" # j
"keycode.259" = "move_up" # arrow up
"keycode.258" = "move_down" # arrow down
"keycode.338" = "page_up" # page up
"keycode.339" = "page_down" # page down
"keycode.76" = "tab_next" # L
"keycode.72" = "tab_prev" # H
"keycode.265" = "tab_playback" # f1
"keycode.266" = "tab_recording" # f2
"keycode.267" = "tab_output" # f3
"keycode.268" = "tab_input" # f4
"keycode.269" = "tab_config" # f5
"keycode.f.80" = "tab_playback" # f1 VT100
"keycode.f.81" = "tab_recording" # f2 VT100
"keycode.f.82" = "tab_output" # f3 VT100
"keycode.f.83" = "tab_input" # f4 VT100
"keycode.f.84" = "tab_config" # f5 VT100
"keycode.71" = "move_last" # G
"keycode.103" = "move_first" # g
# "keycode.48" = "set_volume_100" # 0
"keycode.48" = "set_volume_0" # 0
"keycode.49" = "set_volume_10" # 1
"keycode.50" = "set_volume_20" # 2
"keycode.51" = "set_volume_30" # 3
"keycode.52" = "set_volume_40" # 4
"keycode.53" = "set_volume_50" # 5
"keycode.54" = "set_volume_60" # 6
"keycode.55" = "set_volume_70" # 7
"keycode.56" = "set_volume_80" # 8
"keycode.57" = "set_volume_90" # 9
# }

View File

@ -1,5 +1,6 @@
{
pkgs = import <personal> { };
# pkgs = import <personal> {};
pkgs = import <nixpkgs> {};
# https://nixos.org/manual/nixpkgs/stable/#sec-declarative-package-management
# https://github.com/g-w1/nix-configs/blob/main/home.nix
@ -30,13 +31,13 @@
nerdfonts
];
pathsToLink = [ "/share" "/bin" "/etc" ];
pathsToLink = ["/share" "/bin" "/etc"];
};
};
nix.distributedBuilds = true;
# useful when the builder has a faster internet connection than yours
nix.extraOptions = ''
builders-use-substitutes = true
'';
nix.distributedBuilds = true;
# useful when the builder has a faster internet connection than yours
nix.extraOptions = ''
builders-use-substitutes = true
'';
}

526
.config/nvim/init.vim Executable file
View File

@ -0,0 +1,526 @@
" not necessary, as vim will turn this on by default, when .vimrc is found
" set nocompatible
set encoding=utf-8 " important for powerline besides others
scriptencoding=utf8
filetype off "required
augroup install_vim_plug
autocmd!
if empty(glob('~/.local/share/nvim/site/autoload/plug.vim'))
silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
augroup END
augroup plug_auto_install
autocmd!
" Run PlugInstall if there are missing plugins
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync | source $MYVIMRC
\| endif
augroup END
call plug#begin()
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ryanoasis/vim-devicons'
Plug 'dracula/vim'
Plug 'axvr/photon.vim'
Plug 'ncm2/ncm2'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'mhinz/vim-startify'
Plug 'preservim/nerdcommenter'
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-repeat'
" https://github.com/neovim/nvim-lspconfig
Plug 'neovim/nvim-lspconfig'
Plug 'kabouzeid/nvim-lspinstall'
"Plug 'zchee/nvim-go', { 'do': 'make'}
Plug 'fatih/vim-go', { 'for': ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl'], 'do': ':GoInstallBinaries' }
Plug 'themaxmarchuk/tailwindcss-colors.nvim'
Plug 'brenoprata10/nvim-highlight-colors'
Plug 'majutsushi/tagbar'
Plug 'NoahTheDuke/vim-just', { 'for': ['just'] }
Plug 'fladson/vim-kitty', { 'for': ['kitty'] }
call plug#end()
" airline config
" turn on vimscript 9 support
let g:airline_experimental = 1
let g:airline_powerline_fonts = 1
let g:airline_highlighting_cache = 1
" violet, wombat, deus
let g:airline_theme = 'minimalist'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
" show tab number instead of number of splits
let g:airline#extensions#tabline#tab_nr_type = 1
let g:airline_mode_map = {
\ '__' : '-',
\ 'c' : 'C',
\ 'i' : 'I',
\ 'ic' : 'I-C',
\ 'ix' : 'I-X',
\ 'n' : 'N',
\ 'multi' : 'M',
\ 'ni' : 'N',
\ 'no' : 'N',
\ 'R' : 'R',
\ 'Rv' : 'R',
\ 's' : 'S',
\ 'S' : 'S',
\ '' : 'S',
\ 't' : 'T',
\ 'v' : 'V',
\ 'V' : 'V-L',
\ '' : 'V-B',
\ }
" skip displaying fileformat output if the output matches a configured string.
let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]'
" certain number of spaces are allowed after tabs, but not in between.
" this algorithm works well for /** */ style comments in a tab-indented file.
let g:airline#extensions#whitespace#mixed_indent_algo = 1
" turn off the warning section entirely.
let g:airline_section_warning = ''
let g:airline_skip_empty_sections = 1
" separator symbols
let g:airline_left_sep = ''
let g:airline_right_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_alt_sep = ''
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_symbols.branch = ''
let g:airline_symbols.colnr = '℅:'
let g:airline_symbols.readonly = ''
let g:airline_symbols.nx='∄'
" ale integration
let g:airline#extensions#ale#enabled = 1
" nrrwrgn integration
let g:airline#extensions#nrrwrgn#enabled = 1
" vcs integration
let g:airline#extensions#branch#enabled = 0
" show summary of changed hunks (gitgutter and/or vim-signify)
let g:airline#extensions#hunks#enabled = 1
" tabline integration
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#ctrlp#enabled = 1
let g:airline#extensions#taboo#enabled = 0
let g:airline#extensions#battery#enabled = 0
let g:airline#extensions#bookmark#enabled = 0
let g:airline#extensions#flog#enabled = 0
let g:airline#extensions#bufferline#enabled = 0
let g:airline#extensions#capslock#enabled = 0
let g:airline#extensions#coc#enabled = 0
" syntastic integration
let g:airline#extensions#syntastic#enabled = 0
" vim-csv
let g:airline#extensions#csv#enabled = 0
let g:airline#extensions#ctrlspace#enabled = 0
" Built-in extension to displays cursor in different colors depending on the
" current mode (only works in terminals iTerm, AppleTerm and xterm)
" * this fixes the issue of airline changing terminal cursor colour in kitty+fedora35/fedora36
let g:airline#extensions#cursormode#enabled = 0
if has('patch-8.1.1880')
" set completeopt=longest,menuone,popuphidden
set completeopt=longest,menuone,popup
" Highlight the completion documentation popup background/foreground the same as
" the completion menu itself, for better readability with highlighted
" documentation.
set completepopup=highlight:Pmenu,border:off
else
set completeopt=longest,menuone,preview
" Set desired preview window height for viewing documentation.
set previewheight=5
endif
" colo dracula
colo photon
set autochdir
set number relativenumber
set smartcase
set splitbelow splitright
set lazyredraw
set ttyfast
set listchars=trail:•,tab:>-,nbsp:☣,eol,extends:,precedes:
set nolist " show/hide tabs and EOL chars (hidden characters)
" don't indent wrapped lines
set nobreakindent
set confirm " ask confirmation like save before quit.
set wildmenu " Tab completion menu when using command mode
" https://bitbucket.org/sjl/dotfiles/src/tip/vim/vimrc#cl-153
set wildignore+=.hg,.git,.svn " Version control
set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files
set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg " binary images
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files
set wildignore+=*.dwo " DWARF debug object files
set wildignore+=*.spl " compiled spelling word lists
set wildignore+=*.pyc " Python byte code
set wildignore+=node_modules/**
set wildmode=longest:longest,full
set colorcolumn=80
filetype plugin indent on
set hlsearch incsearch
augroup filetypes
autocmd!
au BufRead,BufNewFile *.tmpl setlocal filetype=gohtmltmpl
au FileType gohtmltmpl setlocal ff=unix ts=2 shiftwidth=2 sts=2 noexpandtab
augroup END
" --------
" plugin configurations
" --------
let g:gitgutter_terminal_reports_focus=0
let g:gitgutter_async = 1
let g:gitgutter_sign_column_always = 1
let g:gitgutter_sign_allow_clobber=0
let g:gitgutter_set_sign_backgrounds = 0
let g:gitgutter_preview_win_floating = 1
set foldtext=gitgutter#fold#foldtext()
nmap ghs <Plug>(GitGutterStageHunk)
nmap ghu <Plug>(GitGutterUndoHunk)
nnoremap <leader>d :GitGutterLineHighlightsToggle<cr>
" nerdcommenter
noremap <silent><c-/> :call nerdcommenter#Comment(0,"toggle")<cr>
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = {
\ 'vim': { 'left': '"','right': '' },
\ 'c': {'left': '/**','right': '*/' },
\ 'dhall': {'left': '-- | ', 'right': '' },
\ 'zsh': { 'left': '#','right': ''},
\ 'sysctl': {'left': '#', 'right': ''},
\ 'systemd': {'left': ';', 'right': ''},
\}
" let g:NERDTreeGitStatusWithFlags = 1
" netrw
let g:netrw_banner = 0
let g:netrw_keepdir = 0
" prefer tree-style listing
let g:netrw_liststyle = 3
" let g:netrw_liststyle = 1
let g:netrw_sort_options = 'i'
" open files in a new horizontal split
let g:netrw_browse_split = 1
" ctrlp
" Setup some default ignores
let g:ctrlp_custom_ignore = {
\ 'dir':'\v[\/](\.(git\/(branches|hooks|info|logs|modules|objects|rebase-merge|refs)|hg|svn)|\_site)$',
\ 'file':'\v\.(exe|so|dll|class|png|jpg|jpeg)|(\.(git\/(description|index|packed-refs|COMMIT_EDITMSG|HEAD|FETCH_HEAD|ORIG_HEAD|REBASE_HEAD)))$',
\}
" Use the nearest .git directory as the cwd
" This makes a lot of sense if you are working on a project that is in version
" control. It also supports works with .svn, .hg, .bzr.
" let g:ctrlp_working_path_mode = 'r'
let g:ctrlp_working_path_mode = 'raw'
let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp'
" The Silver Searcher
if executable('ag')
" use ag instead of grep.
set grepprg=ag\ --nogroup\ --nocolor
" use ag in CtrlP
let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
" ag is fast enough that CtrlP doesn't need to cache
let g:ctrlp_use_caching = 0
endif
nnoremap <c-p> :CtrlP<cr><cr>
nnoremap <leader>s <Plug>(ctrlp)
let g:ctrlp_show_hidden = 1
" Use a leader instead of the actual named binding
nmap <leader>p <Plug>(ctrlp)
" ctrlp buffers
" Easy bindings for its various modes
nmap <leader>bb :CtrlPBuffer<cr>
nmap <leader>bm :CtrlPMixed<cr>
nmap <leader>bs :CtrlPMRU<cr>
" buffers
nmap <leader>T :enew<cr>
nmap <leader>bq :bp <BAR> bd #<cr>
nmap <leader>gd :bd<cr>
map gn :bn<cr>
map gp :bp<cr>
command! W execute 'w' | edit!
command! WW execute 'silent w !sudo tee % >/dev/null' | edit!
" always show full path on <c-g>
nnoremap <c-g> 1<c-g>
" open a terminal in $PWD
nnoremap <silent> <leader>tt :terminal<cr>
" terminal normal mode
tnoremap <F1> <C-W>N
" toggle showing whitespace
noremap <F5> :set list!<cr>
nnoremap <F8> :TagbarToggle<cr>
" [bro]wse [ol]d files
nnoremap <leader>r :bro ol<cr>
" tab switching
nnoremap <silent><f6> gT
nnoremap <silent><f7> gt
" resize windows
map - <C-W>-
map + <C-W>+
" vmap to stay in Visual Mode after shifting > and <
vmap < <gv
vmap > >gv
"------------------------------------
" vim-go.vim
"------------------------------------
" use gopls
let g:go_def_mode='gopls'
let g:go_info_mode='gopls'
" Status line types/signatures.
let g:go_auto_type_info = 1
let g:go_highlight_types = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_interfaces = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_extra_types = 1
" if sluggish
" let g:go_highlight_structs = 0
" let g:go_highlight_interfaces = 0
" let g:go_highlight_operators = 0
" let g:go_list_type = 'quickfix'
let g:go_list_type = ''
" let g:go_version_warning = 0
let g:go_fmt_fail_silently = 0
" auto formatting and importing
let g:go_fmt_command = 'gopls'
let g:go_fmt_autosave = 1
" go install mvdan.cc/gofumpt@latest
let g:go_gopls_gofumpt = 1
" let g:go_gopls_options = ['-remote=auto']
let g:go_gopls_options = ['-remote=unix;/tmp/.gopls-daemon.sock']
" let lsp handle connecting to gopls
let g:go_gopls_enabled = 1
" let g:go_doc_popup_window = 0
let g:go_doc_popup_window = 1
let g:go_fillstruct_mode = 'gopls'
let g:go_term_reuse = 1
let g:go_term_enabled = 1
let g:go_doc_balloon = 1
augroup vimgo
au!
au FileType go nmap <leader>gb <Plug>(go-build)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>gr <Plug>(go-run)
au FileType go nmap <leader>gt <Plug>(go-test)
au FileType go nmap <leader>gs <Plug>(go-implements)
au FileType go nmap <leader>gi <Plug>(go-info)
au FileType go nmap <leader>ge <Plug>(go-rename)
au FileType go nmap <leader>gd <Plug>(go-doc)
" Navigation commands
au FileType go nmap <leader>ds <Plug>(go-def-split)
au FileType go nmap <leader>dv <Plug>(go-def-vertical)
" Alternate commands
au FileType go nmap <leader>hae <Plug>(go-alternate-edit)
au FileType go nmap <leader>vae <Plug>(go-alternate-vertical)
" Use new vim 8.2 popup windows for Go Doc
augroup END
" go_tags
"------------------------------------
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'gotags.vimrc.vim'
" when quitting a file, save the cursor position
augroup save_cursor_position
if &filetype !~# 'commit\|rebase'
autocmd!
" also automatically open any folds the cursor might land on.
autocmd BufReadPost * silent! normal! g`" zv
endif
augroup END
set hidden
set conceallevel=0
set mouse=a
set nogdefault
let g:vim_json_conceal = 0
let g:markdown_syntax_conceal = 0
set timeoutlen=200
set notimeout ttimeout ttimeoutlen=10
set undofile
set undodir=~/.vim/nvimundo//
set undolevels=2000
set undoreload=10001
if !isdirectory(expand(&undodir))
call mkdir(expand(&undodir), 'p')
endif
set nobackup
set nowritebackup
set directory=~/.vim/swp//
if !isdirectory(expand(&directory))
call mkdir(expand(&directory), 'p')
endif
set title
set showcmd
set showmatch
set updatetime=250
set noscrollbind
set noerrorbells
set laststatus=2 " show status bar
set report=1 " Always report number of lines changed by ex commands
set termguicolors
set t_Co=256
set guifont=Fira\ Code\ weight=450\ 12
let g:netrw_beval = 1
set t_vb=
" cursorline optimizations
set cursorlineopt=number
" 0 automatic selection
" 1 old engine
" 2 NFA engine
" set regexpengine=1
set regexpengine=0
" set redrawtime=500
" set synmaxcol=128
syntax sync minlines=256
" use +/clipboard as default register
set clipboard=unnamed,unnamedplus
" but since it's needed for direnv, we have to enable it.
set exrc
set secure
" https://sw.kovidgoyal.net/kitty/faq/#using-a-color-theme-with-a-background-color-does-not-work-well-in-vim
" work around vim's background colour erase:
"
" vim hardcodes background color erase even if the terminfo file does
" not contain bce (not to mention that libvte based terminals
" incorrectly contain bce in their terminfo files). This causes
" incorrect background rendering when using a color theme with a
" background color.
let &t_ut=''
" compensate for lack of theme italics
for s in ['Comment', 'markdownItalic', 'Boolean']
execute 'hi ' s ' cterm=italic'
endfor
hi CursorLineNR cterm=bold
lua <<EOF
require('nvim-highlight-colors').setup {enable_tailwind = true}
require'lspconfig'.gopls.setup{
filetypes = {"go", "gomod", "gowork", "gotmpl", "gohtmltmpl"}
}
require'lspconfig'.vimls.setup{}
require'lspconfig'.tailwindcss.setup{
filetypes = { "aspnetcorerazor", "astro", "astro-markdown", "blade", "clojure", "django-html", "htmldjango", "edge", "eelixir", "elixir", "ejs", "erb", "eruby", "gohtml", "gohtmltmpl", "gotmpl", "haml", "handlebars", "hbs", "html", "html-eex", "heex", "jade", "leaf", "liquid", "markdown", "mdx", "mustache", "njk", "nunjucks", "php", "razor", "slim", "twig", "css", "less", "postcss", "sass", "scss", "stylus", "sugarss", "javascript", "javascriptreact", "reason", "rescript", "typescript", "typescriptreact", "vue", "svelte" }
}
require'lspconfig'.html.setup{}
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
-- Use LspAttach autocommand to only map the following keys
-- after the language server attaches to the current buffer
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<leader>f', function()
vim.lsp.buf.format { async = true }
end, opts)
end,
})
-- https://dev.to/vonheikemen/neovim-using-vim-plug-in-lua-3oom
EOF
" vim: ft=vim ff=unix expandtab ts=2 sw=2

View File

@ -49,6 +49,8 @@ c.qt.force_platform = 'wayland'
# Type: Bool
c.auto_save.session = False
c.session.lazy_restore = True
# Automatically start playing `<video>` elements.
# Type: Bool
c.content.autoplay = False
@ -223,7 +225,7 @@ c.content.pdfjs = False
# List of user stylesheet filenames to use.
# Type: List of File, or File
c.content.user_stylesheets = 'stylesheets/user.css'
c.content.user_stylesheets = ['stylesheets/user.css']
# Enable WebGL.
# Type: Bool
@ -365,15 +367,22 @@ c.fonts.default_size = '16px'
# Font used for the context menu. If set to null, the Qt default is
# used.
# Type: Font
c.fonts.contextmenu = 'FiraCode'
c.fonts.contextmenu = 'default_size FiraCode Nerd Font'
c.fonts.tabs.selected = 'FiraCode'
c.fonts.statusbar = 'default_size FiraCode Nerd Font'
c.fonts.web.family.standard = 'FiraCode'
c.fonts.tabs.selected = 'default_size FiraCode Nerd Font'
c.fonts.web.family.fixed = 'FiraCode'
c.fonts.tabs.unselected = 'default_size FiraCode Nerd Font'
c.fonts.web.family.sans_serif = 'FiraCode'
c.fonts.web.family.standard = 'FiraCode Nerd Font'
# c.fonts.web.family.fixed = 'Fira Code'
c.fonts.web.family.fixed = 'default_fixed FiraCode Nerd Font'
c.fonts.web.family.sans_serif = 'FiraCode Nerd Font'
c.fonts.default_family = 'FiraCode Nerd Font'
# Default font size (in pixels) for regular text.
# Type: Int
@ -387,6 +396,9 @@ c.fonts.web.size.default_fixed = 20
# Type: Int
c.fonts.web.size.minimum = 15
c.url.default_page = 'https://searxng.dotya.ml/'
c.url.start_pages = ['https://searxng.dotya.ml/']
# Bindings for normal mode
config.bind(';#', 'hint code userscript code_select.py')
config.bind(';D', 'spawn --userscript dark_mode.user ;; greasemonkey-reload')

View File

@ -27,7 +27,7 @@ inline = 'nuaerc() {cd ~/utils/sr.ht/\~rjarry/aerc || exit 1; git pull --all --p
[plugins.nuwlsunset]
inline = 'nuwlsunset() {cd ~/utils/sr.ht/wlsunset || exit 1; git pull --all; mkdir -pv build; meson build -Dprefix=~/.local --reconfigure && ninja -C build && ninja -C build install}'
[plugins.nuswaylock-effects]
inline = 'nuswaylock-effects() {cd ~/utils/swaylock-effects || exit 1; git pull --all --prune && meson -Dprefix=/usr/local --reconfigure build && ninja -C build && sudo ninja -C build install}'
inline = 'nuswaylock-effects() {cd ~/src/github.com/jirutka-swaylock-effects || ((mkdir -pv ~/src/github.com && git clone https://github.com/jirutka/swaylock-effects ~/src/github.com/jirutka-swaylock-effects) || (echo failed to enter project dir)) && cd ~/src/github.com/jirutka-swaylock-effects; git pull --all --prune && (meson -Dprefix=/usr build; meson setup -Dprefix=/usr --reconfigure build) && ninja -C build && sudo ninja -C build install}'
[plugins.nuhashcat]
inline = 'nuhashcat() {cd ~/utils/hashcat || exit 1; git pull --all --prune; make clean && sudo make install}'

View File

@ -2,6 +2,7 @@ format = """
$all\
$line_break\
$time\
$os\
$status\
$character
"""
@ -20,7 +21,7 @@ disabled = true
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[](bold #ee4e4e)" # the non-nerdfont default is 🔥
error_symbol = "[󰈸](bold #ee4e4e)" # the non-nerdfont default is 🔥
vimcmd_symbol = "[N](bold green)"
[battery]
@ -39,7 +40,7 @@ format = "[$symbol($version)]($style) "
[cmake]
disabled = false
symbol= "" # the non-nerdfont default is △
symbol= "" # the non-nerdfont default is △
style = "blue"
format = "[$symbol]($style)"
@ -93,8 +94,8 @@ disabled = true
disabled = true
[gcloud]
disabled = false
symbol = "🇬️☁️ "
disabled = true
symbol = ""
format = '[$symbol$active \(@$domain\)]($style) '
[git_branch]
@ -115,11 +116,17 @@ behind = "⇣${count} "
deleted = "[•](bold red)"
untracked = "[⚶](bold cyan)"
stashed = "[≡](bold yellow)"
staged = "[+](bold green)"
staged = "[$count+](bold green)"
modified = "[∆](bold green)"
renamed = "[⥁](bold purple)"
conflicted = "[⥯](bold red)"
format = "[($conflicted$stashed$modified$staged$renamed$deleted($untracked)$ahead_behind )]($style)"
# renamed = "[↻](bold purple) "
renamed = "[⥁](bold purple)" # needs noto-fonts-extra
# renamed = "[](bold purple)"
# conflicted = "[↕\\($count\\)](bold red)"
# conflicted = "[$count⇅](dimmed bold red)"
# conflicted = "[$count⇵](bold bright-purple) "
# conflicted = "[$count](bold bright-purple) "
conflicted = "[$count⥯](bold bright-purple) "
format = "[(($conflicted)$stashed$modified$staged$renamed$deleted($untracked)$ahead_behind )]($style)"
[golang]
symbol = " " # the non-nerdfont default is 🐹
@ -144,6 +151,15 @@ symbol = " " # the non-nerdfont alternative used previously was ⬢
style = "green"
format = "[$symbol](bold $style)"
# available from version 1.12.0
[os]
disabled = true
format = '[$symbol]($style)'
[os.symbols]
Arch = " "
Fedora = " "
[package]
disabled = false
symbol = "⬢ "
@ -195,7 +211,7 @@ map_symbol = false
pipestatus = true
pipestatus_separator = '[| ]($style)'
pipestatus_format = '[($style)$pipestatus]($style)'
symbol = "\\(╯°□° ┻━┻"
symbol = "\\(╯°□°╯ ┻━┻"
# pure unicode version
# format = "(bg:$stylefg:#4169e1)[$symbol $status](bg:$style)(fg:$style) "
# certain symbols of the following rely on nerdfonts
@ -205,7 +221,7 @@ format = "[](fg:$style)[$symbol ](bg:$style)[\ue0b8 $status $common_meaning$s
[terraform]
format = "[ ($workspace )]($style)" # alternatively use 💨 for symbol
format = "[ ($workspace )]($style)" # alternatively use 💨 for symbol
[time]
disabled = true
@ -223,6 +239,7 @@ format = "[$symbol]($style) "
[zig]
disabled = false
symbol = " "
format = "[$symbol]($style)"
[custom.hare]

View File

@ -7,23 +7,25 @@ set
$up k
$right l
$lock exec swaylock -f
$lockt exec ~/utils/bin/sway-locker -t
$lockt exec sway-locker -t
$chromium_flags --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy --js-flags=--jitless
$keyring "/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh"
$term KITTY_ENABLE_WAYLAND=1 kitty -1 # qterminal alacritty
$menu wofi --show drun --allow-markup swaymsg exec --
$nutermmenu kitty --class 'launcher' bash -c 'compgen -c | sort -u | fzf | xargs -r kitty'
$bemenu bemenu-run --fork -l 5 -n -p "▶" --fn 'FiraCode Retina 17' | xargs swaymsg exec
$bemenu bemenu-run --fork -l 5 -n -p "⇒" --fn 'Fira Code Retina 17' | xargs swaymsg exec
$dashpls nwggrid
# after hm stateVersion bump to 23.05, albert doesn't seem to support explicit wayland.
$albert QT_QPA_PLATFORM=xcb albert show
# $bg "~/Pictures/apod/2019-January-2-The-Orion-Nebula-in-Infrared-from-WISE.jpg fit #000000"
# $bg "~/Pictures/apod/2020-April-29-The-Ion-Tail-of-New-Comet-SWAN.jpg fit #000000"
$bg "~/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg"
$bg2 "~/Pictures/apod/2019-October-20-Pluto-at-Night.jpg"
$gtk_theme "Dracula"
$gtk_font_name "CascadiaCodePL ExtraLight"
$gtk_font_size "10.4"
$gtk_theme "Yaru-purple-dark"
$gtk_font "Cascadia Code PL Light 10.4"
$mono_font "FiraCode Nerd Font weight=450 11"
$icon_theme "Flat-Remix-Blue-Dark"
$theme "Dracula"
$wmtheme "Dracula"
$gtk_cursor_theme "Adwaita"
$laptop_screen "eDP-1"
$ext_screen "Dell Inc. DELL U2412M Y1H5T27N1EVL"
@ -49,7 +51,7 @@ smart_gaps inverse_outer
gaps outer 8
gaps inner 5
font pango:FiraCode Retina 14px
font pango:FiraCode Retina weight=700 14px
exec_always --no-startup-id
{
@ -59,38 +61,43 @@ exec_always --no-startup-id
gsettings set org.gnome.desktop.interface gtk-theme '$gtk_theme'
gsettings set org.gnome.desktop.interface icon-theme '$icon_theme'
gsettings set org.gnome.desktop.interface cursor-theme '$gtk_cursor_theme'
gsettings set org.gnome.desktop.interface font-name '$gtk_font_name $gtk_font_size'
gsettings set org.gnome.desktop.interface font-name '$gtk_font'
gsettings set org.gnome.desktop.interface monospace-font-name '$mono_font'
gsettings set org.gnome.desktop.wm.preferences button-layout 'icon:close'
gsettings set org.gnome.desktop.wm.preferences theme '$theme'
gsettings set org.gnome.desktop.wm.preferences theme '$wmtheme'
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
# run this prior to first run:
# glib-compile-schemas /usr/share/glib-2.0/schemas
# glib-compile-schemas ~/.local/share/glib-2.0/schemas/
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal kitty
pgrep -u $(id -u) kanshi && pkill kanshi
# pgrep -u $(id -u) kanshi && pkill kanshi
pgrep -u $(id -u) ibus-daemon && pkill ibus-daemon
ibus-daemon -dxrt auto
### Needed for xdg-desktop-portal-kde
### Needed for xdg-desktop-portal-*.
### also, current `id` needs to be a part of the dbus group on Arch as of late.
dbus-update-activation-environment --systemd --all
/usr/lib/xdg-desktop-portal --replace
pgrep -u $(id -u) kdeconnect-indi && pkill kdeconnect-indi
/usr/lib/xdg-desktop-portal-wlr --replace
pgrep -u $(id -u) mako && pkill mako
pgrep -u $(id -u) fusuma && pkill fusuma
pgrep -u $(id -u) swayrd && pkill swayrd
pgrep -u $(id -u) autotiling && pkill autotiling
pgrep -u $(id -u) batsignal && pkill batsignal
pgrep -u $(id -u) swayidle && pkill swayidle
# pgrep -u $(id -u) kdeconnect-indi && pkill kdeconnect-indi
# pgrep -u $(id -u) autotiling && pkill autotiling
kdeconnect-indicator
# kdeconnect-indicator
mako
XDG_SESSION_TYPE=x11 XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
env RUST_BACKTRACE=1 ~/.cargo/bin/swayrd > /tmp/swayrd.log 2>&1
kanshi
autotiling
XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
# kanshi
# autotiling
batsignal '-d -w 25 -c 15 -d 10'
swayidle -w \
timeout 545 'pgrep -u $(id -u) swaylock || notify-send -t 15000 -u critical -i "Idle timeout" "Screen is locking soon"' \
timeout 600 "$lock" \
timeout 610 'swaymsg "output * dpms off"' \
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \
before-sleep "pgrep -u $(id -u) swaylock || $lockt"
}
@ -102,30 +109,30 @@ exec --no-startup-id {
dbus-update-activation-environment DISPLAY XAUTHORITY
ibus-daemon -dxrt auto
$keyring
### Needed for xdg-desktop-portal-kde
### Needed for xdg-desktop-portal-*.
### also, current `id` needs to be a part of the dbus group on Arch as of late.
dbus-update-activation-environment --systemd --all
/usr/lib/xdg-desktop-portal --replace
pgrep -u $(id -u) kdeconnect-indi || kdeconnect-indicator
/usr/lib/xdg-desktop-portal-wlr --replace
# pgrep -u $(id -u) kdeconnect-indi || kdeconnect-indicator
pgrep -u $(id -u) mako || mako
# XDG_SESSION_TYPE=x11 XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
pgrep -u $(id -u) fusuma || fusuma -d -c ~/.config/fusuma/config-wl.yml
env RUST_BACKTRACE=1 ~/.cargo/bin/swayrd > /tmp/swayrd.log 2>&1
pgrep -u $(id -u) kansi || kanshi
pgrep -u $(id -u) autotiling || autotiling
pgrep -u $(id -u) fusuma || XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
# pgrep -u $(id -u) kanshi || kanshi
# pgrep -u $(id -u) autotiling || autotiling
pgrep -u $(id -u) batsignal || batsignal '-d -w 25 -c 15 -d 10'
pgrep -u $(id -u) swayidle || swayidle -w \
timeout 545 'pgrep -u $(id -u) swaylock || notify-send -t 15000 -u critical -i "Idle timeout" "Screen is locking soon"' \
timeout 600 "$lock" \
timeout 610 'swaymsg "output * dpms off"' \
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \
before-sleep "pgrep -u $(id -u) swaylock || $lockt"
}
bindsym ctrl+alt+l exec --no-startup-id $lock
bindsym $mod+grave exec $lock
bindswitch --reload --locked lid:on exec --no-startup-id $(swaymsg output $laptop_screen disable && /usr/local/bin/kanshictl reload)
bindswitch --reload --locked lid:off exec --no-startup-id $(swaymsg output $laptop_screen enable && /usr/local/bin/kanshictl reload)
bindswitch --reload --locked lid:on exec --no-startup-id swaymsg output $laptop_screen disable && kanshictl reload
bindswitch --reload --locked lid:off exec --no-startup-id swaymsg output $laptop_screen enable && kanshictl reload
exec --no-startup-id swaymsg focus output $pri
output "*" bg $bg fill #000000
@ -158,8 +165,9 @@ bindsym
$mod+t exec $term
$mod+ctrl+Shift+t exec qterminal
$mod+Shift+q kill
alt+F1 exec $menu
alt+Shift+F1 exec $dashpls
alt+Shift+F1 exec $menu
alt+F1 exec $albert
# alt+Shift+F1 exec $dashpls
alt+F2 exec $bemenu
alt+F3 exec ulauncher-toggle
alt+Shift+F2 exec $nutermmenu
@ -189,7 +197,25 @@ input 1133:16522:Logitech_MX_Keys
repeat_rate 55
}
input 1102:4619:DLL07A7:01_044E:120B
# wired
input 1452:592:Keychron_Keychron_K2 {
xkb_layout gb,sk
xkb_options grp:win_space_toggle,compose:ralt
xkb_variant ",qwerty"
repeat_delay 280
repeat_rate 55
}
# wireless
input 1452:592:Keychron_K2 {
xkb_layout gb,sk
xkb_options grp:win_space_toggle,compose:ralt
xkb_variant ",qwerty"
repeat_delay 280
repeat_rate 55
}
input 2:7:SynPS/2_Synaptics_TouchPad
{
# touchpad
accel_profile adaptive
@ -223,6 +249,7 @@ for_window [window_role="bubble"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_role="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [window_role="About"] floating enable
for_window [instance="Farge"] floating enable
@ -263,6 +290,11 @@ for_window [class="Firefox"] border pixel 2 inhibit_idle fullscreen
for_window [class="vlc"] border pixel 2 inhibit_idle visible fullscreen
for_window [app_id="vlc"] border pixel 2 inhibit_idle visible fullscreen
for_window [title=".*VLC*."] border pixel 2 inhibit_idle visible fullscreen
# prevent sleep if any app is fullscreen.
for_window [class=".*"] inhibit_idle fullscreen
for_window [app_id=".*"] inhibit_idle fullscreen
for_window [app_id="org.gnome.Nautilus"] border pixel 1
for_window [app_id="dolphin"] border pixel 1
for_window [app_id="kitty"] border pixel 2
@ -306,14 +338,15 @@ bindsym
$mod+Ctrl+Shift+w exec MOZ_USE_XINPUT2=1 MOZ_ENABLE_WAYLAND=1 systemctl --user start ff_nn
$mod+Shift+g exec MOZ_USE_XINPUT2=1 MOZ_ENABLE_WAYLAND=1 firefox --private-window
$mod+Shift+v exec ferdi --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy
$mod+Shift+a exec chromium-freeworld --incognito $chromium_flags
$mod+Shift+a exec chromium --incognito $chromium_flags
--locked $mod+Escape exec systemctl suspend -i
$mod+Shift+o exec kitty bash -c 'powerprofilesctl set power-saver; powerprofilesctl|grep "*"; sleep 1'
$mod+Shift+p exec kitty bash -c 'powerprofilesctl set performance; powerprofilesctl|grep "*"; sleep 1'
--locked $mod+ctrl+Shift+s exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 0'
--locked $mod+ctrl+Shift+d exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 1'
--locked $mod+ctrl+Shift+f exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 2'
--locked $mod+ctrl+Shift+b exec kitty bash -c 'sudo dell-bios-fan-control 1; powerprofilesctl set balanced; powerprofilesctl|grep "*"'
# relevant for dell machines..
# --locked $mod+ctrl+Shift+s exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 0'
# --locked $mod+ctrl+Shift+d exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 1'
# --locked $mod+ctrl+Shift+f exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 2'
# --locked $mod+ctrl+Shift+b exec kitty bash -c 'sudo dell-bios-fan-control 1; powerprofilesctl set balanced; powerprofilesctl|grep "*"'
$mod+Ctrl+r exec alacritty --class ranger -e ranger
# colour picker / eyedropper
$mod+Shift+Alt+f exec farge --notify
@ -577,6 +610,8 @@ mode "$mode_sys" {
# return to default mode
Return mode "default"
Escape mode "default"
Ctrl+c mode "default"
q mode "default"
$mod+Shift+e mode "default"
}
}
@ -593,8 +628,8 @@ bindsym
--locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
--locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle;exec notify-send -t3600 'audio muted'
--locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle;exec notify-send -t 3600 'mic mute toggle'
--locked XF86MonBrightnessUp exec light -A 5
--locked XF86MonBrightnessDown exec light -U 5
--locked XF86MonBrightnessUp exec brightnessctl s +5%
--locked XF86MonBrightnessDown exec brightnessctl s 5%-
--locked $mod+Ctrl+p exec playerctl play-pause
--locked $mod+Ctrl+n exec playerctl next
--locked $mod+Ctrl+Shift+n exec playerctl previous
@ -607,4 +642,4 @@ bindsym
include /etc/sway/config.d/*
include ~/.config/sway/config.d/*
# Export environment to systemd and start services.
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"

View File

@ -4,7 +4,7 @@ CLUTTER_BACKEND=wayland
EDITOR='vim'
TERM='xterm-256color'
kee="surtur"
kee="$HOST"
DOTNET_CLI_TELEMETRY_OPTOUT=1 # why do I always have to take care of this myself...
ANDROID_SDK_ROOT="$HOME/utils/Android/Sdk"
@ -28,7 +28,8 @@ KITTY_ENABLE_WAYLAND=1
BEMENU_BACKEND=wayland
SDL_VIDEODRIVER=wayland
NO_AT_BRIDGE=1
LIBVA_DRIVER_NAME="i965"
; LIBVA_DRIVER_NAME="i965"
TDESKTOP_USE_PORTAL=1
XDG_SESSION_TYPE=wayland
XDG_CURRENT_DESKTOP=sway
export WLRRENDERER=vulkan

View File

@ -2,6 +2,11 @@
daemonize
screenshots
# when https://github.com/jirutka/swaylock-effects (a7691b8) is compiled from
# source, the issue with the red screen of death
# (https://github.com/swaywm/sway/issues/7046) doesn't happen anymore and using
# an image in conjunction with screenshot becomes unnecessary (again).
#image=$HOME/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg
clock
indicator-idle-visible
show-failed-attempts

View File

@ -0,0 +1,25 @@
# vim: ft=config
daemonize
screenshots
# when https://github.com/jirutka/swaylock-effects (a7691b8) is compiled from
# source, the issue with the red screen of death
# (https://github.com/swaywm/sway/issues/7046) doesn't happen anymore and using
# an image in conjunction with screenshot becomes unnecessary (again).
#image=$HOME/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg
clock
indicator-idle-visible
show-failed-attempts
indicator-radius=150
indicator-thickness=7
effect-blur=7x5
effect-vignette=0.5:0.5
ring-color=451e75
key-hl-color=a01b83
line-color=00000000
inside-color=00000088
separator-color=00000000
fade-in=0.1337
grace=5
grace-no-mouse
grace-no-touch

View File

@ -1,17 +0,0 @@
# ~/.config/systemd/user/waybar.service or /etc/systemd/user/waybar.service
[Unit]
Description=Highly customizable Wayland bar for Sway and Wlroots based compositors.
Documentation=https://github.com/Alexays/Waybar/wiki/
#PartOf=graphical-session.target
PartOf=sway-session.target
After=sway-session.target
[Service]
ExecStart=/usr/bin/waybar
# Upstreamed in https://github.com/Alexays/Waybar/pull/1036
ExecReload=kill -SIGUSR2 $MAINPID
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=sway-session.target

View File

@ -1,2 +0,0 @@
[Service]
Environment=PATH=%h/bin:/usr/local/bin:/usr/bin

View File

@ -171,5 +171,8 @@ autocmd DocLoad ^https://github.com/tridactyl/tridactyl/issues/new$ issue
autocmd TriStart .* source_quiet
autocmd TabEnter .* unfocus
" colo
colours shydactyl
" For syntax highlighting see https://github.com/tridactyl/vim-tridactyl
" vim: set filetype=vim.tridactyl

View File

@ -3,33 +3,52 @@
"position": "top",
"height": 28,
"modules-left": ["sway/workspaces", "sway/mode"],
"modules-left": ["sway/workspaces", "sway/mode", "custom/playerctl"],
"modules-center": ["sway/window"],
"modules-right": ["tray", "pulseaudio", "network", "network#wireguard", "temperature", "custom/storage", "memory", "cpu", "backlight", "sway/language", "battery", "clock#date", "clock#time"],
"modules-right": ["tray", "pulseaudio", "network", "network#wireguard", "temperature", "custom/storage", "memory", "cpu", "backlight", "keyboard-state", "sway/language", "battery", "clock#date", "clock#time"],
"sway/workspaces": {
"all-outputs": false,
"format": "{name}",
"disable-scroll": true,
"disable-markup" : false
"all-outputs": false,
"format": "{name}",
"disable-scroll": true,
"disable-markup" : false
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>", // Icon: expand-arrows-alt
"tooltip": false
"format": "<span style=\"italic\">{}</span>", // Icon: expand-arrows-alt
"tooltip": false
},
"custom/playerctl": {
"format": "{}",
"return-type": "json",
"max-length": 40,
"exec": "$HOME/.local/bin/playerctl.sh 2> /dev/null",
"on-click": "playerctl play-pause",
"on-right-click": "sys-notif media",
"on-scroll-up": "playerctl position 3+",
"on-scroll-down": "playerctl position 3-"
},
"sway/window": {
"max-length": 120,
"tooltip": false
"max-length": 120,
"tooltip": false
},
"clock#time": {
"interval": 1,
"format": "{:%H:%M:%S %z}",
"tooltip": false
"interval": 1,
"format": "{:%H:%M:%S %z}",
"tooltip": false
},
"clock#date": {
"interval": 10,
"format": " {:%a %d %b} ",
"tooltip": true,
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
"interval": 10,
"format": " {:%a %d %b} ",
"tooltip": true,
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
},
"sway/language": {
"format": "{short}",
@ -42,7 +61,7 @@
"warning": 70,
"critical": 90
},
"on-click": "exec alacritty -e ytop"
"on-click": "exec alacritty -e btop"
},
"cpu": {
"interval": 5,
@ -52,6 +71,22 @@
"critical": 90
}
},
"custom/storage": {
"format": "{percentage}%",
"format-alt": "{}",
"format-alt-click": "click",
"return-type": "json",
"interval": 60,
"exec": "~/.config/waybar/modules/storage.sh"
},
"temperature": {
"thermal-zone": 1,
"hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input",
"critical-threshold": 80,
"format-critical": "<span foreground='#ff5c57'>{icon}</span>{temperatureC}°C",
"format": "{icon}{temperatureC}°C",
"format-icons": ["", ""]
},
"backlight": {
"interval": 10,
"device": "acpi_video1",
@ -59,32 +94,32 @@
"format-icons": ["☁️", "🌥️", "⛅", "☀️"]
},
"battery": {
"format": "{capacity}% {icon}",
"format-alt": "{time} {icon}",
"format-icons": ["", "", "", "", ""],
"format-charging": "~{capacity}%",
"format-plugged": "🔌{capacity}%",
"interval": 30,
"states": {
"good": 85,
"warning": 30,
"critical": 15
},
"tooltip": false
"format": "{capacity}%{icon}",
"format-alt": "{time}{icon}",
"format-icons": ["", "", "", "", ""],
"format-charging": "~{capacity}%",
"format-plugged": "🔌{capacity}%",
"interval": 30,
"states": {
"good": 85,
"warning": 30,
"critical": 15
},
"tooltip": true
},
"network": {
"format-wifi": "{icon}{essid} ({signalStrength}%)",
"format-ethernet": "{icon}<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}",
"format-linked": "<span foreground='#ffbf00'>{ifname}</span> (No IP)",
"format-icons": {
"wifi": [""],
"ethernet": ["🖧"],
"disconnected": ["disconnected"]
},
"on-click": "nm-connection-editor",
"on-click-right": "exec kitty nmtui",
"rotate": true,
"tooltip": false
"format-wifi": "{icon}{essid}({signalStrength}%)",
"format-ethernet": "{icon}<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}",
"format-linked": "<span foreground='#ffbf00'>{ifname}</span> (No IP)",
"format-icons": {
"wifi": [""],
"ethernet": [""],
"disconnected": ["disconnected"]
},
"on-click": "nm-connection-editor",
"on-click-right": "exec kitty nmtui",
"rotate": true,
"tooltip": false
},
"network#wireguard": {
"interface": "*wg*",
@ -96,45 +131,31 @@
"format-alt": "<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}🐉",
"tooltip": false
},
"temperature": {
"format": "<span foreground='#929292'></span>{temperatureC}°C",
"thermal-zone": 2,
"critical-threshold": 53,
"format-critical": "<span foreground='#ff5c57'></span>{temperatureC}°C",
"interval": 10
},
"pulseaudio": {
"format": "{icon}{volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": "🔇 {icon} {format_source}",
"format-muted": "✖ {format_source}",
"format-source": "🎙{volume}%",
"format-source-muted": "",
"format-icons": {
"speaker": "💻",
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"scroll-step": 1,
"on-click": "pavucontrol",
"on-click-right": "blueman-manager",
"tooltip": false
},
"custom/storage": {
"format": "{percentage}%",
"format-alt": "{}",
"format-alt-click": "click",
"return-type": "json",
"interval": 60,
"exec": "~/.config/waybar/modules/storage.sh"
"format": "{icon}{volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
// "format-muted": "✖ {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}%",
"format-source-muted": "",
"format-icons": {
"speaker": "💻",
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"scroll-step": 1,
"on-click": "kitty ncpamixer",
"on-click-right": "blueman-manager",
"tooltip": false
},
"tray": {
"icon-size": 18
"icon-size": 18
},
// vim: ft=json ff=unix noexpandtab
// vim: ft=json.waybar ff=unix noexpandtab
}

View File

@ -12,9 +12,9 @@
#waybar {
background: #282a36;
color: white;
font-family: FiraCode Retina, Noto Sans, sans-serif;
font-family: FiraCode Nerd Font, FiraCode Retina, Noto Sans, sans-serif;
font-weight: 600;
font-size: 13px;
font-size: 11.4px;
}
@ -65,12 +65,14 @@ window#waybar.solo {
color: #c9545d;
}
#mode, #battery, #cpu, #memory, #pulseaudio, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail {
#mode, #battery, #cpu, #memory, #pulseaudio, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail, #temperature {
margin: 0px 5px 0px 5px;
min-width: 30px;
}
#language {
margin: 0px 5px;
padding: 0 0px;
min-width: 30px;
}
@ -126,7 +128,7 @@ window#waybar.solo {
}
#temperature {
margin: 0 3px ;
margin: 0 5px;
min-width: 0;
}
@ -139,7 +141,7 @@ window#waybar.solo {
background-color: #282a36;
}
#custom-storage {
margin: 0 0 0 7px;
margin: 0 5px;
}
#memory {
margin: 0 5px;
@ -169,6 +171,32 @@ window#waybar.solo {
margin: 0 5px;
min-width: 30px;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#keyboard-state {
background: #282a36;
color: white;
/* background: #97e1ad; */
/* color: #000000; */
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#pulseaudio {
margin: 0 2px;
}

28
.vim/python.vimrc.vim Normal file
View File

@ -0,0 +1,28 @@
" vim-python
augroup vimrc-python
autocmd!
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79
\ formatoptions+=croq softtabstop=4
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
augroup END
" jedi-vim
let g:jedi#popup_on_dot = 0
let g:jedi#goto_assignments_command = '<leader>g'
let g:jedi#goto_definitions_command = '<leader>d'
let g:jedi#documentation_command = 'K'
let g:jedi#usages_command = '<leader>n'
let g:jedi#rename_command = '<leader>r'
let g:jedi#show_call_signatures = '0'
let g:jedi#completions_command = '<C-Space>'
let g:jedi#smart_auto_mappings = 0
" ale
:call extend(g:ale_linters, {
\'python': ['flake8'], })
" vim-airline
let g:airline#extensions#virtualenv#enabled = 1
" Syntax highlight
let python_highlight_all = 1

View File

@ -3,6 +3,7 @@
" not necessary, as vim will turn this on by default, when .vimrc is found
" set nocompatible
set encoding=utf-8 " important for powerline besides others
scriptencoding=utf8
filetype off "required
@ -46,6 +47,7 @@ Plug 'axvr/photon.vim'
Plug 'Lokaltog/vim-monotone'
Plug 'https://git.sr.ht/~romainl/vim-bruin'
Plug 'fxn/vim-monochrome'
Plug 'folke/tokyonight.nvim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
@ -76,6 +78,10 @@ Plug 'tpope/vim-jdaddy', { 'for': 'json' }
Plug 'tpope/vim-ragtag', { 'for': ['html', 'xhtml', 'wml', 'xml', 'xslt', 'xsd', 'jsp', 'php', 'aspperl', 'aspvbs', 'cf', 'mason', 'htmldjango', 'eruby'] }
Plug 'bazelbuild/vim-ft-bzl', { 'for': ['starlark', 'bzl'] }
Plug 'z0mbix/vim-shfmt', { 'for': ['sh', 'bash'] }
" post install (yarn install | npm install) then load plugin only for editing supported files
Plug 'prettier/vim-prettier', {
\ 'do': 'npm install --frozen-lockfile',
\ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'vue', 'svelte', 'yaml', 'html', 'gohtmltmpl'] }
" Plug 'gorodinskiy/vim-coloresque'| " coloured background for colour names/codes
" Plug 'lpinilla/vim-codepainter'| " text highlighting
@ -118,6 +124,7 @@ Plug 'https://git.sr.ht/~sircmpwn/hare.vim', { 'for': 'hare' }
Plug 'ziglang/zig.vim', { 'for': 'zig' }
Plug 'ollykel/v-vim', { 'for': 'v' }
Plug 'bfrg/vim-cpp-modern', { 'for': ['cpp', 'cmake'] }
Plug 'vmchale/dhall-vim', { 'for': 'dhall' }
Plug 'isobit/vim-caddyfile', { 'for': 'caddyfile' }
Plug 'chikamichi/mediawiki.vim', { 'for': 'wiki' }
Plug 's3rvac/vim-syntax-redminewiki', { 'for': 'redminewiki' }
@ -190,7 +197,7 @@ let g:airline#extensions#ale#enabled = 1
" nrrwrgn integration
let g:airline#extensions#nrrwrgn#enabled = 1
" vcs integration
let g:airline#extensions#branch#enabled = 1
let g:airline#extensions#branch#enabled = 0
" show summary of changed hunks (gitgutter and/or vim-signify)
let g:airline#extensions#hunks#enabled = 1
" tabline integration
@ -274,8 +281,8 @@ let g:ale_echo_cursor = 1
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_info_str = 'I'
let g:ale_sign_error = ''
let g:ale_sign_warning = ''
let g:ale_sign_error = ''
let g:ale_sign_warning = ''
let g:ale_sign_info = ''
" let g:ale_echo_msg_format = '%s'
let g:ale_echo_msg_format = '(%severity%): [%linter%] %s'
@ -289,29 +296,36 @@ let g:ale_list_window_size = 7
let g:ale_lint_on_enter = 1
" Do not run ale upon changes to the file.
" let g:ale_lint_on_text_changed = 'never'
" lint in normal and insert mode.
let g:ale_lint_on_text_changed = 'always'
" only lint in normal mode.
" let g:ale_lint_on_text_changed = 'normal'
" Run ale after leaving insert mode.
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_filetype_changed = 1
let g:ale_lint_on_save = 1
let g:ale_lint_delay = 300| " the default being 200
let g:ale_linters = {
\ 'go': ['gofumpt', 'govet', 'gofmt', 'golangci-lint', 'gopls'],
\ 'gohtmltmpl': ['gofumpt', 'govet', 'gofmt', 'golangci-lint', 'gopls'],
\ 'dockerfile': ['hadolint'],
\ 'c': ['clang-format', 'clangd', 'clangtidy', 'cppcheck', 'cquery', 'flawfinder'],
\ 'cpp': ['clang-format', 'g++', 'clang', 'clangd', 'clangtidy', 'cppcheck', 'flawfinder'],
\ 'cs': ['OmniSharp'],
\ 'hare': ['hare', 'vimls', 'vim-lsp'],
\ 'lua': ['vimls'],
\ 'nix': ['rnix_lsp', 'statix', 'nixpkgs-fmt', 'vimls'],
\ 'css': ['vim-lsp'],
\ 'hare': ['hare', 'vim-lsp'],
\ 'lua': ['vim-lsp'],
\ 'nix': ['rnix_lsp', 'statix', 'nixpkgs-fmt', 'vim-lsp'],
\ 'python': ['vim-lsp', 'pylint', 'yapf', 'isort'],
\ 'rust': ['analyzer', 'cargo', 'rls', 'vimls'],
\ 'sh': ['shellcheck', 'shfmt', 'shell', 'vimls'],
\ 'bash': ['shellcheck', 'shfmt', 'shell', 'vimls'],
\ 'systemd': ['systemd_analyze', 'systemdlint'],
\ 'vim': ['vint', 'vimls', 'vim-lsp'],
\ 'tex': ['chktex', 'vimls'],
\ 'rust': ['analyzer', 'cargo', 'rls', 'vim-lsp'],
\ 'sh': ['shellcheck', 'shfmt', 'shell', 'vim-lsp'],
\ 'bash': ['shellcheck', 'shfmt', 'shell', 'vim-lsp'],
\ 'systemd': ['systemd_analyze', 'systemdlint', 'vim-lsp'],
\ 'vim': ['vint', 'vim-lsp'],
\ 'tex': ['chktex'],
\ 'tf': ['vimls', 'vim-lsp', 'tflint', 'terraform', 'tfsec', 'checkov'],
\ 'terraform': ['vimls', 'vim-lsp', 'tflint', 'terraform', 'tfsec', 'checkov'],
\ 'terraform': ['vim-lsp', 'tflint', 'terraform', 'terraform_ls', 'terraform_lsp', 'tfsec', 'checkov'],
\ 'yaml': ['yaml-language-server', 'spectral', 'swaglint','yamllint'],
\ 'zsh': ['shellcheck', 'shell', 'vimls'],
\ }
@ -366,8 +380,8 @@ let g:clang_format#auto_format=0
let g:clang_format#detect_style_file=1
augroup clang_format
autocmd!
autocmd FileType c,cpp,proto nnoremap <buffer><Leader>cf :<C-u>ClangFormat<cr>
autocmd FileType c,cpp,proto vnoremap <buffer><Leader>cf :ClangFormat<cr>
autocmd FileType c,cpp,proto nnoremap <buffer><leader>cf :<C-u>ClangFormat<cr>
autocmd FileType c,cpp,proto vnoremap <buffer><leader>cf :ClangFormat<cr>
function! Formatonsave()
" alternative function to clang-format#auto_format param
@ -403,7 +417,7 @@ let g:vimtex_quickfix_enabled = 0
" nerdcommenter
" _ stands for forward slash (/)
noremap <silent><c-_> :call nerdcommenter#Comment(0,"toggle")<CR>
noremap <silent><c-_> :call nerdcommenter#Comment(0,"toggle")<cr>
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Allow commenting and inverting empty lines (useful when commenting a region)
@ -415,7 +429,9 @@ let g:NERDTrimTrailingWhitespace = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = {
\ 'vim': { 'left': '"','right': '' },
\ 'bib': { 'left': '\%','right': '' },
\ 'c': {'left': '/**','right': '*/' },
\ 'dhall': {'left': '-- | ', 'right': '' },
\ 'zsh': { 'left': '#','right': ''},
\ 'sysctl': {'left': '#', 'right': ''},
\ 'systemd': {'left': ';', 'right': ''},
@ -526,16 +542,21 @@ let g:ansible_attribute_highlight='ob'
let g:terraform_align=1
let g:terraform_fold_sections=1
let g:terraform_fold_sections=0
let g:terraform_fmt_on_save=1
" autopairs
let g:AutoPairsMapBS = 1
let g:AutoPairsMapBSIn = 1
let g:AutoPairsMapBSAfter = 1
" ignore next char - default binding is <c-p><c-e>
" sometimes issues with expanding {}
let g:AutoPairsMultilineClose = 0
let g:AutoPairsFlyMode = 0
let g:AutoPairsFlyMode = 0 "jump back with <c-p><c-b>
" disable jumpy cursor - centers screen when in lower 1/3.
let g:AutoPairsMapCR = 0
" inoremap <CR> <esc>:call autopairs#AutoPairsReturn()<cr>i
" inoremap <cr> <esc>:call autopairs#AutoPairsReturn()<cr>i
" let g:AutoPairsFlyModeBlacklist =
" let g:AutoPairsShortcutToggle = '<c-h>'
let b:AutoPairsShortcutToggle = ''
@ -563,13 +584,25 @@ let g:ctrlp_custom_ignore = {
" control. It also supports works with .svn, .hg, .bzr.
" let g:ctrlp_working_path_mode = 'r'
let g:ctrlp_working_path_mode = 'raw'
let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp'
nnoremap '<c-p>' :<CtrlP><cr>
" The Silver Searcher
if executable('ag')
" use ag instead of grep.
set grepprg=ag\ --nogroup\ --nocolor
" use ag in CtrlP
let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
" ag is fast enough that CtrlP doesn't need to cache
let g:ctrlp_use_caching = 0
endif
nnoremap <c-p> :CtrlP<cr><cr>
nnoremap <leader>s <Plug>(ctrlp)
let g:ctrlp_map = '<c-p>'
let g:ctrlp_show_hidden = 1
" Use a leader instead of the actual named binding
nmap <leader>p :CtrlP<cr>
nmap <leader>p <Plug>(ctrlp)
" ctrlp buffers
" Easy bindings for its various modes
@ -608,24 +641,26 @@ command! WW execute 'silent w !sudo tee % >/dev/null' | edit!
command! -nargs=* Make write | make! <args> | cwindow
command Note execute 'e ~/Sync/notes/' . strftime('%y-%m-%d-%H:%M:%S') . '.md'
command NoteLocal execute 'e ./' . strftime('%y-%m-%d-%H:%M:%S') . '.md'
" easy session saving.
command! Xs :mks! | :xa "save the session, save modified files, and exit
" always show full path on <c-g>
nnoremap <c-g> 1<c-g>
" open a terminal in $PWD
nnoremap <silent> <Leader>tt :terminal<CR>
nnoremap <silent> <leader>tt :terminal<cr>
" terminal normal mode
tnoremap <F1> <C-W>N
" toggle showing whitespace
noremap <F5> :set list!<CR>
noremap <F5> :set list!<cr>
" make shortcut
nnoremap <F4> :term ++hidden ++open make<cr>
nnoremap <leader><F4> :term ++open make<cr>
nnoremap <F8> :TagbarToggle<CR>
nnoremap <F8> :TagbarToggle<cr>
vmap gb :<C-U>!git blame % -L<C-R>=line("'<") <CR>,<C-R>=line("'>") <CR><CR>
nnoremap gb :!git blame %<CR>
vmap gb :<C-U>!git blame % -L<C-R>=line("'<") <cr>,<C-R>=line("'>") <cr><cr>
nnoremap gb :!git blame %<cr>
" ll provided by vimtex
" nnoremap <silent> <Leader>kk :w! !pdflatex -shell-escape -interaction=nonstopmode ./*.tex<CR><CR>
" nnoremap <silent> <leader>kk :w! !pdflatex -shell-escape -interaction=nonstopmode ./*.tex<cr><cr>
function! Pdfpls()
echom 'compiling ur tex goodness!'
" w!
@ -664,13 +699,13 @@ endfunction
nnoremap <silent><leader>lb :call PdfBibLuapls()<cr><esc>
nnoremap <Leader>l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"<CR><CR>
nnoremap <leader>l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"<cr><cr>
" ALE bindings
nmap <silent> <C-k> :ALEPreviousWrap<cr>
nmap <silent> <C-j> :ALENextWrap<cr>
nnoremap <Leader>a :ALEDetail<cr>
nnoremap <leader>a :ALEDetail<cr>
nnoremap <c-LeftMouse> :ALEGoToDefinition<cr>
@ -693,8 +728,8 @@ vmap < <gv
vmap > >gv
" moving visual blocks
vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv
" vnoremap J :m '>+1<cr>gv=gv
" vnoremap K :m '<-2<cr>gv=gv
"------------------------------------
@ -731,9 +766,11 @@ let g:go_gopls_options = ['-remote=unix;/tmp/.gopls-daemon.sock']
" let lsp handle connecting to gopls
let g:go_gopls_enabled = 1
" let g:go_doc_popup_window = 0
let g:go_doc_popup_window = 1
let g:go_fillstruct_mode = 'gopls'
let g:go_term_reuse = 1
let g:go_term_enabled = 1
let g:go_doc_balloon = 1
augroup vimgo
@ -742,16 +779,16 @@ augroup vimgo
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>gr <Plug>(go-run)
au FileType go nmap <leader>gt <Plug>(go-test)
au FileType go nmap <Leader>gs <Plug>(go-implements)
au FileType go nmap <Leader>gi <Plug>(go-info)
au FileType go nmap <Leader>ge <Plug>(go-rename)
au FileType go nmap <Leader>gd <Plug>(go-doc)
au FileType go nmap <leader>gs <Plug>(go-implements)
au FileType go nmap <leader>gi <Plug>(go-info)
au FileType go nmap <leader>ge <Plug>(go-rename)
au FileType go nmap <leader>gd <Plug>(go-doc)
" Navigation commands
au FileType go nmap <Leader>ds <Plug>(go-def-split)
au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
au FileType go nmap <leader>ds <Plug>(go-def-split)
au FileType go nmap <leader>dv <Plug>(go-def-vertical)
" Alternate commands
au FileType go nmap <Leader>ae <Plug>(go-alternate-edit)
au FileType go nmap <Leader>av <Plug>(go-alternate-vertical)
au FileType go nmap <leader>hae <Plug>(go-alternate-edit)
au FileType go nmap <leader>vae <Plug>(go-alternate-vertical)
" Use new vim 8.2 popup windows for Go Doc
augroup END
@ -760,52 +797,31 @@ augroup END
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'gotags.vimrc.vim'
""" dhall
let g:dhall_format=1
""" python
" vim-python
augroup vimrc-python
autocmd!
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79
\ formatoptions+=croq softtabstop=4
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
augroup END
" jedi-vim
let g:jedi#popup_on_dot = 0
let g:jedi#goto_assignments_command = '<leader>g'
let g:jedi#goto_definitions_command = '<leader>d'
let g:jedi#documentation_command = 'K'
let g:jedi#usages_command = '<leader>n'
let g:jedi#rename_command = '<leader>r'
let g:jedi#show_call_signatures = '0'
let g:jedi#completions_command = '<C-Space>'
let g:jedi#smart_auto_mappings = 0
" ale
:call extend(g:ale_linters, {
\'python': ['flake8'], })
" vim-airline
let g:airline#extensions#virtualenv#enabled = 1
" Syntax highlight
let python_highlight_all = 1
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'python.vimrc.vim'
" partially superseded by jasonccox/vim-wayland-clipboard (for "+)
" still keeping the "* mappings
" ------ wayland copy and pasting
let s:env = toupper(substitute(system('uname'), '\n', '', ''))
if s:env =~# 'LINUX' && executable('wl-copy')
xnoremap <silent>"+y y:call system("wl-copy", @")<cr>
xnoremap <silent>"*y y:call system("wl-copy", @")<cr>
" xnoremap <silent>"+y y:call system("wl-copy", @")<cr>
xnoremap <silent>"*y y:silent call system("wl-copy", @")<cr>
endif
if s:env =~# 'LINUX' && executable('wl-paste')
nnoremap <silent>"+p :let @"=substitute(system("wl-paste --no-newline"), '<C-v><C-m>', '', 'g')<cr>p
" nnoremap <silent>"+p :let @"=substitute(system("wl-paste --no-newline"), '<C-v><C-m>', '', 'g')<cr>p
nnoremap "*p :let @"=substitute(system("wl-paste --no-newline --primary"), '<C-v><C-m>', '', 'g')<cr>p
endif
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<left>"
inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"
inoremap <expr> <cr> pumvisible() ? "\<C-Y>" : "\<cr>"
" ------ autocmd ------
@ -878,9 +894,9 @@ augroup filetypes
au FileType xml setlocal shiftwidth=4 tabstop=4
au FileType html setlocal shiftwidth=4 tabstop=4
au BufNewFile,BufRead *.js
\ setlocal shiftwidth=4 tabstop=4 softtabstop=4 expandtab autoindent
\ fileformat=unix filetype=js
au BufNewFile,BufRead,BufEnter *.js
\ setlocal shiftwidth=2 tabstop=2 softtabstop=2 backspace=2 expandtab autoindent
\ fileformat=unix filetype=javascript
au BufNewFile,BufRead,BufEnter *.md
\ setlocal textwidth=79 foldmethod=manual filetype=markdown
@ -910,6 +926,14 @@ augroup filetypes
\ set tabstop=4 shiftwidth=4 softtabstop=4 noexpandtab autoindent
\ textwidth=79 fileformat=unix omnifunc=lsp#complete
" \ textwidth=79 fileformat=unix
au FileType terraform
\ set fileformat=unix omnifunc=lsp#complete
au FileType css
\ set fileformat=unix omnifunc=lsp#complete
au FileType gohtmltmpl setlocal
\ fileformat=unix tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab
au FileType just setlocal
\ fileformat=unix tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab
au FileType tex setlocal tabstop=2
@ -922,6 +946,10 @@ augroup filetypes
\ setlocal ft=bib tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab autoindent
\ fileformat=unix conceallevel=0
au FileType bib
\ setlocal tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab autoindent
\ fileformat=unix conceallevel=0
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0#
\ indentkeys-=<:> foldmethod=indent nofoldenable
@ -1000,25 +1028,50 @@ if executable('zls')
augroup END
endif
" terraform language server
if executable('terraform-ls')
if executable('terraform-lsp')
augroup lsp_tf
autocmd!
au User lsp_setup call lsp#register_server({
\ 'name': 'terraform-ls',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-ls']},
\ 'name': 'terraform-lsp',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-lsp']},
\ 'allowlist': ['terraform'],
\ })
" \ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-ls', 'serve']},
augroup END
endif
" tailwind ls
if executable('tailwindcss-language-server')
augroup lsp_twls
autocmd!
au User lsp_setup call lsp#register_server({
\ 'name': 'tailwindcss-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'tailwindcss-language-server']},
\ 'allowlist': ['css', 'html', 'gohtmltmpl'],
\ })
augroup END
endif
if executable('pyls')
" this has some untold deps (on archlinux): haskell-some haskell-lsp1.4 haskell-lsp-types1.4
if executable('dhall-lsp-server')
augroup lsp_dhall
autocmd!
au User lsp_setup call lsp#register_server({
\ 'name': 'dhall-lsp-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'dhall-lsp-server']},
\ 'allowlist': ['dhall'],
\ })
augroup END
endif
if executable('pylsp')
" pip install python-language-server
" or python-lsp-black from the AUR
augroup lsp_py
autocmd!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': {server_info->['pyls']},
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'pylsp']},
\ 'allowlist': ['python'],
\ })
" \ 'cmd': {server_info->['pyls']},
augroup END
endif
if executable('omnisharp')
@ -1082,14 +1135,14 @@ augroup omnisharp_commands
" The following commands are contextual, based on the cursor position.
autocmd FileType cs nmap <silent> <buffer> gd <Plug>(omnisharp_go_to_definition)
autocmd FileType cs nmap <silent> <buffer> <Leader>osfu <Plug>(omnisharp_find_usages)
autocmd FileType cs nmap <silent> <buffer> <Leader>osfi <Plug>(omnisharp_find_implementations)
autocmd FileType cs nmap <silent> <buffer> <Leader>ospd <Plug>(omnisharp_preview_definition)
autocmd FileType cs nmap <silent> <buffer> <Leader>ospi <Plug>(omnisharp_preview_implementations)
autocmd FileType cs nmap <silent> <buffer> <Leader>ost <Plug>(omnisharp_type_lookup)
autocmd FileType cs nmap <silent> <buffer> <Leader>osd <Plug>(omnisharp_documentation)
autocmd FileType cs nmap <silent> <buffer> <Leader>osfs <Plug>(omnisharp_find_symbol)
autocmd FileType cs nmap <silent> <buffer> <Leader>osfx <Plug>(omnisharp_fix_usings)
autocmd FileType cs nmap <silent> <buffer> <leader>osfu <Plug>(omnisharp_find_usages)
autocmd FileType cs nmap <silent> <buffer> <leader>osfi <Plug>(omnisharp_find_implementations)
autocmd FileType cs nmap <silent> <buffer> <leader>ospd <Plug>(omnisharp_preview_definition)
autocmd FileType cs nmap <silent> <buffer> <leader>ospi <Plug>(omnisharp_preview_implementations)
autocmd FileType cs nmap <silent> <buffer> <leader>ost <Plug>(omnisharp_type_lookup)
autocmd FileType cs nmap <silent> <buffer> <leader>osd <Plug>(omnisharp_documentation)
autocmd FileType cs nmap <silent> <buffer> <leader>osfs <Plug>(omnisharp_find_symbol)
autocmd FileType cs nmap <silent> <buffer> <leader>osfx <Plug>(omnisharp_fix_usings)
autocmd FileType cs nmap <silent> <buffer> <C-\> <Plug>(omnisharp_signature_help)
autocmd FileType cs imap <silent> <buffer> <C-\> <Plug>(omnisharp_signature_help)
@ -1097,29 +1150,29 @@ augroup omnisharp_commands
autocmd FileType cs nmap <silent> <buffer> [[ <Plug>(omnisharp_navigate_up)
autocmd FileType cs nmap <silent> <buffer> ]] <Plug>(omnisharp_navigate_down)
" Find all code errors/warnings for the current solution and populate the quickfix window
autocmd FileType cs nmap <silent> <buffer> <Leader>osgcc <Plug>(omnisharp_global_code_check)
autocmd FileType cs nmap <silent> <buffer> <leader>osgcc <Plug>(omnisharp_global_code_check)
" Contextual code actions (uses fzf, vim-clap, CtrlP or unite.vim selector when available)
autocmd FileType cs nmap <silent> <buffer> <Leader>osca <Plug>(omnisharp_code_actions)
autocmd FileType cs xmap <silent> <buffer> <Leader>osca <Plug>(omnisharp_code_actions)
autocmd FileType cs nmap <silent> <buffer> <leader>osca <Plug>(omnisharp_code_actions)
autocmd FileType cs xmap <silent> <buffer> <leader>osca <Plug>(omnisharp_code_actions)
" Repeat the last code action performed (does not use a selector)
autocmd FileType cs nmap <silent> <buffer> <Leader>os. <Plug>(omnisharp_code_action_repeat)
autocmd FileType cs xmap <silent> <buffer> <Leader>os. <Plug>(omnisharp_code_action_repeat)
autocmd FileType cs nmap <silent> <buffer> <leader>os. <Plug>(omnisharp_code_action_repeat)
autocmd FileType cs xmap <silent> <buffer> <leader>os. <Plug>(omnisharp_code_action_repeat)
autocmd FileType cs nmap <silent> <buffer> <Leader>os= <Plug>(omnisharp_code_format)
autocmd FileType cs nmap <silent> <buffer> <leader>os= <Plug>(omnisharp_code_format)
autocmd FileType cs nmap <silent> <buffer> <Leader>osnm <Plug>(omnisharp_rename)
autocmd FileType cs nmap <silent> <buffer> <leader>osnm <Plug>(omnisharp_rename)
autocmd FileType cs nmap <silent> <buffer> <Leader>osre <Plug>(omnisharp_restart_server)
autocmd FileType cs nmap <silent> <buffer> <Leader>osst <Plug>(omnisharp_start_server)
autocmd FileType cs nmap <silent> <buffer> <Leader>ossp <Plug>(omnisharp_stop_server)
autocmd FileType cs nmap <silent> <buffer> <leader>osre <Plug>(omnisharp_restart_server)
autocmd FileType cs nmap <silent> <buffer> <leader>osst <Plug>(omnisharp_start_server)
autocmd FileType cs nmap <silent> <buffer> <leader>ossp <Plug>(omnisharp_stop_server)
augroup END
endif
" ------ adv maps ------
" strip trailing whitespace, ss (strip space)
nnoremap <silent> <Leader>ss
" strip trailing whitespace, xs (strip space)
nnoremap <silent> <leader>xs
\ :let b:_p = getpos(".") <Bar>
\ let b:_s = (@/ != '') ? @/ : '' <Bar>
\ %s/\s\+$//e <Bar>
@ -1127,7 +1180,7 @@ nnoremap <silent> <Leader>ss
\ nohlsearch <Bar>
\ unlet b:_s <Bar>
\ call setpos('.', b:_p) <Bar>
\ unlet b:_p <CR>
\ unlet b:_p <cr>
match Todo /\s\+$/
@ -1211,7 +1264,6 @@ set viminfo='100,"100,:20,% " '=marks for x files, "=registers for x f
set foldmethod=manual " manual folding
set encoding=utf-8 " important for powerline besides others
set fileencoding=utf-8 " set encoding for newly saved files
set noscrollbind
set cmdheight=2 " lines under {status,air}line
@ -1220,6 +1272,8 @@ set updatetime=250
if (has('termguicolors'))
set termguicolors
else
set t_Co=256
endif
" let there be light
" set background=light
@ -1371,7 +1425,6 @@ endif
set laststatus=2 " show status bar
set report=1 " Always report number of lines changed by ex commands
set t_Co=256
set guifont=Fira\ Code\ weight=450\ 12
set ballooneval " vim8+ popups
@ -1405,6 +1458,9 @@ set clipboard=unnamed,unnamedplus
set exrc
set secure
" nicer scrolling when long lines are wrapped.
set smoothscroll
" Append modeline before first line in buffer.
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX
@ -1415,7 +1471,7 @@ function! AppendModeline()
let l:modeline = substitute(&commentstring, '%s', l:modeline, '')
call append (line('^'), l:modeline)
endfunction
nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
nnoremap <silent> <leader>ml :call AppendModeline()<cr>
function! AskQuit (msg, proposed_action)
@ -1506,9 +1562,9 @@ augroup autoReloadVimRC
augroup END
" reload config
nnoremap <Leader>ve :e $MYVIMRC<CR>
nnoremap <leader>ve :e $MYVIMRC<cr>
" reload config and call refresh fn
nnoremap <Leader>vr :source $MYVIMRC<CR>call RefreshUI()<CR>
nnoremap <leader>vr :source $MYVIMRC<cr>call RefreshUI()<cr>
let base16colorspace=256

View File

@ -24,7 +24,7 @@ add_to_path "$HOME/.local/share/JetBrains/Toolbox/bin"
export EDITOR='vim'
export TERM='xterm-256color'
export kee="surtur"
export kee="$HOST"
export SSH_KEY_PATH="$HOME/.ssh/$kee"
if [ ! -S ~/.ssh/ssh_auth_sock ]; then
@ -70,17 +70,25 @@ if [[ -z $DISPLAY ]]; then
export NO_AT_BRIDGE=1
export TDESKTOP_USE_PORTAL=1
export XDG_SESSION_TYPE=wayland
export LIBVA_DRIVER_NAME="i965"
if [[ "${HOSTNAME}" == "surtur" ]]; then
export LIBVA_DRIVER_NAME="i965"
fi
. ~/.zsh/bemenu-dracula/bemenu-dracula
test -f ~/.zsh/bemenu-dracula/bemenu-dracula && . ~/.zsh/bemenu-dracula/bemenu-dracula
if [[ $(tty) == /dev/tty1 ]]; then
# if [[ $(tty) == /dev/tty1 ]]; then
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export SAL_USE_VCLPLUGIN=gtk3 # for libreoffice
export XDG_CURRENT_DESKTOP=sway
exec systemd-cat --identifier=sway sway > $XDG_RUNTIME_DIR/sway.log 2>&1
elif [[ $(tty) == /dev/tty2 ]]; then
# needs vulkan libs.
export WLRRENDERER=vulkan
# systemd-cat --identifier=sway sway >> $XDG_RUNTIME_DIR/sway.log 2>&1
# systemd-cat --identifier=sway sway >> /var/tmp/sway.log 2>&1
sway -d -V >> /var/tmp/sway.log 2>&1
elif [ "${XDG_VTNR}" -eq 2 ]; then
export MOZ_ENABLE_WAYLAND=1
export XDG_SESSION_TYPE=wayland
exec systemd-cat --identifier=gnome-session gnome

View File

@ -1,4 +1,4 @@
alias ls='exa -al --group --group-directories-first'
alias ls='exa -al --group --group-directories-first --time-style=full-iso --git --colour-scale'
alias grubup='sudo grub2-mkconfig -o /boot/grub2/grub.cfg'
alias am='sudo -i'
alias mv='mv -i'
@ -15,8 +15,8 @@
#alias reth='sudo ethtool -r enp0s25' # ; ip link set enp0s25 down; ip link set enp0s25 up '
#alias rwlan='ip link set wlp3s0 down; ip link set wlp3s0 up'
alias wget='wget -c' # allows to restore progress after interruption
alias vimrc='vim ~/.vimrc'
alias zshconfig="vim ~/.zshrc"
alias vimrc='vim ~/src/dotfiles/.vim/vimrc'
alias zshconfig="vim ~/src/dotfiles/.zshrc"
alias zshist="vim ~/.zsh_history"
alias alltheconfigs='alltheconfigs.sh'
alias agentssh="ssh-add ~/.ssh/$kee" # add development key on demand
@ -27,11 +27,11 @@
alias tmpdir='nutmp=$(mktemp -d);cd "$nutmp";unset nutmp'
alias wolm='wol d4:3d:7e:53:c2:b1'
alias ta='tmux a -t0'
alias dc='docker-compose'
# alias dc='docker-compose'
alias tmux='TERM=xterm-256color tmux'
alias urlencode='python2 -c "import urllib, sys; print urllib.quote_plus( sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1], \"\")"'
alias urldecode='python2 -c "import urllib, sys; print urllib.unquote_plus(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1])"'
alias obs="QT_QPA_PLATFORM=xcb obs"
# alias obs="QT_QPA_PLATFORM=xcb obs"
alias diff="diff -Naru --color"
alias ip='ip -color'
alias nmcs='nmcli conn show'
@ -40,10 +40,16 @@
alias gitagain='GIT_COMMITTER_DATE="$(git show -s --format=%ci HEAD)" git commit -v --amend'
[ -z "$IN_NIX_SHELL" ] && {
if command -v nixGLIntel &> /dev/null; then
alias gor='nixGLIntel go run'
# alias gor='nixGLIntel go run'
fi
}
alias signal-desktop='signal-desktop --use-tray-icon --enable-features=UseOzonePlatform --ozone-platform=wayland'
alias dotfiles='cd ~/utils/dotfiles'
alias dotfiles='cd ~/src/dotfiles' # on leo
alias -g VV=' |& vim -'
alias -g LL=' |& less'
# alias podman='sudo podman' # rootful podman for ZFS
# nix home-manager switch
alias -g nhms='home-manager switch --no-out-link -b backup --flake ~/src/dotfiles#$HOST'
alias hx='helix'
alias allkeyz="ssh-add ~/.ssh/$HOSTNAME ~/.ssh/gitsign"
alias clbin="curl --data-binary @- https://paste.rs/"

View File

@ -48,9 +48,14 @@ delete-branches() {
fzf-open() {
local output
local old_opts="$FZF_DEFAULT_OPTS"
FZF_DEFAULT_OPTS+=" --preview 'exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}' --bind '?:preview:bat --style=numbers --color=always --line-range :200 {}'"
output=$(fzf </dev/tty)
vim --not-a-term ${output}
if [ ! -z "$output" ]; then
vim --not-a-term ${output}
fi
zle reset-prompt
export FZF_DEFAULT_OPTS="$old_opts"
}
zle -N fzf-open

17
.zshenv
View File

@ -3,6 +3,10 @@
export GOPATH="$HOME/go"
export GOBIN="$GOPATH/bin"
# prerequisite: install gke-gcloud-auth-plugin
# ref: https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
export USE_GKE_GCLOUD_AUTH_PLUGIN=True
export ANDROID_SDK_ROOT="$HOME/utils/Android/Sdk"
export ANDROID_SDK_PATH=$ANDROID_SDK_ROOT
export ANDROID_NDK_PATH=$ANDROID_SDK_ROOT/ndk-bundle
@ -12,12 +16,21 @@ export AndroidNdkPath=$ANDROID_NDK_PATH
export CCACHE_NODISABLE="true"
# https://github.com/nix-community/home-manager/issues/4019
export SKIP_SANITY_CHECKS=1
# https://github.com/NixOS/nix/issues/2033
# https://discourse.nixos.org/t/where-is-nix-path-supposed-to-be-set/16434/8
export NIX_PATH=$HOME/.nix-defexpr/channels:/nix/var/nix/profiles/per-user/vis/channels${NIX_PATH:+:$NIX_PATH}
export NIX_PATH=$HOME/.nix-defexpr/channels:/nix/var/nix/profiles/per-user/$USER/channels${NIX_PATH:+:$NIX_PATH}
[ -z "$IN_NIX_SHELL" ] && export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
export PYTHONPATH="$HOME/.nix-profile/lib/python3.11/site-packages"
export BEMENU_OPTS="--tb '#6272a4' --tf '#f8f8f2' --fb '#282a36' --ff '#f8f8f2'
--nb '#282a36' --nf '#6272a4' --hb '#44475a' --hf '#50fa7b' --sb '#44475a'
--sf '#50fa7b' --scb '#282a36' --scf '#ff79c6' -n -p '⇒' --fork -l 5
--fn 'Fira Code Retina 17'"
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
add_to_path() {
local p=$1
@ -26,7 +39,7 @@ add_to_path() {
fi
}
add_to_path "/usr/lib64/ccache"
add_to_path "/usr/lib64/ccache/bin"
add_to_path "$ANDROID_SDK_ROOT/platform-tools"
add_to_path "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"
add_to_path "$ANDROID_SDK_ROOT/tools"

27
.zshrc
View File

@ -63,12 +63,18 @@
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
HIST_STAMPS="dd.mm.yyyy"
HISTSIZE=10000000
SAVEHIST=10000000
setopt extended_history # write the history file in the ":start:elapsed;command" format
setopt share_history
setopt hist_expire_dups_first # expire duplicate entries first when trimming history
setopt hist_ignore_dups
setopt hist_ignore_all_dups
setopt hist_save_no_dups
setopt hist_ignore_space
HISTCONTROL=ignoredups:erasedups
setopt hist_reduce_blanks # remove superfluous blanks before recording entry
setopt hist_verify # don't execute immediately after expansion
# HISTCONTROL=ignoredups:erasedups
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
@ -118,12 +124,22 @@
# Options to fzf command
export FZF_COMPLETION_OPTS='+c -x'
export FZF_DEFAULT_OPTS="--height=60% --inline-info --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4"
export FZF_CTRL_T_OPTS="--preview 'bat --style=numbers --color=always --line-range :200 {}'"
export FZF_CTRL_T_OPTS="--preview 'exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}' --bind '?:preview:bat --style=numbers --color=always --line-range :200 {}'"
export FZF_ALT_C_OPTS="--preview 'exa -al --group --group-directories-first --colour-scale --icons --git --time-style=full-iso {}' --bind '?:preview:exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}'"
# if [[ "$(hostnamectl hostname)" == "leo" ]]; then
if [[ "$(hostname -s)" == "leo" ]]; then
local fzf_bindings="/usr/share/fzf/key-bindings.zsh"
else
local fzf_bindings="/usr/share/fzf/shell/key-bindings.zsh"
fi
zvm_after_init_commands+=("[ -f $fzf_bindings ] && source $fzf_bindings")
unset fzf_bindings
zvm_after_init_commands+=('[ -f /usr/share/fzf/shell/key-bindings.zsh ] && source /usr/share/fzf/shell/key-bindings.zsh')
# User configuration
source ~/.dotenv
source ${XDG_RUNTIME_DIR}/secrets/envs
source ~/.zsh/aliases.zsh
source ~/.zsh/functions.zsh
@ -148,11 +164,14 @@
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
# export ARCHFLAGS="-arch x86_64"
export kee="surtur"
# export kee=${kee:-$(hostnamectl --static)}
export kee=${kee:-$(hostname -s)}
SSH_KEY_PATH="$HOME/.ssh/$kee"
eval $(TERM=xterm-kitty dircolors)
# export DOCKER_HOST=unix:///run/podman/podman.sock
# rootless
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock

53
bin/playerctl.sh Normal file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
# source: https://gitlab.com/xPMo/dotfiles.cli/-/blob/dots/.local/lib/waybar/playerctl.sh
exec 2>"$XDG_RUNTIME_DIR/waybar-playerctl.log"
IFS=$'\n\t'
while true; do
while read -r playing position length name artist title arturl hpos hlen; do
# remove leaders
playing=${playing:1} position=${position:1} length=${length:1} name=${name:1}
artist=${artist:1} title=${title:1} arturl=${arturl:1} hpos=${hpos:1} hlen=${hlen:1}
# build line
line="${artist:+$artist ${title:+- }}${title:+$title }${hpos:+$hpos${hlen:+|}}$hlen"
# json escaping
line="${line//\"/\\\"}"
((percentage = length ? (100 * (position % length)) / length : 0))
case $playing in
⏸️ | Paused) text='<span foreground=\"#cccc00\" size=\"smaller\">'"$line"'</span>' ;;
▶️ | Playing) text="<small>$line</small>" ;;
*) text='<span foreground=\"#073642\">⏹</span>' ;;
esac
# integrations for other services (nwg-wrapper)
if [[ $title != "$ptitle" || $artist != "$partist" || $parturl != "$arturl" ]]; then
typeset -p playing length name artist title arturl >"$XDG_RUNTIME_DIR/waybar-playerctl.info"
pkill -8 nwg-wrapper
ptitle=$title partist=$artist parturl=$arturl
fi
# exit if print fails
printf '{"text":"%s","tooltip":"%s","class":"%s","percentage":%s}\n' \
"$text" "$playing $name | $line" "$percentage" "$percentage" || break 2
done < <(
# requires playerctl>=2.0
# Add non-space character ":" before each parameter to prevent 'read' from skipping over them
playerctl --follow metadata --player playerctld --format \
$':{{emoji(status)}}\t:{{position}}\t:{{mpris:length}}\t:{{playerName}}\t:{{markup_escape(artist)}}\t:{{markup_escape(title)}}\t:{{mpris:artUrl}}\t:{{duration(position)}}\t:{{duration(mpris:length)}}' &
echo $! >"$XDG_RUNTIME_DIR/waybar-playerctl.pid"
)
# no current players
# exit if print fails
echo '<span foreground=#dc322f>⏹</span>' || break
sleep 15
done
kill "$(<"$XDG_RUNTIME_DIR/waybar-playerctl.pid")"

View File

@ -3,7 +3,8 @@
# Screen Sharing with OBS Studio on Fedora and Sway
# ref: https://github.com/hw0lff/screen-share-sway
grep -q "alias obs" ~/.zshrc || echo 'alias obs="QT_QPA_PLATFORM=xcb obs"' >> ~/.zshrc
# no need with obs's wayland support now.
# grep -q "alias obs" ~/.zshrc || echo 'alias obs="QT_QPA_PLATFORM=xcb obs"' >> ~/.zshrc
V4L2_VERSION="0.12.5"
U="$HOME/utils"

View File

@ -6,9 +6,9 @@ isrunning=1
player=`ps -u $USER | grep -Ec "(rhythmbox|totem|mpv|vlc|*mplayer)"`
if [ "$player" -ge "$isrunning" ]; then
if [ "$1" == "-t" || "$1" == "-f" ]; then
if [ "$1" == "-t" ] || [ "$1" == "-f" ]; then
dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
fi
fi
swaylock -C ~/.config/swaylock/config -f
swaylock -f -C ~/.config/swaylock/config --grace 0 && sleep 0.1

View File

@ -12,6 +12,6 @@ revert() {
}
trap revert HUP INT TERM
swayidle -w timeout 5 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' &
resume 'swaymsg "output * power on"' &
swaylock -C ~/.config/swaylock/config
revert

View File

@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@ -20,15 +20,14 @@
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
]
},
"locked": {
"lastModified": 1661573386,
"narHash": "sha256-pBEg8iY00Af/SAtU2dlmOAv+2x7kScaGlFRDjNoVJO8=",
"lastModified": 1687444533,
"narHash": "sha256-9IdCN7s7Dr1uKt0uRoYT15cpOjN1qYHpTRPKRHCMc3o=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d89bdff445eadff03fe414e9c30486bc8166b72b",
"rev": "6c78ba7932567331fb8ebabf34a143b998bb5f23",
"type": "github"
},
"original": {
@ -44,11 +43,11 @@
]
},
"locked": {
"lastModified": 1662769985,
"narHash": "sha256-zGk10O4osXxf1n9RafSMpPBsEibAGzx4OL4MLmlodB4=",
"lastModified": 1669234151,
"narHash": "sha256-TwT87E3m2TZLgwYJESlype14HxUOrRGojPM5C2akrMg=",
"owner": "jordanisaacs",
"repo": "homeage",
"rev": "dd98c460175a0781ad0b51f4392de97c5454a5c4",
"rev": "02bfe4ca06962d222e522fff0240c93946b20278",
"type": "github"
},
"original": {
@ -59,11 +58,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1661541451,
"narHash": "sha256-LALyT63vpo1sftSmHAbbrj+emfCOo93Jv4xVOIcmnl0=",
"lastModified": 1686960236,
"narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "38e16b192af13ff6cffc8a35a25f390f1e96b585",
"rev": "04af42f3b31dba0ef742d254456dc4c14eedac86",
"type": "github"
},
"original": {
@ -80,21 +79,6 @@
"homeage": "homeage",
"nixpkgs": "nixpkgs"
}
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
}
},
"root": "root",

View File

@ -44,5 +44,19 @@
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
homeConfigurations.leo = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [
./home-leo.nix
homeage.homeManagerModules.homeage
];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
};
}

726
home-leo.nix Normal file
View File

@ -0,0 +1,726 @@
{
config,
lib,
pkgs,
homeage,
...
}: let
hostName = "leo";
swayTgt = "sway-session.target";
in {
home.username = "$USER";
home.sessionVariables.HOSTNAME = "${hostName}";
home.homeDirectory = "/home/$USER";
home.stateVersion = "23.05";
#home.activation = {
# checkBemenuDraculaInZshDir = lib.hm.dag.entryAfter ["writeBoundary"] ''
# $DRY_RUN_CMD test -d .zsh/bemenu-dracula || echo "TODO: link bemenu-dracula to .zsh"
# '';
#};
homeage = {
# Absolute path to identity (created not through home-manager)
identityPaths = [
"~/.ssh/theEd"
];
# "activation" if system doesn't support systemd
#installationType = "activation";
installationType = "systemd";
file."sops-age-keys.txt" = {
# Path to encrypted file tracked by the git repository
source = ./secrets/sops-keys.age;
# can be "copies" or "symlink"
symlinks = [".config/sops/age/keys.txt"];
};
file."envs" = {
source = ./secrets/envs.age;
};
# infra secrets.
file."infra-backend" = {
source = ./secrets/infra-backend.age;
};
file."infra-vars" = {
source = ./secrets/infra-vars.age;
};
};
# build a configuration and switch:
# ➜ home-manager switch --no-out-link -b backup --flake ~/src/dotfiles#$USER
# instead, install with:
# nix profile install --priority 0 home-manager
# hit the issue described here, waiting until resolved:
# https://github.com/nix-community/home-manager/issues/2848
programs.home-manager.enable = false;
programs.home-manager.path = "$HOME/src/dotfiles";
home.packages = with pkgs; [
exa
ripgrep
starship
wget
zstd
zip
unzip
xxd
b3sum
sheldon
btop
zellij
cargo-watch
httpie
github-cli
nodejs
nodePackages.npm
oci-cli
nautilus-open-any-terminal
dhall
clang-tools
ansible-lint
python311Packages.python-lsp-server
python311Packages.pynvim
python311Packages.i3ipc
python311Packages.xlib
python311Packages.adblock
zathura
autotiling
bemenu
swayr
kanshi
waybar
albert
];
imports = [
./nix/programs.nix
];
services = {
kdeconnect.enable = true;
kdeconnect.indicator = true;
};
systemd.user.services = {
kanshi = {
Unit = {
Description = "Dynamic output configuration for Wayland compositors";
# Documentation = "man:kanshi(1)";
Documentation = "https://sr.ht/~emersion/kanshi";
# Requires = config.services.kanshi.systemdTarget;
# PartOf = config.services.kanshi.systemdTarget;
# After = config.services.kanshi.systemdTarget;
# BindsTo = "sway-session.target";
BindsTo = config.services.kanshi.systemdTarget;
};
Service = {
Type = "simple";
# ExecStart = "/usr/sbin/kanshi";
ExecStart = "${config.services.kanshi.package}/bin/kanshi";
Restart = "always";
};
Install = {WantedBy = [config.services.kanshi.systemdTarget];};
};
waybar = {
Unit = {
Description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
Documentation = "https://github.com/Alexays/Waybar/wiki/";
PartOf = swayTgt;
After = swayTgt;
};
Service = {
ExecStart = "${pkgs.waybar}/bin/waybar";
ExecReload = "kill -SIGUSR2 $MAINPID";
Restart = "on-failure";
RestartSec = "3s";
};
Install = {WantedBy = [swayTgt];};
};
autotiling = {
Unit = {
Description = "Script for sway and i3 to automatically switch the horizontal / vertical window split orientation";
Documentation = "https://github.com/nwg-piotr/autotiling";
BindsTo = swayTgt;
};
Service = {
Type = "simple";
ExecStart = "${pkgs.autotiling}/bin/autotiling";
Restart = "always";
};
Install = {WantedBy = [swayTgt];};
};
albert = {
Unit = {
Description = "A C++/Qt based desktop agnostic keyboard launcher that helps you to accomplish your workflows in a breeze";
Documentation = "https://albertlauncher.github.io/";
BindsTo = swayTgt;
};
Service = {
Type = "simple";
# after hm stateVersion bump to 23.05, albert doesn't seem to support explicit wayland.
Environment = "QT_QPA_PLATFORM=xcb";
ExecStart = "${pkgs.albert}/bin/albert";
Restart = "always";
RestartSec = "3s";
};
Install = {WantedBy = [swayTgt];};
};
};
home.file = {
".config/kitty/kitty.conf" = {
source = .config/kitty/kitty.conf;
};
".vimrc" = {
source = ./.vim/vimrc;
};
".vim/deoplete.vimrc.vim" = {
source = ./.vim/deoplete.vimrc.vim;
};
".vim/gotags.vimrc.vim" = {
source = ./.vim/gotags.vimrc.vim;
};
".vim/python.vimrc.vim" = {
source = ./.vim/python.vimrc.vim;
};
".config/helix/config.toml" = {
source = ./.config/helix/config.toml;
};
".config/nvim/init.vim" = {
source = ./.config/nvim/init.vim;
};
".config/sway/config" = {
source = ./.config/sway/config;
};
".config/sway/env" = {
source = ./.config/sway/env;
};
".config/waybar/config" = {
source = ./.config/waybar/config;
};
".config/waybar/style.css" = {
source = ./.config/waybar/style.css;
};
".config/waybar/modules/storage.sh" = {
source = ./.config/waybar/modules/storage.sh;
};
".config/kanshi/config" = {
source = ./.config/kanshi/config;
};
".config/mako/config" = {
source = ./.config/mako/config;
};
".local/bin/swws.py" = {
source = ./bin/swws.py;
};
".local/bin/sway-locker" = {
source = ./bin/sway-locker;
};
".config/fusuma/config-wl.yml" = {
source = ./.config/fusuma/config-wl.yml;
};
".config/fusuma/config.yml" = {
source = ./.config/fusuma/config.yml;
};
".config/git/config-common" = {
source = ./.config/git/config;
};
# host-specific gitconfig.
".config/git/config.${hostName}" = {
text = ''
[user]
name = ${hostName}
email = wanderer@dotya.ml
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKwshTdBgLzwY4d8N7VainZCngH88OwvPGhZ6bm87rBO
'';
};
".config/git/config" = {
text = ''
[include]
path = ~/.config/git/config-common
[include]
path = ~/.config/git/config.${hostName}
'';
};
".config/git/allowed_signers" = {
source = ./.config/git/allowed_signers;
};
# begin zsh-related.
".zshrc" = {
source = ./.zshrc;
};
".zshenv" = {
source = ./.zshenv;
};
".zprofile" = {
source = ./.zprofile;
};
".zsh" = {
source = ./.zsh;
recursive = true;
};
".zsh/bemenu-dracula" = {
source = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "bemenu";
rev = "9b1165b3d97e3b2a74c6ce220781b78d8a11febf";
sha256 = "sha256-TwfkEZ1aTkHur+jCqRsaqvzOw6qpH0L4pvYqkx7iCDk=";
};
};
# end zsh-related.
".cargo/config.toml" = {
source = .cargo/config.toml;
};
".npmrc" = {
text = ''
prefix=''${HOME}/.npm-packages
audit=false
fund=false
'';
};
".config/swaylock/config" = {
source = .config/swaylock/config.${hostName};
};
".config/tridactyl/tridactylrc" = {
source = .config/tridactyl/tridactylrc;
};
".config/bat/config" = {
source = .config/bat/config;
};
".ncpamixer.conf" = {
source = .config/ncpamixer.conf;
};
".gdbinit" = {
text = ''
set auto-load safe-path /nix/store
set history save on
set history size 10000
set history remove-duplicates 100
set history filename ~/.gdb_history
'';
};
".local/bin/fuzzypassage" = {
executable = true;
text = ''
PREFIX="''${PASSAGE_DIR:-$HOME/.passage/store}"
FZF_DEFAULT_OPTS=""
name="$(find "$PREFIX" -type f -name '*.age' | \
sed -e "s|$PREFIX/||" -e 's|\.age$||' | \
fzf --height 40% --reverse --no-multi)"
passage "''${@}" "$name"
'';
};
".local/bin/battery.sh" = {
source = bin/battery.sh;
executable = true;
};
".local/bin/localbsync" = {
source = bin/localbsync;
executable = true;
};
".local/bin/mgp" = {
source = bin/mgp;
executable = true;
};
".local/bin/parec-wr" = {
source = bin/parec-wr;
executable = true;
};
".local/bin/pscbg" = {
source = bin/pscbg;
executable = true;
};
".local/bin/qst_up" = {
source = bin/qst_up;
executable = true;
};
".local/bin/v4l2pls" = {
source = bin/v4l2pls;
executable = true;
};
".local/bin/winprint.sh" = {
source = bin/winprint.sh;
executable = true;
};
".local/bin/authenticator.sh" = {
text = ''
#!/bin/sh
# adopted from https://wiki.archlinux.org/index.php/Google_Authenticator
# This is the path to the Google Authenticator app file. It's typically located
# in /data under Android. Copy it to your PC in a safe location and specify the
# path to it here.
#DB="/path/to/com.google.android.apps.authenticator/databases/databases"
DB="$1"
if [ $# -ne 1 ]; then
printf "authenticator\n"
printf "usage: authenticator <path/to/org.authenticator/databases/databases>\n"
printf "\tThis is the path to the Authenticator app owned SQLite db file.\n"
printf "\tCopy it to your PC to a safe location and specify the path to it here.\n"
exit 1
fi
# On most Android systems with sufficient user access, the Google Authenticator
# database can be copied off the device and accessed directly, as it is an
# sqlite3 database. This shell script will read a Google Authenticator database
# and generate live codes for each key found:
sqlite3 "$DB" 'SELECT email,secret FROM accounts;' | while read A
do
NAME=`echo "$A" | cut -d '|' -f 1`
KEY=`echo "$A" | cut -d '|' -f 2`
CODE=`oathtool --totp -b "$KEY"`
echo -e "\e[1;32m$CODE\e[0m - \e[1;33m$NAME\e[0m"
done
'';
executable = true;
};
".local/bin/createarchive.sh" = {
text = ''
#!/bin/bash
if [ $# -ne 1 ]; then
printf "createarchive\n"
printf "usage: createarchive <folder to be archived>\n"
printf "warning: the archive will be moved to "backups" directory (`echo $dest`)\n"
exit 1
fi
# what this does in short: tar, compress, timestamp, shred the tar, mv .xz to pwd and display it
logdate="$(date +%Y%m%dT%H%M%S)"
basedir="$1"
tmpdir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXX")
#/run/user/$(id -u) tmpfs 0700 perms
f="`cd $basedir; pwd | tr '/' ' ' | sed 's/^.* / /' | cut -c2-`" > /dev/null
g="$logdate-$f.tar"
dest=~/MEGA/Private/backups
doathing() {
cd $basedir/..
tar cfv "$tmpdir/$g" "$f" && \
xz -vzk9e "$tmpdir/$g" -S .xz && \
rsync -avP "$tmpdir/$g.xz" "$dest" && \
shred -zuv "$tmpdir/$g" "$tmpdir/$g.xz" && \
printf "\n"
ls -latr "$dest/$g.xz"
}
if [ ! -d $1 ]; then
echo "$1 is not a directory"
exit 1
else
echo `pwd`
echo "$f"
echo "$1"
doathing
trap "rm -rfv $tmpdir" 0 1 3 15
exit $?
fi
'';
executable = true;
};
".config/qutebrowser/userscripts/localhost" = {
executable = true;
text = ''
#!/usr/bin/env bash
export BEMENU_OPTS="--tb '#6272a4' --tf '#f8f8f2' --fb '#282a36' --ff '#f8f8f2'
--nb '#282a36' --nf '#6272a4' --hb '#44475a' --hf '#50fa7b' --sb '#44475a' --sf
'#50fa7b' --scb '#282a36' --scf '#ff79c6' -p 'localhost:<port> ▶' --fork -l 5
--fn 'FiraCode Retina 17'"
if [[ $1 -eq 'list' ]] && [[ -z $QUTE_COUNT ]];
then
PORTS="$(ss -nltp | tail -n +2 | awk '{print $4}' | awk -F: '{print $2}')"
QUTE_COUNT=$(echo "$PORTS" | bemenu -n )
fi
# echo open -t localhost:''${QUTE_COUNT:-8080} > $QUTE_FIFO
[ -n "$QUTE_COUNT" ] && echo open -t localhost:"''${QUTE_COUNT}" > $QUTE_FIFO
'';
};
".config/qutebrowser/userscripts/speak" = {
executable = true;
text = ''
#!/bin/bash
export IFS=$'\n'
pkill -f qute_speak || {
~/.local/bin/gtts-cli "$QUTE_SELECTED_TEXT" | mpv --no-video --speed=1.26 -
# ~/.local/bin/gtts-cli "$QUTE_SELECTED_TEXT" > /tmp/qute_speak.mp3
# mpv /tmp/qute_speak.mp3
}
'';
};
".config/qutebrowser/userscripts/dark_mode.user" = {
executable = true;
text = ''
#!/bin/zsh
# on a new system cp DR.js DarkReader.user.js
darkreader_file="$HOME/.config/qutebrowser/greasemonkey/DarkReader.user.js"
enabled="^//DarkReader.disable();"
darkreader_enabled="$(grep -q -e "$enabled" $darkreader_file; echo $?)"
# echo $darkreader_enabled
if [[ "$(echo $darkreader_enabled)" == "1" ]]; then
# enable DarkReader by commenting out the line that disables it.
sed -i --follow-symlink 's/DarkReader.disable()/\/\/DarkReader.disable()/' "$darkreader_file"
else
# disable DarkReader
sed -i --follow-symlink 's/\/\/DarkReader.disable()/DarkReader.disable()/' "$darkreader_file"
fi
'';
};
".config/qutebrowser/greasemonkey/DR.js" = {
text = ''
// ==UserScript==
// @name Dark Reader (Unofficial)
// @icon https://darkreader.org/images/darkreader-icon-256x256.png
// @namespace DarkReader
// @description Inverts the brightness of pages to reduce eye strain
// @version 4.9.52
// @author https://github.com/darkreader/darkreader#contributors
// @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader
// @run-at document-end
// @grant none
// @exclude https://git.dotya.ml*
// @exclude https://dotya.ml*
// @exclude https://status.dotya.ml*
// @exclude https://searxng.dotya.ml*
// @exclude https://grafana.dotya.ml*
// @exclude https://github.com*
// @exclude https://dnswatch.com*
// @exclude https://docs.immudb.io*
// @exclude https://woodpecker-ci.org*
// @exclude https://duckduckgo.com*
// @exclude https://www.redit.com*
// @exclude https://codeberg.org*
// @include http*
// @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js
// @noframes
// ==/UserScript==
DarkReader.enable({
brightness: 105,
contrast: 105,
sepia: 0
});
DarkReader.disable();
'';
};
".config/qutebrowser/userscripts/code_select.py" = {
executable = true;
source = .local/share/qutebrowser/userscripts/code_select.py;
};
".config/qutebrowser/userscripts/getbib" = {
executable = true;
source = .local/share/qutebrowser/userscripts/getbib;
};
".config/qutebrowser/userscripts/qute-gemini" = {
executable = true;
source = .local/share/qutebrowser/userscripts/qute-gemini;
};
".config/qutebrowser/userscripts/qute-gemini-tab" = {
executable = true;
source = .local/share/qutebrowser/userscripts/qute-gemini;
};
".config/qutebrowser/config.py" = {
source = .config/qutebrowser/config.py;
};
".local/bin/workqb" = {
text = ''
#!/bin/zsh
qutebrowser \
--restore work \
--config ~/.config/qutebrowser/config.py \
--basedir ~/.config/qutebrowser-work \
&
disown
'';
executable = true;
};
# ref: https://go.dev/blog/pprof
".local/bin/xtime" = {
text = ''
#!/bin/sh
/usr/bin/time -f '%Uu %Ss %er %MkB %C' "$@"
'';
executable = true;
};
".local/bin/xdp-screen-cast" = {
text = ''
#!/usr/bin/python3
# ref: https://gitlab.gnome.org/-/snippets/19
import re
import signal
import dbus
from gi.repository import GLib
from dbus.mainloop.glib import DBusGMainLoop
import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst
DBusGMainLoop(set_as_default=True)
Gst.init(None)
loop = GLib.MainLoop()
bus = dbus.SessionBus()
request_iface = 'org.freedesktop.portal.Request'
screen_cast_iface = 'org.freedesktop.portal.ScreenCast'
pipeline = None
def terminate():
if pipeline is not None:
self.player.set_state(Gst.State.NULL)
loop.quit()
request_token_counter = 0
session_token_counter = 0
sender_name = re.sub(r'\.', r'_', bus.get_unique_name()[1:])
def new_request_path():
global request_token_counter
request_token_counter = request_token_counter + 1
token = 'u%d'%request_token_counter
path = '/org/freedesktop/portal/desktop/request/%s/%s'%(sender_name, token)
return (path, token)
def new_session_path():
global session_token_counter
session_token_counter = session_token_counter + 1
token = 'u%d'%session_token_counter
path = '/org/freedesktop/portal/desktop/session/%s/%s'%(sender_name, token)
return (path, token)
def screen_cast_call(method, callback, *args, options={}):
(request_path, request_token) = new_request_path()
bus.add_signal_receiver(callback,
'Response',
request_iface,
'org.freedesktop.portal.Desktop',
request_path)
options['handle_token'] = request_token
method(*(args + (options, )),
dbus_interface=screen_cast_iface)
def on_gst_message(bus, message):
type = message.type
if type == Gst.MessageType.EOS or type == Gst.MessageType.ERROR:
terminate()
def play_pipewire_stream(node_id):
empty_dict = dbus.Dictionary(signature="sv")
fd_object = portal.OpenPipeWireRemote(session, empty_dict,
dbus_interface=screen_cast_iface)
fd = fd_object.take()
pipeline = Gst.parse_launch('pipewiresrc fd=%d path=%u ! videoconvert ! xvimagesink'%(fd, node_id))
pipeline.set_state(Gst.State.PLAYING)
pipeline.get_bus().connect('message', on_gst_message)
def on_start_response(response, results):
if response != 0:
print("Failed to start: %s"%response)
terminate()
return
print("streams:")
for (node_id, stream_properties) in results['streams']:
print("stream {}".format(node_id))
play_pipewire_stream(node_id)
def on_select_sources_response(response, results):
if response != 0:
print("Failed to select sources: %d"%response)
terminate()
return
print("sources selected")
global session
screen_cast_call(portal.Start, on_start_response,
session, ''')
def on_create_session_response(response, results):
if response != 0:
print("Failed to create session: %d"%response)
terminate()
return
global session
session = results['session_handle']
print("session %s created"%session)
screen_cast_call(portal.SelectSources, on_select_sources_response,
session,
options={ 'multiple': False,
'types': dbus.UInt32(1|2) })
portal = bus.get_object('org.freedesktop.portal.Desktop',
'/org/freedesktop/portal/desktop')
(session_path, session_token) = new_session_path()
screen_cast_call(portal.CreateSession, on_create_session_response,
options={ 'session_handle_token': session_token })
try:
loop.run()
except KeyboardInterrupt:
terminate()
'';
executable = true;
};
".local/bin/playerctl.sh" = {
source = ./bin/playerctl.sh;
executable = true;
};
};
xdg = (import ./nix/modules/xdg.nix) {inherit pkgs config hostName;};
}

View File

@ -313,5 +313,14 @@
'';
executable = true;
};
# ref: https://go.dev/blog/pprof
".local/bin/xtime" = {
text = ''
#!/bin/sh
/usr/bin/time -f '%Uu %Ss %er %MkB %C' "$@"
'';
executable = true;
};
};
}

92
nix/modules/xdg.nix Normal file
View File

@ -0,0 +1,92 @@
{
config,
pkgs,
hostName,
...
}: {
configFile."kitty/config.d" = {
source = ./../../.config/kitty/config.d;
};
configFile."kitty/current-theme.conf" = {
source = ./../../.config/kitty/current-theme.conf;
};
configFile."aerc/aerc.conf" = {
# source = ./../../.config/aerc/aerc.conf;
source = ./../../.config/aerc/aerc.conf.${hostName};
};
configFile."aerc/binds.conf" = {
source = ./../../.config/aerc/binds.conf;
};
configFile."sway/config.d" = {
source = ./../../.config/sway/config.d;
};
configFile."mako/dracula-mako" = {
source = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "mako";
rev = "80caf30d59f8017e306519ca33609be75a86ebaf";
sha256 = "sha256-qoQODX2435xfH9G6xOVFXitKy/75MaDU+tiQ/EsjRV4=";
};
};
configFile."sheldon/plugins.toml" = {
source = ./../../.config/sheldon/plugins.toml;
};
configFile."starship.toml" = {
source = ./../../.config/starship.toml;
};
configFile."zathura/zathurarc" = {
source = ./../../.config/zathura/zathurarc;
};
configFile."zathura/dracula-zathura" = {
source = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "zathura";
rev = "b597b1537aa125e8829bef2cc57a0b0c6a6b35a1";
sha256 = "sha256-g6vxwPw0Q9QFJBc3d4R3ZsHnnEvU5o1f4DSuyLeN5XQ=";
};
};
configFile."qutebrowser/dracula" = {
source = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "qutebrowser-dracula-theme";
rev = "ba5bd6589c4bb8ab35aaaaf7111906732f9764ef";
sha256 = "sha256-av6laQezAOrBt6P+F2eHWFqAnTEENfDrvzEfhn2dDNY=";
};
};
configFile."qutebrowser/stylesheets" = {
source = ./../../.config/qutebrowser/stylesheets;
};
configFile."qutebrowser-work/config/stylesheets" = {
source = ./../../.config/qutebrowser/stylesheets;
};
configFile."ccache/ccache.conf" = {
source = ./../../.config/ccache/ccache.conf;
};
configFile."go/env" = {
source = ./../../.config/go/env;
};
configFile."glow/glow.yml" = {
source = ./../../.config/glow/glow.yml;
};
configFile."gtk-4.0/settings.ini" = {
source = ./../../.config/gtk-4.0/settings.ini;
};
configFile."gtk-4.0/gtk.css" = {
source = ./../../.config/gtk-4.0/gtk.css;
};
configFile."environment.d/sway-session.conf" = {
source = ./../../.config/environment.d/sway-session.conf;
};
}

View File

@ -4,7 +4,8 @@
...
}: {
programs.helix = {
enable = true;
# TODO: integrate the full toml config.
enable = false;
settings = {
theme = "dracula";
editor = {

View File

@ -33,6 +33,7 @@
}
{url = "https://torresjrjr.com/archive/index.xml";}
{url = "https://gitea-open-letter.coding.social/updates/atom.xml";}
{url = "https://ianhowson.com/rss.xml";}
{url = "https://www.kalzumeus.com/feed.xml";}
{url = "https://senan.xyz/feed.xml";}
{url = "https://www.paritybit.ca/feed.xml";}

2
secrets/.recipients Normal file
View File

@ -0,0 +1,2 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGzJL8/M+tTejrAPoomHKtlYk8lINBLHaH+p4SLt3sBG
age15959gprm59azjflvpj97yt0lj6dj4d2yv0nd6u9jp32lzwp3de7qzhf85y

19
secrets/envs.age Normal file
View File

@ -0,0 +1,19 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSBvSUtX
b2FkTXgwQ3IxeThvNC9lOERXOVNjbEtNRjVIY0tyMXBQalByMFR3CmhOMlRoS09q
UzJvTWpBTVUwMEFkT29tTEx5UGQzUml3bUtxOXNmdUd5R2MKLT4gWDI1NTE5IGFm
dDZZVWRYbHlIY2NjbUtmNU80Rno4R0lTdSt5b3g3a1hXVG00eGJXMk0KeFVGZWtm
VU1uenJaZU9CbFpBSFdSYnFYYWNpRTFRbkRKdDVqUVVLdktzdwotLS0gU1BvOGpl
d01Meks4VnRkVlRjRjRsdXV4eG1aUjlkcUJIQ3Z2aG85bmJxWQqm0MSO0q9WZyS+
FFOOTm7RDZp6jF2GSmLnTV+RCx2Cmt+pGb96qqBdHj6LwqZjL6PjhxbLkPBy5aO8
MQfHSukMcKiGeHYw+go35z4ZbB2u98N1R9YzxKLrVLhr1rJXfuL0Hs9YILAZ2c73
mPk57KA04ni6USxbdmoetWScnppUUis/59elYSVabYC0+KXE0pTPqBOFlB8uIei/
15ZeudfVgGZwijGzAZF6xLHXbx+P4BDZypQA8YPgcPbp4GCpFb+n1c4DuZxAGS2g
OlfCTOHl81vubPiqemQ+VS/GGahxdzjhXs2TRqRdHgPSMwidzIjEtjx4r+xhgCoG
WrK+0v7zyUU6G3ykhbttto2LMxWPS98K9pP1iWGr4J1+UykQiG/GyWoZYa5UwmHN
Km06kEHC51tZ8GwF/ALZWk80+Wubc35dYLZNfb0R6FG3Lvel3Su0ZhosvKlTTrnP
U9ituCCy8+XwLXGb5t2oioGUxA/QSBdzcGFGSqOLQG5OtikR/Kl3np3MITpXpwLB
uGxeAed0/DAGjMfen8eGlGPXIM2RWshvsXvtBoKfkkaSgW3r0eV+JENefP0Ls3P5
SezfBwEymwZwGTgD2PH41T6k3bJNfdNPaTrivd66fnNyTevpQf2LshDAotm7dqWM
FNArctQ6406/wrS5Fn79ibEV8hEgQRawrbA=
-----END AGE ENCRYPTED FILE-----

12
secrets/infra-backend.age Normal file
View File

@ -0,0 +1,12 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSBzb3dt
M2prVGp6dlArbk1wT1VrK05ZcDJXTmgyM0JITmFHblpLcTRpSzNNCjU1Y1BvOXZS
NTJEVDFWeENSSWZZWG1rRTlKZHJHYTA1MXpiUDliTkpWbWMKLT4gWDI1NTE5IFgz
V3A1WEtXVWcybEh5NFFOMS9iZS9hVXJHTVV3bDE1MmE0c2Z5UVRFVXcKT3p3cmRX
VlZLdnBmZG53aDJqOWJrc0M5cE5qVWxRbWJMU2hLSVdtYmNpWQotLS0gYzIzbmVW
Wi9IM256TFJMWkFzckc3K0RqdHYrcHlNOVhlc2F3b3hYQitvZwrCioyrYO/hFHDT
AAiwVCvCCYiNYhKtuEOFqPjnOEeK7c+3lJVP+ZLJifL45TMF1fwl5cVG1r7ToQk1
giJGDtwffkAYtYBa8GkqsEwAvbTiJa0DGmM9MSrTzLFXHS/hhtfl0E4Otwn7rH+z
n5QQBnpJVaoU/WvIt0DoT6rDYYtgsOFegR9Wgui066pFB3YXBkLiuS7afZCryPSG
JmDpxoaQReYpV/8orMVHrqdSKK5F8ekBg2rK2QKVNlniqj/qLswBqPSL/xutXoy1
-----END AGE ENCRYPTED FILE-----

18
secrets/infra-vars.age Normal file
View File

@ -0,0 +1,18 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSA2N0dq
a0tYQXFxOFdOOHVCS1lidVZXMi82ZkkzMWhxUEJUbFA1c0xuUWtFCjdodG9UZjhB
ODRvYUFMb2VkWHhtY0c2RnRESWdUMGpnUUN6d2k4SkdjRkkKLT4gWDI1NTE5IEha
N0cwaCtXcVZLc1FSZlJ4MWcwTUhER2wrQTRlYzJvcFg5d0IyMFc0RFkKVjRxLzhv
aEY2UU9LR1NzSXBZY24vbTA0eWRuWFJZL20zZjVvNm95bE5uMAotLS0gVjJuMXZE
NFFMbmVOZ1BES3NoWUgrZHB1MkRrekxUNHlmYnArVklUdy9TNAp/vbvBms9YsBL5
ADv+iNlNBo3zZrhmuveERJsKJwLnUYF8nOquVpPGnyp+NSHm7ekSEYznS8ip5OIb
ieg2EtSVYkY/tRSZKcFWsGJVqd2TKyhwIxfZA9Q5r/Bx4j4zAdUdBdYzwS7czs+J
CL+mrsBYAkoyJGR0Vhz8ha2JRoTY8uV3ydQfFw93vyB4XH2KmqI1KiUvGYP+TjqX
FLLC8xcVWkJ4+NARDjwWEf7g2p5P8FmHEDYRSA2QkeUdgL69lCZ9WgStZiQKQnWi
nRjnhSAkc78Tal8EWNkTlGeEu3D3d6QsycEvmQCHci/iIxUd2bMpKAJ+Ve+8inzh
RuHEAb9dm3ioigWn1jtJo0ALhs7d0xyXYtP5s+6TSOj6UXtdDH4et+cNAWHx7uLk
MRIS7b12e3UhNvW+4+3DtsDBWYpak8cDCrfT2jsGQnPOyRiGoSKdFprNeMBq7olN
OfvRYuPlHdlU8N19gxyBEZT9BXAIdkx4gq6hvuslolHfx36pnof3If9T2x0PjeQf
oA+OqXCzPkvKAYzxke/9DYKQMAkVsON3ehT2uds5AClPnDpeCYwG4FefjrMtxTOF
XS5BC8gksUvkKgZ7F6Y07tA2VwrWmPhYtv4=
-----END AGE ENCRYPTED FILE-----