nixconfigs/home/home.nix

383 lines
7 KiB
Nix

{ pkgs, ... }:
with pkgs;
let
# nix-channel --add https://nixos.org/channels/nixos-unstable nixos-unstable
unstable = import <nixos-unstable> { };
# nix-channel --add https://github.com/nix-community/NUR/archive/master.tar.gz NUR
nur = import <NUR> { inherit pkgs; };
myNur = nur.repos.schmittlauch;
desktopApps = [
# use pre-built Mozilla binary until nixpkgs build has similar performance (build profiling information)
firefox-bin
chromium
falkon
thunderbird
calibre
dino
zotero
keepassxc
ding
aspell
aspellDicts.de
aspellDicts.en
# for kate/KDE applications
hunspellDicts.de-de
hunspellDicts.en-us
hunspellDicts.en-gb-ise
seafile-client
alacritty
libreoffice-qt # fresh with KDE integration
backintime-common
anki-bin
signal-desktop
(tor-browser-bundle-bin.override {
mediaSupport = true;
pulseaudioSupport = true;
# prevent segfault on Intel graphics systems
useHardenedMalloc = false;
})
pdfpc
quaternion
nheko
gpx-viewer
gpxsee
cawbird
subsurface
yate
# split and merge PDFs in a GUI
pdfarranger
qbittorrent
#(pkgs.pidgin-with-plugins.override {
# plugins = [ pkgs.pidginotr ];})
# for Hibiscus banking software
jameica
#ToDo: which of these drivers is actually used?
geckodriver
chromedriver
];
graphicsApps = [
inkscape
darktable
hugin
luminanceHDR
exiftool
gimp
xournal
]
++ (
with gimpPlugins; [
resynthesizer
fourier
lqrPlugin
]
);
multimediaApps = [
mpv
vlc
#amarok
clementine
elisa
yt-dlp
#sonic-pi
musescore
audacity
avidemux
#linphone
soundkonverter
];
cliApps = [
myVim
htop
tmux
httpie
ponysay
gti
tree
lsof
mosh
openssh
sshfsFuse
cryfs
smbnetfs # for FUSE smb mounting
sshuttle
thefuck
gnupg
unar
lzop
p7zip
pwgen
pandoc
agrep
pdfgrep
torsocks
ncdu
psmisc # for killall
dos2unix
reptyr # re-bind running program to other tty
xclip
unzip
myNur.lolcommits # from NUR
];
nixHelpers = [
lorri
nix-review
nixpkgs-fmt
];
kdeTools = with plasma5Packages; with kdeGear; [
okular
gwenview
yakuake
kmail
kontact
korganizer
akonadi-mime #for KOrganizer
kaddressbook
kdeconnect
dolphin
spectacle
kate
kleopatra
qdirstat
ark
kwalletmanager
ktouch
kcharselect
konversation
okteta
krdc
skanlite
akonadiconsole
plasma-browser-integration
]
++ (
with kdeFrameworks; [
networkmanager-qt
kcrash
breeze-gtk
phonon-backend-vlc
#(phonon-backend-vlc.override {qtbase=qt5.qtbase; qtx11extras=qt5.qtx11extras;})
]
);
devTools = [
curl
httpie
gdb
strace
ltrace
valgrind
zeal
gcc
qtcreator
shellcheck
mtr
ripgrep
gitui
# Haskell
ghc
cabal2nix
];
latexApps = [
texmaker
kile
biber
# customize texlive installation
(
texlive.combine {
inherit (texlive)
scheme-medium
xetex
luatex
unicode-math
fontspec
collection-binextra
collection-fontsrecommended
collection-latex
collection-latexextra
collection-latexrecommended
collection-langgerman
IEEEtran
moderncv
fontawesome5
academicons
acronym
ccicons
fontawesome
biblatex
logreq
koma-script
;
}
)
];
pythonApps = with python3Packages; [
notebook
ipython
pip
numpy
matplotlib
jedi
flake8
mypy
];
fonts = [
comic-neue
source-sans-pro
source-serif-pro
fira-code
ubuntu_font_family
twemoji-color-font
opensans-ttf
(iosevka-bin.override {
variant = "curly-slab";
})
myNur.vollkorn
# TODO: humor-sans
];
games = [
superTuxKart
#hedgewars
];
in
{
home.packages =
desktopApps
++ latexApps
++ pythonApps
++ graphicsApps
++ cliApps
++ multimediaApps
++ devTools
++ kdeTools
++ fonts
++ nixHelpers
++ games
;
programs.home-manager.enable = true;
programs.home-manager.path = "$HOME/.nix-defexpr/channels/home-manager";
home.stateVersion = "18.09";
programs.direnv =
{
enable = true;
enableZshIntegration = true;
};
# programs.vim =
# { enable = true;
# };
programs.bat.enable = true;
services.gpg-agent =
{
enable = true;
enableSshSupport = true;
pinentryFlavor = "qt";
};
programs.ssh =
{
enable = true;
# ssh host config
matchBlocks =
import ./secrets/ssh_hosts.nix;
};
programs.tmux = {
enable = true;
keyMode = "vi";
extraConfig =
# for direnv not messing up the environment
''set-option -g update-environment "DIRENV_DIFF DIRENV_DIR DIRENV_WATCHES"
set-environment -gu DIRENV_DIFF
set-environment -gu DIRENV_DIR
set-environment -gu DIRENV_WATCHES
set-environment -gu DIRENV_LAYOUT
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel'';
terminal = "screen-256color";
};
systemd.user.startServices = true;
services.lorri.enable = true;
# media button control support from Bluetooth devices
services.mpris-proxy.enable = true;
fonts.fontconfig.enable = true;
programs.git =
let contacts = import ./secrets/contacts.nix;
in
{
enable = true;
includes = [
{
condition = "gitdir:~/Seafile/Studium/";
contents = {
user.name = contacts.realName;
user.email = contacts.uniMail;
};
}
{
condition = "gitdir:~/src/nixpkgs/";
contents = {
user.name = "Trolli Schmittlauch";
user.email = contacts.nixosMail;
};
}
]
# set default name for several other common locations
++ map
(dir: {
condition = "gitdir:${dir}";
contents = {
user.name = "Trolli Schmittlauch";
user.email = contacts.mainMail;
};
}) [ "~/src/" "~/bin/" "~/tmp/" "~/nixconfigs/" ];
extraConfig = {
credential.helper = "cache";
push.default = "simple";
init.defaultBranch = "mainline";
diff.tool = "vimdiff";
merge.tool = "vimdiff";
core.excludesfile = toString (pkgs.writeText ".gitignore_global" ''
# Direnv stuff
.direnv
.envrc
# Editor files #
################
*~
*.swp
*.swo
'');
core.whitespace = "-blank-at-eol,blank-at-eof,space-before-tab";
};
lfs.enable = true;
};
}