config/modules/profiles/desktop/default.nix

517 lines
13 KiB
Nix

{
lib,
pkgs,
config,
...
}:
let
inherit (config.mj) username;
firefox =
if (pkgs.stdenv.hostPlatform.system == "x86_64-linux") then pkgs.firefox-bin else pkgs.firefox;
in
{
imports = [ ../dev ];
config = {
boot = {
loader.systemd-boot.enable = true;
initrd.systemd.enable = true;
supportedFilesystems = [
"exfat"
"ntfs"
"xfs"
];
kernelModules = [ "kvm-intel" ];
};
hardware = {
pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
};
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
programs = {
firefox = {
enable = true;
package = firefox;
};
wireshark = {
enable = true;
package = pkgs.wireshark-qt;
};
};
mj.services.printing.enable = true;
mj.base.users.user.extraGroups = [
"adbusers"
"networkmanager"
"wireshark"
"docker"
];
services = {
fwupd.enable = true;
blueman.enable = true;
udev.packages = [ pkgs.yubikey-personalization ];
acpid.enable = true;
pcscd.enable = true;
gnome.gnome-keyring.enable = true;
openssh.settings.X11Forwarding = true;
logind = {
powerKey = "suspend";
powerKeyLongPress = "poweroff";
lidSwitchExternalPower = "ignore";
};
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
xserver = {
enable = true;
xkb = {
layout = "us,lt";
options = "grp:alt_shift_toggle";
};
desktopManager.xfce.enable = true;
windowManager.awesome.enable = true;
displayManager.lightdm.enable = true;
};
displayManager = {
defaultSession = lib.mkDefault "none+awesome";
autoLogin = {
enable = true;
user = username;
};
};
pipewire.enable = false;
tlp = {
enable = true;
settings = {
START_CHARGE_THRESH_BAT0 = lib.mkDefault 80;
STOP_CHARGE_THRESH_BAT0 = lib.mkDefault 87;
};
};
};
programs = {
adb.enable = true;
slock.enable = true;
nm-applet.enable = true;
command-not-found.enable = false;
};
security.rtkit.enable = true;
networking.networkmanager.enable = true;
# wip put clight-gui to nixpkgs
#services.geoclue2 = {
# enable = true;
# enableWifi = true;
#};
#location.provider = "geoclue2";
virtualisation.docker.enable = true;
environment.systemPackages =
with pkgs;
[
# packages defined here
nicer
tmuxbash
f3 # flight-flash-fraud
iw
rr
gdb
i7z
vlc
sox
mpv
acpi
gimp
josm
qemu
zlib
ninja
xclip
pdftk
putty
scrot
tracy
cmake
(kazam.override {
python3Packages = pkgs.python311Packages;
}) # alternative to gtk-recordMyDesktop
x11vnc
yt-dlp
skopeo
ffmpeg
tinycc
scrcpy
cheese
arandr
pandoc
evince
okular
motion
gthumb
calibre
gparted
scribus
gnumake
libwebp
librsvg
neomutt
picocom
inferno
libheif
mplayer
tcpflow
cppcheck
wasmtime
undocker
nautilus
smplayer
inkscape
chromium
hunspell
tigervnc
rtorrent
bsdgames
xss-lock
valgrind
musl.dev
audacity
graphviz
powertop
librecad
qgis-ltr # qgis gets recompiled, qgis-ltr is cached by hydra
tesseract
trayscale
espeak-ng
man-pages
rox-filer
distrobox
miniupnpc
v4l-utils
#nerdfonts
winetricks
diffoscope
alsa-utils
gcc_latest
shellcheck
borgbackup
efibootmgr
virtualenv
imagemagick
ventoy-full
ghostscript
libva-utils # intel video tests
pavucontrol
google-chrome
wirelesstools
poppler_utils
rkdeveloptool
squashfsTools
nixpkgs-review
joplin-desktop
aspellDicts.en
aspellDicts.lt
libreoffice-qt
graphicsmagick
magic-wormhole
signal-desktop
gnome-calendar
intel-gpu-tools
element-desktop
netsurf-browser
man-pages-posix
git-filter-repo
gnome-calculator
nvtopPackages.amd
age-plugin-yubikey
nvtopPackages.intel
hunspellDicts.en_US
wineWowPackages.full
samsung-unified-linux-driver
xdotool
xorg.xev
xorg.xeyes
xorg.lndir
xorg.xinit
(python3.withPackages (
ps: with ps; [
numpy
ipython
matplotlib
]
))
(texlive.combine {
inherit (texlive)
scheme-medium
dvisvgm
dvipng
wrapfig
amsmath
ulem
hyperref
capt-of
lithuanian
hyphen-lithuanian
;
})
]
++ (with llvmPackages_19; [
clang
lld.dev
llvm.dev
clang-tools
libllvm.dev
libclang.dev
llvm-manpages
clang-manpages
compiler-rt.dev
]);
# https://discourse.nixos.org/t/nixos-rebuild-switch-upgrade-networkmanager-wait-online-service-failure/30746
systemd.services.NetworkManager-wait-online.enable = false;
home-manager.users.${username} =
{ pkgs, config, ... }:
{
imports = [ ./plasma.nix ];
xdg.configFile = {
"awesome/rc.lua".source = ./rc.lua;
"gdb/gdbinit".text = ''
set style address foreground yellow
set style function foreground cyan
set style string foreground magenta
'';
};
programs = {
msmtp.enable = true;
mbsync.enable = true;
neomutt.enable = true;
#notmuch.enable = true;
ghostty = {
enable = true;
installVimSyntax = true;
enableBashIntegration = true;
settings = {
theme = "iTerm2 Default";
command = lib.getExe pkgs.tmuxbash;
window-decoration = false;
gtk-single-instance = true;
font-feature = [
"-calt"
"-liga"
"-dlig"
];
};
};
tmux.extraConfig =
let
cmd = "${pkgs.extract_url}/bin/extract_url";
cfg = pkgs.writeText "urlviewrc" "COMMAND systemd-run --user --collect xdg-open %s";
in
''
bind-key u capture-pane -J \; \
save-buffer /tmp/tmux-buffer \; \
delete-buffer \; \
split-window -l 10 "${cmd} -c ${cfg} /tmp/tmux-buffer"
'';
};
accounts.email = {
maildirBasePath = "Maildir";
accounts.mj = {
primary = true;
userName = "motiejus@jakstys.lt";
address = "motiejus@jakstys.lt";
realName = "Motiejus Jakštys";
passwordCommand = "cat /home/${username}/.mail-appcode";
imap.host = "imap.gmail.com";
smtp.host = "smtp.gmail.com";
mbsync = {
enable = true;
create = "maildir";
patterns = [
"*"
"![Gmail]/All Mail"
];
};
msmtp = {
enable = true;
};
#notmuch = {
# enable = true;
# neomutt.enable = true;
#};
neomutt = {
enable = true;
extraConfig = ''
set index_format="%4C %Z %{%F %H:%M} %-15.15L (%?l?%4l&%4c?) %s"
set mailcap_path = ${pkgs.writeText "mailcaprc" ''
text/html; ${pkgs.elinks}/bin/elinks -dump ; copiousoutput;
application/*; ${pkgs.xdg-utils}/bin/xdg-open %s &> /dev/null &;
image/*; ${pkgs.xdg-utils}/bin/xdg-open %s &> /dev/null &;
''}
auto_view text/html
unset record
set send_charset="utf-8"
macro attach 'V' "<pipe-entry>iconv -c --to-code=UTF8 > ~/.cache/mutt/mail.html<enter><shell-escape>firefox ~/.cache/mutt/mail.html<enter>"
macro index,pager \cb "<pipe-message> env BROWSER=firefox urlscan<Enter>" "call urlscan to extract URLs out of a message"
macro attach,compose \cb "<pipe-entry> env BROWSER=firefox urlscan<Enter>" "call urlscan to extract URLs out of a message"
set sort_browser=date
set sort=reverse-threads
set sort_aux=last-date-received
bind pager g top
bind pager G bottom
bind attach,index g first-entry
bind attach,index G last-entry
bind attach,index,pager \CD half-down
bind attach,index,pager \CU half-up
bind attach,index,pager \Ce next-line
bind attach,index,pager \Cy previous-line
bind index,pager B sidebar-toggle-visible
bind index,pager R group-reply
set sidebar_visible = yes
set sidebar_width = 15
bind index,pager \Cp sidebar-prev
bind index,pager \Cn sidebar-next
bind index,pager \Co sidebar-open
bind index,pager B sidebar-toggle-visible
set sidebar_short_path = yes
set sidebar_delim_chars = '/'
set sidebar_format = '%B%* %?N?%N?'
'';
};
};
};
services = {
cbatticon.enable = true;
blueman-applet.enable = true;
syncthing.tray = {
enable = true;
#extraOptions = ["--wait"];
};
pasystray = {
enable = true;
extraOptions = [
"--key-grabbing"
"--notify=all"
];
};
gpg-agent = {
enable = true;
enableSshSupport = true;
pinentryPackage = pkgs.pinentry-gtk2;
};
screen-locker = {
enable = true;
xautolock.enable = false;
lockCmd = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/sleep 0.2; ${pkgs.xorg.xset}/bin/xset dpms force off; /run/wrappers/bin/slock"'';
};
};
# https://github.com/nix-community/home-manager/issues/2064
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
};
# thanks K900
gtk = {
enable = true;
theme = {
package = pkgs.plasma5Packages.breeze-gtk;
name = "Breeze";
};
cursorTheme = {
package = pkgs.plasma5Packages.breeze-icons;
name = "Breeze_Snow";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus-Dark";
};
gtk2 = {
configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
extraConfig = ''
gtk-alternative-button-order = 1
'';
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = "icon:minimize,maximize,close";
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = "icon:minimize,maximize,close";
};
};
mj.plasma.kconfig = {
kdeglobals = {
General.ColorScheme = "ArcDark";
Icons.Theme = "Papirus-Dark";
KDE.widgetStyle = "Breeze";
};
plasmarc.Theme.name = "Arc-Dark";
kscreenlockerrc.Greeter = {
Theme = "com.github.varlesh.arc-dark";
};
ksplashrc.KSplash = {
Engine = "KSplashQML";
Theme = "com.github.varlesh.arc-dark";
};
kwinrc."org.kde.kdecoration2" = {
library = "org.kde.kwin.aurorae";
theme = "__aurorae__svg__Arc-Dark";
};
kcminputrc.Mouse.cursorTheme = "Breeze_Snow";
# don't mess with GTK settings
kded5rc."Module-gtkconfig".autoload = false;
};
};
};
}