Application Listing
I have this crappy mkNixGlWrapper thing that I wrote a long time ago to ensure that applications installed in home-manager would have nixGL injected in to it if necessary, I wonder how much that is necessary now.
Getting Things Done
nix source: :tangle ~/arroyo-nix/hm/applications-production.nix{ pkgs, lib, ... }: let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; in { home.packages = with pkgs; [ kdePackages.gwenview kdePackages.okular # kdePackages.kamoso libreoffice-qt kdePackages.kteatime zbar (mkNixGLWrapper { name="stellarium"; }) kstars virt-manager libvirt gparted kdePackages.partitionmanager kdePackages.qttools # kdePackages.kontact # kdePackages.kaccounts-integration # kdePackages.akonadi # kdePackages.akonadiconsole # kdePackages.kdepim-runtime # kdePackages.kdepim-addons heroku graphviz # trying ... logseq ]; }
Media
nix source: :tangle ~/arroyo-nix/hm/applications-media.nix{ pkgs, lib, ... }: let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; in { programs.mpv.enable = true; programs.mpv.package = mkNixGLWrapper { name="mpv"; }; home.packages = with pkgs; [ kdePackages.ktorrent (mkNixGLWrapper { name = "calibre"; pkg = (calibre.override { unrarSupport = true; }); }) (mkNixGLWrapper { name="gimp"; }) (mkNixGLWrapper { name="kdenlive"; pkg=kdePackages.kdenlive; }) (mkNixGLWrapper { name="digikam"; }) (mkNixGLWrapper { name="simplescreenrecorder"; }) (mkNixGLWrapper { name="xournalpp"; }) pavucontrol (mkNixGLWrapper { name="vlc"; }) yt-dlp transmission-remote-gtk ]; programs.obs-studio = { enable = true; package = (mkNixGLWrapper { name="obs-studio"; }); plugins = with pkgs.obs-studio-plugins; [ wlrobs obs-backgroundremoval obs-pipewire-audio-capture ]; }; }
Communications
nix source: :tangle ~/arroyo-nix/hm/applications-comms.nix{ pkgs, lib, ... }: let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; in with pkgs; { home.packages = [ (mkNixGLWrapper { name="element-desktop"; }) (mkNixGLWrapper { name="neochat"; pkg=kdePackages.neochat; }) (mkNixGLWrapper { name="nheko"; }) (mkNixGLWrapper { name="discord"; }) (mkNixGLWrapper { name="signal-desktop"; }) (mkNixGLWrapper { name="tokodon"; pkg=kdePackages.tokodon; }) (mkNixGLWrapper { name="zoom-us"; }) # (mkNixGLWrapper { name="tdesktop"; }) # telegram-desktop ]; xdg.mimeApps.defaultApplications = { "x-scheme-handler/signalcaptcha" = ["signal-desktop.desktop"]; "x-scheme-handler/element" = ["element-desktop.desktop"]; "x-scheme-handler/sgnl" = ["signal-desktop.desktop"]; }; home.file.".config/autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop"; home.file.".config/autostart/discord.desktop" = { enable= false; source = "${discord}/share/applications/discord.desktop"; }; home.file.".config/autostart/element-desktop.desktop" = { enable = false; source = "${element-desktop}/share/applications/element-desktop.desktop"; }; }
Tools
nix source: :tangle ~/arroyo-nix/hm/applications-tools.nix{ pkgs, lib, ... }: let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; in { home.file.".config/autostart/yakuake.desktop".source = "${pkgs.kdePackages.yakuake}/share/applications/org.kde.yakuake.desktop"; home.packages = with pkgs; [ kdePackages.ark kdePackages.dolphin kdePackages.filelight kdePackages.konsole kdePackages.yakuake kdePackages.bluedevil kdePackages.plasma-systemmonitor kdePackages.kio-fuse # to mount remote filesystems via FUSE kdePackages.kio-extras #extra protocols support (sftp, fish and more) okteta rclone blender arduino ]; }
htop
nix source: :tangle ~/arroyo-nix/hm/applications-htop.nix{ ... }: { programs.htop = { enable = true; settings = { enable_mouse = true; hide_threads = true; highlight_base_name = true; hide_kernel_threads = 1; hide_userland_threads = 1; column_meters_0 = "LeftCPUs2 Blank Memory Swap PressureStallCPUSome PressureStallIOSome PressureStallMemorySome"; column_meter_modes_0 = "1 2 1 1 2 2 2"; column_meters_1 = "RightCPUs2 Blank Tasks LoadAverage Uptime Systemd DiskIO NetworkIO"; column_meter_modes_1 = "1 2 2 2 2 2 2 2"; }; }; }
Gameing
nix source: :tangle ~/arroyo-nix/hm/applications-gameing.nix :noweb yes{ pkgs, lib, ... }: let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; in with pkgs; { home.packages = with pkgs; [ cataclysm-dda (mkNixGLWrapper { name="moonlight-qt"; }) # (mkNixGLWrapper { name="runelite"; }) # (mkNixGLWrapper { name="ryujinx"; }) # (mkNixGLWrapper { name="yuzu-mainline"; }) (mkNixGLWrapper { name="endless-sky"; }) (pkgs.callPackage ../pkgs/segarally.nix {}) crawlTiles ]; }
nix source: :tangle ~/arroyo-nix/pkgs/segarally.nix{ pkgs, stdenv, lib }: let wrapWine = (pkgs.callPackage ../lib/wrapWine.nix {}); in wrapWine { name = "segarally"; executable = "$HOME/sync/Sega Rally 2 25th Anniversary v1.6.exe"; # tricks = [ "vcrun2010" ]; }
The Rest
nix source: :tangle ~/arroyo-nix/hm/applications.nix :noweb yes{ config, pkgs, ... }: with pkgs; let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper; unstable = import (builtins.getFlake "github:nixos/nixpkgs/nixpkgs-unstable") {}; in { programs.chromium.enable = true; xdg.portal.enable = true; xdg.portal.extraPortals = with pkgs; [ kdePackages.xdg-desktop-portal-kde ]; xdg.portal.config.common.default = [ "kde" ]; xdg.portal.xdgOpenUsePortal = true; xdg.mimeApps.enable = true; home.sessionVariables = { ELECTRON_OZONE_PLATFORM_HINT = "auto"; # Electron should at least try to use Wayland, why is this not the default?? }; home.packages = [ zip unzip bind.dnsutils cmark-gfm file ] ++ [ unstable.jetbrains.idea ]; } # calibre de-drm plugin for kobo # (stdenv.mkDerivation { # name = "calibre_obok_dedrm"; # src = fetchFromGitHub { # # https://github.com/lalmeras/DeDRM_tools/blob/Python3/make_release.py # owner = "lalmeras"; # repo = "DeDRM_tools"; # rev = "07591ff9421d53d0af1683c6100e538b93b17494"; # sha256 = "1m8pia77bqgk3ghkp9nd6zkki71vl29wmdkkziwqw95a8mrfl0js"; # }; # installPhase = '' # export SOURCE_DATE_EPOCH=315532800; # ${python3}/bin/python3 make_release.py Python3 # ''; # })
Note the use of my NixGL wrapper function mkNixGLWrapper.
Some of the things I need are setuid root or otherwise need to be installed in to My NixOS configuration via Arroyo Nixos
I only install these on my laptops.
nix source: :tangle ~/arroyo-nix/nixos/applications.nix{ config, pkgs, ... }: { networking.firewall.allowedTCPPorts = [ 8080 ]; services.avahi.enable = true; programs.adb.enable = true; programs.browserpass.enable = true; programs.chromium.enable = true; programs.command-not-found.enable = true; programs.less.enable = true; programs.mtr.enable = true; programs.wireshark.enable = true; programs.steam.enable = true; programs.kdeconnect.enable = true; # fix cursors etc programs.dconf.enable = true; services.flatpak.enable = true; environment.systemPackages = (with pkgs; [ vim # haha! yes! home-manager ]) ++ (with pkgs; [ jq zip unzip pv tree ]); security.wrappers.plasma-systemmonitor = { source = "${pkgs.kdePackages.plasma-systemmonitor}/bin/plasma-systemmonitor"; capabilities = "cap_net_raw+ep"; owner = "root"; group = "root"; }; # for OBS boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; boot.extraModprobeConfig = '' options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 ''; }
Default KDE Application Configuration via Plasma Manager
nix source: :tangle ~/arroyo-nix/hm/kde-config-applications.nix :noweb tangle{ pkgs, config, ... }: { programs.plasma.krunner = { activateWhenTypingOnDesktop = true; historyBehavior = "enableAutoComplete"; position = "center"; }; programs.plasma.configFile.krunnerrc = { Plugins = { browserhistoryEnabled = "false"; browsertabsEnabled = "false"; }; }; programs.plasma.configFile = { <<table_str(apps_tbl)>> }; <<font_str(font_tbl)>> }
Applications
| file | group | key | value | note |
| dolphinrc | General | FilterBar | true | Ctrl-i bound here by default |
| dolphinrc | General | BrowseThroughArchives | true | Browse in to zip, etc; I use "Extract To" context menu option instead of ark |
| dolphinrc | General | ConfirmClosingMultipleTabs | false | Always fresh Dolphin |
| dolphinrc | General | RememberOpenedTabs | false | Always fresh Dolphin |
| kteatime | Tealist | Tea0 Name | 30s | |
| kteatime | Tealist | Tea0 Time | 30 | |
| kteatime | Tealist | Tea1 Name | 45s | |
| kteatime | Tealist | Tea1 Time | 45 | |
| kteatime | Tealist | Tea2 Name | 60s | |
| kteatime | Tealist | Tea2 Time | 60 | |
| kteatime | Tealist | Tea3 Name | 90s | |
| kteatime | Tealist | Tea3 Time | 90 | |
| kteatime | General | PopupAutoHide | false | |
| kteatime | General | PopupAutoHideTime | 30 | |
| kteatime | General | UsePopup | true | |
| kteatime | General | UseReminder | false | |
| kteatime | General | UseVisualize | true | |
| baloofilerc | Basic Settings | Indexing-Enabled | false |
KDE Font configuration
| type | family | pointSize | style |
| general | Vulf Sans | 10 | normal |
| fixedWidth | Vulf Mono | 10 | italic |
| menu | Vulf Sans | 10 | normal |
| small | Vulf Sans | 8 | normal |
| toolbar | Vulf Sans | 8 | normal |
| windowTitle | Vulf Sans | 8 | normal |
Generated Configuration
See also How I use KDE Plasma (Primarily) with a Keyboard .
Those tables are transformed in to entries in a Nix attrset here:
emacs-lisp source: :var tbl=apps_tbl :exports code :tangle no :noweb-ref table_str(thread-last tbl (mapcar (lambda (it) (apply #'format "%s.\"%s\".\"%s\" = \"%s\"; # %s" it))) (s-join "\n"))
emacs-lisp source: :var tbl=font_tbl :exports code :tangle no :noweb-ref font_str(thread-last tbl (mapcar (pcase-lambda (`(,type ,family ,pointSize ,style)) (s-join "\n" (list (format "programs.plasma.fonts.%s.%s = \"%s\";" type "family" family) (format "programs.plasma.fonts.%s.%s = %s;" type "pointSize" pointSize) (format "programs.plasma.fonts.%s.%s = \"%s\";" type "style" style))))) (s-join "\n"))