Merge branch 'main' of github.com:JulienMalka/nix-config

This commit is contained in:
Julien Malka 2023-08-27 14:52:54 +02:00
commit b0c575228b
Signed by: Luj
GPG key ID: 6FC74C847011FD83
26 changed files with 676 additions and 523 deletions

250
flake.lock generated
View file

@ -95,6 +95,39 @@
"type": "github"
}
},
"crane_2": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"rust-overlay": [
"lanzaboote",
"rust-overlay"
]
},
"locked": {
"lastModified": 1681177078,
"narHash": "sha256-ZNIjBDou2GOabcpctiQykEQVkI8BDwk7TyvlWlI4myE=",
"owner": "ipetkov",
"repo": "crane",
"rev": "0c9f468ff00576577d83f5019a66c557ede5acf6",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@ -144,6 +177,22 @@
}
},
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_5": {
"locked": {
"lastModified": 1688025799,
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
@ -159,6 +208,27 @@
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1680392223,
"narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
@ -209,6 +279,46 @@
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"pre-commit-hooks-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -306,6 +416,33 @@
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane_2",
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1682802423,
"narHash": "sha256-Fb5TeRTdvUlo/5Yi2d+FC8a6KoRLk2h1VE0/peMhWPs=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "64b903ca87d18cef2752c19c098af275c6e51d63",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "v0.3.0",
"repo": "lanzaboote",
"type": "github"
}
},
"linkal": {
"inputs": {
"flake-utils": [
@ -346,6 +483,22 @@
"type": "github"
}
},
"master": {
"locked": {
"lastModified": 1692352441,
"narHash": "sha256-cRx7uE6BQSW27WvnHqfuR5PIUvRXBftwqCKvRRMQN0w=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b1525114a2a9bc8eeee774fec9e7b0f1b1e543c",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b1525114a2a9bc8eeee774fec9e7b0f1b1e543c",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
@ -368,7 +521,7 @@
},
"nix-rfc-92": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-compat": "flake-compat_4",
"lowdown-src": "lowdown-src",
"nixpkgs": "nixpkgs_4",
"nixpkgs-regression": "nixpkgs-regression"
@ -390,7 +543,7 @@
},
"nixd": {
"inputs": {
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_2",
"nixpkgs": [
"unstable"
]
@ -411,9 +564,9 @@
},
"nixos-apple-silicon": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-compat": "flake-compat_5",
"nixpkgs": "nixpkgs_5",
"rust-overlay": "rust-overlay_2"
"rust-overlay": "rust-overlay_3"
},
"locked": {
"lastModified": 1690804017,
@ -479,6 +632,22 @@
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1678872516,
"narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1690179384,
@ -559,6 +728,37 @@
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1681413034,
"narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"attic": "attic",
@ -568,7 +768,9 @@
"homepage": "homepage",
"hyprland": "hyprland",
"hyprpaper": "hyprpaper",
"lanzaboote": "lanzaboote",
"linkal": "linkal",
"master": "master",
"nix-index-database": "nix-index-database",
"nix-rfc-92": "nix-rfc-92",
"nixd": "nixd",
@ -607,6 +809,31 @@
}
},
"rust-overlay_2": {
"inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1682129965,
"narHash": "sha256-1KRPIorEL6pLpJR04FwAqqnt4Tzcm4MqD84yhlD+XSk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "2c417c0460b788328220120c698630947547ee83",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_3": {
"flake": false,
"locked": {
"lastModified": 1686795910,
@ -704,6 +931,21 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1690640159,

View file

@ -17,6 +17,8 @@
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
master.url = "github:NixOS/nixpkgs/0b1525114a2a9bc8eeee774fec9e7b0f1b1e543c";
flake-utils.url = "github:numtide/flake-utils";
colmena.url = "github:zhaofengli/colmena";
@ -65,6 +67,11 @@
nix-rfc-92.url = "github:obsidiansystems/nix/dynamic-drvs";
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.3.0";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, ... }@inputs:
@ -137,7 +144,7 @@
hydraJobs = {
packages = packages;
machines = lib.filterAttrs (n: v: n != "macintosh") (lib.mapAttrs (_: v: v.config.system.build.toplevel) self.nixosConfigurations);
machines = lib.mapAttrs (_: v: v.config.system.build.toplevel) self.nixosConfigurations;
};
};
}

View file

@ -21,12 +21,6 @@ with lib;
xdg.configFile."hypr/hyprland.conf".text = ''
exec-once = waybar & hyprpaper
exec-once=dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -f -c 000000'
exec-once = nm-applet --indicator
# Monitors
monitor = eDP-1, preferred, auto, auto
@ -34,19 +28,14 @@ with lib;
# Input
input {
kb_layout = fr
kb_variant = mac
follow_mouse = 1
touchpad {
natural_scroll = true
tap-to-click = false
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# General
general {
gaps_in = 4
gaps_out = 8
gaps_in = 3
gaps_out = 5
border_size = 2
col.active_border = rgb(11111b)
col.inactive_border = rgb(11111b)
@ -62,18 +51,13 @@ with lib;
# Decorations
decoration {
rounding = 5
active_opacity = 0.9
blur_new_optimizations = on
blur_size = 8
blur_passes = 10
blur = false
}
animations {
enabled = true
rounding = 4
}
animations {
enabled = false
}
# Gestures
gestures {
@ -84,13 +68,13 @@ with lib;
# Variables
$term = ${terminal}
$browser = firefox
$browser = chromium
$editor = nvim
$files = nemo
$launcher = ${menu}
# Apps
bind = SUPER, RETURN, exec, alacritty
bind = SUPER, RETURN, exec, kitty
bind = SUPER SHIFT, E, exec, $editor
bind = SUPER SHIFT, F, exec, $files
bind = SUPER SHIFT, B, exec, $browser
@ -98,8 +82,8 @@ with lib;
bind = SUPER, X, exec, power-menu
# Function keys
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +10
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 10-
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +10%
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Screenshots
bind = , Print, exec, $screenshotarea
@ -164,13 +148,52 @@ with lib;
'';
xdg.configFile."hypr/hyprpaper.conf".text = ''
preload = ${../../machines/macintosh/wallpaper.jpg}
wallpaper = ,${../../machines/macintosh/wallpaper.jpg}
preload = ${../../machines/x2100/wallpaper.jpg}
wallpaper = ,${../../machines/x2100/wallpaper.jpg}
'';
services.swayidle = {
enable = true;
systemdTarget = "hyprland-session.target";
events = [
{ event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock --config /home/julien/.config/swaylock/config"; }
];
};
home.packages = with pkgs; [ qt6.qtwayland libsForQt5.qt5.qtwayland hyprpaper swaylock swayidle ];
programs.swaylock =
{
enable = true;
package = pkgs.swaylock-effects;
settings = {
screenshots = true;
clock = true;
indicator = true;
indicator-radius = 200;
indicator-thickness = 20;
grace = 0;
grace-no-mouse = true;
grace-no-touch = true;
line-uses-ring = false;
ignore-empty-password = true;
show-failed-attempts = false;
font = "Fira Code";
timestr = "%H:%M";
datestr = "";
effect-blur = "8x5";
effect-vignette = "0.5:0.5";
color = "00000000";
};
};
home.packages = with pkgs;
[ qt6.qtwayland libsForQt5.qt5.qtwayland hyprpaper ];
};
}

View file

@ -13,7 +13,8 @@ with lib;
programs.kitty = {
enable = true;
extraConfig = ''
font_family Noto Color Emoji Regular
font_family Noto Color Emoji Regular
confirm_os_window_close 0
font_family Fira Code Regular
bold_font Fira Code Retina
font_features FiraCode-Regular +zero +ss01 +ss02 +ss03 +ss04 +ss05 +cv31
@ -22,6 +23,7 @@ with lib;
shell_integration no-cursor
cursor_shape block
cursor_blink_interval 0
window_padding_width 4
# Tab Management
tab_bar_edge top

View file

@ -1,101 +0,0 @@
[Filter.1]
query = subject:"Formulaire d'externement"
tags = +externement
message = Externement
[Filter.2]
query = subject:/\[DG\]/
tags = +dg
message = Mail pour la DG
[Filter.3]
query = subject:"Demande de malle"
tags = +malle
message = Malle
[Filter.4]
query = subject:"Demande d'inscription de"
tags = +thurnage
message = Thurnage
[Filter.5]
query = subject:"Formulaire situation de"
tags = +situation
message = Situation
[Filter.6]
query = subject:"Inscription au thurnage général de"
tags = +thurnage
message = TG
[Filter.7]
query = subject:"Prévision d'externement de"
tags = +externement
message = previsionext
[Filter.8]
query = subject:"Demande d'accès"
tags = +malle
message = acces
[Filter.9]
query = subject:"Rendu de malle"
tags = +malle
message = rendu
[Filter.10]
query = subject:"Prolongation de la malle"
tags = +malle
message = prolong
[Filter.11]
query = subject:"Fermeture de l'internat"
tags = +fermeture
message = fermeture
[Filter.12]
query = subject:/\[COF\]/
tags = +cof
message = COF
[Filter.13]
query = subject:"Modification inscription TG"
tags= +thurnage
[Filter.14]
query = subject:/\[Pouët-Pouêt\]/
tags = +fanfare
message = fanfare
[Filter.15]
query = subject:/\[K-Fêt\]/
tags = +kfet
message = kfet
[Filter.16]
query = subject:/\[Chef.fe.s\]/
tags = +chefs
message = chefs
[Filter.17]
query = subject:/\[BC\]/
tags = +bc
message = bc
[Filter.18]
query = subject:/\[>Pouët-Pouêt<\]/
tags = +fanfare
message = fanfare
[InboxFilter]
[MailMover]
folders = ens/Inbox ens/DG
rename = True
ens/Inbox = 'tag:bc':ens/Bilan-Carbone 'tag:dg':ens/DG 'tag:COF':ens/COF 'tag:fanfare':ens/Fanfare 'tag:kfet':ens/K-Fet 'tag:chefs':ens/K-Fet/Chefs
ens/DG = 'tag:externement':ens/DG/Externements 'tag:malle':ens/DG/Malles 'tag:thurnage':ens/DG/Thurnages 'tag:situation':ens/DG/Situations 'tag:fermeture':ens/DG/Fermeture

View file

@ -6,68 +6,153 @@ with lib;
{
options.luj.emails = {
enable = mkEnableOption "enable mail management";
backend.enable = mkEnableOption "enable filtering backend";
};
config = mkMerge [
(mkIf cfg.enable {
programs.mbsync.enable = true;
programs.neomutt.enable = true;
programs.msmtp.enable = true;
accounts.email = {
accounts.ens = {
address = "julien.malka@ens.fr";
imap.host = "clipper.ens.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
config = mkIf cfg.enable {
programs.mbsync.enable = true;
programs.neomutt.enable = true;
programs.msmtp.enable = true;
accounts.email = {
accounts.ens = {
notmuch.enable = true;
address = "julien.malka@ens.fr";
imap.host = "clipper.ens.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
msmtp.enable = true;
primary = true;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat /home/julien/.config/ens-mail-passwd";
smtp = {
host = "clipper.ens.fr";
};
userName = "jmalka";
};
msmtp.enable = true;
primary = true;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat /home/julien/.config/ens-mail-pw";
smtp = {
host = "clipper.ens.fr";
};
userName = "jmalka";
};
services.mbsync = {
enable = true;
frequency = "minutely";
verbose = true;
accounts.work = {
notmuch.enable = true;
address = "julien@malka.sh";
imap.host = "mail.julienmalka.me";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat /home/julien/.config/work-mail-pw";
smtp = {
host = "mail.julienmalka.me";
};
userName = "julien@malka.sh";
};
xdg.configFile = {
"neomutt/neomuttrc".source = lib.mkForce ./neomuttrc;
accounts.telecom = {
notmuch.enable = true;
address = "julien.malka@telecom-paris.fr";
imap.host = "z.imt.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat /home/julien/.config/telecom-mail-pw";
smtp = {
host = "z.imt.fr";
};
userName = "julien.malka@telecom-paris.fr";
};
accounts.dgnum = {
notmuch.enable = true;
address = "luj@dgnum.eu";
imap.host = "kurisu.lahfa.xyz";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat /home/julien/.config/dgnum-mail-pw";
smtp = {
host = "kurisu.lahfa.xyz";
};
userName = "luj@dgnum.eu";
};
})
};
(mkIf (cfg.enable && cfg.backend.enable) {
programs.afew.enable = true;
accounts.email.accounts.ens.notmuch.enable = true;
services.mbsync.postExec = "${pkgs.notmuch}/bin/notmuch new";
programs.notmuch = {
enable = true;
new.tags = [ "new" ];
hooks.postNew = ''
${pkgs.afew}/bin/afew --tag --new
${pkgs.afew}/bin/afew --move-mails
'';
};
xdg.configFile = {
"afew/config".source = lib.mkForce ./afewconfig;
};
services.mbsync = {
enable = true;
frequency = "minutely";
verbose = true;
};
services.mbsync.postExec = "${pkgs.notmuch}/bin/notmuch new";
programs.notmuch = {
enable = true;
new.tags = [ ];
hooks.postNew = ''
# julien@malka.sh
notmuch tag +work-inbox -- folder:work/Inbox
notmuch tag +work-lobsters -- folder:work/Inbox/lobsters
notmuch tag +work-dn42 -- folder:work/Inbox/dn42
notmuch tag +work-fosdem -- folder:work/Inbox/fosdem
notmuch tag +work-frnog -- folder:work/Inbox/frnog
notmuch tag +work-github -- folder:work/Inbox/github
notmuch tag +work-netdata -- folder:work/Inbox/netdata
notmuch tag +work-nixos-discourse -- folder:work/Inbox/nixos-discourse
notmuch tag +work-proxmox -- folder:work/Inbox/proxmox
#julien.malka@ens.fr
notmuch tag +ens-inbox path:ens/Inbox/**
notmuch tag +ens-bilan-carbone -ens-inbox -- path:ens/Bilan-Carbone/**
notmuch tag +ens-dg -ens-inbox -- path:ens/DG/**
notmuch tag +ens-cof -ens-inbox -- path:ens/COF/**
notmuch tag +ens-fanfare -ens-inbox -- path:ens/Fanfare/**
notmuch tag +ens-kfet -ens-inbox -- path:ens/K-Fet/**
})
#julien.malka@telecom-paris.fr
notmuch tag +telecom-inbox path:telecom/Inbox/**
#luj@dgnum.eu
notmuch tag +dgnum-inbox path:dgnum/Inbox/**
notmuch tag +dgnum-bureau -dgnum-inbox -- path:dgnum/Inbox/Bureau/**
notmuch tag +dgnum-nixcon -dgnum-inbox -- path:dgnum/Inbox/NixCon/**
'';
};
xdg.configFile = {
"neomutt/neomuttrc".source = lib.mkForce ./neomuttrc;
"neomutt/dracula.muttrc".source = lib.mkForce ./dracula.muttrc;
"neomutt/ens.profile".source = lib.mkForce ./ens.profile;
"neomutt/telecom.profile".source = lib.mkForce ./telecom.profile;
"neomutt/work.profile".source = lib.mkForce ./work.profile;
"neomutt/discourse.profile".source = lib.mkForce ./discourse.profile;
"neomutt/dgnum.profile".source = lib.mkForce ./dgnum.profile;
};
];
};
}

View file

@ -0,0 +1,3 @@
set from = "julien.malka@dgnum.eu"
set record=+dgnum/Sent
set collapse_unread = no

View file

@ -0,0 +1,4 @@
set collapse_unread = yes
set from = "julien@malka.sh"
set record= +work/Sent

View file

@ -0,0 +1,42 @@
###############################################################################
# Dracula Theme for Mutt: https://draculatheme.com/
#
# @author Paul Townsend <paul@caprica.org>
# general ------------ foreground ---- background -----------------------------
color error color231 color212
color indicator color231 color241
color markers color210 default
color message default default
color normal default default
color prompt default default
color search color84 default
color status color141 color236
color tilde color231 default
color tree color141 default
# message index ------ foreground ---- background -----------------------------
color index color210 default ~D # deleted messages
color index color84 default ~F # flagged messages
color index color117 default ~N # new messages
color index color212 default ~Q # messages which have been replied to
color index color215 default ~T # tagged messages
color index color141 default ~v # messages part of a collapsed thread
# message headers ---- foreground ---- background -----------------------------
color hdrdefault color117 default
color header color231 default ^Subject:.*
# message body ------- foreground ---- background -----------------------------
color attachment color228 default
color body color231 default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # email addresses
color body color228 default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # URLs
color body color231 default (^|[[:space:]])\\*[^[:space:]]+\\*([[:space:]]|$) # *bold* text
color body color231 default (^|[[:space:]])_[^[:space:]]+_([[:space:]]|$) # _underlined_ text
color body color231 default (^|[[:space:]])/[^[:space:]]+/([[:space:]]|$) # /italic/ text
color quoted color61 default
color quoted1 color117 default
color quoted2 color84 default
color quoted3 color215 default
color quoted4 color212 default
color signature color212 default

View file

@ -0,0 +1,4 @@
set from = "julien.malka@ens.fr"
set record="+ens/Sent\ Messages"
set collapse_unread = no

View file

@ -1,8 +1,6 @@
set from = "julien.malka@ens.fr"
set from = "julien@malka.sh"
# Nom complet de l'expéditeur
set realname = "Julien Malka"
# Génération du champs from
set use_from = yes
@ -12,20 +10,14 @@ set mark_old=no
set editor = "nvim -c 'set tw=72' -c 'set wrap'"
#set editor="vim +':set textwidth=0' +':set wrapmargin=0' +':set wrap'"
#set wrap="72"
set folder = ~/Maildir/ens
set folder = ~/Maildir
#set spoolfile=/home/julien/Maildir/ens/Inbox
set mbox_type=Maildir
set virtual_spoolfile=yes
set header_cache=~/.cache/mutt
set sidebar_visible = yes
set record = "+Sent\ Messages"
#mailboxes =Inbox =DG =DG/Malles =DG/Externements =DG/Thurnages =DG/Situations =DG/Fermeture =Sent\ Messages
#named-mailboxes "Malles" =DG/Malles
#named-mailboxes "Externements" =DG/Externements
#named-mailboxes "Thurnages" =DG/Thurnages
#named-mailboxes "Situations" =DG/Situations
#named-mailboxes "Fermeture" =DG/Fermeture
#named-mailboxes "Sent" =Sent\ Messages
#set record = "+Sent\ Messages"
set nm_unread_tag = unread
set mail_check_stats=yes
set sidebar_short_path = yes
@ -33,17 +25,32 @@ set sidebar_short_path = yes
set timeout=10
set mail_check=10
virtual-mailboxes "Inbox" "notmuch://?query=tag:inbox and NOT tag:dg and NOT tag:cof and NOT tag:fanfare and NOT tag:kfet and NOT tag:chefs and NOT tag:bc"
virtual-mailboxes "K-Fêt" "notmuch://?query=tag:kfet"
virtual-mailboxes "Chefs" "notmuch://?query=tag:chefs"
virtual-mailboxes "Bilan Carbone" "notmuch://?query=tag:bc"
virtual-mailboxes "DG" "notmuch://?query=tag:dg and NOT tag:externement and NOT tag:fermeture and NOT tag:malle and NOT tag:situation and NOT tag:thurnage"
virtual-mailboxes "Externements" "notmuch://?query=tag:externement"
virtual-mailboxes "Fermeture" "notmuch://?query=tag:fermeture"
virtual-mailboxes "Malles" "notmuch://?query=tag:malle"
virtual-mailboxes "Situations" "notmuch://?query=tag:situation"
virtual-mailboxes "Thurnages" "notmuch://?query=tag:thurnage"
virtual-mailboxes "Fanfare" "notmuch://?query=tag:fanfare"
named-mailboxes "-----work-----" =sep1
virtual-mailboxes "inbox" "notmuch://?query=tag:work-inbox
virtual-mailboxes "dn42" "notmuch://?query=tag:work-dn42
virtual-mailboxes "fosdem" "notmuch://?query=tag:work-fosdem
virtual-mailboxes "frnog" "notmuch://?query=tag:work-frnog
virtual-mailboxes "github" "notmuch://?query=tag:work-github
virtual-mailboxes "lobsters" "notmuch://?query=tag:work-lobsters
virtual-mailboxes "netdata" "notmuch://?query=tag:work-netdata
virtual-mailboxes "nixos-discourse" "notmuch://?query=tag:work-nixos-discourse
virtual-mailboxes "proxmox" "notmuch://?query=tag:work-proxmox
named-mailboxes "-----ens-----" =sep2
virtual-mailboxes "inbox" "notmuch://?query=tag:ens-inbox
virtual-mailboxes "bilan-carbone" "notmuch://?query=tag:ens-bilan-carbone
virtual-mailboxes "cof" "notmuch://?query=tag:ens-cof
virtual-mailboxes "dg" "notmuch://?query=tag:ens-dg
virtual-mailboxes "kfet" "notmuch://?query=tag:ens-kfet
named-mailboxes "---telecom---" =sep3
virtual-mailboxes "inbox" "notmuch://?query=tag:telecom-inbox
named-mailboxes "----dgnum----" =sep4
virtual-mailboxes "inbox" "notmuch://?query=tag:dgnum-inbox
virtual-mailboxes "bureau" "notmuch://?query=tag:dgnum-bureau
virtual-mailboxes "nixcon" "notmuch://?query=tag:dgnum-nixcon
set sidebar_width=15
set sidebar_divider_char='|'
@ -61,6 +68,7 @@ set nm_default_url = "notmuch:///home/julien/Maildir"
macro index \\ "<vfolder-from-query>"
set metoo=yes
set query_command="notmuch-addrlookup --format=mutt '%s'"
set text_flowed
set collapse_unread = no
@ -68,17 +76,39 @@ set collapse_all = yes
bind index - collapse-thread
bind editor <Tab> complete-query
bind editor ^T complete
set sort = threads
set sort_aux = reverse-last-date-received
folder-hook . 'source /home/julien/dotfiles/profile.default'
folder-hook "DG" 'source /home/julien/dotfiles/profile.dg'
folder-hook "K-Fêt" 'source /home/julien/dotfiles/profile.kfet'
folder-hook "Chefs" 'source /home/julien/dotfiles/profile.chefs'
folder-hook "ens-inbox" 'source ~/.config/neomutt/ens.profile'
folder-hook "ens-bilan-carbone" 'source ~/.config/neomutt/ens.profile'
folder-hook "ens-cof" 'source ~/.config/neomutt/ens.profile'
folder-hook "ens-dg" 'source ~/.config/neomutt/ens.profile'
folder-hook "ens-kfet" 'source ~/.config/neomutt/ens.profile'
folder-hook "telecom-inbox" 'source ~/.config/neomutt/telecom.profile'
folder-hook "work-nixos-discourse" 'source ~/.config/neomutt/discourse.profile'
folder-hook "work-dn42" 'source ~/.config/neomutt/work.profile'
folder-hook "work-frnog" 'source ~/.config/neomutt/work.profile'
folder-hook "work-inbox" 'source ~/.config/neomutt/work.profile'
folder-hook "work-github" 'source ~/.config/neomutt/work.profile'
folder-hook "work-fosdem" 'source ~/.config/neomutt/work.profile'
folder-hook "work-proxmox" 'source ~/.config/neomutt/work.profile'
folder-hook "work-netdata" 'source ~/.config/neomutt/work.profile'
folder-hook "work-lobsters" 'source ~/.config/neomutt/work.profile'
folder-hook "dgnum-inbox" 'source ~/.config/neomutt/dgnum.profile'
folder-hook "dgnum-bureau" 'source ~/.config/neomutt/dgnum.profile'
folder-hook "dgnum-nixcon" 'source ~/.config/neomutt/dgnum.profile'
set sidebar_format = '%D%* %?N?(%N)?%*'
color sidebar_unread yellow default
source ~/dotfiles/dracula.muttrc
source dracula.muttrc
set sendmail = "msmtp"

View file

@ -0,0 +1,3 @@
set from = "julien.malka@telecom-paris.fr"
set record=+telecom/Sent
set collapse_unread = no

View file

@ -0,0 +1,4 @@
set from = "julien@malka.sh"
set record= +work/Sent
set collapse_unread = no

View file

@ -50,7 +50,7 @@ with lib;
tooltip-format-enumerate-connected = "{device_alias} {device_address}";
};
"network" = {
interface = "wlp1s0f0";
interface = "wlp3s0";
format = "{ifname}";
format-wifi = "<span color='#cba6f7'> </span>{essid}";
format-ethernet = "{ipaddr}/{cidr} ";
@ -59,8 +59,8 @@ with lib;
};
"battery" = {
format = "<span color='#cba6f7'>{icon}</span> {capacity}%";
format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
format-charging = "<span color='#cba6f7'></span> {capacity}%";
format-icons = [ "" "" "" "" "" ];
format-charging = "<span color='#cba6f7'></span> {capacity}%";
tooltip = false;
};
};

View file

@ -3,10 +3,19 @@ inputs: final: prev:
with builtins;
let
overlay-unstable = arch: final: prev: {
unstable = inputs.unstable.legacyPackages."${arch}";
stable = inputs.nixpkgs.legacyPackages."${arch}";
};
overlay-unstable = arch: final: prev:
let
master-patched-src = (import inputs.master { system = arch; }).applyPatches {
name = "nixpkgs-patches";
src = inputs.master;
patches = [ ../patches/signal.patch ];
};
in
{
unstable = inputs.unstable.legacyPackages."${arch}";
master-patched = import master-patched-src { system = arch; };
stable = inputs.nixpkgs.legacyPackages."${arch}";
};
in
{
@ -24,6 +33,7 @@ in
inputs.simple-nixos-mailserver.nixosModule
inputs.hyprland.nixosModules.default
inputs.attic.nixosModules.atticd
inputs.lanzaboote.nixosModules.lanzaboote
inputs.nix-index-database.nixosModules.nix-index
{
home-manager.useGlobalPkgs = true;

View file

@ -42,11 +42,6 @@ inputs: lib: with lib; let
ipv4 = { public = "212.129.40.11"; vpn = "100.100.45.12"; };
ipv6 = { public = "2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb"; vpn = "fd7a:115c:a1e0::c"; };
};
macintosh = {
arch = "aarch64-linux";
nixpkgs_version = inputs.nixos-apple-silicon.inputs.nixpkgs;
hm_version = inputs.home-manager;
};
x2100 = {
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;

View file

@ -1,113 +0,0 @@
{ config, pkgs, lib, inputs, ... }:
{
imports =
[
# Include the results of the hardware scan.
./hardware.nix
./home-julien.nix
../../users/julien.nix
../../users/default.nix
inputs.nixos-apple-silicon.nixosModules.apple-silicon-support
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
nixpkgs.config.allowUnsupportedSystem = false;
networking.hostName = "macintosh"; # Define your hostname.
networking.wireless.enable = false;
hardware.asahi.addEdgeKernelConfig = true;
hardware.asahi.useExperimentalGPUDriver = true;
hardware.asahi.pkgs = lib.mkDefault pkgs;
hardware.asahi.experimentalGPUInstallMode = "replace";
programs.hyprland.enable = true;
programs.hyprland.package = pkgs.hyprland;
environment.sessionVariables = {
LIBSEAT_BACKEND = "logind";
};
services.xserver = {
enable = true;
layout = "fr";
displayManager.gdm.enable = true;
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
};
services.tailscale.enable = true;
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.networkmanager.dns = "systemd-resolved";
services.resolved.enable = true;
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
};
hardware.asahi.peripheralFirmwareDirectory = ./firmware;
hardware.opengl.enable = true;
hardware.opengl.driSupport = true;
programs.dconf.enable = true;
security.polkit.enable = true;
services.tlp.enable = true;
environment.systemPackages = with pkgs; [
tailscale
brightnessctl
];
services.printing.enable = true;
services.avahi.enable = true;
services.avahi.nssmdns = true;
# for a WiFi printer
services.avahi.openFirewall = true;
services.davfs2 = {
enable = true;
};
security.pam.services.swaylock = { };
programs.ssh.startAgent = true;
programs.adb.enable = true;
services.udev.packages = [
pkgs.android-udev-rules
];
services.autofs = {
enable = true;
debug = true;
autoMaster =
let
mapConf = pkgs.writeText "auto" ''
nuage -fstype=davfs,uid=1000,file_mode=600,dir_mode=700,conf=/home/julien/.davfs2/davfs2.conf,rw :https\://nuage.malka.family/remote.php/webdav/
'';
in
''
/home/julien/clouds file:${mapConf}
'';
};
system.stateVersion = "23.05"; # Did you read the comment?
}

View file

@ -1,40 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "usb_storage" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/d01369d1-b6ad-4fef-b73e-d1d56ec249ca";
fsType = "ext4";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/1070-1613";
fsType = "vfat";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0f0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
}

View file

@ -1,107 +0,0 @@
{ pkgs, lib, config, ... }:
{
sops.secrets.ssh-macintosh-pub = {
owner = "julien";
path = "/home/julien/.ssh/id_ed25519.pub";
mode = "0644";
format = "binary";
sopsFile = ../../secrets/ssh-macintosh-pub;
};
sops.secrets.ssh-macintosh-priv = {
owner = "julien";
path = "/home/julien/.ssh/id_ed25519";
mode = "0600";
format = "binary";
sopsFile = ../../secrets/ssh-macintosh-priv;
};
luj.hmgr.julien =
{
home.stateVersion = "22.11";
luj.programs.neovim.enable = true;
luj.programs.ssh-client.enable = true;
luj.programs.git.enable = true;
luj.programs.gtk.enable = true;
luj.programs.alacritty.enable = true;
luj.programs.hyprland.enable = true;
luj.programs.waybar.enable = true;
luj.programs.kitty.enable = true;
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
font = "Fira Font";
theme = "DarkBlue";
};
programs.direnv = {
enable = true;
enableFishIntegration = true;
nix-direnv.enable = true;
};
home.pointerCursor = {
name = "Adwaita";
package = pkgs.gnome.adwaita-icon-theme;
size = 15;
x11 = {
enable = true;
defaultCursor = "Adwaita";
};
};
home.packages = with pkgs;
[
du-dust
kitty
jq
lazygit
fira-code
unstable.firefox
feh
meld
vlc
stable.nerdfonts
libreoffice
font-awesome
nodejs
neomutt
htop
evince
mosh
obsidian
zotero
flameshot
kitty
networkmanagerapplet
element-desktop
xdg-utils
sops
coq
cvc5
coqPackages.coqide
(why3.withProvers
[
unstable.cvc4
alt-ergo
z3
])
];
fonts.fontconfig.enable = true;
home.keyboard = {
layout = "fr";
};
services.dunst = {
enable = true;
};
};
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 KiB

View file

@ -10,8 +10,12 @@
../../users/default.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
networking.hostName = "x2100";
networking.wireless.enable = false;
@ -22,14 +26,12 @@
LIBSEAT_BACKEND = "logind";
};
services.logind.lidSwitch = "suspend";
services.xserver = {
enable = true;
layout = "fr";
displayManager.gdm.enable = true;
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
};
services.tailscale.enable = true;
@ -60,6 +62,7 @@
environment.systemPackages = with pkgs; [
tailscale
brightnessctl
sbctl
];
services.printing.enable = true;
@ -80,6 +83,7 @@
services.udev.packages = [
pkgs.android-udev-rules
];
services.gnome.gnome-keyring.enable = true;
services.autofs = {
enable = true;

View file

@ -5,36 +5,37 @@
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "usb_storage" "sdhci_pci" ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/d01369d1-b6ad-4fef-b73e-d1d56ec249ca";
fsType = "ext4";
{ device = "/dev/nvme0n1p1";
fsType = "bcachefs";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/1070-1613";
{ device = "/dev/disk/by-uuid/72EA-E988";
fsType = "vfat";
};
swapDevices = [ ];
swapDevices =
[ { device = "/dev/disk/by-uuid/2c19cb7a-bf8d-4bd3-ad61-ee3c27d57998"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0f0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -1,22 +1,6 @@
{ pkgs, lib, config, ... }:
{
sops.secrets.ssh-macintosh-pub = {
owner = "julien";
path = "/home/julien/.ssh/id_ed25519.pub";
mode = "0644";
format = "binary";
sopsFile = ../../secrets/ssh-macintosh-pub;
};
sops.secrets.ssh-macintosh-priv = {
owner = "julien";
path = "/home/julien/.ssh/id_ed25519";
mode = "0600";
format = "binary";
sopsFile = ../../secrets/ssh-macintosh-priv;
};
luj.hmgr.julien =
{
home.stateVersion = "22.11";
@ -28,6 +12,7 @@
luj.programs.hyprland.enable = true;
luj.programs.waybar.enable = true;
luj.programs.kitty.enable = true;
luj.emails.enable = true;
programs.rofi = {
enable = true;
@ -59,7 +44,6 @@
jq
lazygit
fira-code
unstable.firefox
feh
meld
vlc
@ -79,8 +63,10 @@
element-desktop
xdg-utils
sops
step-cli
coq
cvc5
master-patched.signal-desktop-beta
coqPackages.coqide
(why3.withProvers
[
@ -88,6 +74,9 @@
alt-ergo
z3
])
libsForQt5.neochat
scli
texlive.combined.scheme-full
];
fonts.fontconfig.enable = true;
@ -100,6 +89,24 @@
enable = true;
};
programs.chromium = {
enable = true;
commandLineArgs = [
"--ozone-platform-hint=wayland"
"--load-media-router-component-extension=1"
];
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin
{ id = "ldlghkoiihaelfnggonhjnfiabmaficg"; } # Alt+Q switcher
{ id = "enjjhajnmggdgofagbokhmifgnaophmh"; } # Resolution Zoom for HiDPI
{ id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies
{ id = "ekhagklcjbdpajgpjgmbionohlpdbjgc"; } # Zotero Connector
{ id = "hlepfoohegkhhmjieoechaddaejaokhf"; } # Refined GitHub
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden
{ id = "dcpihecpambacapedldabdbpakmachpb"; updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/src/updates/updates.xml"; }
];
};
};

48
patches/signal.patch Normal file
View file

@ -0,0 +1,48 @@
From 08715717912f84e2b17b191c2e8f23151c7df877 Mon Sep 17 00:00:00 2001
From: Morantoine <71721545+Morantoine@users.noreply.github.com>
Date: Tue, 15 Aug 2023 11:23:23 +0200
Subject: [PATCH 1/2] signal-desktop: 6.27.1 -> 6.28.0
---
.../networking/instant-messengers/signal-desktop/default.nix | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index ea1ab235fc466..5e9119b08f7d2 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -1,8 +1,8 @@
{ callPackage }: builtins.mapAttrs (pname: attrs: callPackage ./generic.nix (attrs // { inherit pname; })) {
signal-desktop = {
dir = "Signal";
- version = "6.27.1";
- hash = "sha256-nEOt6bep6SqhAab8yD9NlRrDGU2IvZeOxSqPj2u1bio=";
+ version = "6.28.0";
+ hash = "sha256-zJURX5VygBvW+0v29xqOx9HmQgFgfAbxoacd7ex3iec";
};
signal-desktop-beta = {
dir = "Signal Beta";
From 49118d1f8435e33c13487bc2d8bd7528b46e7eb3 Mon Sep 17 00:00:00 2001
From: Morantoine <71721545+Morantoine@users.noreply.github.com>
Date: Tue, 15 Aug 2023 11:24:01 +0200
Subject: [PATCH 2/2] signal-desktop-beta: 6.24.0-beta.1 -> 6.29.0-beta.1
---
.../networking/instant-messengers/signal-desktop/default.nix | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index 5e9119b08f7d2..311ff26693275 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -6,7 +6,7 @@
};
signal-desktop-beta = {
dir = "Signal Beta";
- version = "6.24.0-beta.1";
- hash = "sha256-tA1xsgtAeOn0c0HcZutj+Pqrsr0JV5bQOnknH4t/QkY=";
+ version = "6.29.0-beta.1";
+ hash = "sha256-ZUM2tVZbWtiatpI0ogo0MC6q8DIoPEBocIHuszx3Mv0";
};
}