From ee733b781e24b094df080531aab6ed35fcdccf4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Av=C3=A9?= Date: Fri, 31 May 2024 22:25:50 +0200 Subject: [PATCH] Add Hyprland --- .config/aerc/aerc.conf | 753 ------------------------------ .config/aerc/binds.conf | 172 ------- .gitmodules | 9 - .notmuch-config | 83 ---- NixOS/configuration.nix | 22 +- NixOS/flake.nix | 24 +- NixOS/home.nix | 3 +- NixOS/modules/email/config.nix | 248 ++++++++++ NixOS/modules/hyprland/config.nix | 5 + NixOS/modules/notmuch/config.nix | 19 - 10 files changed, 274 insertions(+), 1064 deletions(-) delete mode 100644 .config/aerc/aerc.conf delete mode 100644 .config/aerc/binds.conf delete mode 100644 .notmuch-config create mode 100644 NixOS/modules/email/config.nix create mode 100644 NixOS/modules/hyprland/config.nix delete mode 100644 NixOS/modules/notmuch/config.nix diff --git a/.config/aerc/aerc.conf b/.config/aerc/aerc.conf deleted file mode 100644 index 46f402e..0000000 --- a/.config/aerc/aerc.conf +++ /dev/null @@ -1,753 +0,0 @@ -[general] -# -# Used as a default path for save operations if no other path is specified. -# ~ is expanded to the current user home dir. -# -#default-save-path= - -# If set to "gpg", aerc will use system gpg binary and keystore for all crypto -# operations. If set to "internal", the internal openpgp keyring will be used. -# If set to "auto", the system gpg will be preferred unless the internal -# keyring already exists, in which case the latter will be used. -# -# Default: auto -#pgp-provider=auto - -# By default, the file permissions of accounts.conf must be restrictive and -# only allow reading by the file owner (0600). Set this option to true to -# ignore this permission check. Use this with care as it may expose your -# credentials. -# -# Default: false -#unsafe-accounts-conf=false - -# Output log messages to specified file. A path starting with ~/ is expanded to -# the user home dir. When redirecting aerc's output to a file using > shell -# redirection, this setting is ignored and log messages are printed to stdout. -# -#log-file= - -# Only log messages above the specified level to log-file. Supported levels -# are: trace, debug, info, warn and error. When redirecting aerc's output to -# a file using > shell redirection, this setting is ignored and the log level -# is forced to trace. -# -# Default: info -#log-level=info - -# Set the $TERM environment variable used for the embedded terminal. -# -# Default: xterm-256color -term=xterm-256color - -# Display OSC8 strings in the embedded terminal -# -# Default: false -#enable-osc8=false - -# Default shell command to use for :menu. This will be executed with sh -c and -# will run in an popover dialog. -# -# Any occurrence of %f will be replaced by a temporary file path where the -# command is expected to write output lines to be consumed by :menu. Otherwise, -# the lines will be read from the command's standard output. -# -# Examples: -# default-menu-cmd=fzf -# default-menu-cmd=fzf --multi -# default-menu-cmd=dmenu -l 20 -# default-menu-cmd=ranger --choosefiles=%f -# -#default-menu-cmd= - -[ui] -border-char-vertical="│" -border-char-horizontal="─" -styleset-name=catppuccin-mocha - -# -# Describes the format for each row in a mailbox view. This is a comma -# separated list of column names with an optional align and width suffix. After -# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment -# characters can be added (by default, left) followed by an optional width -# specifier. The width is either an integer representing a fixed number of -# characters, or a percentage between 1% and 99% representing a fraction of the -# terminal width. It can also be one of the '*' (auto) or '=' (fit) special -# width specifiers. Auto width columns will be equally attributed the remaining -# terminal width. Fit width columns take the width of their contents. If no -# width specifier is set, '*' is used by default. -# -# Default: date<20,name<17,flags>4,subject<* -#index-columns=date<20,name<17,flags>4,subject<* - -# -# Each name in index-columns must have a corresponding column-$name setting. -# All column-$name settings accept golang text/template syntax. See -# aerc-templates(7) for available template attributes and functions. -# -# Here are some examples to show the To field instead of the From field for -# an email (modifying column-name): -# -# 1. a generic one -# column-name={{ .Peer | names | join ", " }} -# 2. based upon the selected folder -# column-name={{if match .Folder "^(Gesendet|Sent)$"}}{{index (.To | names) 0}}{{else}}{{index (.From | names) 0}}{{end}} -# -# Default settings -#column-date={{.DateAutoFormat .Date.Local}} -#column-name={{index (.From | names) 0}} -#column-flags={{.Flags | join ""}} -#column-subject={{.ThreadPrefix}}{{if .ThreadFolded}}{{printf "{%d}" .ThreadCount}}{{end}}{{.Subject}} - -# -# String separator inserted between columns. When the column width specifier is -# an exact number of characters, the separator is added to it (i.e. the exact -# width will be fully available for the column contents). -# -# Default: " " -#column-separator=" " - -# -# 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 15:04 - -# -# Index-only time format for messages that were received/sent today. -# If this is not specified, timestamp-format is used instead. -# -#this-day-time-format= - -# -# Index-only time format for messages that were received/sent within the last -# 7 days. If this is not specified, timestamp-format is used instead. -# -#this-week-time-format= - -# -# Index-only time format for messages that were received/sent this year. -# If this is not specified, timestamp-format is used instead. -# -#this-year-time-format= - -# -# Width of the sidebar, including the border. -# -# Default: 20 -sidebar-width=30 - -# -# 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) -# -# Value to set {{.Subject}} template to when subject is empty. -# -# Default: (no subject) -#empty-subject=(no subject) - -# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel -# -# Default: false -mouse-enabled=true - -# -# Ring the bell when new messages are received -# -# Default: true -#new-message-bell=true - -# -# Template to use for Account tab titles -# -# Default: {{.Account}} -#tab-title-account={{.Account}} - -# Marker to show before a pinned tab's name. -# -# Default: ` -#pinned-tab-marker='`' - -# Template for the left side of the directory list. -# See aerc-templates(7) for all available fields and functions. -# -# Default: {{.Folder}} -#dirlist-left={{.Folder}} - -# Template for the right side of the directory list. -# See aerc-templates(7) for all available fields and functions. -# -# Default: {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}} -dirlist-right={{if .Unread}}{{humanReadable .Unread}}{{end}} - -# Delay after which the messages are actually listed when entering a directory. -# This avoids loading messages when skipping over folders and makes the UI more -# responsive. If you do not want that, set it to 0s. -# -# Default: 200ms -#dirlist-delay=200ms - -# Display the directory list as a foldable tree that allows to collapse and -# expand the folders. -# -# Default: false -dirlist-tree=true - -# If dirlist-tree is enabled, set level at which folders are collapsed by -# default. Set to 0 to disable. -# -# Default: 0 -#dirlist-collapse=0 - -# 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" -# -#sort= - -# Moves to next message when the current message is deleted -# -# Default: true -#next-message-on-delete=true - -# Automatically set the "seen" flag when a message is opened in the message -# viewer. -# -# Default: true -#auto-mark-read=true - -# The directories where the stylesets are stored. It takes a colon-separated -# list of directories. If this is unset or if a styleset cannot be found, the -# following paths will be used as a fallback in that order: -# -# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets -# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets -# /usr/local/share/aerc/stylesets -# /usr/share/aerc/stylesets -# -#stylesets-dirs= - -# Uncomment to use box-drawing characters for vertical and horizontal borders. -# -# Default: " " -#border-char-vertical=" " -#border-char-horizontal=" " - -# Sets the styleset to use for the aerc ui elements. -# -# Default: default - -# Activates fuzzy search in commands and their arguments: the typed string is -# searched in the command or option in any position, and need not be -# consecutive characters in the command or option. -# -# Default: false -#fuzzy-complete=false - -# How long to wait after the last input before auto-completion is triggered. -# -# Default: 250ms -#completion-delay=250ms - -# The minimum required characters to allow auto-completion to be triggered after -# completion-delay. -# -# Setting this to "manual" disables automatic completion, leaving only the -# manually triggered completion with the $complete key (see aerc-binds(5) for -# more details). -# -# Default: 1 -#completion-min-chars=1 - -# -# Global switch for completion popovers -# -# Default: true -#completion-popovers=true - -# Uncomment to use UTF-8 symbols to indicate PGP status of messages -# -# Default: ASCII -#icon-unencrypted= -#icon-encrypted=✔ -#icon-signed=✔ -#icon-signed-encrypted=✔ -#icon-unknown=✘ -#icon-invalid=⚠ - -# Reverses the order of the message list. By default, the message list is -# ordered with the newest (highest UID) message on top. Reversing the order -# will put the oldest (lowest UID) message on top. This can be useful in cases -# where the backend does not support sorting. -# -# Default: false -#reverse-msglist-order = false - -# Reverse display of the mesage threads. Default order is the the intial -# message is on the top with all the replies being displayed below. The -# reverse option will put the initial message at the bottom with the -# replies on top. -# -# Default: false -#reverse-thread-order=false - -# Sort the thread siblings according to the sort criteria for the messages. If -# sort-thread-siblings is false, the thread siblings will be sorted based on -# the message UID in ascending order. This option is only applicable for -# client-side threading with a backend that enables sorting. Note that there's -# a performance impact when sorting is activated. -# -# Default: false -#sort-thread-siblings=false - -#[ui:account=foo] -# -# Enable a threaded view of messages. If this is not supported by the backend -# (IMAP server or notmuch), threads will be built by the client. -# -# Default: false -#threading-enabled=false - -# Force client-side thread building -# -# Default: false -#force-client-threads=false - -# Show thread context enables messages which do not match the current query (or -# belong to the current mailbox) to be shown for context. These messages can be -# styled separately using "msglist_thread_context" in a styleset. This feature -# is not supported by all backends -# -# Default: false -#show-thread-context=false - -# Debounce client-side thread building -# -# Default: 50ms -#client-threads-delay=50ms - -# -# Thread prefix customization: - -# -# Customize the thread prefix appearance by selecting the arrow head. -# -# Default: ">" -#thread-prefix-tip = ">" - -# -# Customize the thread prefix appearance by selecting the arrow indentation. -# -# Default: " " -#thread-prefix-indent = " " - -# -# Customize the thread prefix appearance by selecting the vertical extension of -# the arrow. -# -# Default: "│" -#thread-prefix-stem = "│" - -# -# Customize the thread prefix appearance by selecting the horizontal extension -# of the arrow. -# -# Default: "" -#thread-prefix-limb = "" - -# -# Customize the thread prefix appearance by selecting the folded thread -# indicator. -# -# Default: "" -#thread-prefix-folded = "" - -# -# Customize the thread prefix appearance by selecting the unfolded thread -# indicator. -# -# Default: "" -#thread-prefix-unfolded = "" - -# -# Customize the thread prefix appearance by selecting the first child connector. -# -# Default: "" -#thread-prefix-first-child = "" - -# -# Customize the thread prefix appearance by selecting the connector used if -# the message has siblings. -# -# Default: "├─" -#thread-prefix-has-siblings = "├─" - -# -# Customize the thread prefix appearance by selecting the connector used if the -# message has no parents and no children. -# -# Default: "" -#thread-prefix-lone = "" - -# -# Customize the thread prefix appearance by selecting the connector used if the -# message has no parents and has children. -# -# Default: "" -#thread-prefix-orphan = "" - -# -# Customize the thread prefix appearance by selecting the connector for the last -# sibling. -# -# Default: "└─" -#thread-prefix-last-sibling = "└─" - -# -# Customize the reversed thread prefix appearance by selecting the connector for -# the last sibling. -# -# Default: "┌─" -#thread-prefix-last-sibling-reverse = "┌─" - -# -# Customize the reversed thread prefix appearance by selecting the first child -# connector. -# -# Default: "" -#thread-prefix-first-child-reverse = "" - -# -# Customize the reversed thread prefix appearance by selecting the connector -# used if the message has no parents and has children. -# -# Default: "" -#thread-prefix-orphan-reverse = "" - -[statusline] -# -# Describes the format for the status line. This is a comma separated list of -# column names with an optional align and width suffix. See [ui].index-columns -# for more details. To completely mute the status line except for push -# notifications, explicitly set status-columns to an empty string. -# -# Default: left<*,center:=,right>* -#status-columns=left<*,center:=,right>* - -# -# Each name in status-columns must have a corresponding column-$name setting. -# All column-$name settings accept golang text/template syntax. See -# aerc-templates(7) for available template attributes and functions. -# -# Default settings -#column-left=[{{.Account}}] {{.StatusInfo}} -#column-center={{.PendingKeys}} -#column-right={{.TrayInfo}} - -# -# String separator inserted between columns. -# See [ui].column-separator for more details. -# -#column-separator=" " - -# Specifies the separator between grouped statusline elements. -# -# Default: " | " -#separator=" | " - -# Defines the mode for displaying the status elements. -# Options: text, icon -# -# Default: text -#display-mode=text - -[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 -Rc -# pager=less -Rc -pager=nvim -u $XDG_CONFIG_HOME/nvim/aerc.lua - -# -# 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 - -# Define the maximum height of the mimetype switcher before a scrollbar is used. -# The height of the mimetype switcher is restricted to half of the display -# height. If the provided value for the height is zero, the number of parts will -# be used as the height of the type switcher. -# -# Default: 0 -#max-mime-height = 0 - -# Parses and extracts http links when viewing a message. Links can then be -# accessed with the open-link command. -# -# Default: true -#parse-http-links=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= - -# -# When set, aerc will create and read .eml files for composing that have -# non-standard \n linebreaks. This is only relevant if the used editor does not -# support CRLF linebreaks. -# -#lf-editor=false - -# -# 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 - -# -# Edit headers into the text editor instead than separate fields. -# -# When this is true, address-book-cmd is not supported and address completion -# is left to the editor itself. Also, displaying multiple headers on the same -# line is not possible. -# -# Default: false -#edit-headers=false - -# -# 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. -# -# This parameter can also be set per account in accounts.conf. -address-book-cmd='notmuch address "%s"' - -# Specifies the command to be used to select attachments. Any occurrence of -# '%s' in the file-picker-cmd will be replaced with the argument -# to :attach -m . Any occurence of '%f' will be replaced by the -# location of a temporary file, from which aerc will read the selected files. -# -# If '%f' is not present, the command must output the selected files to -# standard output, one file per line. If it is present, then aerc does not -# capture the standard output and instead reads the files from the temporary -# file which should have the same format. -#file-picker-cmd= - -# -# Allow to address yourself when replying -# -# Default: true -#reply-to-self=true - -# Warn before sending an email with an empty subject. -# -# Default: false -#empty-subject-warning=false - -# -# Warn before sending an email that matches the specified regexp but does not -# have any attachments. Leave empty to disable this feature. -# -# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The -# "(?im)" flags are set by default (case-insensitive and multi-line). -# -# Example: -# no-attachment-warning=^[^>]*attach(ed|ment) -# -#no-attachment-warning= - -# -# When set, aerc will generate "format=flowed" bodies with a content type of -# "text/plain; format=flowed" as described in RFC3676. This format is easier to -# handle for some mailing software, and generally just looks like ordinary -# text. To actually make use of this format's features, you'll need support in -# your editor. -# -#format-flowed=false - -[multipart-converters] -# -# Converters allow to generate multipart/alternative messages by converting the -# main text/plain part into any other MIME type. Only exact MIME types are -# accepted. The commands are invoked with sh -c and are expected to output -# valid UTF-8 text. -# -# Example (obviously, this requires that you write your main text/plain body -# using the markdown syntax): -# text/html=pandoc -f markdown -t html --standalone -# text/html=lynx -dump -force_html -stdin -text/html=w3m -dump -o display_link_number=1 -T text/html - -[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 commands are invoked with sh -c. The following folders are prepended to -# the system $PATH to allow referencing filters from their name only: -# -# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters -# ~/.local/libexec/aerc/filters -# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters -# $PREFIX/libexec/aerc/filters -# $PREFIX/share/aerc/filters -# /usr/libexec/aerc/filters -# /usr/share/aerc/filters -# -# If you want to run a program in your default $PATH which has the same name -# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path. -# -# The following variables are defined in the filter command environment: -# -# AERC_MIME_TYPE the part MIME type/subtype -# AERC_FORMAT the part content type format= parameter -# AERC_FILENAME the attachment filename (if any) -# AERC_SUBJECT the message Subject header value -# AERC_FROM the message From header value -# -# 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. - -text/plain=cat -text/calendar=gnome-calendar -message/delivery-status=cat -message/rfc822=cat -# text/html=lynx -dump -force_html -stdin -text/html=w3m -dump -o display_link_number=1 -T text/html -#text/html=html | colorize -text/*=bat -fP --file-name="$AERC_FILENAME" -application/x-sh=bat -fP -l sh -#image/*=catimg -w $(tput cols) - -#subject,~Git(hub|lab)=lolcat -f -#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize - -# This special filter is only used to post-process email headers when -# [viewer].show-headers=true -# By default, headers are piped directly into the pager. -# -# .headers=colorize - -[openers] -# -# Openers allow you to specify the command to use for the :open and :open-link -# actions on a per-MIME-type basis. The :open-link URL scheme is used to -# determine the MIME type as follows: x-scheme-handler/. -# -# {} is expanded as the temporary filename or URL to be opened with proper -# shell quoting. If it is not encountered in the command, the filename/URL will -# be appended to the end of the command. The command will then be executed with -# `sh -c`. -# -# Like [filters], openers support basic shell globbing. The first opener which -# matches the part's MIME type (or URL scheme handler MIME type) will be used, -# so order them from most to least specific. -# -# Examples: -# x-scheme-handler/irc=hexchat -# x-scheme-handler/http*=printf '%s' {} | wl-copy -# text/html=surf -dfgms -# text/plain=gvim {} +125 -# message/rfc822=thunderbird - -[hooks] -# -# Hooks are triggered whenever the associated event occurs. - -# -# Executed when a new email arrives in the selected folder -#mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT" - -# -# Executed when mail is deleted from a folder -#mail-deleted=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" & - -# -# Executed when aerc adds mail to a folder -#mail-added=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" & - -# -# Executed when aerc starts -#aerc-startup=aerc :terminal calcurse && aerc :next-tab - -# -# Executed when aerc shuts down. -#aerc-shutdown= - -[templates] -# Templates are used to populate email bodies automatically. -# - -# The directories where the templates are stored. It takes a colon-separated -# list of directories. If this is unset or if a template cannot be found, the -# following paths will be used as a fallback in that order: -# -# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates -# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates -# /usr/local/share/aerc/templates -# /usr/share/aerc/templates -# -#template-dirs= - -# The default template to be used for new messages. -# -# default: new_message -#new-message=new_message - -# The default template to be used for quoted replies. -# -# default: quoted_reply -#quoted-reply=quoted_reply - -# The default template to be used for forward as body. -# -# default: forward_as_body -#forwards=forward_as_body diff --git a/.config/aerc/binds.conf b/.config/aerc/binds.conf deleted file mode 100644 index 6db5938..0000000 --- a/.config/aerc/binds.conf +++ /dev/null @@ -1,172 +0,0 @@ -# Binds are of the form = -# To use '=' in a key sequence, substitute it with "Eq": "" -# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit - - = :menu -adc 'fzy -l 30' :cf -a - = :next-tab -? = :help keys - = :check-mail - -# = :prompt 'Quit?' quit -# = :prompt 'Quit?' quit -# = :suspend - -[messages] -q = :q - = :q - -j = :next -# = :next -# = :next 50% -# = :next 100% -# = :next 100% - -k = :prev - = :prev -# = :prev 50% -# = :prev 100% -# = :prev 100% -g = :select 0 -G = :select -1 - -J = :next-folder -K = :prev-folder - -v = :mark -t -# = :mark -t:next -V = :mark -v - = :read -t - -T = :toggle-threads -# zc = :fold -# zo = :unfold -# za = :fold -t -# zM = :fold -a -# zR = :unfold -a -# = :fold -t - - = :view -d = :prompt 'Really delete this message?' 'delete-message' -D = :delete -a = :archive flat -A = :unmark -a:mark -T:archive flat -f = :flag -t - -c = :compose -m = :compose - -rr = :reply -a -rq = :reply -aq -Rr = :reply -Rq = :reply -q - -c = :cf -$ = :term -! = :term -| = :pipe - -/ = :search -a -\ = :filter -a -n = :next-result -N = :prev-result - = :clear - -s = :split -S = :vsplit - -pl = :patch list -pa = :patch apply -pd = :patch drop -pb = :patch rebase -pt = :patch term -ps = :patch switch - -[messages:folder=Drafts] - = :recall - -[view] -/ = :toggle-key-passthrough/ -q = :close -O = :open -o = :open -S = :save -| = :pipe -D = :delete -A = :archive flat - - = :open-link - -f = :flag -t -rr = :reply -a -rq = :reply -aq -Rr = :reply -Rq = :reply -q - -H = :toggle-headers - = :prev-part - = :prev-part - = :next-part - = :next-part -J = :next - = :next -K = :prev - = :prev - -[view::passthrough] -$noinherit = true -$ex = - = :toggle-key-passthrough - -[compose] -# Keybindings used when the embedded terminal is not selected in the compose -# view -$noinherit = true -$ex = -$complete = - = :prev-field - = :prev-field - = :next-field - = :next-field - = :switch-account -p - = :switch-account -p - = :switch-account -n - = :switch-account -n - = :next-field - = :prev-field - = :prev-tab - = :prev-tab - = :next-tab - = :next-tab - -[compose::editor] -# Keybindings used when the embedded terminal is selected in the compose view -$noinherit = true -$ex = - = :prev-field - = :prev-field - = :next-field - = :next-field - = :prev-tab - = :prev-tab - = :next-tab - = :next-tab - -[compose::review] -# Keybindings used when reviewing a message to be sent -y = :send -n = :abort -v = :preview -p = :postpone -q = :choose -o d discard abort -o p postpone postpone -e = :edit -a = :attach -d = :detach - -[terminal] -$noinherit = true -$ex = - - = :prev-tab - = :next-tab - = :prev-tab - = :next-tab diff --git a/.gitmodules b/.gitmodules index 615dbb0..c295559 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,12 +4,3 @@ [submodule ".config/awesome/awesomewm-vim-tmux-navigator"] path = .config/awesome/awesomewm-vim-tmux-navigator url = https://github.com/intrntbrn/awesomewm-vim-tmux-navigator -[submodule ".config/zsh/powerlevel10k"] - path = .config/zsh/powerlevel10k - url = https://github.com/romkatv/powerlevel10k.git -[submodule ".config/zsh/zsh-autocomplete"] - path = .config/zsh/zsh-autocomplete - url = https://github.com/marlonrichert/zsh-autocomplete.git -[submodule ".config/zsh/zsh-vi-mode"] - path = .config/zsh/zsh-vi-mode - url = https://github.com/jeffreytse/zsh-vi-mode.git diff --git a/.notmuch-config b/.notmuch-config deleted file mode 100644 index e2a0c6a..0000000 --- a/.notmuch-config +++ /dev/null @@ -1,83 +0,0 @@ -# .notmuch-config - Configuration file for the notmuch mail system -# -# For more information about notmuch, see https://notmuchmail.org -# Database configuration -# -# The only value supported here is 'path' which should be the top-level -# directory where your mail currently exists and to where mail will be -# delivered in the future. Files should be individual email messages. -# Notmuch will store its database within a sub-directory of the path -# configured here named ".notmuch". -# -[database] -path=/home/user/.config/aerc/mail - -# User configuration -# -# Here is where you can let notmuch know how you would like to be -# addressed. Valid settings are -# -# name Your full name. -# primary_email Your primary email address. -# other_email A list (separated by ';') of other email addresses -# at which you receive email. -# -# Notmuch will use the various email addresses configured here when -# formatting replies. It will avoid including your own addresses in the -# recipient list of replies, and will set the From address based on the -# address to which the original email was addressed. -# -[user] -name=Thomas Avé -primary_email=email@thomasave.be -other_email=Thomas.Ave@uantwerpen.be;Thomas.Ave@imec.be; - -# Configuration for "notmuch new" -# -# The following options are supported here: -# -# tags A list (separated by ';') of the tags that will be -# added to all messages incorporated by "notmuch new". -# -# ignore A list (separated by ';') of file and directory names -# that will not be searched for messages by "notmuch new". -# -# NOTE: *Every* file/directory that goes by one of those -# names will be ignored, independent of its depth/location -# in the mail store. -# -[new] -# Search configuration -# -# The following option is supported here: -# -# exclude_tags -# A ;-separated list of tags that will be excluded from -# search results by default. Using an excluded tag in a -# query will override that exclusion. -# -[search] -# Maildir compatibility configuration -# -# The following option is supported here: -# -# synchronize_flags Valid values are true and false. -# -# If true, then the following maildir flags (in message filenames) -# will be synchronized with the corresponding notmuch tags: -# -# Flag Tag -# ---- ------- -# D draft -# F flagged -# P passed -# R replied -# S unread (added when 'S' flag is not present) -# -# The "notmuch new" command will notice flag changes in filenames -# and update tags, while the "notmuch tag" and "notmuch restore" -# commands will notice tag changes and update flags in filenames -exclude_tags=deleted;spam; - -[maildir] -synchronize_flags=true diff --git a/NixOS/configuration.nix b/NixOS/configuration.nix index 762ea9c..b699574 100644 --- a/NixOS/configuration.nix +++ b/NixOS/configuration.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). -{ config, lib, pkgs, ... }: +{ config, inputs, lib, pkgs, ... }: { imports = [ @@ -12,23 +12,15 @@ # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - + time.timeZone = "Europe/Brussels"; networking.hostName = "nixos"; # Define your hostname. # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - time.timeZone = "Europe/Brussels"; - # Select internationalisation properties. - # i18n.defaultLocale = "en_US.UTF-8"; - # console = { - # font = "Lat2-Terminus16"; - # keyMap = "us"; - # useXkbConfig = true; # use xkb.options in tty. - # }; - - # Enable CUPS to print documents. - # services.printing.enable = true; + # System Packages + programs.zsh.enable = true; + programs.hyprland.enable = true; # Pipewire security.rtkit.enable = true; @@ -40,7 +32,6 @@ jack.enable = true; }; - programs.zsh.enable = true; users.users.user = { isNormalUser = true; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. @@ -72,5 +63,6 @@ }; networking.firewall.enable = false; - system.stateVersion = "23.11"; # Did you read the comment? + system.stateVersion = "23.11"; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; #hint electron apps to use wayland: } diff --git a/NixOS/flake.nix b/NixOS/flake.nix index f83b640..99d5248 100644 --- a/NixOS/flake.nix +++ b/NixOS/flake.nix @@ -13,18 +13,18 @@ nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; # allows access to flake inputs in nixos modules - modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { inherit inputs; }; # allows access to flake inputs in hm modules - home-manager.users.user = { - imports = [ ./home.nix ]; - }; - } - ]; + modules = [ + ./configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs; }; # allows access to flake inputs in hm modules + home-manager.users.user = { + imports = [ ./home.nix ]; + }; + } + ]; }; }; } diff --git a/NixOS/home.nix b/NixOS/home.nix index 586ddee..3941fe2 100644 --- a/NixOS/home.nix +++ b/NixOS/home.nix @@ -4,7 +4,8 @@ imports = [ (import ./modules/zsh/config.nix {inherit config pkgs;}) (import ./modules/nvim/config.nix {inherit config pkgs;}) - (import ./modules/notmuch/config.nix {inherit config pkgs;}) + (import ./modules/email/config.nix {inherit config pkgs;}) + (import ./modules/hyprland/config.nix {inherit config pkgs;}) ]; home.stateVersion = "24.11"; diff --git a/NixOS/modules/email/config.nix b/NixOS/modules/email/config.nix new file mode 100644 index 0000000..64b6521 --- /dev/null +++ b/NixOS/modules/email/config.nix @@ -0,0 +1,248 @@ +{ config, pkgs, ... }: + +{ + programs.notmuch = { + enable = true; + extraConfig = { + database = { + path = "/home/user/.config/aerc/mail"; + }; + user = { + name = "Thomas Avé"; + primary_email = "email@thomasave.be"; + other_email = "Thomas.Ave@uantwerpen.be;Thomas.Ave@imec.be;"; + }; + maildir = { + synchronize_flags = "true"; + }; + }; + }; + programs.aerc = { + enable = true; + extraBinds = { + global = { + "" = ":menu -adc 'fzy -l 30' :cf -a"; + "" = ":next-tab"; + "?" = ":help keys"; + "" = ":check-mail"; + }; + messages = { + "q" = ":q"; + "" = ":q"; + "j" = ":next"; + "k" = ":prev"; + "" = ":prev"; + "g" = ":select 0"; + "G" = ":select -1"; + "J" = ":next-folder"; + "K" = ":prev-folder"; + "v" = ":mark -t"; + "V" = ":mark -v"; + "" = ":read -t"; + "T" = ":toggle-threads"; + "" = ":view"; + "d" = ":prompt 'Really delete this message?' 'delete-message'"; + "D" = ":delete"; + "a" = ":archive flat"; + "A" = ":unmark -a:mark -T:archive flat"; + "f" = ":flag -t"; + "m" = ":compose"; + "rr" = ":reply -a"; + "rq" = ":reply -aq"; + "Rr" = ":reply"; + "Rq" = ":reply -q"; + "c" = ":cf"; + "$" = ":term"; + "!" = ":term"; + "|" = ":pipe"; + "/" = ":search -a"; + "\\" = ":filter -a "; + "n" = ":next-result"; + "N" = ":prev-result"; + "" = ":clear"; + "s" = ":split"; + "S" = ":vsplit"; + "pl" = ":patch list"; + "pa" = ":patch apply "; + "pd" = ":patch drop "; + "pb" = ":patch rebase"; + "pt" = ":patch term"; + "ps" = ":patch switch "; + }; + view = { + "/" = ":toggle-key-passthrough/"; + "q" = ":close"; + "O" = ":open"; + "o" = ":open"; + "S" = ":save"; + "|" = ":pipe"; + "D" = ":delete"; + "A" = ":archive flat"; + "" = ":open-link "; + "f" = ":flag -t"; + "rr" = ":reply -a"; + "rq" = ":reply -aq"; + "Rr" = ":reply"; + "Rq" = ":reply -q"; + "H" = ":toggle-headers"; + "" = ":prev-part"; + "" = ":prev-part"; + "" = ":next-part"; + "" = ":next-part"; + "J" = ":next"; + "" = ":next"; + "K" = ":prev"; + "" = ":prev"; + }; + "view::passthrough" = { + "$noinherit" = "true"; + "$ex" = ""; + "" = ":toggle-key-passthrough"; + }; + compose = { + "$noinherit" = "true"; + "$ex" = ""; + "$complete" = ""; + "" = ":prev-field"; + "" = ":prev-field"; + "" = ":next-field"; + "" = ":next-field"; + "" = ":switch-account -p"; + "" = ":switch-account -p"; + "" = ":switch-account -n"; + "" = ":switch-account -n"; + "" = ":next-field"; + "" = ":prev-field"; + "" = ":prev-tab"; + "" = ":prev-tab"; + "" = ":next-tab"; + "" = ":next-tab"; + }; + "compose::editor" = { + "$noinherit" = "true"; + "$ex" = ""; + "" = ":prev-field"; + "" = ":prev-field"; + "" = ":next-field"; + "" = ":next-field"; + "" = ":prev-tab"; + "" = ":prev-tab"; + "" = ":next-tab"; + "" = ":next-tab"; + }; + "compose::review" = { + "y" = ":send"; + "n" = ":abort"; + "v" = ":preview"; + "p" = ":postpone"; + "q" = ":choose -o d discard abort -o p postpone postpone"; + "e" = ":edit"; + "a" = ":attach"; + "d" = ":detach"; + }; + terminal = { + "$noinherit" = "true"; + "$ex" = ""; + "" = ":prev-tab"; + "" = ":next-tab"; + "" = ":prev-tab"; + "" = ":next-tab"; + }; + }; + extraConfig = { + general = { + term = "xterm-256color"; + }; + ui = { + border-char-vertical = "│"; + border-char-horizontal = "─"; + styleset-name = "catppuccin-mocha"; + timestamp-format = "2006-01-02 15:04"; + sidebar-width = 30; + mouse-enabled = true; + dirlist-right = "{{if .Unread}}{{humanReadable .Unread}}{{end}}"; + dirlist-tree = true; + }; + viewer = { + pager = "nvim -u $XDG_CONFIG_HOME/nvim/aerc.lua"; + }; + compose = { + address-book-cmd = "notmuch address \"\%s\""; + }; + multipart-converters = { + "text/html" = "w3m -dump -o display_link_number=1 -T text/html"; + }; + filters = { + "text/plain" = "cat"; + "text/calendar" = "gnome-calendar"; + "message/delivery-status" = "cat"; + "message/rfc822" = "cat"; + "text/html" = "w3m -dump -o display_link_number=1 -T text/html"; + "text/*" = "bat -fP --file-name=\"$AERC_FILENAME\""; + "application/x-sh" = "bat -fP -l sh"; + }; + }; + }; + + home.file."${config.xdg.configHome}/aerc/map.conf".text = "Inbox=tag:inbox and not tag:archived and not tag:deleted"; + home.file."${config.xdg.configHome}/aerc/stylesets/catppuccin-mocha".text = '' + *.default=true + *.normal=true + + default.fg=#abb2bf + default.bg=#11121D + *.bg=#11121D + + error.fg=#f38ba8 + warning.fg=#fab387 + success.fg=#a6e3a1 + + tab.fg=#6c7086 + tab.bg=#181825 + tab.selected.fg=#cdd6f4 + tab.selected.bg=#023269 + tab.selected.bold=true + + part*.selected.bg=#023269 + + border.fg=#023269 + border.bold=true + + msglist_unread.bold=true + msglist_unread.fg=#f9e2af + msglist_flagged.fg=#e06c75 + + msglist_flagged.bold=true + msglist_result.fg=#89b4fa + msglist_result.bold=true + msglist_*.selected.bold=true + msglist_*.selected.bg=#023269 + msglist_*.bg=#11121D + + dirlist_*.selected.bold=true + dirlist_*.selected.bg=#023269 + dirlist_*.bg=#181825 + + statusline_default.fg=#9399b2 + statusline_default.bg=#2C3043 + statusline_error.bold=true + statusline_success.bold=true + + spinner.bg=#11121D + + [viewer] + header.bg=#181825 + url.fg=#89b4fa + url.underline=true + header.bold=true + signature.dim=true + diff_meta.bold=true + diff_chunk.fg=#89b4fa + diff_chunk_func.fg=#89b4fa + diff_chunk_func.bold=true + diff_add.fg=#a6e3a1 + diff_del.fg=#f38ba8 + quote_*.fg=#6c7086 + quote_1.fg=#9399b2 + ''; +} diff --git a/NixOS/modules/hyprland/config.nix b/NixOS/modules/hyprland/config.nix new file mode 100644 index 0000000..53f4858 --- /dev/null +++ b/NixOS/modules/hyprland/config.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ + wayland.windowManager.hyprland.enable = true; +} diff --git a/NixOS/modules/notmuch/config.nix b/NixOS/modules/notmuch/config.nix deleted file mode 100644 index 968f649..0000000 --- a/NixOS/modules/notmuch/config.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.notmuch = { - enable = true; - extraConfig = '' - [database] - path=/home/user/.config/aerc/mail - - [user] - name=Thomas Avé - primary_email=email@thomasave.be - other_email=Thomas.Ave@uantwerpen.be;Thomas.Ave@imec.be; - - [maildir] - synchronize_flags=true - ''; - }; -}