summary refs log tree commit diff stats
path: root/user/settings
diff options
context:
space:
mode:
Diffstat (limited to 'user/settings')
-rw-r--r--user/settings/base.nix13
-rw-r--r--user/settings/development/base.nix16
-rw-r--r--user/settings/development/golang.nix9
-rw-r--r--user/settings/development/javascript.nix4
-rw-r--r--user/settings/development/web.nix81
-rw-r--r--user/settings/emacs.nix44
-rw-r--r--user/settings/fish/functions/dired.fish2
-rw-r--r--user/settings/fish/functions/magit.fish2
-rw-r--r--user/settings/fish/functions/newest.fish10
-rw-r--r--user/settings/fish/functions/oldest.fish10
-rw-r--r--user/settings/git.nix5
-rw-r--r--user/settings/gnupg.nix16
-rw-r--r--user/settings/i3.nix3
-rw-r--r--user/settings/neovim.nix18
-rw-r--r--user/settings/nix.nix8
-rw-r--r--user/settings/nixos.nix4
-rw-r--r--user/settings/shell.nix7
-rw-r--r--user/settings/ssh.nix4
-rw-r--r--user/settings/tabnine.nix13
-rw-r--r--user/settings/trezor.nix10
-rw-r--r--user/settings/user-interface.nix11
21 files changed, 223 insertions, 67 deletions
diff --git a/user/settings/base.nix b/user/settings/base.nix
index d0c01b87..52cb14ac 100644
--- a/user/settings/base.nix
+++ b/user/settings/base.nix
@@ -25,11 +25,8 @@ args@{ config
     in
     {
       EMAIL = "alan@alanpearce.eu";
-      MANPAGER = "bat -l man -p";
       ABDUCO_SOCKET_DIR = "${state}/abduco";
-      GNUPGHOME = "${data}/gnupg";
       SOLARGRAPH_CACHE = "${cache}/solargraph";
-      ASPELL_CONF = "per-conf ${conf}/aspell/aspell.conf; personal ${conf}/aspell/en.pws; repl ${conf}/aspell/en.prepl; dict-dir ${config.home.profileDirectory}/lib/aspell";
       ELECTRUMDIR = "${data}/electrum";
       DOCKER_CONFIG = "${conf}/docker";
       npm_config_userconfig = "${conf}/npm/config";
@@ -75,7 +72,7 @@ args@{ config
     ];
     config = {
       theme = "ansi";
-      style = "header-filename,header-filesize,grid,rule";
+      style = "header-filename,header-filesize,rule";
     };
   };
   programs.nix-index-database.comma.enable = true;
@@ -102,9 +99,11 @@ args@{ config
       abduco
       dvtm
       walk
-      (aspellWithDicts (d: [ d.en d.en-computers d.en-science d.de ]))
-    ]
-    ++ (
+      nuspell
+    ] ++ (with pkgs.hunspellDicts; [
+      en-gb-large
+      de-de
+    ]) ++ (
       if !stdenv.isDarwin
       then [
         file
diff --git a/user/settings/development/base.nix b/user/settings/development/base.nix
index b1c636ad..5bf54172 100644
--- a/user/settings/development/base.nix
+++ b/user/settings/development/base.nix
@@ -1,5 +1,4 @@
 { config
-, lib
 , pkgs
 , ...
 }:
@@ -20,6 +19,7 @@
 
       mosh
 
+      curlHTTP3
       xh
       htmlq
       jq
@@ -27,7 +27,6 @@
       miller
       watchexec
       entr
-      httping
 
       diffoscopeMinimal
 
@@ -39,11 +38,12 @@
       colima
       docker-client
     ] else [
-      zeal
+      httping
     ]);
 
   home.sessionVariables = {
     FLY_NO_UPDATE_CHECK = "1";
+    MOSH_TITLE_NOPREFIX = "1";
     LIMA_INSTANCE = "nixos";
   };
 
@@ -57,7 +57,10 @@
         insert_final_newline = true;
         indent_style = "space";
         indent_size = 2;
-        tab_width = 4;
+        tab_width = 2;
+      };
+      "*.fish" = {
+        indent_size = 4;
       };
       justfile = {
         indent_style = "tab";
@@ -75,6 +78,7 @@
     ea = "direnv allow";
     ex = "direnv exec";
     es = "direnv status";
+    curl3 = "${pkgs.curlHTTP3}/bin/curl --http3";
   };
   programs.direnv = {
     enable = true;
@@ -84,6 +88,7 @@
     config = {
       global = {
         disable_stdin = true;
+        load_dotenv = true;
         strict_env = true;
         hide_env_diff = true;
       };
@@ -104,4 +109,7 @@
       }
     '';
   };
+  services.lorri = {
+    enable = pkgs.stdenv.isLinux;
+  };
 }
diff --git a/user/settings/development/golang.nix b/user/settings/development/golang.nix
index 6373a1c4..39baf910 100644
--- a/user/settings/development/golang.nix
+++ b/user/settings/development/golang.nix
@@ -6,12 +6,19 @@
     gogetdoc
     gotools
     golines
+    impl
+    gomodifytags
     golangci-lint
     golangci-lint-langserver
-    nodePackages.prettier-plugin-go-template
+    personal.prettier-plugin-go-template
+  ];
+  home.sessionPath = [
+    "$HOME/go/bin"
   ];
   programs.emacs.extraPackages = epkgs: (with epkgs; [
     go-eldoc
+    go-tag
+    templ-ts-mode
   ]);
   programs.neovim.plugins = with pkgs.vimPlugins; [
     coc-go
diff --git a/user/settings/development/javascript.nix b/user/settings/development/javascript.nix
index 4d196cb4..fa418cc1 100644
--- a/user/settings/development/javascript.nix
+++ b/user/settings/development/javascript.nix
@@ -23,10 +23,6 @@
     };
   };
 
-  programs.emacs.extraPackages = epkgs: (with epkgs; [
-    add-node-modules-path
-  ]);
-
   home.shellAliases = {
     bn = "bun";
     bni = "bun install";
diff --git a/user/settings/development/web.nix b/user/settings/development/web.nix
index 4d26416c..77b3e01d 100644
--- a/user/settings/development/web.nix
+++ b/user/settings/development/web.nix
@@ -1,5 +1,6 @@
 { config
 , pkgs
+, lib
 , ...
 }: {
   home.packages = with pkgs.nodePackages; [
@@ -10,12 +11,90 @@
   ] ++ (with pkgs; [
     flyctl
     prettierd
-    htmlformat
+    personal.htmlformat
+    nodePackages.vercel
   ]);
   home.shellAliases = {
     # 0.2.25 current completion command only affects `flyctl`, although `fly` is a link to `flyctl`
     fly = "flyctl";
   };
+  programs.chromium = lib.mkIf pkgs.stdenv.isLinux {
+    enable = true;
+    package = pkgs.ungoogled-chromium;
+    extensions = [
+      # # uBlock origin
+      { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }
+      {
+        id = "ocaahdebbfolfmndjeplogmgcagdmblk";
+        updateUrl = "https://raw.githubusercontent.com/NeverDecaf/chromium-web-store/master/updates.xml";
+      }
+    ];
+    dictionaries = with pkgs.hunspellDictsChromium; [
+      en-gb
+      de-de
+    ];
+  };
+  programs.firefox = {
+    enable = pkgs.stdenv.isLinux;
+    package = pkgs.firefox-devedition;
+    profiles.dev-edition-default = {
+      search.default = "DuckDuckGo";
+      extensions = with pkgs.nur.repos.rycee.firefox-addons; [
+        a11ycss
+        disable-javascript
+        laboratory-by-mozilla
+        side-view
+        ublock-origin
+      ];
+      settings = {
+        "browser.aboutConfig.showWarning" = false;
+        "browser.theme.content-theme" = 1;
+        "browser.theme.toolbar-theme" = 1;
+        "browser.tabs.firefox-view" = false;
+        "extensions.activeThemeID" = "firefox-compact-light@mozilla.org";
+      };
+    };
+    policies = {
+      AutoFillCreditCardEnabled = false;
+      CaptivePortal = false;
+      Cookies = {
+        Behavior = "reject-foreign";
+      };
+      SanitizeOnShutdown = {
+        Cache = true;
+        Cookies = true;
+        FormData = true;
+      };
+      DisableFirefoxAccounts = true;
+      DisableFirefoxScreenShots = true;
+      DisableFirefoxStudies = true;
+      DisableMasterPasswordCreation = true;
+      DisablePasswordReveal = true;
+      DisablePocket = true;
+      DisableTelemetry = true;
+      DNSOverHTTPS.Enabled = false;
+      DontCheckDefaultBrowser = true;
+      EnableTrackingProtection = true;
+      GoToIntranetSiteForSingleWordEntryInAddressBar = true;
+      Homepage.URL = "http://localhost:7331";
+      NewTabPage = false;
+      NoDefaultBookmarks = true;
+      OfferToSaveLogins = false;
+      OverrideFirstRunPage = "";
+      OverridePostUpdatePage = "";
+      PasswordManagerEnabled = false;
+      PrintingEnabled = false;
+      SearchBar = "separate";
+      ShowHomeButton = true;
+      UserMessaging = {
+        ExtensionRecommendations = false;
+        FeatureRecommendations = false;
+        UrlbarInterventions = false;
+        SkipOnboarding = true;
+        MoreFromMozilla = false;
+      };
+    };
+  };
   programs.emacs.extraPackages = epkgs: (with epkgs; [
     caddyfile-mode
     emmet-mode
diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix
index 785b972c..cc9deab6 100644
--- a/user/settings/emacs.nix
+++ b/user/settings/emacs.nix
@@ -6,8 +6,6 @@
 let
   inherit (pkgs) stdenv;
 
-  nativeCompileDirectory = "${config.xdg.cacheHome}/emacs/native-compile/";
-
   editorScript = pkgs.writeScriptBin "edit" ''
     #!${pkgs.runtimeShell}
     if [ -z "$1" ]; then
@@ -29,6 +27,11 @@ in
     xfuncname = "^(((;;;+ )|\\(|([ \t]+\\(((cl-|el-patch-)?def(un|var|macro|method|custom)|gb/))).*)$";
   };
 
+  services.emacs = lib.mkIf stdenv.isLinux {
+    enable = true;
+    package = config.programs.emacs.finalPackage;
+    client.enable = true;
+  };
   programs.emacs = {
     enable = true;
     package = lib.mkDefault (pkgs.emacs29.override { withGTK3 = true; });
@@ -76,6 +79,7 @@ in
         consult-dir
         consult-ghq
         consult-eglot
+        consult-lsp
         crux
         dired-git-info
         docker-compose-mode
@@ -127,6 +131,7 @@ in
         lsp-mode
         lispyville
         magit
+        magit-todos
         markdown-mode
         marginalia
         nerd-icons
@@ -139,11 +144,16 @@ in
         quickrun
         rainbow-mode
         rainbow-delimiters
+        ssh-deploy
         stimmung-themes
         systemd
         tempel
         tempel-collection
         eglot-tempel
+        treemacs
+        treemacs-evil
+        treemacs-magit
+        treemacs-nerd-icons
         treesit-grammars.with-all-grammars
         treesit-auto
         vc-msg
@@ -163,22 +173,36 @@ in
               --replace-fail '"prettier"' '"prettierd"'
           '';
         });
+      just-mode = self.melpaPackages.just-mode.overrideAttrs (old: {
+        src = pkgs.fetchFromGitHub {
+          owner = "alanpearce";
+          repo = "just-mode.el";
+          rev = "08eb25e0641b4b6d79aa39182c70b9d40c56fc02";
+          sha256 = "13ccphbd95bn79pqbw6ycnfy1z8yd32swrhd1ljl7gwbhi7q6s0p";
+          # date = "2024-05-01T22:22:02+02:00";
+        };
+      });
+      treemacs-nerd-icons = self.melpaPackages.treemacs-nerd-icons.overrideAttrs (old: {
+        src = pkgs.fetchFromGitHub {
+          owner = "aaronmiller";
+          repo = "treemacs-nerd-icons";
+          sha256 = "171pdi5y9zym26iqi02c5p7zw9i7xxhv4csnjb7qlkkczha17jgp";
+          rev = "90b4f0868eea1ea923dee97d2c5457c21a61f37a";
+          # date = "2023-11-02T13:42:55-04:00";
+        };
+      });
       lsp-mode = self.melpaPackages.lsp-mode.overrideAttrs {
-        LSP_USE_PLISTS = "true"; # sync with below
+        LSP_USE_PLISTS = "true"; # must be set in early-init
       };
     };
     extraConfig = ''
-      (setenv "LSP_USE_PLISTS" "true") ; sync with above
       (with-eval-after-load 'editorconfig
-        (setq editorconfig-exec-path "${pkgs.editorconfig-core-c}/bin/editorconfig"))
-      (when (featurep 'native-compile)
-        (setq native-compile-target-directory "${nativeCompileDirectory}")
-        (add-to-list 'native-comp-eln-load-path "${nativeCompileDirectory}" :append))
+        (defvar editorconfig-exec-path "${pkgs.editorconfig-core-c}/bin/editorconfig"))
     '' + lib.optionalString stdenv.isDarwin ''
       (with-eval-after-load 'files
-        (setq insert-directory-program "${pkgs.coreutils-prefixed}/bin/gls"))
+        (defvar insert-directory-program "${pkgs.coreutils-prefixed}/bin/gls"))
       (with-eval-after-load 'dired
-        (setq dired-use-ls-dired t))
+        (defvar dired-use-ls-dired t))
     '';
   };
   home.packages = with pkgs; [
diff --git a/user/settings/fish/functions/dired.fish b/user/settings/fish/functions/dired.fish
index 97174b35..a59ffac2 100644
--- a/user/settings/fish/functions/dired.fish
+++ b/user/settings/fish/functions/dired.fish
@@ -4,5 +4,5 @@ function dired
     else
         set --function repo $pwd
     end
-    emacsclient -e "(magit-status \"$argv[1]\")"
+    emacsclient --suppress-output --eval "(dired \"$argv[1]\")"
 end
diff --git a/user/settings/fish/functions/magit.fish b/user/settings/fish/functions/magit.fish
index 048fd42f..96c90096 100644
--- a/user/settings/fish/functions/magit.fish
+++ b/user/settings/fish/functions/magit.fish
@@ -4,5 +4,5 @@ function magit
     else
         set --function repo $pwd
     end
-    emacsclient -e "(magit-status \"$argv[1]\")"
+    emacsclient --suppress-output --eval "(magit-status \"$argv[1]\")"
 end
diff --git a/user/settings/fish/functions/newest.fish b/user/settings/fish/functions/newest.fish
index 73e26dcc..3f2fa66f 100644
--- a/user/settings/fish/functions/newest.fish
+++ b/user/settings/fish/functions/newest.fish
@@ -4,9 +4,11 @@ function newest
         return 1
     end
     for arg in $argv
-        fd --hidden --print0 --max-depth 1 . $arg |
-            bfs -files0-from - \( -name .git -prune \) -o \( -printf '%TY%Tm%Td%TR %TF %h/%f\n' \) |
-            sort --reverse --key 1n,1 | head --lines 1 |
-            cut -d ' ' -f 2,3
+        if test -d $arg
+            fd --hidden --print0 --max-depth 1 . $arg |
+                bfs -files0-from - \( -name .git -prune \) -o \( -printf '%TY%Tm%Td%TH%TM %TF %h/%f\n' \) |
+                sort --key 1nr,1 | head --lines 1 |
+                cut -d ' ' -f 2,3
+        end
     end
 end
diff --git a/user/settings/fish/functions/oldest.fish b/user/settings/fish/functions/oldest.fish
index 66aad720..140d74cc 100644
--- a/user/settings/fish/functions/oldest.fish
+++ b/user/settings/fish/functions/oldest.fish
@@ -4,9 +4,11 @@ function oldest
         return 1
     end
     for arg in $argv
-        fd --hidden --print0 --max-depth 1 . $arg |
-            bfs -files0-from - \( -name .git -prune \) -o \( -printf '%TY%Tm%Td%TR %TF %h/%f\n' \) |
-            sort --key 1n,1 | head --lines 1 |
-            cut -d ' ' -f 2,3
+        if test -d $arg
+            fd --hidden --print0 --max-depth 1 . $arg |
+                bfs -files0-from - \( -name .git -prune \) -o \( -printf '%TY%Tm%Td%TH%TM %TF %h/%f\n' \) |
+                sort --key 1n,1 | head --lines 1 |
+                cut -d ' ' -f 2,3
+        end
     end
 end
diff --git a/user/settings/git.nix b/user/settings/git.nix
index 18368864..769b3728 100644
--- a/user/settings/git.nix
+++ b/user/settings/git.nix
@@ -17,6 +17,11 @@
       init = {
         defaultBranch = "main";
       };
+      advice = {
+        addEmptyPathspec = false;
+        detachedHead = false;
+        mergeConflict = false;
+      };
       ghq = {
         root = "${config.home.homeDirectory}/projects";
         user = "alanpearce";
diff --git a/user/settings/gnupg.nix b/user/settings/gnupg.nix
index 913b5d27..d719b618 100644
--- a/user/settings/gnupg.nix
+++ b/user/settings/gnupg.nix
@@ -2,8 +2,18 @@
 , pkgs
 , ...
 }: {
-  home.file.".gnupg" = {
-    recursive = true;
-    source = ../gnupg;
+  programs.gpg = {
+    enable = true;
+    homedir = "${config.xdg.dataHome}/gnupg";
+    settings = {
+      keyserver = "hkps://keys.openpgp.org";
+    };
+  };
+  services.gpg-agent = {
+    enable = true;
+    pinentryPackage = with pkgs;
+      if stdenv.isDarwin
+      then pinentry_mac
+      else pinentry-qt;
   };
 }
diff --git a/user/settings/i3.nix b/user/settings/i3.nix
index 79a7811d..e8951062 100644
--- a/user/settings/i3.nix
+++ b/user/settings/i3.nix
@@ -7,6 +7,9 @@
     recursive = true;
     source = ../i3/i3status;
   };
+  home.sessionVariables = {
+    TERMINAL = "xterm";
+  };
   xsession.windowManager.i3 =
     let
       mod = "Mod4";
diff --git a/user/settings/neovim.nix b/user/settings/neovim.nix
index 315a309b..dcee5fde 100644
--- a/user/settings/neovim.nix
+++ b/user/settings/neovim.nix
@@ -31,16 +31,22 @@
       enable = true;
       settings = {
         "json.enable" = true;
-        "suggest.enablePreview" = true;
-        "coc.preferences.formatOnSaveFiletypes" = [ "nix" ];
-        "nil.formatting.command" = "nixpkgs-fmt";
-        semantictokens = {
-          filetypes = [ "nix" ];
-        };
         languageserver = {
           nix = {
             command = "${pkgs.nil}/bin/nil";
             filetypes = [ "nix" ];
+            rootPatterns = [ "flake.nix" ];
+            settings = {
+              coc.preferences.formatOnSaveFiletypes = [ "nix" ];
+              links.tooltip = true;
+              semanticTokens = {
+                filetypes = [ "nix" ];
+              };
+              nil = {
+                formatting.command = [ "nixpkgs-fmt" ];
+                nix.flake.autoArchive = true;
+              };
+            };
           };
           lua = {
             command = "${pkgs.lua-language-server}/bin/lua-language-server";
diff --git a/user/settings/nix.nix b/user/settings/nix.nix
index b194bb42..66c00daf 100644
--- a/user/settings/nix.nix
+++ b/user/settings/nix.nix
@@ -1,5 +1,6 @@
 { config
 , pkgs
+, lib
 , ...
 }:
 let
@@ -9,15 +10,17 @@ in
   nixpkgs.config = import ../config.nix;
   nix = {
     enable = true;
-    package = pkgs.nix;
+    # needed for "standalone" home-manager, conflicts with module
+    package = lib.mkDefault pkgs.nix;
     settings = {
       use-xdg-base-directories = true;
     };
   };
 
   home.packages = with pkgs; [
+    cached-nix-shell
     nil
-    niv
+    npins
     nix-prefetch-scripts
     nix-init
     nix-update
@@ -27,7 +30,6 @@ in
     nixpkgs-lint
     nixpkgs-review
     nix-output-monitor
-    cachix
   ];
   xdg.configFile."nix-init/config.toml".source = toml.generate "config.toml" {
     maintainers = [ "alanpearce" ];
diff --git a/user/settings/nixos.nix b/user/settings/nixos.nix
index 05b87333..85ea7f72 100644
--- a/user/settings/nixos.nix
+++ b/user/settings/nixos.nix
@@ -6,8 +6,8 @@
 
   home.shellAliases = {
     srb = "nixos-rebuild";
-    rbs = "nixos-rebuild switch";
-    rbb = "nixos-rebuild boot";
+    rbs = "nixos-rebuild switch --fast";
+    rbb = "nixos-rebuild boot --fast";
     rbr = "nixos-rebuild switch --rollback";
   };
 }
diff --git a/user/settings/shell.nix b/user/settings/shell.nix
index 62f68e14..fe2b4690 100644
--- a/user/settings/shell.nix
+++ b/user/settings/shell.nix
@@ -30,7 +30,7 @@ in
       llr = "ll -t";
 
       c = "lk";
-      "c," = "cd $(ghq list -p nixfiles)";
+      "c," = "cd ${config.home.homeDirectory + "/projects/alanpearce.eu/nixfiles"}";
       cg = "cd $(git root)";
       cdg = "cd $(git root)";
 
@@ -125,6 +125,10 @@ in
       hol = "home-manager generations";
       hox = "home-manager expire-generations '-30 days'";
 
+      lw = "lorri watch";
+      lw1 = "lorri watch --once";
+      lwo = "lorri watch --once";
+
       nsh = "nix-shell";
       nb = "nix build";
       nl = "nix log"; # shadows `coreutils.nl`, but I've never used that yet
@@ -144,6 +148,7 @@ in
     };
   };
   home.packages = with pkgs; [
+    babashka
     fzf
     up
   ];
diff --git a/user/settings/ssh.nix b/user/settings/ssh.nix
index f5073c8d..b7c46bba 100644
--- a/user/settings/ssh.nix
+++ b/user/settings/ssh.nix
@@ -12,6 +12,10 @@
     serverAliveInterval = 15;
     extraConfig = ''
       VerifyHostKeyDNS ask
+      CanonicalizeHostname yes
+      CanonicalizeFallbackLocal no
+      CanonicalizeMaxDots 0
+      CanonicalDomains home.arpa hydra-pinecone.ts.net
     '';
     includes = [
       "local.ssh_config"
diff --git a/user/settings/tabnine.nix b/user/settings/tabnine.nix
index 377b8217..9502c68d 100644
--- a/user/settings/tabnine.nix
+++ b/user/settings/tabnine.nix
@@ -21,18 +21,28 @@
       disable_local_when_using_battery = false;
       enable_power_saving_mode = false;
       enable_telemetry = false;
+      exclude_file_masks = true;
       force_local_hub = true;
       generation = 0;
+      guuid = null;
+      gusr.gcgdc = "0000000000000000000000000000000000000000000000000000000000000000";
+      has_git_repos = null;
+      heartbeat_interval_seconds = null;
       hide_deep_information_message = false;
       hide_promotional_message = true;
       hosted_deep_completions_enabled = "Disabled";
       ignore_all_lsp = false;
       inline_suggestions_mode = true;
+      inline_suggestions_mode_clients = null;
+      last_service_level = null;
       line_suggestions = true;
       local_enabled = "Yes";
       local_indexing = null;
       local_model_size = null;
+      manually_selected_model = null;
+      model_hash_override = null;
       num_of_suggestions = 5;
+      omit_prefix_suggestions = null;
       onboarding = {
         model_type = null;
         skipped_login = true;
@@ -40,6 +50,7 @@
       };
       rate_limit_amount = null;
       rate_limit_interval_seconds = null;
+      rlhf = null;
       semantic_status = {
         css = "Enabled";
         dockerfile = "Enabled";
@@ -57,7 +68,9 @@
       tabnine_cloud_certificate_domain = null;
       tabnine_cloud_host = null;
       tabnine_cloud_port = null;
+      tabnine_hub_port = null;
       use_specialized_model_if_available = true;
+      user_understands_that_enabling_tabnine_cloud_sends_code_to_tabnine_servers = false;
     };
     lspConfig.language = {
       typescript = {
diff --git a/user/settings/trezor.nix b/user/settings/trezor.nix
deleted file mode 100644
index 6996d9b0..00000000
--- a/user/settings/trezor.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config
-, pkgs
-, ...
-}: {
-  home.file.".ssh/agent.config" = {
-    text = ''
-      ecdsa-curve-name = ed25519
-    '';
-  };
-}
diff --git a/user/settings/user-interface.nix b/user/settings/user-interface.nix
index 6adf57ff..29de4439 100644
--- a/user/settings/user-interface.nix
+++ b/user/settings/user-interface.nix
@@ -9,9 +9,6 @@ in
   imports = [
     ./kitty.nix
   ];
-  home.sessionVariables = {
-    TERMINAL = "xterm";
-  };
 
   services.ssh-agent = {
     enable = stdenv.hostPlatform.isLinux;
@@ -47,11 +44,15 @@ in
       })
     ]
     ++ lib.optionals (!stdenv.isDarwin) (with pkgs; [
-      logseq
+      logseq # 0.10.9 is insecure, see ../config.nix
       (discord.override { withOpenASAR = true; })
 
+      zeal
       falkon
-      mu
       beeper
+      kdePackages.neochat
+      kdePackages.kleopatra
     ]);
+  services.lorri.enableNotifications = true;
+  services.emacs.startWithUserSession = "graphical";
 }