config/modules/profiles/desktop/default.nix

510 lines
13 KiB
Nix
Raw Normal View History

2023-09-14 18:52:10 +00:00
{
2024-07-29 12:15:21 +00:00
lib,
2023-09-14 18:52:10 +00:00
pkgs,
2024-02-04 14:18:47 +00:00
config,
2023-09-14 18:52:10 +00:00
...
2024-07-29 12:39:54 +00:00
}:
let
2024-08-22 10:11:40 +00:00
inherit (config.mj) username;
2024-03-06 07:05:22 +00:00
firefox =
2024-07-29 12:39:54 +00:00
if (pkgs.stdenv.hostPlatform.system == "x86_64-linux") then pkgs.firefox-bin else pkgs.firefox;
in
{
2024-11-07 14:52:48 +00:00
imports = [ ../dev ];
2023-09-14 18:52:10 +00:00
config = {
2024-12-02 18:04:38 +00:00
boot = {
2024-12-03 11:54:57 +00:00
loader.systemd-boot.enable = true;
2024-12-03 12:02:44 +00:00
initrd.systemd.enable = true;
2024-12-02 18:04:38 +00:00
supportedFilesystems = [
"ntfs"
2025-01-18 20:38:00 +00:00
"xfs"
2024-12-02 18:04:38 +00:00
];
kernelModules = [ "kvm-intel" ];
};
2024-08-20 16:11:47 +00:00
hardware = {
pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
};
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
2023-09-14 18:52:10 +00:00
2023-11-27 16:17:27 +00:00
programs = {
2024-01-27 14:34:01 +00:00
firefox = {
enable = true;
2024-03-06 07:05:22 +00:00
package = firefox;
2024-01-27 14:34:01 +00:00
};
2024-03-06 10:05:49 +00:00
wireshark = {
enable = true;
package = pkgs.wireshark-qt;
};
2023-11-27 16:17:27 +00:00
};
2023-09-14 18:52:10 +00:00
2024-11-03 18:18:09 +00:00
mj.services.printing.enable = true;
2024-07-29 12:39:54 +00:00
mj.base.users.user.extraGroups = [
"adbusers"
"networkmanager"
"wireshark"
"docker"
];
2023-09-14 18:52:10 +00:00
services = {
fwupd.enable = true;
2023-11-27 10:07:19 +00:00
blueman.enable = true;
2024-07-29 12:39:54 +00:00
udev.packages = [ pkgs.yubikey-personalization ];
2023-09-21 02:58:09 +00:00
acpid.enable = true;
2024-07-30 21:15:46 +00:00
pcscd.enable = true;
2024-04-15 07:26:24 +00:00
gnome.gnome-keyring.enable = true;
openssh.settings.X11Forwarding = true;
logind = {
powerKey = "suspend";
powerKeyLongPress = "poweroff";
lidSwitchExternalPower = "ignore";
2024-04-15 07:26:24 +00:00
};
2024-02-24 19:14:03 +00:00
avahi = {
2024-02-24 19:13:31 +00:00
enable = true;
nssmdns4 = true;
2024-02-24 19:13:31 +00:00
openFirewall = true;
};
2023-09-14 18:52:10 +00:00
xserver = {
enable = true;
xkb = {
layout = "us,lt";
options = "grp:alt_shift_toggle";
};
2023-09-15 19:04:03 +00:00
2023-09-18 11:58:40 +00:00
desktopManager.xfce.enable = true;
windowManager.awesome.enable = true;
displayManager.lightdm.enable = true;
};
2023-09-18 11:58:40 +00:00
displayManager = {
2024-12-02 18:10:55 +00:00
defaultSession = lib.mkDefault "none+awesome";
autoLogin = {
enable = true;
user = username;
2023-09-15 19:04:03 +00:00
};
2023-09-14 18:58:06 +00:00
};
pipewire.enable = false;
2024-04-15 07:26:24 +00:00
tlp = {
enable = true;
settings = {
2024-10-05 17:05:37 +00:00
START_CHARGE_THRESH_BAT0 = lib.mkDefault 80;
STOP_CHARGE_THRESH_BAT0 = lib.mkDefault 87;
2024-04-15 07:26:24 +00:00
};
};
2023-09-17 03:46:34 +00:00
};
programs = {
2023-09-21 03:06:10 +00:00
adb.enable = true;
slock.enable = true;
2023-09-17 03:46:34 +00:00
nm-applet.enable = true;
2023-09-21 03:06:10 +00:00
command-not-found.enable = false;
2023-09-14 18:52:10 +00:00
};
2023-09-14 18:58:06 +00:00
security.rtkit.enable = true;
2023-09-14 18:52:10 +00:00
networking.networkmanager.enable = true;
2023-09-14 18:58:06 +00:00
2023-11-04 19:41:55 +00:00
# wip put clight-gui to nixpkgs
#services.geoclue2 = {
# enable = true;
# enableWifi = true;
#};
#location.provider = "geoclue2";
virtualisation.docker.enable = true;
2024-07-29 12:39:54 +00:00
environment.systemPackages =
with pkgs;
2024-03-06 07:05:22 +00:00
lib.mkMerge [
[
# packages defined here
nicer
tmuxbash
2024-02-05 07:19:16 +00:00
2025-01-01 15:33:24 +00:00
f3 # flight-flash-fraud
2024-03-06 07:05:22 +00:00
iw
2024-12-12 21:10:31 +00:00
rr
gdb
2024-03-06 07:05:22 +00:00
vlc
2024-11-01 23:14:10 +00:00
sox
2024-09-18 11:09:56 +00:00
mpv
2024-03-06 07:05:22 +00:00
acpi
gimp
josm
2024-07-30 22:08:51 +00:00
qemu
2025-01-06 19:05:43 +00:00
zlib
ninja
2024-03-06 07:05:22 +00:00
xclip
pdftk
putty
2024-10-15 11:27:39 +00:00
scrot
2024-05-16 15:15:29 +00:00
tracy
2025-01-06 18:03:20 +00:00
cmake
2024-10-18 09:46:00 +00:00
kazam # alternative to gtk-recordMyDesktop
2024-03-06 07:05:22 +00:00
x11vnc
yt-dlp
2024-05-10 12:35:27 +00:00
skopeo
2024-03-06 07:05:22 +00:00
ffmpeg
tinycc
scrcpy
cheese
2024-03-06 07:05:22 +00:00
arandr
pandoc
evince
2024-05-08 20:18:58 +00:00
okular
2024-08-18 14:06:06 +00:00
motion
2024-10-25 04:17:13 +00:00
gthumb
2024-12-04 17:20:50 +00:00
calibre
2024-03-06 07:05:22 +00:00
gparted
scribus
gnumake
libwebp
librsvg
neomutt
2025-01-06 19:05:43 +00:00
wasmtime
2024-03-06 07:05:22 +00:00
picocom
2024-03-13 12:07:16 +00:00
inferno
2024-08-22 10:08:53 +00:00
libheif
2024-10-24 17:01:01 +00:00
mplayer
2024-10-25 04:17:13 +00:00
tcpflow
nautilus
2024-10-24 17:01:01 +00:00
smplayer
2024-03-06 07:05:22 +00:00
inkscape
chromium
hunspell
tigervnc
rtorrent
bsdgames
xss-lock
2024-12-03 00:21:37 +00:00
valgrind
2024-03-25 07:23:46 +00:00
musl.dev
2024-03-06 07:05:22 +00:00
audacity
2024-04-17 09:03:45 +00:00
graphviz
2024-03-06 07:05:22 +00:00
powertop
2024-09-04 19:43:23 +00:00
librecad
qgis-ltr # qgis gets recompiled, qgis-ltr is cached by hydra
2024-08-21 17:35:38 +00:00
tesseract
2024-03-06 07:05:22 +00:00
trayscale
2024-11-01 23:14:10 +00:00
espeak-ng
2024-03-06 07:05:22 +00:00
man-pages
rox-filer
distrobox
miniupnpc
2024-08-18 14:06:06 +00:00
v4l-utils
nerdfonts
diffoscope
alsa-utils
2024-03-06 07:05:22 +00:00
shellcheck
borgbackup
efibootmgr
virtualenv
2024-08-21 17:27:21 +00:00
imagemagick
2024-07-15 17:14:58 +00:00
ventoy-full
2024-03-06 07:05:22 +00:00
python3Full
2024-08-21 17:41:29 +00:00
ghostscript
2024-03-06 07:05:22 +00:00
libva-utils # intel video tests
pavucontrol
2024-06-29 19:36:50 +00:00
wirelesstools
2024-03-06 07:05:22 +00:00
poppler_utils
rkdeveloptool
squashfsTools
2024-04-08 14:57:19 +00:00
nixpkgs-review
2024-03-06 07:05:22 +00:00
aspellDicts.en
aspellDicts.lt
libreoffice-qt
graphicsmagick
2024-08-17 19:40:20 +00:00
magic-wormhole
2024-03-06 07:05:22 +00:00
signal-desktop
gnome-calendar
2024-03-06 07:05:22 +00:00
element-desktop
netsurf-browser
man-pages-posix
2024-11-06 12:28:26 +00:00
git-filter-repo
gnome-calculator
2024-07-30 21:15:46 +00:00
age-plugin-yubikey
2024-03-06 07:05:22 +00:00
hunspellDicts.en_US
python3Packages.ipython
samsung-unified-linux-driver
2023-09-15 10:01:20 +00:00
2024-12-21 12:19:05 +00:00
cppcheck
2024-03-06 07:05:22 +00:00
gcc_latest
2023-09-30 02:44:16 +00:00
2024-03-06 07:05:22 +00:00
xorg.xev
xorg.xeyes
xorg.lndir
2024-04-17 13:11:48 +00:00
xorg.xinit
2023-09-18 12:06:10 +00:00
2024-03-06 07:05:22 +00:00
(texlive.combine {
2024-07-29 12:39:54 +00:00
inherit (texlive)
2024-03-06 07:05:22 +00:00
scheme-medium
dvisvgm
dvipng
wrapfig
amsmath
ulem
hyperref
capt-of
lithuanian
hyphen-lithuanian
;
})
]
(lib.mkIf (pkgs.stdenv.hostPlatform.system == "x86_64-linux") [
i7z
nvtopPackages.amd
nvtopPackages.intel
2024-03-06 07:05:22 +00:00
joplin-desktop
intel-gpu-tools
2024-02-04 16:11:23 +00:00
2024-03-06 07:05:22 +00:00
winetricks
wineWowPackages.full
])
2024-07-29 12:39:54 +00:00
[ pkgs.undocker ]
2025-01-06 19:05:43 +00:00
(with llvmPackages_19; [
lld
llvm
llvm-manpages
clang
libclang
clang-manpages
clang-tools
])
2024-03-06 07:05:22 +00:00
];
2023-09-15 11:39:04 +00:00
2023-10-16 15:55:51 +00:00
# https://discourse.nixos.org/t/nixos-rebuild-switch-upgrade-networkmanager-wait-online-service-failure/30746
systemd.services.NetworkManager-wait-online.enable = false;
2024-07-29 12:39:54 +00:00
home-manager.users.${username} =
{ pkgs, config, ... }:
{
imports = [ ./plasma.nix ];
2025-01-07 20:32:56 +00:00
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
'';
};
2024-07-29 12:39:54 +00:00
programs = {
2024-11-12 15:56:48 +00:00
msmtp.enable = true;
2024-07-29 12:39:54 +00:00
mbsync.enable = true;
neomutt.enable = true;
notmuch.enable = true;
2025-01-09 12:37:56 +00:00
ghostty = {
enable = true;
installVimSyntax = true;
enableBashIntegration = true;
settings = {
2025-01-09 12:49:18 +00:00
theme = "iTerm2 Default";
2025-01-09 12:41:32 +00:00
command = lib.getExe pkgs.tmuxbash;
window-decoration = false;
2025-01-10 15:07:22 +00:00
gtk-single-instance = true;
2025-01-09 12:37:56 +00:00
font-feature = [
"-calt"
"-liga"
"-dlig"
];
};
};
2024-07-29 12:39:54 +00:00
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"
'';
};
2024-07-29 12:39:54 +00:00
accounts.email = {
maildirBasePath = "Maildir";
2024-03-10 10:46:58 +00:00
2024-07-29 12:39:54 +00:00
accounts.mj = {
primary = true;
userName = "motiejus@jakstys.lt";
address = "motiejus@jakstys.lt";
realName = "Motiejus Jakštys";
2024-11-12 15:56:48 +00:00
passwordCommand = "cat /home/${username}/.mail-appcode";
imap.host = "imap.gmail.com";
smtp.host = "smtp.gmail.com";
2024-03-10 10:46:58 +00:00
2024-07-29 12:39:54 +00:00
mbsync = {
enable = true;
create = "maildir";
2024-11-12 19:54:47 +00:00
patterns = [
"*"
"![Gmail]/All Mail"
];
2024-07-29 12:39:54 +00:00
};
2024-03-10 10:46:58 +00:00
2024-11-12 15:56:48 +00:00
msmtp = {
enable = true;
};
2024-03-10 10:46:58 +00:00
2024-07-29 12:39:54 +00:00
notmuch = {
enable = true;
neomutt.enable = true;
};
2024-03-10 10:46:58 +00:00
2024-07-29 12:39:54 +00:00
neomutt = {
enable = true;
extraConfig = ''
set index_format="%4C %Z %{%F %H:%M} %-15.15L (%?l?%4l&%4c?) %s"
2024-03-10 10:46:58 +00:00
2024-07-29 12:39:54 +00:00
set mailcap_path = ${pkgs.writeText "mailcaprc" ''
2024-04-30 05:04:13 +00:00
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 &;
2024-07-29 12:39:54 +00:00
''}
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?'
'';
};
2024-03-10 10:46:58 +00:00
};
};
2024-07-29 12:39:54 +00:00
services = {
cbatticon.enable = true;
blueman-applet.enable = true;
2023-10-09 02:47:36 +00:00
2024-07-29 12:39:54 +00:00
syncthing.tray = {
enable = true;
#extraOptions = ["--wait"];
};
2023-10-08 20:19:55 +00:00
2024-07-29 12:39:54 +00:00
pasystray = {
enable = true;
extraOptions = [
"--key-grabbing"
"--notify=all"
];
};
2023-09-18 12:04:22 +00:00
2024-07-29 12:39:54 +00:00
gpg-agent = {
enable = true;
enableSshSupport = true;
pinentryPackage = pkgs.pinentry-gtk2;
};
2023-09-18 10:23:48 +00:00
2024-07-29 12:39:54 +00:00
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"'';
};
2023-11-27 16:17:27 +00:00
};
2023-10-09 02:47:36 +00:00
2024-07-29 12:39:54 +00:00
# https://github.com/nix-community/home-manager/issues/2064
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
2023-10-09 02:52:49 +00:00
};
2024-07-29 12:39:54 +00:00
# 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";
};
2023-10-09 02:47:36 +00:00
};
2024-07-29 12:39:54 +00:00
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;
2023-10-09 02:47:36 +00:00
};
};
2023-09-14 18:52:10 +00:00
};
}