about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--flake.nix1
-rw-r--r--lib/my.nix2
-rw-r--r--modules/common/emacs/default.nix41
-rw-r--r--modules/common/emacs/doom/config.el70
-rw-r--r--modules/common/emacs/doom/packages.el6
-rw-r--r--modules/common/profiles/headful.nix44
-rw-r--r--modules/nixos/beets.nix30
-rw-r--r--modules/nixos/firefox/default.nix1
-rw-r--r--modules/nixos/grafana.nix2
-rw-r--r--modules/nixos/kde.nix1
-rw-r--r--modules/nixos/profiles/headful.nix33
-rw-r--r--nixosConfigurations/eonwe/default.nix25
-rw-r--r--nixosConfigurations/manwe/mailserver.nix12
13 files changed, 179 insertions, 89 deletions
diff --git a/flake.nix b/flake.nix
index a9e0c30..4eb3fd0 100644
--- a/flake.nix
+++ b/flake.nix
@@ -254,7 +254,6 @@
           inherit (self.checks.${system}.preCommit) shellHook;
         };
 
-        # This interface is very primitive...
         formatter = pkgs.writeShellApplication {
           name = "fmt";
           runtimeInputs = with pkgs; [alejandra];
diff --git a/lib/my.nix b/lib/my.nix
index 17a7827..03cb37a 100644
--- a/lib/my.nix
+++ b/lib/my.nix
@@ -124,7 +124,7 @@ with lib;
             azahi = "azahi.cc";
             rohan = "rohan.net";
             gondor = "gondor.net";
-            shire = "shire.me";
+            shire = "shire.net";
           };
           email = "frodo@${my.domain.gondor}";
           pgp = {
diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix
index 2dbe53f..c89fba5 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/common/emacs/default.nix
@@ -69,7 +69,6 @@ in {
                   json-language-server # :lang (json +lsp)
                   libtool # :term vterm
                   nix-language-server # :lang (nix +lsp)
-                  nixfmt # :lang nix :editor format
                   nodePackages.eslint # :lang (json +lsp)
                   nodePackages.js-beautify # :lang web
                   nodePackages.prettier # :editor format
@@ -127,13 +126,11 @@ in {
               (appendq! auth-sources '("${config.secrets.authinfo.path}"))
 
               ;; Font must be set to N+2 because otherwise it looks too small.
-              (setq doom-font (font-spec :family "${config.fontScheme.monospaceFont.family}"
-                                          :size ${toString (config.fontScheme.monospaceFont.size + 2)})
+              (setq doom-font (font-spec
+                                :family "${config.fontScheme.monospaceFont.family}"
+                                :size ${toString (config.fontScheme.monospaceFont.size + 2)})
                     doom-unicode-font doom-font)
 
-              (setq user-full-name "${my.fullname}"
-                    user-mail-address "${my.email}")
-
               ;; :app irc
               (setq circe-default-nick "${my.username}"
                     circe-default-realname "${my.email}"
@@ -147,6 +144,36 @@ in {
 
               ;; :input japanese
               (setq skk-large-jisyo "${pkgs.skk-dicts}/share/skk/SKK-JISYO.L")
+
+              ;; :lang nix
+              (setq nix-nixfmt-bin "${pkgs.writeShellScript "nixfmt" ''
+                ${pkgs.alejandra}/bin/alejandra --quiet "$@"
+              ''}")
+            '')
+            (with config.hm.accounts.email; let
+              mu4eAccounts = let
+                muAccounts = filter (a: a.mu.enable) (attrValues accounts);
+              in
+                concatMapStringsSep "\n" (a:
+                  with a; let
+                    personalAddresses = concatMapStringsSep " " (v: ''"${v}"'') aliases;
+                  in ''
+                    (set-email-account! "${name}"
+                      '((user-full-name        . "${realName}")
+                        (user-mail-address     . "${address}")
+                        (mu4e-inbox-folder     . "/${name}/${folders.inbox}")
+                        (mu4e-sent-folder      . "/${name}/${folders.sent}")
+                        (mu4e-drafts-folder    . "/${name}/${folders.drafts}")
+                        (mu4e-trash-folder     . "/${name}/${folders.trash}")
+                        (mu4e-refile-folder    . "/${name}/Archive")
+                        (+mu4e-personal-addresses (list ${personalAddresses})))
+                      t)
+                  '')
+                muAccounts;
+            in ''
+              (setq mu4e-root-maildir "${maildirBasePath}")
+
+              ${mu4eAccounts}
             '')
             (builtins.readFile ./doom/config.el)
           ];
@@ -160,7 +187,7 @@ in {
             fi
 
             if [[ ! -d "$DOOMDIR" ]]; then
-              mkdir -p "$DOOMDIR"
+              mkdir -p "$DOOMDIR/snippets"
             fi
 
             if [[ -x "$EMACSDIR/bin/doom" ]]; then
diff --git a/modules/common/emacs/doom/config.el b/modules/common/emacs/doom/config.el
index 502ca27..4863792 100644
--- a/modules/common/emacs/doom/config.el
+++ b/modules/common/emacs/doom/config.el
@@ -84,8 +84,6 @@
 ;;; Nix
 ;;
 
-(setq nix-nixfmt-bin "alejandra")
-
 (after! lsp-mode
   (add-to-list 'lsp-language-id-configuration '(nix-mode . "nix"))
   (lsp-register-client
@@ -100,9 +98,9 @@
 (add-hook! 'yaml-mode-hook
   (defun +disable-flycheck-for-yaml-helm-templates ()
     (when (and buffer-file-name
-              (string-match-p "/templates/" buffer-file-name)
-              (or (string-suffix-p ".yaml" buffer-file-name)
-                  (string-suffix-p ".yml" buffer-file-name)))
+               (string-match-p "/templates/" buffer-file-name)
+               (or (string-suffix-p ".yaml" buffer-file-name)
+                   (string-suffix-p ".yml" buffer-file-name)))
       (remove-hook! 'yaml-mode-local-vars-hook #'lsp!)
       (pushnew! flycheck-disabled-checkers 'yaml-jsyaml 'yaml-ruby 'yaml-yamllint))))
 
@@ -126,66 +124,42 @@
 (setq mu4e-root-maildir "~/mail"
       mu4e-context-policy 'ask-if-none
       mu4e-compose-context-policy 'always-ask
-      mu4e-compose--org-msg-toggle-next nil
       mu4e-update-interval 60
       sendmail-program (executable-find "msmtp")
-      send-mail-function #'smtpmail-send-it
-      message-sendmail-f-is-evil t
-      message-sendmail-extra-arguments '("--read-envelope-from")
+      send-mail-function #'message-send-mail-with-sendmail
       message-send-mail-function #'message-send-mail-with-sendmail
-      +mu4e-personal-addresses (list "frodo@gondor.net"
-                                     "frodo@rohan.net"
-                                     "azahi@shire.me"
-                                     "admin@shire.me"
-                                     "ceo@shire.me"
-                                     "a.gondor@yahoo.com"
-                                     "a.gondor@yahoo.com"))
-
-(set-email-account! "shire"
-                    '((mu4e-drafts-folder . "/shire/Drafts")
-                      (mu4e-refile-folder . "/shire/Archive")
-                      (mu4e-sent-folder   . "/shire/Sent")
-                      (mu4e-trash-folder  . "/shire/Trash")
-                      (smtpmail-smtp-user . "azahi"))
-                    t)
-
-(set-email-account! "yahoo"
-                    '((mu4e-sent-folder   . "/yahoo/Sent")
-                      (mu4e-drafts-folder . "/yahoo/Drafts")
-                      (mu4e-trash-folder  . "/yahoo/Trash")
-                      (mu4e-refile-folder . "/yahoo/Archive")
-                      (smtpmail-smtp-user . "a.gondor"))
-                    t)
-
-(setq +mu4e-compose-org-msg-toggle-next nil)
+      message-sendmail-envelope-from 'header
+      message-sendmail-extra-arguments '("--read-envelope-from")
+      message-sendmail-f-is-evil t
+      message-kill-buffer-on-exit t)
 
 ;;
 ;;; Circe
 ;;
 
 (defun nixfiles/irc-bouncer-password-f (&rest _)
-  (+pass-get-secret "server/soju.manwe.shire.me/azahi"))
+  (+pass-get-secret "server/soju.manwe.shire.net/azahi"))
 
 (set-irc-server! "libera"
-  `(:host "shire.me"
+  `(:host "shire.net"
     :port 6667
     :user "azahi/libera"
     :pass nixfiles/irc-bouncer-password-f))
 
 (set-irc-server! "oftc"
-  `(:host "shire.me"
+  `(:host "shire.net"
     :port 6667
     :user "azahi/oftc"
     :pass nixfiles/irc-bouncer-password-f))
 
 (set-irc-server! "hackint"
-  `(:host "shire.me"
+  `(:host "shire.net"
     :port 6667
     :user "azahi/hackint"
     :pass nixfiles/irc-bouncer-password-f))
 
 (set-irc-server! "rizon"
-  `(:host "shire.me"
+  `(:host "shire.net"
     :port 6667
     :user "azahi/rizon"
     :pass nixfiles/irc-bouncer-password-f))
@@ -212,14 +186,14 @@
 ;;   :init
 ;;   (setq hledger-input-buffer-height 20))
 
-;; (use-package! kubernetes
-;;   :defer t
-;;   :commands (kubernetes-overview)
-;;   :init (setq kubernetes-poll-frequency 3600
-;;               kubernetes-redraw-frequency 3600))
+(use-package! kubernetes
+  :defer t
+  :commands (kubernetes-overview)
+  :init (setq kubernetes-poll-frequency 3600
+              kubernetes-redraw-frequency 3600))
 
-;; (use-package! kubernetes-evil
-;;   :after kubernetes-overview)
+(use-package! kubernetes-evil
+  :after kubernetes-overview)
 
-;; (use-package! kubernetes-tramp
-;;   :defer t)
+(use-package! kubernetes-tramp
+  :defer t)
diff --git a/modules/common/emacs/doom/packages.el b/modules/common/emacs/doom/packages.el
index 298a203..5df21b6 100644
--- a/modules/common/emacs/doom/packages.el
+++ b/modules/common/emacs/doom/packages.el
@@ -12,6 +12,6 @@
 
 ;; (package! hledger-mode)
 
-;; (package! kubernetes)
-;; (package! kubernetes-evil)
-;; (package! kubernetes-tramp)
+(package! kubernetes)
+(package! kubernetes-evil)
+(package! kubernetes-tramp)
diff --git a/modules/common/profiles/headful.nix b/modules/common/profiles/headful.nix
index 809605c..f2f2487 100644
--- a/modules/common/profiles/headful.nix
+++ b/modules/common/profiles/headful.nix
@@ -57,14 +57,23 @@ in {
                 };
                 msmtp.enable = true;
                 mu.enable = true;
+                thunderbird = {
+                  enable = pkgs.stdenv.isLinux;
+                  settings = id: {
+                    "mail.identity.id_${id}.compose_html" = false;
+                    "mail.identity.id_${id}.reply_on_top" = 0;
+                  };
+                };
               }
               attrs
             ];
 
-          pass = path: "${pkgs.pass}/bin/pass show ${path}";
-        in {
-          shire = mkAccount {
+          pass = path: "${config.hm.programs.password-store.package}/bin/pass show ${path}";
+        in rec {
+          shire = mkAccount rec {
             address = my.email;
+            aliases = [address "frodo@rohan.net" "azahi@shire.net"];
+            realName = my.fullname;
             gpg = {
               inherit (my.pgp) key;
               signByDefault = true;
@@ -73,19 +82,28 @@ in {
 
             primary = true;
 
-            imap.host = "shire.me";
-            smtp.host = "shire.me";
-            userName = "azahi@shire.me";
-            passwordCommand = pass "email/shire.me/azahi";
+            imap = {
+              host = "shire.net";
+              port = 993;
+              tls.enable = true;
+            };
+            smtp = {
+              host = "shire.net";
+              port = 587;
+              tls.enable = true;
+            };
+            userName = "azahi@shire.net";
+            passwordCommand = pass "email/shire.net/azahi";
           };
 
-          yahoo = mkAccount {
-            address = "a.gondor@yahoo.com";
+          yahoo = mkAccount rec {
+            address = "admin@yahoo.com";
+            aliases = [address "admin@yahoo.com"];
+            realName = "Багавиев Азат";
 
-            imap.host = "imap.yahoo.com";
-            smtp.host = "smtp.yahoo.com";
-            userName = "a.gondor@yahoo.com";
-            passwordCommand = pass "email/yahoo.com/a.gondor";
+            flavor = "yahoo.com";
+            userName = "admin@yahoo.com";
+            passwordCommand = pass "email/yahoo.com/admin";
           };
         };
       };
diff --git a/modules/nixos/beets.nix b/modules/nixos/beets.nix
index 83cbff1..7a380cc 100644
--- a/modules/nixos/beets.nix
+++ b/modules/nixos/beets.nix
@@ -13,7 +13,15 @@ in {
     hm = let
       beetsdir = "${config.dirs.data}/beets";
     in {
-      home.sessionVariables.BEETSDIR = beetsdir;
+      home = {
+        activation.initialiseBeets = ''
+          if [[ ! -d "${beetsdir}" ]]; then
+            mkdir -p ${beetsdir}
+          fi
+        '';
+
+        sessionVariables.BEETSDIR = beetsdir;
+      };
 
       programs = {
         beets = {
@@ -22,7 +30,16 @@ in {
           settings = {
             library = "${beetsdir}/library.db";
             directory = config.userDirs.music;
-            plugins = "badfiles edit fetchart info mbsync scrub";
+            plugins = concatStringsSep " " [
+              "badfiles"
+              "edit"
+              "fetchart"
+              "info"
+              "mbsync"
+              "mpdupdate"
+              "scrub"
+              "zero"
+            ];
             original_date = true;
             import = {
               write = true;
@@ -61,8 +78,17 @@ in {
               cautious = true;
               cover_names = "cover Cover folder Folder art Art album Album front Front";
               sources = "filesystem coverart itunes amazon albumart wikipedia";
+              high_resolution = true;
             };
             scrub.auto = true;
+            zero = {
+              fields = "comments genre";
+              update_database = true;
+            };
+            mpd = {
+              host = "127.0.0.1";
+              port = 6600;
+            };
           };
         };
 
diff --git a/modules/nixos/firefox/default.nix b/modules/nixos/firefox/default.nix
index 7038773..4f16767 100644
--- a/modules/nixos/firefox/default.nix
+++ b/modules/nixos/firefox/default.nix
@@ -239,6 +239,7 @@ in {
             "browser.newtabpage.activity-stream.feeds.topsites" = false;
             "browser.newtabpage.introShown" = true;
             "browser.onboarding.enabled" = false;
+            "browser.search.region" = "US";
             "browser.search.update" = false;
             "browser.startup.homepage_welcome_url" = "";
             "browser.startup.homepage_welcome_url.additional" = "";
diff --git a/modules/nixos/grafana.nix b/modules/nixos/grafana.nix
index 0b2e210..e8630c4 100644
--- a/modules/nixos/grafana.nix
+++ b/modules/nixos/grafana.nix
@@ -87,7 +87,7 @@ in {
             };
             smtp = {
               enable = true;
-              user = "azahi@shire.me";
+              user = "azahi@shire.net";
               host = my.domain.shire;
               password = "$__file{${config.secrets.grafana-smtp-password.path}}";
             };
diff --git a/modules/nixos/kde.nix b/modules/nixos/kde.nix
index 66fabbd..a430294 100644
--- a/modules/nixos/kde.nix
+++ b/modules/nixos/kde.nix
@@ -30,6 +30,7 @@ in {
         enable = true;
         excludePackages = with pkgs.plasma5Packages; [
           elisa
+          gwenview
           khelpcenter
           okular
           print-manager
diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix
index 67bec29..6b19595 100644
--- a/modules/nixos/profiles/headful.nix
+++ b/modules/nixos/profiles/headful.nix
@@ -28,7 +28,38 @@ in {
         tor-browser
       ];
 
-      programs.bash.shellAliases.open = "${pkgs.xdg-utils}/bin/xdg-open";
+      programs = {
+        bash.shellAliases.open = "${pkgs.xdg-utils}/bin/xdg-open";
+
+        thunderbird = {
+          enable = true;
+          profiles.default.isDefault = true;
+          settings = {
+            "app.update.auto" = false;
+            "browser.search.region" = "US";
+            "browser.search.update" = false;
+            "datareporting.healthreport.uploadEnabled" = false;
+            "full-screen-api.warning.delay" = 0;
+            "full-screen-api.warning.timeout" = 0;
+            "general.autoScroll" = true;
+            "general.smoothScroll" = true;
+            "mail.default_send_format" = 0;
+            "mail.tabs.drawInTitlebar" =
+              if config.nixfiles.modules.kde.enable
+              then 1
+              else 0;
+            "mailnews.start_page.url" = "about:blank";
+            "media.autoplay.blocking_policy" = 2;
+            "media.autoplay.default" = 5;
+            "media.autoplay.enabled" = false;
+            "media.hardwaremediakeys.enabled" = false;
+            "network.cookie.cookieBehavior" = 2;
+            "places.history.enabled" = false;
+            "reader.parse-on-load.enabled" = false;
+            "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
+          };
+        };
+      };
     };
 
     boot = {
diff --git a/nixosConfigurations/eonwe/default.nix b/nixosConfigurations/eonwe/default.nix
index f66478d..3476e6d 100644
--- a/nixosConfigurations/eonwe/default.nix
+++ b/nixosConfigurations/eonwe/default.nix
@@ -21,7 +21,7 @@ with lib; {
     };
     android.enable = true;
     bluetooth.enable = true;
-    discord.enable = true;
+    beets.enable = true;
     libvirtd.enable = true;
     qutebrowser.enable = true;
     mpd.enable = true;
@@ -31,6 +31,8 @@ with lib; {
     home.packages = with pkgs; [obs-studio];
 
     programs = {
+      beets.settings.directory = mkForce "/mnt/udata/music";
+
       # NOTE This produces very poor performance even though RX 6750 XT should
       # handle VA-API hardware decoding for all major formats (including AV1) just
       # fine.
@@ -43,6 +45,25 @@ with lib; {
         profile = "gpu-hq";
       };
     };
+
+    services.mpd.musicDirectory = mkForce "/mnt/udata/music";
+  };
+
+  services = {
+    smartd = {
+      enable = true;
+      notifications = {
+        test = true;
+        mail = {
+          # TODO
+        };
+      };
+    };
+
+    # nullmailer = {
+    #   enable = true;
+    #   me = config.networking.fqdn;
+    # };
   };
 
   # Usually stuff that is going to be compiled on this machine is going to have
@@ -74,7 +95,7 @@ with lib; {
     # The boot drive is Samsung SSD 980 PRO 2TB.
     initrd.kernelModules = ["nvme"];
 
-    zfs.extraPools = ["vdata"];
+    zfs.extraPools = ["udata" "vdata"];
   };
 
   # Filesystem creation:
diff --git a/nixosConfigurations/manwe/mailserver.nix b/nixosConfigurations/manwe/mailserver.nix
index a4b552a..f6f8d91 100644
--- a/nixosConfigurations/manwe/mailserver.nix
+++ b/nixosConfigurations/manwe/mailserver.nix
@@ -26,8 +26,8 @@ with lib; {
       owner = "opendkim";
       group = "opendkim";
     };
-    dkim-key-shire-me = {
-      file = "${inputs.self}/secrets/dkim-key-shire-me";
+    dkim-key-shire-net = {
+      file = "${inputs.self}/secrets/dkim-key-shire-net";
       path = "/var/dkim/${my.domain.shire}.${config.mailserver.dkimSelector}.key";
       owner = "opendkim";
       group = "opendkim";
@@ -70,14 +70,6 @@ with lib; {
         aliases = ["chad@${shire}"];
         quota = "1G";
       };
-      "pippin@${shire}" = {
-        hashedPassword = "@HASHED_PASSWORD@";
-        quota = "1G";
-      };
-      "meriadoc@${shire}" = {
-        hashedPassword = "@HASHED_PASSWORD@";
-        quota = "1G";
-      };
     };
   };
 

Consider giving Nix/NixOS a try! <3