diff --git a/pkgs/applications/networking/mailreaders/aerc/default.nix b/pkgs/applications/networking/mailreaders/aerc/default.nix index 172cea3d061d..6b5ad03366dc 100644 --- a/pkgs/applications/networking/mailreaders/aerc/default.nix +++ b/pkgs/applications/networking/mailreaders/aerc/default.nix @@ -1,21 +1,27 @@ -{ lib, buildGoModule, fetchFromSourcehut -, ncurses, notmuch, scdoc -, python3, w3m, dante +{ lib +, buildGoModule +, fetchFromSourcehut +, ncurses +, notmuch +, scdoc +, python3 +, w3m +, dante }: buildGoModule rec { pname = "aerc"; - version = "0.7.1"; + version = "0.9.0"; src = fetchFromSourcehut { owner = "~rjarry"; repo = pname; rev = version; - sha256 = "sha256-wiylBBqnivDnMUyCg3Zateu4jcjicTfrQFALT8dg5No="; + sha256 = "sha256-D4cZVNh3YFaVRHGFn5Nt6kMSRCShj0w5n7pTxgYik2s="; }; proxyVendor = true; - vendorSha256 = "sha256-hpGd78PWk3tIwB+TPmPy0gKkU8+t5NTm9RzPuLae+Fk="; + vendorSha256 = "sha256-fGQ15i3mWNmmfypRt5A7SAVYSEg9m4so4FYlUY+7mW8="; doCheck = false; @@ -28,6 +34,12 @@ buildGoModule rec { ./runtime-sharedir.patch ]; + postPatch = '' + substituteAllInPlace config/aerc.conf + substituteAllInPlace config/config.go + substituteAllInPlace doc/aerc-config.5.scd + ''; + pythonPath = [ python3.pkgs.colorama ]; diff --git a/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch b/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch index e08161e61eb6..d5e40edeb661 100644 --- a/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch +++ b/pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch @@ -1,60 +1,90 @@ -From c715a96c693baa0e6c8ab3c96b6c10e0a40bf7af Mon Sep 17 00:00:00 2001 -From: Tadeo Kondrak -Date: Thu, 21 Jan 2021 10:40:49 +0100 -Subject: [PATCH] Fix aerc breaking every time the package is rebuilt. - -On NixOS, the SHAREDIR changes on every rebuild to the package, but aerc -fills it in as part of the default config and then installs that config -to the users home folder. Fix this by not substituting @SHAREDIR@ in the -default config until runtime. ---- - Makefile | 2 +- - config/config.go | 13 +++++++++++++ - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 77f5e61..98cbc11 100644 ---- a/Makefile -+++ b/Makefile -@@ -23,7 +23,7 @@ aerc: $(GOSRC) - -o $@ - - aerc.conf: config/aerc.conf.in -- sed -e 's:@SHAREDIR@:$(SHAREDIR):g' > $@ < config/aerc.conf.in -+ cat config/aerc.conf.in > $@ - - debug: $(GOSRC) - GOFLAGS="-tags=notmuch" \ +diff --git a/config/aerc.conf b/config/aerc.conf +index fbbf587..ede1a03 100644 +--- a/config/aerc.conf ++++ b/config/aerc.conf +@@ -107,8 +107,7 @@ next-message-on-delete=true + # + # ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets + # ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets +-# /usr/local/share/aerc/stylesets +-# /usr/share/aerc/stylesets ++# @out@/share/aerc/stylesets + # + # default: "" + stylesets-dirs= +@@ -254,8 +253,7 @@ new-email= + # + # ${XDG_CONFIG_HOME:-~/.config}/aerc/templates + # ${XDG_DATA_HOME:-~/.local/share}/aerc/templates +-# /usr/local/share/aerc/templates +-# /usr/share/aerc/templates ++# @out@/share/aerc/templates + # + # default: "" + template-dirs= diff --git a/config/config.go b/config/config.go -index 87d183a..cb6611a 100644 +index 2120310..92b7655 100644 --- a/config/config.go +++ b/config/config.go -@@ -470,6 +470,16 @@ func LoadConfigFromFile(root *string, sharedir string) (*AercConfig, error) { - return nil, err - } +@@ -331,8 +331,8 @@ func buildDefaultDirs() []string { } -+ if sec, err := file.GetSection("templates"); err == nil { -+ if key, err := sec.GetKey("template-dirs"); err == nil { -+ sec.NewKey("template-dirs", strings.ReplaceAll(key.String(), "@SHAREDIR@", sharedir)) -+ } -+ } -+ if sec, err := file.GetSection("ui"); err == nil { -+ if key, err := sec.GetKey("stylesets-dirs"); err == nil { -+ sec.NewKey("stylesets-dirs", strings.ReplaceAll(key.String(), "@SHAREDIR@", sharedir)) -+ } -+ } - file.NameMapper = mapName - config := &AercConfig{ - Bindings: BindingConfig{ -@@ -547,6 +557,9 @@ func LoadConfigFromFile(root *string, sharedir string) (*AercConfig, error) { - return nil, err - } - -+ for i, filter := range config.Filters { -+ config.Filters[i].Command = strings.ReplaceAll(filter.Command, "@SHAREDIR@", sharedir) -+ } - if ui, err := file.GetSection("general"); err == nil { - if err := ui.MapTo(&config.General); err != nil { - return nil, err --- -2.30.0 + + // Add fixed fallback locations +- defaultDirs = append(defaultDirs, "/usr/local/share/aerc") +- defaultDirs = append(defaultDirs, "/usr/share/aerc") ++ defaultDirs = append(defaultDirs, "@out@/local/share/aerc") ++ defaultDirs = append(defaultDirs, "@out@/share/aerc") + + return defaultDirs + } +diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd +index 885c4f8..77a853e 100644 +--- a/doc/aerc-config.5.scd ++++ b/doc/aerc-config.5.scd +@@ -12,7 +12,7 @@ account credentials. We look for these files in your XDG config home plus + "aerc", which defaults to ~/.config/aerc. + + Examples of these config files are typically included with your installation of +-aerc and are usually installed in /usr/share/aerc. ++aerc and are usually installed in @out@/share/aerc. + + Each file uses the _ini_ format, and consists of sections with keys and values. + A line beginning with # is considered a comment and ignored, as are empty lines. +@@ -221,8 +221,7 @@ These options are configured in the *[ui]* section of aerc.conf. + ``` + ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets + ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets +- /usr/local/share/aerc/stylesets +- /usr/share/aerc/stylesets ++ @out@/share/aerc/stylesets + ``` + + Default: "" +@@ -381,7 +380,7 @@ 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. + + aerc ships with some default filters installed in the share directory (usually +-_/usr/share/aerc/filters_). Note that these may have additional dependencies ++_@out@/share/aerc/filters_). Note that these may have additional dependencies + that aerc does not have alone. + + ## TRIGGERS +@@ -407,7 +406,7 @@ and forward commands can be called with the -T flag with the name of the + template name. + + aerc ships with some default templates installed in the share directory (usually +-_/usr/share/aerc/templates_). ++_@out@/share/aerc/templates_). + + These options are configured in the *[templates]* section of aerc.conf. + +@@ -419,8 +418,7 @@ These options are configured in the *[templates]* section of aerc.conf. + ``` + ${XDG_CONFIG_HOME:-~/.config}/aerc/templates + ${XDG_DATA_HOME:-~/.local/share}/aerc/templates +- /usr/local/share/aerc/templates +- /usr/share/aerc/templates ++ @out@/share/aerc/templates + ``` + + Default: ""