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
{ 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
];
}Media
{ 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
obs-3d-effect
];
};
}Communications
{ 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
{ 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
{ ... }:
{
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
{ 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
];
}{ 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
{ inputs, config, pkgs, ... }:
with pkgs;
let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper;
unstable = import inputs.nixpkgs-unstable {
system = pkgs.stdenv.hostPlatform.system;
config.allowUnfree = true;
};
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.
{ config, pkgs, ... }:
{
networking.firewall.allowedTCPPorts = [ 8080 ];
services.avahi.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
jq
zip
unzip
pv
tree
android-tools
]);
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
'';
}System CLI tools
{ config, pkgs, ... }:
{
programs.command-not-found.enable = true;
programs.less.enable = true;
programs.mtr.enable = true;
programs.wireshark.enable = true;
environment.systemPackages = (with pkgs; [
vim # haha! yes!
home-manager
jq
zip
unzip
pv
tree
pciutils
usbutils
]);
}Default KDE Application Configuration via Plasma Manager
Linked from
{ 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:
local lines = {}
for _, row in ipairs(tbl) do
table.insert(lines, string.format("%s.\"%s\".\"%s\" = \"%s\"; # %s", row[1], row[2], row[3], row[4], row[5]))
end
return table.concat(lines, "\n")local lines = {}
for _, row in ipairs(tbl) do
table.insert(lines, string.format("programs.plasma.fonts.%s.family = \"%s\";", row[1], row[2]))
table.insert(lines, string.format("programs.plasma.fonts.%s.pointSize = %s;", row[1], row[3]))
table.insert(lines, string.format("programs.plasma.fonts.%s.style = \"%s\";", row[1], row[4]))
end
return table.concat(lines, "\n")