From 939278b970e24683f2fe7cd59ba8a57eb5f9f381 Mon Sep 17 00:00:00 2001 From: colin Date: Mon, 24 Oct 2022 06:42:51 -0700 Subject: [PATCH] home: migrate Element directory to private storage --- modules/universal/home-manager/default.nix | 40 ++++++++++++++-------- modules/universal/home-packages.nix | 2 +- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/modules/universal/home-manager/default.nix b/modules/universal/home-manager/default.nix index f38e65bf..981dd2fa 100644 --- a/modules/universal/home-manager/default.nix +++ b/modules/universal/home-manager/default.nix @@ -10,10 +10,10 @@ with lib; let cfg = config.sane.home-manager; # extract package from `extraPackages` - pkglist = pkgspec: builtins.map (e: e.pkg or e) pkgspec; + pkg-list = pkgspec: builtins.map (e: e.pkg or e) pkgspec; # extract `dir` from `extraPackages` - dirlist = pkgspec: builtins.concatLists (builtins.map (e: if e ? "dir" then [ e.dir ] else []) pkgspec); - # TODO: dirlist and persistfileslist should be folded + dir-list = pkgspec: builtins.concatLists (builtins.map (e: if e ? "dir" then [ e.dir ] else []) pkgspec); + private-list = pkgspec: builtins.concatLists (builtins.map (e: if e ? "private" then [ e.private ] else []) pkgspec); feeds = import ./feeds.nix { inherit lib; }; in { @@ -64,7 +64,7 @@ in "Music" "Pictures" "Videos" - ] ++ (dirlist cfg.extraPackages); + ] ++ (dir-list cfg.extraPackages); home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; @@ -78,7 +78,7 @@ in manual.html.enable = false; # TODO: set to true later (build failure) manual.manpages.enable = false; # TODO: enable after https://github.com/nix-community/home-manager/issues/3344 - home.packages = pkglist cfg.extraPackages; + home.packages = pkg-list cfg.extraPackages; wayland.windowManager = cfg.windowManager; home.stateVersion = "21.11"; @@ -93,9 +93,27 @@ in }; }; - # ssh key is stored in private storage - home.file.".ssh/id_ed25519".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/private/.ssh/id_ed25519"; - home.file.".ssh/id_ed25519.pub".text = (import ../pubkeys.nix)."${sysconfig.networking.hostName}"; + + home.file = let + privates = builtins.listToAttrs ( + builtins.map (path: { + name = path; + value = { source = config.lib.file.mkOutOfStoreSymlink "/home/colin/private/${path}"; }; + }) + (private-list cfg.extraPackages) + ); + in { + # ssh key is stored in private storage + ".ssh/id_ed25519".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/private/.ssh/id_ed25519"; + ".ssh/id_ed25519.pub".text = (import ../pubkeys.nix)."${sysconfig.networking.hostName}"; + + # convenience + "knowledge".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/dev/knowledge"; + "nixos".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/dev/nixos"; + "Videos/servo".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/Videos"; + "Videos/servo-incomplete".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/incomplete"; + "Music/servo".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/Music"; + } // privates; # XDG defines things like ~/Desktop, ~/Downloads, etc. # these clutter the home, so i mostly don't use them. @@ -147,12 +165,6 @@ in "audio/x-vorbis+ogg" = [ audio ]; }; - # convenience - home.file."knowledge".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/dev/knowledge"; - home.file."nixos".source = config.lib.file.mkOutOfStoreSymlink "/home/colin/dev/nixos"; - home.file."Videos/servo".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/Videos"; - home.file."Videos/servo-incomplete".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/incomplete"; - home.file."Music/servo".source = config.lib.file.mkOutOfStoreSymlink "/mnt/servo-media/Music"; xdg.configFile."gpodderFeeds.opml".text = with feeds; feedsToOpml feeds.podcasts; diff --git a/modules/universal/home-packages.nix b/modules/universal/home-packages.nix index 7bac1b29..bd0ee880 100644 --- a/modules/universal/home-packages.nix +++ b/modules/universal/home-packages.nix @@ -53,7 +53,7 @@ let electrum # creds/session keys, etc - { pkg = element-desktop; dir = ".config/Element"; } + { pkg = element-desktop; private = ".config/Element"; } emote # TODO: package [smile](https://github.com/mijorus/smile) for probably a better mobile experience. evince # works on phosh