Compare commits
No commits in common. "6f30269e1e500019204361e60b2c8454bf698f1e" and "d4474ef5ce341308996067bd523f271dc23c0fb0" have entirely different histories.
6f30269e1e
...
d4474ef5ce
55 changed files with 794 additions and 566 deletions
18
flake.lock
generated
18
flake.lock
generated
|
|
@ -8,11 +8,11 @@
|
|||
},
|
||||
"locked": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"lastModified": 1772596991,
|
||||
"narHash": "sha256-awJJ4ATy9t8Svrx2z0zAftgXnUaGCFb2Ty0u036CnCQ=",
|
||||
"lastModified": 1769054619,
|
||||
"narHash": "sha256-LCc0gbSgjehdy41Gi1H5WNxEuW9PtRHFVaPXoFzslQU=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "cd2d0893966c0a5c27345a9a72d0418b42b7e36d",
|
||||
"rev": "6509620630f68dc02ac3e99f15a67760778444ff",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -29,11 +29,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772633058,
|
||||
"narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=",
|
||||
"lastModified": 1767910483,
|
||||
"narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865",
|
||||
"rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -45,11 +45,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1772598333,
|
||||
"narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=",
|
||||
"lastModified": 1768028080,
|
||||
"narHash": "sha256-50aDK+8eLvsLK39TzQhKNq50/HcXyP4hyxOYoPoVxjo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239",
|
||||
"rev": "d03088749a110d52a4739348f39a63f84bb0be14",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
37
flake.nix
37
flake.nix
|
|
@ -25,31 +25,12 @@
|
|||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/arielle
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users = {
|
||||
|
||||
till = {
|
||||
imports = [
|
||||
./home/minimal.nix
|
||||
./users/till/home.nix
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
homer = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/homer
|
||||
];
|
||||
modules = [ ./hosts/homer ];
|
||||
};
|
||||
|
||||
mila = nixpkgs.lib.nixosSystem {
|
||||
|
|
@ -62,7 +43,9 @@
|
|||
nova = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
|
||||
./hosts/nova
|
||||
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
|
|
@ -72,34 +55,29 @@
|
|||
|
||||
till = {
|
||||
imports = [
|
||||
./home/profiles/desktop-full.nix
|
||||
./home/desktop-full.nix
|
||||
./users/till/home.nix
|
||||
];
|
||||
};
|
||||
|
||||
alt = {
|
||||
imports = [
|
||||
./home/profiles/desktop-slim.nix
|
||||
./home/desktop-slim.nix
|
||||
./users/alt/home.nix
|
||||
];
|
||||
};
|
||||
|
||||
guest = {
|
||||
imports = [
|
||||
./home/profiles/desktop-slim.nix
|
||||
./home/desktop-slim.nix
|
||||
./users/guest/home.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
# firefox-addons.config.allowUnfreePredicate = pkg:
|
||||
# builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
# "tampermonkey"
|
||||
# ];
|
||||
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"corefonts"
|
||||
|
|
@ -107,7 +85,6 @@
|
|||
"keymapp"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
# "tampermonkey"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -5,10 +5,4 @@
|
|||
aichat
|
||||
glow
|
||||
];
|
||||
|
||||
programs.fish.shellAliases = {
|
||||
vibe = "aichat -c";
|
||||
clank = "aichat -e";
|
||||
slop = "aichat";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
let
|
||||
|
||||
myRemote = slug: {
|
||||
passwordCommand = [ "pass" "accounts/ktiu-radicale" ];
|
||||
passwordCommand = [ "pass" "ktiu/radicale" ];
|
||||
userName = "ktiu";
|
||||
type = "caldav";
|
||||
url = "https://kalender.ktiu.net/ktiu/${slug}";
|
||||
|
|
@ -127,7 +127,7 @@ in
|
|||
remote = {
|
||||
type = "caldav";
|
||||
url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/";
|
||||
passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ];
|
||||
passwordCommand = [ "pass" "grid/nextcloud" ];
|
||||
userName = "till";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
53
home/castget/castget.conf
Normal file
53
home/castget/castget.conf
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# vim: set ft=conf
|
||||
|
||||
[2.5admins]
|
||||
url=https://2.5admins.com/feed/podcast
|
||||
|
||||
[50plus2]
|
||||
url=https://50plus2.podigee.io/feed/mp3
|
||||
album_tag=50+2
|
||||
|
||||
[drei90]
|
||||
url=http://feeds.feedburner.com/Drei90
|
||||
album_tag=drei90
|
||||
|
||||
[efpodcast]
|
||||
url=https://www.eintracht-podcast.de/feed/mp3
|
||||
|
||||
[latenightlinux]
|
||||
url=https://latenightlinux.com/feed/mp3
|
||||
|
||||
[linuxafterdark]
|
||||
url=https://linuxafterdark.net/feed/podcast
|
||||
|
||||
[linuxdevtime]
|
||||
url=https://latenightlinux.com/feed/extra
|
||||
|
||||
[linuxmatters]
|
||||
url=https://linuxmatters.sh/episode/index.xml
|
||||
|
||||
[logbuchnetzpolitik]
|
||||
url=https://feeds.metaebene.me/lnp/mp3
|
||||
album_tag=Logbuch Netzpolitik
|
||||
|
||||
[schlusskonferenz]
|
||||
url=https://schlusskonferenz.podigee.io/feed/mp3
|
||||
|
||||
[tribünengespräch]
|
||||
url=https://tribuenengespraech.podigee.io/feed/mp3
|
||||
|
||||
[wettbrötchen]
|
||||
url=https://www.wett-broetchen.de/feed/mp3
|
||||
album_tag=Wettbrötchen
|
||||
|
||||
[edeltalk]
|
||||
url=https://cdn.julephosting.de/podcasts/573-edeltalk-mit-dominik-kevin/feed.rss
|
||||
album_tag=Edeltalk
|
||||
|
||||
[youredeadtome]
|
||||
url=https://podcasts.files.bbci.co.uk/p07mdbhg.rss
|
||||
|
||||
[*]
|
||||
genre_tag=Podcast
|
||||
spool=/home/till/.local/share/podcasts
|
||||
filename=%(channel_title)_%(date)_%(title).mp3
|
||||
15
home/desktop-full.nix
Normal file
15
home/desktop-full.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./desktop-slim.nix
|
||||
|
||||
./messaging.nix
|
||||
./r.nix
|
||||
./tex.nix
|
||||
./mail
|
||||
./office-gui.nix
|
||||
./office-cli.nix
|
||||
./aichat.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,17 +1,16 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, inputs, lib, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./minimal.nix
|
||||
|
||||
../devel.nix
|
||||
../firefox.nix
|
||||
../fonts.nix
|
||||
# ../foot.nix
|
||||
../media.nix
|
||||
../user-dirs.nix
|
||||
../gpg.nix
|
||||
../password-store.nix
|
||||
./devel.nix
|
||||
./firefox.nix
|
||||
./fonts.nix
|
||||
./foot.nix
|
||||
./gnome
|
||||
./media.nix
|
||||
./user-dirs.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
|
|
@ -26,5 +25,8 @@
|
|||
zathura
|
||||
];
|
||||
|
||||
xdg.configFile."castget/castget.conf".source = ./castget/castget.conf;
|
||||
|
||||
services.syncthing.enable = true;
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ config, pkgs, inputs, lib, ... }:
|
||||
|
||||
{
|
||||
home.file.".npmrc".text = ''
|
||||
|
|
@ -6,8 +6,12 @@
|
|||
'';
|
||||
|
||||
home.packages = with pkgs; [
|
||||
bundler
|
||||
bundix
|
||||
nodejs
|
||||
yarn-berry
|
||||
duckdb
|
||||
tippecanoe
|
||||
pmtiles
|
||||
];
|
||||
|
||||
programs.direnv.enable = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{ config, pkgs, inputs, osConfig, ... }:
|
||||
|
||||
{
|
||||
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
policies = {
|
||||
|
|
@ -148,7 +149,6 @@
|
|||
user_pref("signon.rememberSignons", false);
|
||||
user_pref("toolkit.telemetry.enabled", false);
|
||||
user_pref("toolkit.telemetry.server", "");
|
||||
user_pref("widget.gtk.libadwaita-colors.enabled", false);
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
|
||||
home.shellAliases = {
|
||||
top = "btm --battery";
|
||||
du = "dust";
|
||||
|
|
@ -12,6 +13,7 @@
|
|||
};
|
||||
|
||||
programs.fish = {
|
||||
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = "fish_add_path ${config.xdg.dataHome}/npm/packages/bin";
|
||||
|
|
@ -51,10 +53,6 @@
|
|||
end
|
||||
end
|
||||
|
||||
function diary --description 'Create or edit today\'s diary entry'
|
||||
nvim -c "call Diary()"
|
||||
end
|
||||
|
||||
set -U fish_prompt_pwd_dir_length 0
|
||||
|
||||
function fish_prompt --description "Write out the prompt"
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
main = {
|
||||
shell = "${pkgs.fish}/bin/fish -c 'tmux attach'";
|
||||
pad = "34x34";
|
||||
font = "JetBrains Mono:size=14";
|
||||
# font = "Adwaita Mono:size=17";
|
||||
# font-bold = "Adwaita Mono:size=17:weight=bold";
|
||||
# font-italic = "Adwaita Mono:size=17:slant=italic";
|
||||
# font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic";
|
||||
# initial-window-mode = "maximized";
|
||||
# initial-color-theme = "dark";
|
||||
# font = "JetBrains Mono:size=16";
|
||||
font = "Adwaita Mono:size=17";
|
||||
font-bold = "Adwaita Mono:size=17:weight=bold";
|
||||
font-italic = "Adwaita Mono:size=17:slant=italic";
|
||||
font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic";
|
||||
initial-window-mode = "maximized";
|
||||
initial-color-theme = "dark";
|
||||
};
|
||||
|
||||
mouse.hide-when-typing = "yes";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.pointerCursor = {
|
||||
|
|
@ -35,6 +35,7 @@
|
|||
gtk-theme = "Adwaita";
|
||||
};
|
||||
"org/gnome/desktop/background" = {
|
||||
picture-uri = "file://" + ./wallpaper_nix_paper_gray.svg;
|
||||
picture-options = "zoom";
|
||||
};
|
||||
"org/gnome/desktop/wm/keybindings" = {
|
||||
|
|
@ -103,12 +104,5 @@
|
|||
sleep-inactive-battery-timeout = 1200;
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile."run-or-raise/shortcuts.conf".text = ''
|
||||
<Super>b,firefox,,
|
||||
<Super>f,nautilus,,
|
||||
<Super>g:always-run,tmux new-window -n vifm vifm ~/desktop,foot,
|
||||
<Super>return,foot,,
|
||||
<Super>p,keepassxc,,,
|
||||
'';
|
||||
xdg.configFile."run-or-raise/shortcuts.conf".source = ./run-or-raise.conf;
|
||||
}
|
||||
25
home/gnome/run-or-raise.conf
Normal file
25
home/gnome/run-or-raise.conf
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<Super>b,firefox,,
|
||||
<Super>f,nautilus,,
|
||||
<Super>g:always-run,tmux new-window -n vifm vifm ~/desktop,foot,
|
||||
<Super>return,foot,,
|
||||
<Super>p,keepassxc,,,
|
||||
|
||||
# You may use regular expression in title or wm_class.
|
||||
# Just put the regular expression between slashes.
|
||||
# E.g. to jump to pidgin conversation window you may use this line
|
||||
# (that means any windows of wm_class Pidgin, not containing the title Buddy List)"
|
||||
# <Super>KP_1,pidgin,Pidgin,/^((?!Buddy List).)*$/
|
||||
|
||||
# Have the mail always at numpad-click.
|
||||
# <Super>KP_2,chromium-browser --app=https://mail.google.com/mail/u/0/#inbox
|
||||
|
||||
# =============
|
||||
# Run only form
|
||||
# =============
|
||||
#
|
||||
# This line will launch notify-send command.
|
||||
# <Super>h,notify-send Hello world
|
||||
|
||||
# Blank lines are allowed. Line starting with "#" means a comment.
|
||||
# Now delete these shortcuts and put here yours.
|
||||
# How to know wm_class? Alt+f2, lg, "windows" tab (at least on Ubuntu 17.10)
|
||||
128
home/gnome/wallpaper_nix_paper_gray.svg
Normal file
128
home/gnome/wallpaper_nix_paper_gray.svg
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="3840"
|
||||
height="2160"
|
||||
viewBox="0 0 3600.0001 2025"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="papercolor_grey.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.25780956"
|
||||
inkscape:cx="500.36934"
|
||||
inkscape:cy="1068.6182"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1014"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer7"
|
||||
inkscape:label="bg"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bcbcbc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect5389"
|
||||
width="3600"
|
||||
height="2024.7382"
|
||||
x="132.5822"
|
||||
y="-957.77832"
|
||||
transform="translate(-132.5822,958.04022)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="gradient-logo"
|
||||
style="display:inline;opacity:1"
|
||||
transform="translate(-132.5822,958.04022)">
|
||||
<g
|
||||
id="g4"
|
||||
transform="matrix(1.8009416,0,0,1.8009416,-1547.8855,-43.619081)"
|
||||
style="stroke-width:0.555265">
|
||||
<g
|
||||
id="g2"
|
||||
style="fill:#9d9da1;fill-opacity:1;stroke-width:0.555265">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3439-6"
|
||||
d="m 1864.6278,-49.22711 -154.8754,268.22157 -36.1595,-61.29501 41.7398,-71.834875 -82.8948,-0.217865 -17.667,-30.627963 18.0405,-31.326737 117.9921,0.372571 42.4056,-73.105854 z"
|
||||
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3445-0"
|
||||
d="m 1876.5091,165.18522 309.7244,0.0152 -35.0032,61.96257 -83.0808,-0.23034 41.2588,71.89798 -17.6911,30.61406 -36.15,0.0398 -58.6734,-102.37043 -84.5144,-0.17145 z"
|
||||
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3449-5"
|
||||
d="m 2056.7797,47.657079 -154.849,-268.236809 71.1628,-0.66757 41.3409,72.06522 41.6361,-71.68011 35.3581,0.0139 18.1095,31.2869 -59.3187,101.99786 42.1087,73.2773 z"
|
||||
style="fill:#9d9da1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g3"
|
||||
style="fill:#87878c;fill-opacity:1;stroke-width:0.555265">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 1808.7367,61.262431 154.849,268.236809 -71.1628,0.66757 -41.3409,-72.06522 -41.6361,71.68011 -35.3581,-0.0139 -18.1095,-31.2869 59.3187,-101.99786 -42.1087,-73.27717 z"
|
||||
id="path4260-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 1988.3675,-56.881714 -309.7243,-0.01524 35.0032,-61.962576 83.0808,0.23034 -41.2588,-71.89797 17.6911,-30.61407 36.15,-0.0398 58.6734,102.37043 84.5143,0.17138 z"
|
||||
id="use4354-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#87878c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.11091;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 2000.5368,158.10537 154.8754,-268.22158 36.1595,61.295012 -41.7398,71.83488 82.8948,0.217865 17.667,30.627963 -18.0405,31.326737 -117.9921,-0.372571 -42.4055,73.105794 z"
|
||||
id="use4362-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
17
home/gpg.nix
17
home/gpg.nix
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
|
|
@ -6,17 +6,16 @@
|
|||
pinentry-all
|
||||
];
|
||||
|
||||
# moved to system
|
||||
|
||||
# services.gpg-agent = {
|
||||
# enable = true;
|
||||
# pinentry.package = pkgs.pinentry-all;
|
||||
# pinentry.program = "pinentry";
|
||||
# # enableSshSupport = true;
|
||||
# };
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
pinentry.package = pkgs.pinentry-gnome3;
|
||||
pinentry.program = "pinentry-gnome3";
|
||||
enableSshSupport = true;
|
||||
};
|
||||
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
# homedir = "${config.xdg.dataHome}/gnupg";
|
||||
settings = {
|
||||
no-emit-version = true;
|
||||
no-comments = true;
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
systemd.enable = false;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,16 +1,85 @@
|
|||
# Navigation
|
||||
bind pager k previous-entry
|
||||
bind pager j next-entry
|
||||
# bind index,pager \Cu half-up
|
||||
# bind index,pager \Cd half-down
|
||||
# bind pager gg top
|
||||
# bind index gg first-entry
|
||||
# bind pager G bottom
|
||||
# bind index G last-entry
|
||||
# bind index,pager N search-opposite
|
||||
bind index <return> display-message
|
||||
bind index <space> collapse-thread
|
||||
bind index,pager gf change-folder
|
||||
|
||||
# Read HTML
|
||||
bind index,pager V noop
|
||||
macro index,pager V "<view-attachments><search>html<enter><view-mailcap><exit>"
|
||||
|
||||
# compose
|
||||
bind compose p postpone-message
|
||||
bind compose P pgp-menu
|
||||
# macro compose I "<attach-file>`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > "$tmpfile" && echo "$tmpfile"`<enter>" "attach image from clipboard"
|
||||
|
||||
macro index,pager go "<shell-escape>mbsync $my_account && notmuch new<enter>" "Sync this account"
|
||||
macro index,pager gO "<shell-escape>mbsync -a && notmuch new<enter>" "Sync all accounts"
|
||||
bind editor <Tab> complete-query
|
||||
bind editor ^T complete
|
||||
bind index,pager a group-reply
|
||||
bind index,pager m noop
|
||||
macro index,pager mar "<tag-pattern>new<enter><tag-prefix-cond><clear-flag>n<enter><tag-prefix-cond><clear-flag>*<enter>" "Mark all read"
|
||||
|
||||
bind index,pager / noop
|
||||
macro index,pager // "<vfolder-from-query-readonly>folder:/$my_account/" "Find in account"
|
||||
macro index,pager g/ "<vfolder-from-query-readonly>" "Find in all accounts"
|
||||
macro index,pager /! "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_spoolfile" "Find in inbox"
|
||||
macro index,pager /< "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_record" "Find in sent"
|
||||
macro index,pager /> "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_mbox" "Find in archive"
|
||||
macro index,pager /d "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_postponed" "Find in drafts"
|
||||
macro index,pager /t "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_trash" "Find in trash"
|
||||
macro index,pager /j "<vfolder-from-query-readonly>folder:+$my_account/$my_nm_junk" "Find in junk"
|
||||
# compose with signature management
|
||||
macro index,pager @ "<enter-command>set signature=$my_signature<enter><compose-to-sender>" "Compose to sender"
|
||||
macro index,pager c "<enter-command>set signature=$my_signature<enter><mail>" "Compose new message"
|
||||
macro index,pager r "<enter-command>unset signature<enter><reply>" "Reply to message"
|
||||
macro index,pager a "<enter-command>unset signature<enter><group-reply>" "Reply all"
|
||||
macro index,pager f "<enter-command>unset signature<enter><forward-message>" "Forward message"
|
||||
|
||||
# moving messages
|
||||
macro index,pager J ":set resolve=no\n<clear-flag>n:set resolve=yes\n<save-message>$my_junk<enter>" \
|
||||
"Move to junk folder"
|
||||
macro index,pager y ":set resolve=no\n<clear-flag>n:set resolve=yes\n<save-message>$mbox<enter>" \
|
||||
"Move message to the archive"
|
||||
macro index,pager I "<save-message>$spoolfile<enter>" "Move message to the inbox"
|
||||
|
||||
# switch folders
|
||||
macro index,pager g! "<change-folder>$spoolfile<enter><refresh>" "Go to inbox"
|
||||
macro index,pager gd "<change-folder>$postponed<enter><refresh>" "Go to drafts"
|
||||
macro index,pager g< "<change-folder>$record<enter><refresh>" "Go to sent"
|
||||
macro index,pager ga "<change-folder>$mbox<enter>" "Go to archive"
|
||||
macro index,pager g> "<change-folder>$mbox<enter><refresh>" "Go to archive"
|
||||
macro index,pager gt "<change-folder>$trash<enter><refresh>" "Go to trash"
|
||||
macro index,pager gj "<change-folder>$my_junk<enter><refresh>" "Go to junk"
|
||||
|
||||
# accounts
|
||||
macro index,pager gu "<change-folder>~/.local/share/mail/gu/Inbox<enter><refresh>" "Go to GU"
|
||||
# macro index,pager gp "<change-folder>+systemli/IMAP/Inbox<enter><refresh>" "Go to Systemli"
|
||||
macro index,pager gm "<change-folder>~/.local/share/mail/t9e/Inbox<enter><refresh>" "Go to t9e"
|
||||
# macro index,pager gm "<change-folder>+gmail/IMAP/Inbox<enter><refresh>" "Go to Gmail"
|
||||
macro index,pager gk "<change-folder>~/.local/share/mail/ksh/Inbox<enter><refresh>" "Go to KSH"
|
||||
macro index,pager gi "<change-folder>~/.local/share/mail/ktiu/Inbox<enter><refresh>" "Go to ktiu"
|
||||
# macro index,pager gf "<change-folder>~/.local/share/mail/dkg/Inbox<enter><refresh>" "Go to DKG"
|
||||
|
||||
macro index,pager L "<limit>all\n" "Show all messages (undo limit)"
|
||||
|
||||
# macro index,pager go "<shell-escape>mbsync -c ~/.config/mbsync/mbsyncrc $my_mbsync_acct && notmuch new &<enter>" \
|
||||
# "Run mbsync to sync mail for this account"
|
||||
|
||||
macro index,pager go "<shell-escape>mbsync $my_mbsync_acct && notmuch new<enter>" \
|
||||
|
||||
macro index,pager g/ "<vfolder-from-query-readonly>" "find in nm"
|
||||
|
||||
macro index,pager A \
|
||||
"<pipe-message>khard add-email --vcard-version=4.0<return>" \
|
||||
"add the sender email address to khard"
|
||||
|
||||
macro index,pager S \
|
||||
"<pipe-message> ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" \
|
||||
"save all non-text attachments using ripmime"
|
||||
|
||||
macro index,pager gb \
|
||||
"<pipe-message> urlscan<enter>" \
|
||||
"extract URLs out of a message"
|
||||
|
||||
macro index,pager gO \
|
||||
"<shell-escape>mbsync -a && notmuch new<enter>" \
|
||||
"run mbsync to sync all mail"
|
||||
|
|
|
|||
|
|
@ -1,26 +1,89 @@
|
|||
# Alias
|
||||
|
||||
set alias_file = ~/.local/share/neomutt/aliases.neomuttrc
|
||||
source $alias_file
|
||||
|
||||
# External
|
||||
set mailcap_path = ~/.config/neomutt/mailcap
|
||||
|
||||
# source ./smime.neomuttrc
|
||||
|
||||
set my_download_folder = ~/tmp
|
||||
|
||||
# Status bar
|
||||
# Caching and tmp
|
||||
set header_cache = $XDG_CACHE_HOME/neomutt/headers
|
||||
set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies
|
||||
set header_cache_backend = "lmdb"
|
||||
set tmpdir = $XDG_CACHE_HOME/neomutt/tmp
|
||||
|
||||
# Basic options
|
||||
unset wait_key
|
||||
set mbox_type = Maildir
|
||||
# set delete
|
||||
set mail_check_stats
|
||||
unset confirm_append
|
||||
unset beep
|
||||
unset mark_old
|
||||
set sleep_time = 0
|
||||
# set shell = /bin/bash
|
||||
|
||||
# Sending
|
||||
set use_envelope_from
|
||||
unset reverse_realname
|
||||
|
||||
# Searching
|
||||
set nm_default_url = "notmuch:///home/till/.local/share/mail/"
|
||||
|
||||
# Multi-account setup
|
||||
# source ~/.config/neomutt/accounts/dkg.neomuttrc
|
||||
# source ~/.config/neomutt/accounts/gu.neomuttrc
|
||||
# bind index,pager g noop
|
||||
|
||||
# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc
|
||||
# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc
|
||||
# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc
|
||||
# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc
|
||||
# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc
|
||||
# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc
|
||||
# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc
|
||||
|
||||
folder-hook . source ~/.config/neomutt/bindings.neomuttrc
|
||||
|
||||
# # Source config
|
||||
# source ~/.config/neomutt/views.neomuttrc
|
||||
# source ~/.config/neomutt/sidebar.neomuttrc
|
||||
# source ~/.config/neomutt/colors.neomuttrc
|
||||
# source ~/.config/neomutt/smime.neomuttrc
|
||||
# source ~/.config/neomutt/pgp.neomuttrc
|
||||
|
||||
# Compose
|
||||
set editor = "nvim -c 'call woof#init#Init()'"
|
||||
set edit_headers
|
||||
set forward_format = "Fwd: %s"
|
||||
set forward_attachments
|
||||
set fast_reply
|
||||
set include
|
||||
set forward_quote
|
||||
unset recall
|
||||
set resume_draft_files
|
||||
set abort_noattach_regex = "(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)"
|
||||
set abort_noattach = ask-yes
|
||||
set mime_type_query_command = "file -b --mime-type %s"
|
||||
set query_command= "khard email --parsable '%s'"
|
||||
|
||||
# Status bar
|
||||
set status_chars = "✔↻٪A"
|
||||
set status_format = "— [ %r ] %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —"
|
||||
unset help
|
||||
|
||||
# Index
|
||||
|
||||
set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s"
|
||||
set strict_threads
|
||||
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
||||
set charset = "utf-8"
|
||||
|
||||
# Pager view
|
||||
# sorting
|
||||
set sort = threads
|
||||
set sort_aux = reverse-last-date-received
|
||||
|
||||
# Pager view
|
||||
set pager_index_lines = 10
|
||||
set pager_context = 3
|
||||
set pager_stop
|
||||
|
|
@ -36,23 +99,38 @@ alternative_order text/plain text/enriched text/html
|
|||
auto_view text/html
|
||||
|
||||
# Attachments
|
||||
|
||||
set rfc2047_parameters
|
||||
set attach_save_dir = $my_download_folder
|
||||
|
||||
# Colors
|
||||
|
||||
## Indicator
|
||||
color indicator brightwhite brightblack
|
||||
|
||||
## Index
|
||||
color index_flags brightmagenta default '.*'
|
||||
color index_date cyan default
|
||||
|
||||
## New mail
|
||||
color index brightblack default '~N'
|
||||
|
||||
## Header colors
|
||||
color header brightblack default ".*"
|
||||
color header brightgreen default "^(Subject)"
|
||||
color header yellow default "^(From|To|CC|BCC)"
|
||||
color header blue default "^Date"
|
||||
|
||||
## Status
|
||||
# color status yellow default '\[ ↻ \]'
|
||||
# color status green default '\[ ✔ \]'
|
||||
# color status magenta default '\[ ٪ \]'
|
||||
# color status black default '\[ [0-9]+ new \]'
|
||||
# color status red default '\[ [0-9]+ to delete \]'
|
||||
|
||||
## Mutt
|
||||
color message cyan default
|
||||
color error red default
|
||||
color tilde black default
|
||||
|
||||
## Pager
|
||||
color normal default default
|
||||
color attachment brightblack default
|
||||
color search black yellow
|
||||
|
|
@ -64,6 +142,8 @@ color quoted4 red default
|
|||
color quoted5 brightred default
|
||||
color signature cyan default
|
||||
color underline black default
|
||||
|
||||
## Email
|
||||
color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||
color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||
color body red default "(BAD signature)"
|
||||
|
|
|
|||
|
|
@ -1,81 +1,42 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
|
||||
makeConfig = accountName:
|
||||
''
|
||||
unset reverse_name
|
||||
unset crypt_auto_pgp
|
||||
unset crypt_auto_smime
|
||||
set my_account='${ accountName }'
|
||||
macro index,pager / "<vfolder-from-query>tag:${ accountName } "
|
||||
unalternates *
|
||||
set nm_record_tags = "+sent -inbox -unread +${ accountName }";
|
||||
set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.${accountName}.signature.text }
|
||||
set status_format = "— [ %r ] $my_account %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —"
|
||||
{
|
||||
programs.msmtp = {
|
||||
enable = true;
|
||||
configContent = ''
|
||||
defaults
|
||||
logfile ${config.xdg.stateHome}/msmtp/msmtp.log
|
||||
port 587
|
||||
'';
|
||||
|
||||
makeAccount = accountName: {
|
||||
signature.showSignature = "append";
|
||||
smtp.tls.useStartTls = true;
|
||||
msmtp.enable = true;
|
||||
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
expunge = "both";
|
||||
};
|
||||
|
||||
neomutt = {
|
||||
enable = true;
|
||||
sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ accountName }";
|
||||
};
|
||||
|
||||
notmuch = {
|
||||
enable = true;
|
||||
neomutt = {
|
||||
virtualMailboxes = [
|
||||
{ name = "Inbox"; query = "tag:${ accountName } and tag:inbox"; }
|
||||
{ name = "Archive"; query = "tag:${ accountName } and not tag:sent and not tag:draft"; }
|
||||
{ name = "Sent"; query = "tag:${ accountName } and tag:sent"; }
|
||||
{ name = "Drafts"; query = "tag:${ accountName } and tag:draft"; }
|
||||
{ name = "Spam"; query = "tag:${ accountName } and tag:spam"; }
|
||||
{ name = "Trash"; query = "tag:${ accountName } and tag:trash"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mailcap_path = pkgs.writeText "neomutt_mailcap" ''
|
||||
application/pdf; zathura %s
|
||||
multipart; xdg-open %s
|
||||
text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal
|
||||
text/html; w3m -v -F -T text/html -dump %s; copiousoutput
|
||||
text/calendar; khal import %s
|
||||
text; neomutt %s
|
||||
application; xdg-open %s
|
||||
image; xdg-open %s
|
||||
video; xdg-open %s
|
||||
audio; xdg-open %s
|
||||
message; xdg-open %s
|
||||
model; xdg-open %s
|
||||
'';
|
||||
programs.mbsync.enable = true;
|
||||
|
||||
in
|
||||
programs.neomutt = {
|
||||
enable = true;
|
||||
vimKeys = true;
|
||||
extraConfig = builtins.readFile ./config.neomuttrc;
|
||||
};
|
||||
|
||||
{
|
||||
programs.mu.enable = true;
|
||||
programs.notmuch.enable = true;
|
||||
|
||||
xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc;
|
||||
xdg.configFile."neomutt/smime.neomuttrc".source = ./smime.neomuttrc;
|
||||
xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap;
|
||||
|
||||
accounts.email = {
|
||||
maildirBasePath = "${config.xdg.dataHome}/mail";
|
||||
accounts = {
|
||||
gu = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
|
||||
|
||||
gu = {
|
||||
primary = true;
|
||||
address = "straube@geo.uni-frankfurt.de";
|
||||
realName = "Till Straube";
|
||||
imap.host = "imap.server.uni-frankfurt.de";
|
||||
smtp.host = "smtpauth.rz.uni-frankfurt.de";
|
||||
smtp.tls.useStartTls = true;
|
||||
userName = "tstraube";
|
||||
notmuch.enable = true;
|
||||
passwordCommand = "pass uni/hrz";
|
||||
signature = {
|
||||
text = ''
|
||||
|
|
@ -83,190 +44,206 @@ in
|
|||
Dept. of Human Geography
|
||||
Goethe University Frankfurt
|
||||
'';
|
||||
showSignature = "append";
|
||||
};
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
expunge = "both";
|
||||
};
|
||||
msmtp.enable = true;
|
||||
neomutt = {
|
||||
extraConfig = makeConfig name + ''
|
||||
color status blue default
|
||||
alternates ^tstraube@(em|rz)?.uni-frankfurt.de$
|
||||
enable = true;
|
||||
sendMailCommand = lib.getExe pkgs.msmtp;
|
||||
extraConfig = ''
|
||||
set mbox='+Archive'
|
||||
set my_junk='+Spamverdacht'
|
||||
set my_mbsync_acct='gu'
|
||||
|
||||
set crypt_auto_smime
|
||||
unset crypt_auto_pgp
|
||||
|
||||
set crypt_autosign
|
||||
set crypt_replyencrypt
|
||||
set crypt_replysign
|
||||
set crypt_replysignencrypted
|
||||
set crypt_verify_sig
|
||||
# set smime_default_key = "f1355556.0"
|
||||
set smime_sign_as = "f1355556.0"
|
||||
set pgp_default_key = ""
|
||||
# unset crypt_use_gpgme
|
||||
|
||||
unalternates *
|
||||
alternates ^straube@em.uni-frankfurt.de$ \
|
||||
^tstraube@em.uni-frankfurt.de$ \
|
||||
^tstraube@rz.uni-frankfurt.de$ \
|
||||
^tstraube@uni-frankfurt.de$
|
||||
unset reverse_name
|
||||
set my_signature = ${
|
||||
pkgs.writeText
|
||||
"signature.txt"
|
||||
config.accounts.email.accounts.gu.signature.text
|
||||
}
|
||||
color status blue default
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
t9e = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
|
||||
t9e = {
|
||||
address = "till.straube@t9e.me";
|
||||
realName = "Till Straube";
|
||||
imap.host = "arielle.ktiu.net";
|
||||
smtp.host = "arielle.ktiu.net";
|
||||
smtp.tls.useStartTls = true;
|
||||
notmuch.enable = true;
|
||||
userName = "till.straube@t9e.me";
|
||||
signature.text = ''
|
||||
Till Straube (he/him)
|
||||
PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me
|
||||
'';
|
||||
signature.showSignature = "append";
|
||||
gpg = {
|
||||
key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3";
|
||||
signByDefault = true;
|
||||
};
|
||||
neomutt = {
|
||||
extraConfig = makeConfig name + ''
|
||||
color status green default
|
||||
alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$
|
||||
set reverse_name
|
||||
enable = true;
|
||||
sendMailCommand = lib.getExe pkgs.msmtp;
|
||||
extraConfig = ''
|
||||
set my_mbsync_acct='t9e'
|
||||
set mbox='+Archive'
|
||||
set my_junk='+Junk'
|
||||
|
||||
set crypt_auto_pgp
|
||||
unset crypt_auto_smime
|
||||
|
||||
unalternates *
|
||||
alternates @t9e.me$ @ktiu.net$
|
||||
set reverse_name
|
||||
|
||||
set my_signature = ${
|
||||
pkgs.writeText
|
||||
"signature.txt"
|
||||
config.accounts.email.accounts.t9e.signature.text
|
||||
}
|
||||
color status green default
|
||||
'';
|
||||
};
|
||||
msmtp.extraConfig.port = "587";
|
||||
passwordCommand = "pass accounts/ktiu-imap";
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
expunge = "both";
|
||||
};
|
||||
msmtp = {
|
||||
enable = true;
|
||||
extraConfig.from = "*@(ktiu.net|t9e.me)";
|
||||
};
|
||||
passwordCommand = "pass mail/arielle.ktiu.net";
|
||||
};
|
||||
|
||||
ksh = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) {
|
||||
ktiu = {
|
||||
address = "till@ktiu.net";
|
||||
realName = "Till Straube";
|
||||
imap.host = "shorbut.ktiu.net";
|
||||
smtp.host = "shorbut.ktiu.net";
|
||||
smtp.tls.useStartTls = true;
|
||||
notmuch.enable = true;
|
||||
userName = "till";
|
||||
signature.text = ''
|
||||
Till Straube (he/him)
|
||||
PGP key: https://keys.openpgp.org/search?q=till@ktiu.net
|
||||
'';
|
||||
signature.showSignature = "append";
|
||||
gpg = {
|
||||
key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3";
|
||||
signByDefault = true;
|
||||
};
|
||||
neomutt = {
|
||||
enable = true;
|
||||
sendMailCommand = lib.getExe pkgs.msmtp;
|
||||
extraConfig = ''
|
||||
set my_mbsync_acct='ktiu'
|
||||
|
||||
set mbox='+Archive'
|
||||
set my_junk='+Junk'
|
||||
|
||||
set crypt_auto_pgp
|
||||
unset crypt_auto_smime
|
||||
|
||||
unalternates *
|
||||
alternates @ktiu.net$
|
||||
set reverse_name
|
||||
set my_signature = ${
|
||||
pkgs.writeText
|
||||
"signature.txt"
|
||||
config.accounts.email.accounts.ktiu.signature.text
|
||||
}
|
||||
color status green default
|
||||
'';
|
||||
};
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
expunge = "both";
|
||||
};
|
||||
msmtp = {
|
||||
enable = false;
|
||||
# extraConfig.from = "*@ktiu.net";
|
||||
};
|
||||
passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till";
|
||||
};
|
||||
|
||||
ksh = {
|
||||
address = "kein_schlussstrich_hessen@systemli.org";
|
||||
realName = "Kein Schlussstrich Hessen";
|
||||
imap.host = "mail.systemli.org";
|
||||
smtp.host = "mail.systemli.org";
|
||||
smtp.tls.useStartTls = true;
|
||||
notmuch.enable = true;
|
||||
userName = "kein_schlussstrich_hessen@systemli.org";
|
||||
signature.text = ''
|
||||
Kein Schlussstrich Hessen
|
||||
PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org
|
||||
'';
|
||||
signature.showSignature = "append";
|
||||
neomutt = {
|
||||
extraConfig = makeConfig name + ''
|
||||
color status red default
|
||||
enable = true;
|
||||
# sendMailCommand = "/home/till/.nix-profile/bin/msmtp";
|
||||
sendMailCommand = lib.getExe pkgs.msmtp;
|
||||
extraConfig = ''
|
||||
set my_mbsync_acct='ksh'
|
||||
set mbox='+Erledigt'
|
||||
set my_junk='+Junk'
|
||||
set postponed='+Drafts'
|
||||
set record='+Sent'
|
||||
set trash='+Trash'
|
||||
set crypt_auto_pgp
|
||||
unset crypt_auto_smime
|
||||
|
||||
unalternates *
|
||||
set reverse_name
|
||||
set my_signature = ${
|
||||
pkgs.writeText
|
||||
"signature.txt"
|
||||
config.accounts.email.accounts.ksh.signature.text
|
||||
}
|
||||
color status cyan default
|
||||
'';
|
||||
};
|
||||
passwordCommand = "pass ksh/systemli";
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
expunge = "both";
|
||||
};
|
||||
msmtp = {
|
||||
enable = true;
|
||||
extraConfig.from = "kein_schlussstrich_hessen@systemli.org";
|
||||
};
|
||||
passwordCommand = "pass other/ksh_systemli";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.msmtp.enable = true;
|
||||
|
||||
programs.mbsync.enable = true;
|
||||
|
||||
programs.notmuch = {
|
||||
enable = true;
|
||||
search.excludeTags = [ "trash" "spam" ];
|
||||
new.tags = [ "new" "unread" ];
|
||||
hooks = {
|
||||
preNew = ''
|
||||
notmuch tag +draft -- 'folder:"/\/Drafts$/"'
|
||||
mbsync --all
|
||||
'';
|
||||
postNew = ''
|
||||
notmuch tag +gu -- tag:new path:gu/**
|
||||
notmuch tag +t9e -- tag:new path:t9e/**
|
||||
notmuch tag +ksh -- tag:new path:ksh/**
|
||||
notmuch tag +inbox -- tag:new 'folder:"/\/Inbox$/"'
|
||||
notmuch tag +sent -unread -- tag:new 'folder:"/\/Sent$/"'
|
||||
notmuch tag +trash -unread -- tag:new 'folder:"/\/Trash$/"'
|
||||
notmuch tag +draft -unread -- tag:new 'folder:"/\/Drafts$/"'
|
||||
notmuch tag +spam -- tag:new 'folder:"/\/Spam$/"'
|
||||
notmuch tag +spam -- tag:new 'folder:"/\/Junk$/"'
|
||||
notmuch tag -new -- tag:new
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
programs.neomutt = {
|
||||
enable = true;
|
||||
|
||||
vimKeys = true;
|
||||
changeFolderWhenSourcingAccount = true;
|
||||
editor = "nvim -c 'call woof#init#Init()'";
|
||||
sort = "reverse-date-received";
|
||||
unmailboxes = true;
|
||||
|
||||
settings = {
|
||||
abort_noattach = "ask-yes";
|
||||
abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\"";
|
||||
auto_edit = "yes";
|
||||
beep = "no";
|
||||
confirm_append = "no";
|
||||
crypt_auto_sign = "yes";
|
||||
crypt_replyencrypt = "yes";
|
||||
crypt_replysign = "yes";
|
||||
crypt_replysignencrypted = "yes";
|
||||
crypt_verify_sig = "yes";
|
||||
edit_headers = "yes";
|
||||
forward_attachments = "yes";
|
||||
forward_format = "\"Fwd: %s\"";
|
||||
forward_quote = "yes";
|
||||
help = "no";
|
||||
include = "yes";
|
||||
mail_check_stats = "yes";
|
||||
mailcap_path = "${ mailcap_path }";
|
||||
mark_old = "no";
|
||||
markers = "no";
|
||||
mbox_type = "Maildir";
|
||||
menu_scroll = "yes";
|
||||
mime_type_query_command = "\"file -b --mime-type %s\"";
|
||||
nm_record = "yes";
|
||||
pager_context = "3";
|
||||
pager_index_lines = "5";
|
||||
pager_stop = "yes";
|
||||
query_command= "\"khard email --parsable '%s'\"";
|
||||
recall = "no";
|
||||
resume_draft_files = "yes";
|
||||
reverse_real_name = "no";
|
||||
shell = "/bin/sh";
|
||||
sleep_time = "0";
|
||||
smart_wrap = "yes";
|
||||
status_chars = "✔↻٪A";
|
||||
tilde = "yes";
|
||||
use_envelope_from = "yes";
|
||||
virtual_spool_file = "yes";
|
||||
wait_key = "no";
|
||||
};
|
||||
|
||||
binds = [
|
||||
{ key = "m"; map = [ "index" "pager" ]; action = "noop"; }
|
||||
{ key = "k"; map = [ "pager" ]; action = "previous-entry"; }
|
||||
{ key = "j"; map = [ "pager" ]; action = "next-entry"; }
|
||||
{ key = "<return>"; map = [ "index" ]; action = "display-message"; }
|
||||
{ key = "<space>"; map = "index"; action = "entire-thread"; }
|
||||
{ key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; }
|
||||
{ key = "<Tab>"; map = [ "editor" ]; action = "complete-query"; }
|
||||
{ key = "P"; map = [ "compose" ]; action = "pgp-menu"; }
|
||||
{ key = "p"; map = [ "compose" ]; action = "postpone-message"; }
|
||||
];
|
||||
|
||||
macros = [
|
||||
{ key = "gu"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/gu<enter>g!"; }
|
||||
{ key = "gm"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/t9e<enter>g!"; }
|
||||
{ key = "gk"; map = [ "index" "pager" ]; action = "<vfolder-from-query>tag:dummy<enter>:source ${config.xdg.configHome}/neomutt/ksh<enter>g!"; }
|
||||
|
||||
{ key = "Y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>"; }
|
||||
{ key = "y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>-inbox -unread -spam -trash<enter><sync-mailbox>"; }
|
||||
{ key = "J"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+spam -inbox -unread -trash<enter><sync-mailbox>"; }
|
||||
{ key = "I"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+inbox -old -spam -trash<enter><sync-mailbox>"; }
|
||||
{ key = "Y"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>"; }
|
||||
{ key = "dd"; map = [ "index" "pager" ]; action = "<modify-labels-then-hide>+trash -inbox -unread -spam<enter><sync-mailbox>"; }
|
||||
|
||||
{ key = "g!"; map = [ "index" "pager" ]; action = "<change-vfolder>Inbox<enter>"; }
|
||||
{ key = "g<"; map = [ "index" "pager" ]; action = "<change-vfolder>Sent<enter>"; }
|
||||
{ key = "g>"; map = [ "index" "pager" ]; action = "<change-vfolder>Archive<enter>"; }
|
||||
{ key = "gj"; map = [ "index" "pager" ]; action = "<change-vfolder>Spam<enter>"; }
|
||||
{ key = "gd"; map = [ "index" "pager" ]; action = "<change-vfolder>Drafts<enter>"; }
|
||||
{ key = "gt"; map = [ "index" "pager" ]; action = "<change-vfolder>Trash<enter>"; }
|
||||
|
||||
{ key = "go"; map = [ "index" "pager" ]; action = "<shell-escape>notmuch new<enter>"; }
|
||||
{ key = "V"; map = ["index" "pager"]; action = "<view-attachments><search>html<enter><view-mailcap><exit>"; }
|
||||
{ key = "mar"; map = [ "index" "pager" ]; action = "<tag-pattern>new<enter><tag-prefix-cond><clear-flag>n<enter><tag-prefix-cond><clear-flag>*<enter>"; }
|
||||
{ key = "A"; map = [ "index" "pager" ]; action = "<pipe-message>khard add-email --vcard-version=4.0<return>"; }
|
||||
{ key = "S"; map = [ "index" "pager" ]; action = "<pipe-message>ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; }
|
||||
{ key = "gb"; map = [ "index" "pager" ]; action = "<pipe-message>urlscan<enter>"; }
|
||||
{ key = "I"; map = [ "compose" ]; action = "<attach-file>`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`<enter>"; }
|
||||
{ key = "p"; map = [ "compose" ]; action = "<postpone-message>"; }
|
||||
|
||||
{ key = "c"; map = [ "index" "pager" ]; action = "<enter-command>set signature=$my_signature<enter><mail>"; }
|
||||
{ key = "r"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><reply>"; }
|
||||
{ key = "a"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><group-reply>"; }
|
||||
{ key = "f"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><forward-message>"; }
|
||||
{ key = "l"; map = [ "index" "pager" ]; action = "<enter-command>unset signature<enter><list-reply>"; }
|
||||
];
|
||||
|
||||
extraConfig = builtins.readFile ./config.neomuttrc;
|
||||
};
|
||||
|
||||
xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc;
|
||||
|
||||
programs.neovim.plugins = with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = vim-pathogen;
|
||||
|
|
|
|||
11
home/mail/neomutt_mailcap
Normal file
11
home/mail/neomutt_mailcap
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
application/pdf; zathura %s
|
||||
multipart; xdg-open %s
|
||||
text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal
|
||||
text/html; w3m -v -F -T text/html -dump %s; copiousoutput
|
||||
text; neomutt %s
|
||||
application; xdg-open %s
|
||||
image; xdg-open %s
|
||||
video; xdg-open %s
|
||||
audio; xdg-open %s
|
||||
message; xdg-open %s
|
||||
model; xdg-open %s
|
||||
24
home/mail/smime.neomuttrc
Normal file
24
home/mail/smime.neomuttrc
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Locations
|
||||
# set smime_ca_location="~/.keys/neomutt/smime/ca"
|
||||
# set smime_certificates="~/.keys/neomutt/smime/public"
|
||||
# set smime_keys="~/.keys/neomutt/smime/private"
|
||||
|
||||
# Commands (smime_keys)
|
||||
set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out"
|
||||
set smime_get_cert_command="openssl pkcs7 -print_certs -in %f"
|
||||
set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null"
|
||||
set smime_get_cert_email_command="openssl x509 -in %f -noout -email"
|
||||
set smime_import_cert_command="smime_keys add_cert %f"
|
||||
|
||||
# Outgoing
|
||||
set smime_encrypt_with="aes256"
|
||||
set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c"
|
||||
set smime_sign_digest_alg="sha256"
|
||||
set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER"
|
||||
|
||||
# Incoming
|
||||
set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c"
|
||||
set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f"
|
||||
set smime_verify_opaque_command="\
|
||||
openssl smime -verify -inform DER -in %s %C || \
|
||||
openssl smime -verify -inform DER -in %s -noverify 2>/dev/null"
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, inputs, lib, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
|
|
@ -11,4 +11,6 @@
|
|||
yt-dlp
|
||||
zathura
|
||||
];
|
||||
|
||||
xdg.configFile."castget/castget.conf".source = ./castget/castget.conf;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ config, pkgs, inputs, lib, ... }:
|
||||
|
||||
{
|
||||
programs.home-manager.enable = true;
|
||||
|
|
@ -10,21 +10,22 @@
|
|||
fastfetch
|
||||
fzf
|
||||
jq
|
||||
nh
|
||||
nix-search
|
||||
progress
|
||||
rename
|
||||
silver-searcher
|
||||
tldr
|
||||
tmux
|
||||
yq
|
||||
];
|
||||
|
||||
imports = [
|
||||
../fish.nix
|
||||
../vifm.nix
|
||||
../nvim
|
||||
../tmux.nix
|
||||
./fish.nix
|
||||
./tmux
|
||||
./password-store.nix
|
||||
./vifm
|
||||
./nvim
|
||||
./gpg.nix
|
||||
./ssh.nix
|
||||
];
|
||||
|
||||
programs.nix-index = {
|
||||
|
|
@ -23,9 +23,6 @@ set splitright
|
|||
set tabstop=2
|
||||
set updatetime=300
|
||||
|
||||
set foldmethod=expr
|
||||
set foldexpr=nvim_treesitter#foldexpr()
|
||||
|
||||
let g:netrw_liststyle = 3
|
||||
let g:netrw_fastbrowse = 0
|
||||
|
||||
|
|
@ -50,13 +47,9 @@ onoremap <silent> al :normal val<return>
|
|||
xnoremap i% GoggV
|
||||
onoremap <silent> i% :normal vi%<return>
|
||||
|
||||
" highlight Normal guibg=NONE
|
||||
|
||||
function CreateNote(title)
|
||||
execute "VimwikiIndex"
|
||||
execute "VimwikiGoto " . a:title
|
||||
endfunction
|
||||
|
||||
function Diary()
|
||||
execute "VimwikiMakeDiaryNote"
|
||||
execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md"
|
||||
execute "set ft=markdown"
|
||||
execute "normal! i" . a:title
|
||||
execute "normal V\<tab>yaml_note\<tab>"
|
||||
endfunction
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
|
|
@ -6,7 +6,6 @@
|
|||
marksman
|
||||
nil
|
||||
typescript-language-server
|
||||
vim-language-server
|
||||
];
|
||||
|
||||
programs.neovim = {
|
||||
|
|
@ -31,9 +30,8 @@
|
|||
|
||||
{
|
||||
plugin = fugitive;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.api.nvim_set_keymap("n", "<Leader>g", ":Git<CR>", { noremap = true, silent = true })
|
||||
nnoremap <Leader>g :Git
|
||||
'';
|
||||
}
|
||||
|
||||
|
|
@ -45,9 +43,9 @@
|
|||
vim.api.nvim_set_keymap('i', '<c-x><c-k>', '<Plug>(fzf-complete-word)', { silent = true })
|
||||
vim.api.nvim_set_keymap('i', '<c-x><c-l>', '<Plug>(fzf-complete-line)', { silent = true })
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<localleader><tab>', '<Plug>(fzf-maps-n)', { silent = true })
|
||||
vim.api.nvim_set_keymap('x', '<localleader><tab>', '<Plug>(fzf-maps-x)', { silent = true })
|
||||
vim.api.nvim_set_keymap('o', '<localleader><tab>', '<Plug>(fzf-maps-o)', { silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader><tab>', '<Plug>(fzf-maps-n)', { silent = true })
|
||||
vim.api.nvim_set_keymap('x', '<leader><tab>', '<Plug>(fzf-maps-x)', { silent = true })
|
||||
vim.api.nvim_set_keymap('o', '<leader><tab>', '<Plug>(fzf-maps-o)', { silent = true })
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<leader>b', ':Buffers<return>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>o', ':Files<return>', { noremap = true, silent = true })
|
||||
|
|
@ -73,7 +71,7 @@
|
|||
nnoremap <silent> [og :Goyo 80<return>
|
||||
nnoremap <silent> ]og :Goyo!<return>
|
||||
'';
|
||||
}
|
||||
}
|
||||
{
|
||||
plugin = limelight-vim;
|
||||
config = ''
|
||||
|
|
@ -109,30 +107,11 @@
|
|||
vim.lsp.enable('r_language_server')
|
||||
vim.lsp.enable('texlab')
|
||||
vim.lsp.enable('ts_ls')
|
||||
vim.lsp.enable('vimls')
|
||||
|
||||
vim.api.nvim_del_keymap('i', '<c-s>')
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
plugin = (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ]));
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = { 'nix', 'markdown', 'lua', 'r' },
|
||||
callback = function()
|
||||
-- Enable Tree-sitter-based folding
|
||||
vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
||||
vim.o.foldmethod = 'expr'
|
||||
-- Optional: configure fold behavior
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldlevelstart = 99
|
||||
end,
|
||||
})
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
plugin = papercolor-theme;
|
||||
config = ''
|
||||
|
|
@ -170,20 +149,16 @@
|
|||
'';
|
||||
}
|
||||
|
||||
{
|
||||
plugin = vim-fish;
|
||||
}
|
||||
|
||||
vim-fish
|
||||
vim-nix
|
||||
|
||||
{
|
||||
plugin = vim-pandoc;
|
||||
config = ''
|
||||
let g:pandoc#modules#disabled = ["completion", "command", "menu"]
|
||||
let g:pandoc#modules#disabled = ["completion", "command", "menu", "completion"]
|
||||
'';
|
||||
}
|
||||
|
||||
vim-pandoc-syntax
|
||||
vim-repeat
|
||||
|
||||
{
|
||||
|
|
@ -203,7 +178,7 @@
|
|||
vim-snippets
|
||||
vim-speeddating
|
||||
vim-surround
|
||||
|
||||
|
||||
{
|
||||
plugin = vim-unimpaired;
|
||||
config = ''
|
||||
|
|
|
|||
|
|
@ -8,15 +8,18 @@ cmp.setup({
|
|||
end,
|
||||
},
|
||||
|
||||
mapping = cmp.mapping.preset.insert(
|
||||
{
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<Tab>'] = cmp.mapping.confirm({ select = false }),
|
||||
}
|
||||
),
|
||||
window = {
|
||||
-- completion = cmp.config.window.bordered(),
|
||||
-- documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<Tab>'] = cmp.mapping.confirm({ select = true }),
|
||||
}),
|
||||
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'cmp_pandoc' },
|
||||
|
|
@ -31,6 +34,17 @@ cmp.setup({
|
|||
|
||||
})
|
||||
|
||||
-- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
|
||||
-- Set configuration for specific filetype.
|
||||
--[[ cmp.setup.filetype('gitcommit', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'git' },
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
require("cmp_git").setup() ]]--
|
||||
|
||||
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline({ '/', '?' }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
|
|
@ -52,3 +66,8 @@ cmp.setup.cmdline(':', {
|
|||
|
||||
-- Set up lspconfig.
|
||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
|
||||
-- vim.lsp.config('<YOUR_LSP_SERVER>', {
|
||||
-- capabilities = capabilities
|
||||
-- })
|
||||
-- vim.lsp.enable('<YOUR_LSP_SERVER>')
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
castget
|
||||
ghostscript
|
||||
hunspell
|
||||
hunspellDicts.de_DE
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.gnome-keyring.enable = false;
|
||||
|
||||
programs.password-store = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
@ -12,12 +14,14 @@
|
|||
pkgs.passff-host
|
||||
];
|
||||
|
||||
services.gnome-keyring.enable = false;
|
||||
|
||||
services.pass-secret-service = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
pinentry-all
|
||||
];
|
||||
|
||||
xdg.configFile."scdaemon" = {
|
||||
text = ''
|
||||
disable-ccid
|
||||
|
|
@ -25,5 +29,4 @@
|
|||
'';
|
||||
target = "../.gnupg/scdaemon.conf";
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.kdeconnect.enable = true;
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./desktop-slim.nix
|
||||
|
||||
../messaging.nix
|
||||
../r.nix
|
||||
../tex.nix
|
||||
../mail
|
||||
../office-gui.nix
|
||||
../office-cli.nix
|
||||
../aichat.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -41,11 +41,7 @@ in
|
|||
identityFile = certs.uni;
|
||||
};
|
||||
|
||||
"git.ktiu.net" = {
|
||||
identityFile = certs.personal;
|
||||
};
|
||||
|
||||
"arielle (arielle|git).ktiu.net" = {
|
||||
"arielle arielle.ktiu.net" = {
|
||||
hostname = "arielle.ktiu.net";
|
||||
user = "till";
|
||||
identityFile = certs.personal;
|
||||
|
|
@ -69,11 +65,11 @@ in
|
|||
identityFile = certs.personal;
|
||||
};
|
||||
|
||||
"mila" = {
|
||||
hostname = "mila";
|
||||
user = "tstraube";
|
||||
identityFile = certs.uni;
|
||||
};
|
||||
# "mila" = {
|
||||
# hostname = "mila";
|
||||
# user = "till";
|
||||
# identityFile = certs.personal;
|
||||
# };
|
||||
|
||||
};
|
||||
};
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.tmux = {
|
||||
|
|
@ -22,19 +22,13 @@
|
|||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
bind -r H resize-pane -L 5
|
||||
bind -r J resize-pane -D 5
|
||||
bind -r K resize-pane -U 5
|
||||
bind -r L resize-pane -R 5
|
||||
bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
|
||||
bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'"
|
||||
|
||||
# Layouts
|
||||
bind f new-window -c '#{pane_current_path}' vifm
|
||||
bind R source ${ pkgs.writeText "tmux-rloft" ''
|
||||
split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore;
|
||||
select-pane -l
|
||||
''}
|
||||
bind f source-file ~/.config/tmux/vifm.conf
|
||||
bind R source-file ~/.config/tmux/rloft.conf
|
||||
bind J source-file ~/.config/tmux/jekyll.conf
|
||||
|
||||
# Unbind
|
||||
unbind p
|
||||
|
|
@ -42,6 +36,7 @@
|
|||
unbind %
|
||||
|
||||
# Eye candy
|
||||
# set-option -g status-position top
|
||||
set-option -g status-right ""
|
||||
set-option -g status-left ""
|
||||
set-option -g status-justify "centre"
|
||||
|
|
@ -52,10 +47,9 @@
|
|||
|
||||
# Some more specifics
|
||||
set-option -g focus-events on
|
||||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -as terminal-features ",xterm-256color:RGB"
|
||||
'';
|
||||
};
|
||||
xdg.configFile."tmux/vifm.conf".source = ./vifm.conf;
|
||||
xdg.configFile."tmux/rloft.conf".source = ./rloft.conf;
|
||||
xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf;
|
||||
}
|
||||
6
home/tmux/jekyll.conf
Normal file
6
home/tmux/jekyll.conf
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
split-window -c '#{pane_current_path}' -h nix-shell
|
||||
send-keys "jekyll serve" Enter
|
||||
resize-pane -x 40%
|
||||
split-pane -c '#{pane_current_path}' "git status; fish"
|
||||
select-pane -L
|
||||
rename-window "jekyll"
|
||||
2
home/tmux/rloft.conf
Normal file
2
home/tmux/rloft.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore
|
||||
select-pane -l
|
||||
1
home/tmux/vifm.conf
Normal file
1
home/tmux/vifm.conf
Normal file
|
|
@ -0,0 +1 @@
|
|||
new-window -c '#{pane_current_path}' vifm
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.vifm = {
|
||||
enable = true;
|
||||
extraConfig = "
|
||||
colorscheme light
|
||||
set vicmd=nvim
|
||||
filetype * xdg-open
|
||||
";
|
||||
};
|
||||
xdg.configFile."vifm/colors/light.vifm".text = ''
|
||||
highlight clear
|
||||
highlight Win cterm=none ctermfg=black ctermbg=default
|
||||
highlight Directory cterm=none ctermfg=cyan ctermbg=default
|
||||
highlight Link cterm=none ctermfg=yellow ctermbg=default
|
||||
highlight BrokenLink cterm=none ctermfg=white ctermbg=red
|
||||
highlight Socket cterm=none ctermfg=red ctermbg=default
|
||||
highlight Device cterm=none ctermfg=red ctermbg=default
|
||||
highlight Fifo cterm=none ctermfg=black ctermbg=cyan
|
||||
highlight Executable cterm=none ctermfg=green ctermbg=default
|
||||
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta
|
||||
highlight TopLine cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white
|
||||
highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white
|
||||
highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight Border cterm=none ctermfg=default ctermbg=default
|
||||
'';
|
||||
}
|
||||
13
home/vifm/default.nix
Normal file
13
home/vifm/default.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.vifm = {
|
||||
enable = true;
|
||||
extraConfig = "
|
||||
colorscheme light
|
||||
set vicmd=nvim
|
||||
filetype * xdg-open
|
||||
";
|
||||
};
|
||||
xdg.configFile."vifm/colors/light.vifm".source = ./light.vifm;
|
||||
}
|
||||
20
home/vifm/light.vifm
Normal file
20
home/vifm/light.vifm
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
highlight clear
|
||||
|
||||
highlight Win cterm=none ctermfg=black ctermbg=default
|
||||
highlight Directory cterm=none ctermfg=cyan ctermbg=default
|
||||
highlight Link cterm=none ctermfg=yellow ctermbg=default
|
||||
highlight BrokenLink cterm=none ctermfg=white ctermbg=red
|
||||
highlight Socket cterm=none ctermfg=red ctermbg=default
|
||||
highlight Device cterm=none ctermfg=red ctermbg=default
|
||||
highlight Fifo cterm=none ctermfg=black ctermbg=cyan
|
||||
highlight Executable cterm=none ctermfg=green ctermbg=default
|
||||
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta
|
||||
highlight TopLine cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white
|
||||
highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white
|
||||
"highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
|
||||
highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default
|
||||
"highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
|
||||
highlight Border cterm=none ctermfg=default ctermbg=default
|
||||
"highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
networking.domain = "ktiu.net";
|
||||
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./hardware
|
||||
../system
|
||||
../system/web-server
|
||||
../system/mail-server
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@
|
|||
../../users/guest/system.nix
|
||||
../../system
|
||||
../../system/desktop
|
||||
../../system/desktop/gnome.nix
|
||||
# ../../system/desktop/cast.nix
|
||||
../../system/desktop/ergodox-udev.nix
|
||||
# ../../system/desktop/gnome.nix
|
||||
../../system/desktop/cosmic.nix
|
||||
../../system/desktop/steam.nix
|
||||
../../system/desktop/yubikey-pam.nix
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
services.desktopManager.cosmic.enable = true;
|
||||
services.displayManager.cosmic-greeter.enable = true;
|
||||
|
||||
services.system76-scheduler.enable = true;
|
||||
|
||||
services.gnome.gnome-keyring.enable = lib.mkForce false;
|
||||
|
||||
programs.firefox.preferences = {
|
||||
"widget.gtk.libadwaita-colors.enabled" = false;
|
||||
};
|
||||
}
|
||||
|
|
@ -51,9 +51,4 @@
|
|||
programs.virt-manager.enable = true;
|
||||
programs.dconf.enable = true;
|
||||
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-all;
|
||||
# pinentry.program = "pinentry";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
{
|
||||
services.desktopManager.gnome.enable = true;
|
||||
|
||||
# services.displayManager = {
|
||||
# gdm.enable = true;
|
||||
# defaultSession = "gnome";
|
||||
# };
|
||||
services.displayManager = {
|
||||
gdm.enable = true;
|
||||
defaultSession = "gnome";
|
||||
};
|
||||
|
||||
environment.gnome.excludePackages = with pkgs; [
|
||||
gnome-tour
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
# xwayland.enable = true;
|
||||
};
|
||||
|
||||
# programs.regreet = {
|
||||
# enable = true;
|
||||
# # For this example you'd need to have a version of Adwaita and the font Cantarell installed
|
||||
# theme.name = "Adwaita";
|
||||
# font = {
|
||||
# name = "Cantarell";
|
||||
# size = 16;
|
||||
# };
|
||||
# cursorTheme.name = "Adwaita";
|
||||
# };
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
ashell
|
||||
kitty
|
||||
mako
|
||||
tofi
|
||||
];
|
||||
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
programs.kdeconnect.enable = true;
|
||||
|
||||
networking.firewall = rec {
|
||||
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
|
||||
allowedUDPPortRanges = allowedTCPPortRanges;
|
||||
};
|
||||
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
settings.General.DisplayServer = "wayland";
|
||||
};
|
||||
}
|
||||
|
|
@ -4,9 +4,8 @@
|
|||
services.pcscd.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
keymapp
|
||||
yubikey-personalization
|
||||
yubikey-manager
|
||||
keymapp
|
||||
];
|
||||
|
||||
services.udev = {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,9 @@
|
|||
{ config, ... }:
|
||||
|
||||
let
|
||||
|
||||
webmailHostName = "webmail.${config.networking.domain}";
|
||||
|
||||
in
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.roundcube = {
|
||||
enable = true;
|
||||
hostName = webmailHostName;
|
||||
hostName = "webmail.ktiu.net";
|
||||
extraConfig = ''
|
||||
$config['smtp_host'] = 'tls://%h';
|
||||
$config['smtp_conn_options'] = [
|
||||
|
|
@ -20,17 +14,4 @@ in
|
|||
];
|
||||
'';
|
||||
};
|
||||
|
||||
# not sure why this is currently working w/o the following
|
||||
#
|
||||
# services.nginx.virtualHosts."${webmailHostName}" = {
|
||||
# onlySSL = true;
|
||||
# forceSSL = lib.mkForce false;
|
||||
# enableACME = lib.mkForce false;
|
||||
# useACMEHost = config.networking.domain;
|
||||
# };
|
||||
# security.acme.certs."${config.networking.domain}".extraDomainNames = [
|
||||
# webmailHostName
|
||||
# ];
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ in {
|
|||
{
|
||||
id = "outline";
|
||||
name = "Outline Client";
|
||||
redirectURIs = [ "https://${config.services.outline.hostname}/auth/oidc.callback" ];
|
||||
redirectURIs = [ "https://${outline.hostname}/auth/oidc.callback" ];
|
||||
secretFile = "/var/custom-access/outline-oidc-secret.txt";
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
acceptTerms = true;
|
||||
defaults.email = "till@ktiu.net";
|
||||
certs."${config.networking.domain}" = {
|
||||
# domain = config.networking.domain;
|
||||
domain = config.networking.domain;
|
||||
webroot = "/var/lib/acme/.challenges";
|
||||
group = config.services.nginx.group;
|
||||
extraDomainNames = [ config.networking.fqdn ];
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
extraGroups = [ "networkmanager" ];
|
||||
shell = pkgs.fish;
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../till/pubkeys/till${"@"}nova.pub
|
||||
../till/ssh/till${"@"}nova.pub
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,9 +6,4 @@
|
|||
name = "Till";
|
||||
email = "till@ktiu.net";
|
||||
};
|
||||
|
||||
imports = [
|
||||
./ssh.nix
|
||||
];
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
];
|
||||
shell = pkgs.fish;
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
./pubkeys/till${"@"}nova.pub
|
||||
./ssh/till${"@"}nova.pub
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue