diff --git a/hosts/by-name/desko/default.nix b/hosts/by-name/desko/default.nix index a212dd4c..ef694ae3 100644 --- a/hosts/by-name/desko/default.nix +++ b/hosts/by-name/desko/default.nix @@ -14,6 +14,8 @@ sane.gui.sway.enable = true; + sane.programs.guiApps.suggestedPrograms = [ "desktopGuiApps" ]; + boot.loader.efi.canTouchEfiVariables = false; sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ]; diff --git a/hosts/by-name/lappy/default.nix b/hosts/by-name/lappy/default.nix index c0e71e8a..9d618455 100644 --- a/hosts/by-name/lappy/default.nix +++ b/hosts/by-name/lappy/default.nix @@ -15,6 +15,8 @@ boot.loader.efi.canTouchEfiVariables = false; sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ]; + sane.programs.guiApps.suggestedPrograms = [ "desktopGuiApps" ]; + sops.secrets.colin-passwd = { sopsFile = ../../../secrets/lappy.yaml; neededForUsers = true; diff --git a/hosts/common/programs.nix b/hosts/common/programs.nix index a1aebfdf..a1dae05a 100644 --- a/hosts/common/programs.nix +++ b/hosts/common/programs.nix @@ -4,11 +4,23 @@ let inherit (builtins) attrNames concatLists; inherit (lib) mapAttrs mapAttrsToList mkDefault mkMerge optional; + flattenedPkgs = pkgs // (with pkgs; { + # XXX can't `inherit` a nested attr, so we move them to the toplevel + "cacert.unbundled" = pkgs.cacert.unbundled; + "gnome.cheese" = gnome.cheese; + "gnome.dconf-editor" = gnome.dconf-editor; + "gnome.file-roller" = gnome.file-roller; + "gnome.gnome-disk-utility" = gnome.gnome-disk-utility; + "gnome.gnome-maps" = gnome.gnome-maps; + "gnome.nautilus" = gnome.nautilus; + "gnome.gnome-system-monitor" = gnome.gnome-system-monitor; + "gnome.gnome-terminal" = gnome.gnome-terminal; + "gnome.gnome-weather" = gnome.gnome-weather; + "libsForQt5.plasmatube" = libsForQt5.plasmatube; + }); + sysadminPkgs = { - inherit (pkgs // { - # XXX can't `inherit` a nested attr, so we move them to the toplevel - "cacert.unbundled" = pkgs.cacert.unbundled; - }) + inherit (flattenedPkgs) btrfs-progs "cacert.unbundled" # some services require unbundled /etc/ssl/certs cryptsetup @@ -55,6 +67,7 @@ let # - transcoders (ffmpeg, imagemagick) only wanted on desko/lappy consolePkgs = { inherit (pkgs) + aerc # email client # backblaze-b2 # TODO: put into the same package set as duplicity cdrtools dmidecode @@ -102,41 +115,22 @@ let visidata w3m wireguard-tools + xdg-utils # for xdg-open # youtube-dl yt-dlp ; }; guiPkgs = { - inherit (pkgs // (with pkgs; { - # XXX can't `inherit` a nested attr, so we move them to the toplevel - # TODO: could use some "flatten attrs" helper instead - "gnome.cheese" = gnome.cheese; - "gnome.dconf-editor" = gnome.dconf-editor; - "gnome.file-roller" = gnome.file-roller; - "gnome.gnome-disk-utility" = gnome.gnome-disk-utility; - "gnome.gnome-maps" = gnome.gnome-maps; - "gnome.nautilus" = gnome.nautilus; - "gnome.gnome-system-monitor" = gnome.gnome-system-monitor; - "gnome.gnome-terminal" = gnome.gnome-terminal; - "gnome.gnome-weather" = gnome.gnome-weather; - "libsForQt5.plasmatube" = libsForQt5.plasmatube; - })) - aerc # email client - audacity + inherit (flattenedPkgs) celluloid # mpv frontend - chromium clinfo - dino - electrum - element-desktop emote evince # works on phosh # { pkg = fluffychat-moby; dir = [ ".local/share/chat.fluffy.fluffychat" ]; } # TODO: ship normal fluffychat on non-moby? - foliate # e-book reader - font-manager + # foliate # e-book reader # XXX by default fractal stores its state in ~/.local/share/. # after logging in, manually change ~/.local/share/keyrings/... to point it to some predictable subdir. @@ -144,14 +138,11 @@ let # { pkg = fractal-latest; private = [ ".local/share/fractal" ]; } # { pkg = fractal-next; private = [ ".local/share/fractal" ]; } - gajim # XMPP client - gimp # broken on phosh - "gnome.cheese" + # "gnome.cheese" "gnome.dconf-editor" gnome-feeds # RSS reader (with claimed mobile support) "gnome.file-roller" - "gnome.gnome-disk-utility" - "gnome.gnome-maps" # works on phosh + # "gnome.gnome-maps" # works on phosh "gnome.nautilus" # gnome-podcasts "gnome.gnome-system-monitor" @@ -159,21 +150,15 @@ let "gnome.gnome-weather" gpodder-configured gthumb - inkscape - kdenlive - kid3 # audio tagging - krita - libreoffice-fresh # XXX colin: maybe don't want this on mobile - lollypop + # lollypop mpv networkmanagerapplet - newsflash + # newsflash nheko - obsidian pavucontrol # picard # music tagging playerctl - "libsForQt5.plasmatube" # Youtube player + # "libsForQt5.plasmatube" # Youtube player soundconverter # sublime music persists any downloaded albums here. # it doesn't obey a conventional ~/Music/{Artist}/{Album}/{Track} notation, so no symlinking @@ -181,15 +166,33 @@ let # possible to pass config as a CLI arg (sublime-music -c config.json) # { pkg = sublime-music; dir = [ ".local/share/sublime-music" ]; } sublime-music-mobile - tdesktop # broken on phosh - tokodon + # tdesktop # broken on phosh + # tokodon vlc # pleroma client (Electron). input is broken on phosh. TODO(2023/02/02): fix electron19 input (insecure) # whalebird - xdg-utils # for xdg-open xterm # broken on phosh ; }; + desktopGuiPkgs = { + inherit (flattenedPkgs) + audacity + chromium + dino + electrum + element-desktop + font-manager + gajim # XMPP client + gimp # broken on phosh + "gnome.gnome-disk-utility" + inkscape + kdenlive + kid3 # audio tagging + krita + libreoffice-fresh # XXX colin: maybe don't want this on mobile + obsidian + ; + }; x86GuiPkgs = { inherit (pkgs) discord @@ -224,6 +227,7 @@ in (declarePkgs sysadminPkgs) (declarePkgs consolePkgs) (declarePkgs guiPkgs) + (declarePkgs desktopGuiPkgs) (declarePkgs x86GuiPkgs) { # link the various package sets into their own meta packages @@ -240,6 +244,10 @@ in suggestedPrograms = (attrNames guiPkgs) ++ optional (pkgs.system == "x86_64-linux") "x86GuiApps"; }; + desktopGuiApps = { + package = null; + suggestedPrograms = attrNames desktopGuiPkgs; + }; x86GuiApps = { package = null; suggestedPrograms = attrNames x86GuiPkgs;