diff --git a/hosts/nixos-laptop/default.nix b/hosts/nixos-laptop/default.nix index 072bab7..79a118d 100644 --- a/hosts/nixos-laptop/default.nix +++ b/hosts/nixos-laptop/default.nix @@ -18,6 +18,9 @@ profiles = { desktop.enable = true; personal.enable = true; + personal.mail = true; + personal.contacts = true; + personal.calendar = true; webis.enable = true; impermanence.enable = true; }; @@ -36,6 +39,7 @@ profile.outputs = [ { criteria = "eDP-1"; + scale = 1.0; } ]; } diff --git a/modules/profiles/impermanence.nix b/modules/profiles/impermanence.nix index a3b9fa2..bca52f3 100644 --- a/modules/profiles/impermanence.nix +++ b/modules/profiles/impermanence.nix @@ -18,6 +18,7 @@ in }; users.mutableUsers = false; environment.persistence."/persist" = { + enable = cfg.enable; hideMounts = true; directories = [ "/etc/NetworkManager/system-connections" @@ -27,7 +28,6 @@ in "/var/lib/nixos" "/var/lib/systemd" "/var/log" - "/etc/mullvad-vpn/" ]; files = [ "/etc/machine-id" @@ -39,27 +39,14 @@ in ]; users.moritz = { directories = [ - ".SynologyDrive/data" - ".SynologyDrive/log" ".cache/keepassxc" - ".cache/nvim/luac" ".cat_installer" # eduroam - ".config/JetBrains" - ".config/Mullvad VPN/" ".config/Nextcloud" ".config/Signal/" ".config/calibre" - ".config/github-copilot" - ".config/kdeconnect" ".config/keepassxc" - ".java/.userPrefs/jetbrains/" - ".local/share/JetBrains" - ".local/share/PrismLauncher/" ".local/share/Steam/" - ".local/share/direnv" - ".local/share/nvim" ".local/share/zoxide" - ".local/state/nvim" ".mozilla" "Documents" "Downloads" diff --git a/modules/profiles/personal_calendar.nix b/modules/profiles/personal_calendar.nix new file mode 100644 index 0000000..bb17b0f --- /dev/null +++ b/modules/profiles/personal_calendar.nix @@ -0,0 +1,55 @@ +{ lib +, config +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.profiles.personal; +in +{ + options.my.profiles.personal.calendar = mkEnableOption "calendar"; + + config = mkIf cfg.contacts { + environment.persistence."/persist".users.moritz.directories = [ + ".local/share/vdirsyncer/" + ]; + home-manager.users.moritz = { + programs.khal.enable = true; + programs.vdirsyncer.enable = true; + services.vdirsyncer.enable = true; + accounts.calendar = { + basePath = "Documents/Calendar"; + accounts.personal = { + local = { + type = "filesystem"; + fileExt = ".ics"; + }; + remote = { + passwordCommand = [ "cat" "/run/agenix/nextcloud" ]; + url = "https://nextcloud.moritzboeh.me/remote.php/dav"; + type = "caldav"; + userName = "moritz"; + }; + primaryCollection = "personal"; + khal.enable = true; + khal.type = "discover"; + vdirsyncer.enable = true; + vdirsyncer.collections = [ + "personal" # Personal + "einkaufsliste" # Einkaufsliste + "9b8be6f3-d85c-4c1e-b006-00910f56bf5d" # Tasks + "contact_birthdays" # Contact birthdays + "f71a1a0f-08c5-45de-84e8-e7f16b748ba5" # Uni + "32c96d6f-a575-48b1-949a-6ae548f7a779" # Work + ]; + }; + }; + }; + age.secrets.nextcloud = { + file = ../../secrets/nextcloud.age; + owner = "1000"; + }; + }; +} diff --git a/modules/profiles/personal_contacts.nix b/modules/profiles/personal_contacts.nix new file mode 100644 index 0000000..7476b1b --- /dev/null +++ b/modules/profiles/personal_contacts.nix @@ -0,0 +1,53 @@ +{ lib +, config +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.profiles.personal; +in +{ + options.my.profiles.personal.contacts = mkEnableOption "contacts"; + + config = mkIf cfg.contacts { + environment.persistence."/persist".users.moritz.directories = mkIf (!cfg.calendar) [ + ".local/share/vdirsyncer/" + ]; + home-manager.users.moritz = { + programs.khard.enable = true; + programs.vdirsyncer.enable = true; + services.vdirsyncer.enable = true; + programs.aerc.extraConfig.compose.address-book-cmd = "khard email --remove-first-line --parsable %s"; + accounts.contact = { + basePath = "Documents/Contacts"; + accounts.personal = { + local = { + type = "filesystem"; + fileExt = ".vcf"; + }; + remote = { + passwordCommand = [ "cat" "/run/agenix/nextcloud" ]; + url = "https://nextcloud.moritzboeh.me/remote.php/dav"; + type = "carddav"; + userName = "moritz"; + }; + khard.enable = true; + khard.defaultCollection = "contacts"; + vdirsyncer.enable = true; + vdirsyncer.collections = [ + # "z-app-generated--contactsinteraction--recent" # Recently contacted + # "z-server-generated--system" # Accounts + "contacts" # Contacts + ]; + vdirsyncer.conflictResolution = [ "vimdiff" ]; + }; + }; + }; + age.secrets.nextcloud = { + file = ../../secrets/nextcloud.age; + owner = "1000"; + }; + }; +} diff --git a/modules/profiles/personal_mail.nix b/modules/profiles/personal_mail.nix index 2aa559c..74f72b6 100644 --- a/modules/profiles/personal_mail.nix +++ b/modules/profiles/personal_mail.nix @@ -60,6 +60,8 @@ in realName = "Moritz Böhme"; mbsync.enable = true; mbsync.create = "both"; + mbsync.remove = "both"; + mbsync.expunge = "both"; passwordCommand = "${lib.getExe' pkgs.coreutils "cat"} /run/agenix/email"; }; accounts.email.maildirBasePath = "Documents/Mail"; diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index 119ac6d..0452939 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -11,6 +11,10 @@ in options.my.programs.direnv.enable = mkEnableOption "direnv"; config = mkIf cfg.enable { + environment.persistence."/persist".users.moritz.directories = [ + ".local/share/direnv" + ]; + home-manager.users.moritz.programs.direnv = { enable = true; nix-direnv.enable = true; diff --git a/modules/programs/jetbrains/default.nix b/modules/programs/jetbrains/default.nix index 78034e7..2a283ee 100644 --- a/modules/programs/jetbrains/default.nix +++ b/modules/programs/jetbrains/default.nix @@ -24,6 +24,12 @@ in }; config = mkIf anyEnabled { + environment.persistence."/persist".users.moritz.directories = [ + ".config/JetBrains" + ".java/.userPrefs/jetbrains/" + ".local/share/JetBrains" + ]; + home-manager.users.moritz = { xdg.configFile."ideavim/ideavimrc" = { source = ./ideavimrc; diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 403aca8..b0f5c80 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -11,6 +11,13 @@ in options.my.programs.nvim.enable = mkEnableOption "nvim"; config = mkIf cfg.enable { + environment.persistence."/persist".users.moritz.directories = [ + ".cache/nvim/luac" + ".config/github-copilot" + ".local/share/nvim" + ".local/state/nvim" + ]; + home-manager.users.moritz = { home.packages = with pkgs; [ diff --git a/modules/programs/prismlauncher.nix b/modules/programs/prismlauncher.nix index 54c01aa..fe8dda2 100644 --- a/modules/programs/prismlauncher.nix +++ b/modules/programs/prismlauncher.nix @@ -21,6 +21,10 @@ in options.my.programs.prismlauncher.enable = mkEnableOption "prismlauncher"; config = mkIf cfg.enable { + environment.persistence."/persist".users.moritz.directories = [ + ".local/share/PrismLauncher/" + ]; + users.users.moritz.packages = [ prismlauncher ]; }; } diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 3efd6a8..5725e02 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -15,6 +15,10 @@ in options.my.services.kdeconnect.enable = mkEnableOption "kdeconnect"; config = mkIf cfg.enable { + environment.persistence."/persist".users.moritz.directories = [ + ".config/kdeconnect" + ]; + home-manager.users.moritz.services.kdeconnect.enable = mkIf (!config.my.programs.gnome.enable) true; networking.firewall = { allowedTCPPortRanges = [ ports ]; diff --git a/modules/services/mullvad.nix b/modules/services/mullvad.nix index 3840016..581f06e 100644 --- a/modules/services/mullvad.nix +++ b/modules/services/mullvad.nix @@ -12,6 +12,14 @@ in options.my.services.mullvad.enable = mkEnableOption "mullvad"; config = lib.mkIf cfg.enable { + environment.persistence."/persist" = { + directories = [ + "/etc/mullvad-vpn/" + ]; + users.moritz.directories = [ + ".config/Mullvad VPN/" + ]; + }; services.mullvad-vpn.enable = true; users.users.moritz.packages = with pkgs; [ mullvad-vpn diff --git a/modules/services/synology-drive.nix b/modules/services/synology-drive.nix index 63776d1..ac057cf 100644 --- a/modules/services/synology-drive.nix +++ b/modules/services/synology-drive.nix @@ -15,6 +15,11 @@ in }; config = mkIf cfg.enable { + environment.persistence."/persist".users.moritz.directories = [ + ".SynologyDrive/data" + ".SynologyDrive/log" + ]; + systemd.user.services.synology-drive = { after = [ "graphical-session.target" "network.target" ]; partOf = [ "graphical-session.target" ]; diff --git a/secrets/nextcloud.age b/secrets/nextcloud.age new file mode 100644 index 0000000..168543e --- /dev/null +++ b/secrets/nextcloud.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 CjuqfA QloWb6Q2yIcherp9k+O0A0uEO0rc8X3Kcldtt2HmQmQ +EQ2+UJx12ODOzDciyy4D8sFfd3ANkb8CqkEMkzhkH4c +-> ssh-ed25519 wG6LYg wZH/zMmCxvo/+OCm0WelbWc7iCilNQOKS8jFH2T/DQ0 +Yyaa55UpdM+VmtLHlLOL86ERaJorDVk9rgsD91kJyBM +-> ssh-ed25519 ZYd7Zg CypGom+Ot6b4naMAhFL3rNVHZHcQeHGQ+3LXPCIMYUQ +HrXypX9Zvvwu4c8N8cKftjAUyRfZdNacn3WeV0KKbY4 +--- O/DBTdosaXCPZK2a1oEbIeEv12uiJOJQ4LJrP+F+JhE +Õѳ…H1¤Œ³˜ãHhÉk¹œÐ/âívÂTÃâÍÝãÕ†©î>¡ÚÖšÏè‰ÄÚ '>zsù‹'çe¸…º \ No newline at end of file diff --git a/secrets/secrets.nix b/secrets/secrets.nix index e9337d1..9110d8f 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -30,4 +30,5 @@ in "anthropic.age".publicKeys = personal; "nix-github-token.age".publicKeys = personal; "email.age".publicKeys = personal; + "nextcloud.age".publicKeys = personal; }