diff options
| author | quentin@aristote.fr <quentin@aristote.fr> | 2023-03-03 17:24:28 +0100 |
|---|---|---|
| committer | quentin@aristote.fr <quentin@aristote.fr> | 2023-03-03 17:24:28 +0100 |
| commit | fdaf97a9acfbec43cc816357b73c0e746621c531 (patch) | |
| tree | b2fe9ad31629cc1d7dec200b5dfcd2715eb66f34 /modules/home-manager | |
| parent | feb03b9630430af407dc078fb18d7a7d6d17e101 (diff) | |
home: split identities from social profile
Diffstat (limited to 'modules/home-manager')
| -rw-r--r-- | modules/home-manager/personal/default.nix | 9 | ||||
| -rw-r--r-- | modules/home-manager/personal/gui/x/i3/default.nix | 4 | ||||
| -rw-r--r-- | modules/home-manager/personal/gui/x/i3/startup.nix | 15 | ||||
| -rw-r--r-- | modules/home-manager/personal/identities.nix | 96 | ||||
| -rw-r--r-- | modules/home-manager/personal/profiles.nix | 94 | ||||
| -rw-r--r-- | modules/home-manager/personal/programs/git.nix | 23 |
6 files changed, 130 insertions, 111 deletions
diff --git a/modules/home-manager/personal/default.nix b/modules/home-manager/personal/default.nix index dcd7500..3199c7f 100644 --- a/modules/home-manager/personal/default.nix +++ b/modules/home-manager/personal/default.nix @@ -1,7 +1,14 @@ { ... }: { - imports = [ ./dotfiles ./environment.nix ./gui ./profiles.nix ./programs ]; + imports = [ + ./dotfiles + ./environment.nix + ./gui + ./identities.nix + ./profiles.nix + ./programs + ]; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/modules/home-manager/personal/gui/x/i3/default.nix b/modules/home-manager/personal/gui/x/i3/default.nix index b802f25..d7ec295 100644 --- a/modules/home-manager/personal/gui/x/i3/default.nix +++ b/modules/home-manager/personal/gui/x/i3/default.nix @@ -25,10 +25,10 @@ in { { class = "MUBI"; } { class = "Deezer"; } ]; - } // lib.optionalAttrs config.personal.profiles.social.enable { + } // lib.optionalAttrs config.personal.profiles.social { "9: social" = [ { class = "^Mail$"; } { class = "^thunderbird$"; } ] ++ lib.optional - config.personal.profiles.social.identities.personal { + config.personal.identities.personal { class = "^signal-desktop$"; }; } // { diff --git a/modules/home-manager/personal/gui/x/i3/startup.nix b/modules/home-manager/personal/gui/x/i3/startup.nix index f3b54a2..521b666 100644 --- a/modules/home-manager/personal/gui/x/i3/startup.nix +++ b/modules/home-manager/personal/gui/x/i3/startup.nix @@ -11,15 +11,8 @@ (autostart { command = "keepassxc"; }) ] ++ autostartIf config.programs.thunderbird.enable { command = "thunderbird"; } - ++ autostartIf (config.personal.profiles.social.enable - && config.personal.profiles.social.identities.personal) { - command = "signal-desktop"; - } - # ++ autostartIf config.services.redshift.enable { - # command = "systemctl --user start redshift"; - # } - # ++ autostartIf config.services.xidlehook.enable { - # command = "systemctl --user start xidlehook.service"; - # } - ; + ++ autostartIf + (config.personal.profiles.social && config.personal.identities.personal) { + command = "signal-desktop"; + }; } diff --git a/modules/home-manager/personal/identities.nix b/modules/home-manager/personal/identities.nix new file mode 100644 index 0000000..eb70e2b --- /dev/null +++ b/modules/home-manager/personal/identities.nix @@ -0,0 +1,96 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.personal.identities; + mkEnableIdentityOption = name: lib.mkEnableOption "${name} identity"; +in { + options.personal.identities = { + personal = mkEnableIdentityOption "personal"; + work = mkEnableIdentityOption "work"; + }; + + config = { + accounts.email.accounts = let + gpg = { + key = "DFC1660846EEA97C059F18534EF515441E635D36"; + signByDefault = true; + }; + thunderbirdSettings = id: { + "mail.identity.id_${id}.fcc_folder_picker_mode" = 0; + }; + in { + personal = lib.mkIf config.personal.identities.personal { + inherit gpg; + address = "quentin@aristote.fr"; + userName = "quentin@aristote.fr"; + realName = "Quentin Aristote"; + folders = { + drafts = "INBOX/Brouillons"; + inbox = "INBOX"; + sent = "INBOX/Envoyés"; + trash = "INBOX/Corbeille"; + }; + imap = { + host = "ssl0.ovh.net"; + port = 993; + }; + smtp = { + host = "ssl0.ovh.net"; + port = 465; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; + settings = id: + thunderbirdSettings id // { + "mail.identity.id_${id}.draft_folder" = + "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Brouillons"; + "mail.identity.id_${id}.fcc_folder" = + "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Envoy&AOk-s"; + "mail.identity.id_${id}.archive_folder" = + "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Archive"; + "mail.server.server_${id}.trash_folder_name" = "INBOX/Corbeille"; + }; + }; + }; + work = lib.mkIf config.personal.identities.work { + inherit gpg; + address = "quentin.aristote@ens.fr"; + userName = "qaristote"; + realName = "Quentin Aristote"; + aliases = [ + "quentin.aristote@ens.psl.eu" + "qaristote@clipper.ens.fr" + "qaristote@clipper.ens.psl.eu" + ]; + folders = { + drafts = "Drafts"; + inbox = "Inbox"; + sent = "Sent"; + trash = "Trash"; + }; + imap = { + host = "clipper.ens.fr"; + port = 993; + }; + smtp = { + host = "clipper.ens.fr"; + port = 465; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; + settings = id: + thunderbirdSettings id // { + "mail.identity.id_${id}.archive_folder" = + "imap://qaristote@clipper.ens.fr/Archive"; + "mail.server.server_${id}.trash_folder_name" = "Trash"; + }; + }; + }; + }; + + home.packages = lib.optionals cfg.personal (with pkgs; [ ]) + ++ lib.optionals cfg.work (with pkgs; [ zotero ]); + }; +} diff --git a/modules/home-manager/personal/profiles.nix b/modules/home-manager/personal/profiles.nix index 0f66566..ffb3e3c 100644 --- a/modules/home-manager/personal/profiles.nix +++ b/modules/home-manager/personal/profiles.nix @@ -3,17 +3,10 @@ let cfg = config.personal.profiles; mkEnableProfileOption = name: lib.mkEnableOption "${name} profile"; - mkEnableIdentityOption = name: lib.mkEnableOption "${name} identity"; in { options.personal.profiles = { dev = mkEnableProfileOption "development"; - social = { - enable = mkEnableProfileOption "social"; - identities = { - personal = mkEnableIdentityOption "personal"; - work = mkEnableIdentityOption "work"; - }; - }; + social = mkEnableProfileOption "social"; syncing = mkEnableProfileOption "syncing"; multimedia = mkEnableProfileOption "video"; }; @@ -80,95 +73,14 @@ in { }; }) - (lib.mkIf cfg.social.enable { + (lib.mkIf cfg.social { home.packages = with pkgs; lib.optionals - (config.personal.gui.enable && cfg.social.identities.personal) + (config.personal.gui.enable && config.personal.identities.personal) [ signal-desktop ]; programs.thunderbird.enable = lib.mkDefault config.personal.gui.enable; programs.gpg.enable = true; services.gpg-agent.enable = true; - - accounts.email.accounts = let - gpg = { - key = "DFC1660846EEA97C059F18534EF515441E635D36"; - signByDefault = true; - }; - thunderbirdSettings = id: { - "mail.identity.id_${id}.fcc_folder_picker_mode" = 0; - }; - in { - personal = lib.mkIf cfg.social.identities.personal { - inherit gpg; - address = "quentin@aristote.fr"; - userName = "quentin@aristote.fr"; - realName = "Quentin Aristote"; - folders = { - drafts = "INBOX/Brouillons"; - inbox = "INBOX"; - sent = "INBOX/Envoyés"; - trash = "INBOX/Corbeille"; - }; - imap = { - host = "ssl0.ovh.net"; - port = 993; - }; - smtp = { - host = "ssl0.ovh.net"; - port = 465; - }; - thunderbird = { - enable = true; - profiles = [ "default" ]; - settings = id: - thunderbirdSettings id // { - "mail.identity.id_${id}.draft_folder" = - "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Brouillons"; - "mail.identity.id_${id}.fcc_folder" = - "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Envoy&AOk-s"; - "mail.identity.id_${id}.archive_folder" = - "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Archive"; - "mail.server.server_${id}.trash_folder_name" = - "INBOX/Corbeille"; - }; - }; - }; - work = lib.mkIf cfg.social.identities.work { - inherit gpg; - address = "quentin.aristote@ens.fr"; - userName = "qaristote"; - realName = "Quentin Aristote"; - aliases = [ - "quentin.aristote@ens.psl.eu" - "qaristote@clipper.ens.fr" - "qaristote@clipper.ens.psl.eu" - ]; - folders = { - drafts = "Drafts"; - inbox = "Inbox"; - sent = "Sent"; - trash = "Trash"; - }; - imap = { - host = "clipper.ens.fr"; - port = 993; - }; - smtp = { - host = "clipper.ens.fr"; - port = 465; - }; - thunderbird = { - enable = true; - profiles = [ "default" ]; - settings = id: - thunderbirdSettings id // { - "mail.identity.id_${id}.archive_folder" = - "imap://qaristote@clipper.ens.fr/Archive"; - "mail.server.server_${id}.trash_folder_name" = "Trash"; - }; - }; - }; - }; }) (lib.mkIf cfg.syncing { diff --git a/modules/home-manager/personal/programs/git.nix b/modules/home-manager/personal/programs/git.nix index 578f6a7..85ce0e4 100644 --- a/modules/home-manager/personal/programs/git.nix +++ b/modules/home-manager/personal/programs/git.nix @@ -1,13 +1,24 @@ -{ lib, pkgs, ... }: +{ config, lib, pkgs, ... }: -{ - programs.git = { +let + primaryEmail = let + primaryEmailList = builtins.filter (account: account.primary) + (lib.attrValues config.accounts.email.accounts); + in if primaryEmailList == [ ] then { userName = lib.mkDefault "Quentin Aristote"; - userEmail = lib.mkDefault "quentin@aristote.fr"; + address = lib.mkDefault "quentin@aristote.fr"; + } else + builtins.head primaryEmailList; +in { + programs.git = { + userName = primaryEmail.userName; + userEmail = primaryEmail.address; + signing = lib.mkIf (primaryEmail ? "gpg") { + inherit (primaryEmail.gpg) key signByDefault; + }; ignores = builtins.map builtins.readFile - (with pkgs.personal.static.gitignore; [ direnv emacs linux ]) - ++ [ + (with pkgs.personal.static.gitignore; [ direnv emacs linux ]) ++ [ # Personal rules '' # Nix |
