2018-09-26 01:30:11 +02:00
|
|
|
{ pkgs, ... }:
|
|
|
|
|
|
|
|
with pkgs;
|
|
|
|
let
|
2021-03-11 09:43:11 +01:00
|
|
|
# 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;
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
desktopApps = [
|
2022-03-22 16:10:46 +01:00
|
|
|
# use pre-built Mozilla binary until nixpkgs build has similar performance (build profiling information)
|
|
|
|
firefox-bin
|
|
|
|
chromium
|
2022-02-20 15:16:45 +01:00
|
|
|
falkon
|
2019-05-03 00:13:22 +02:00
|
|
|
thunderbird
|
2019-01-14 13:24:34 +01:00
|
|
|
calibre
|
2021-06-03 13:28:46 +02:00
|
|
|
dino
|
2020-05-08 00:03:26 +02:00
|
|
|
zotero
|
2019-01-14 13:24:34 +01:00
|
|
|
keepassxc
|
|
|
|
ding
|
|
|
|
aspell
|
|
|
|
aspellDicts.de
|
|
|
|
aspellDicts.en
|
|
|
|
# for kate/KDE applications
|
|
|
|
hunspellDicts.de-de
|
|
|
|
hunspellDicts.en-us
|
|
|
|
hunspellDicts.en-gb-ise
|
|
|
|
seafile-client
|
|
|
|
alacritty
|
2022-02-20 15:16:38 +01:00
|
|
|
libreoffice-qt # fresh with KDE integration
|
2019-01-14 13:24:34 +01:00
|
|
|
backintime-common
|
2021-06-03 13:28:46 +02:00
|
|
|
anki-bin
|
2019-01-14 13:24:34 +01:00
|
|
|
signal-desktop
|
2021-12-30 00:51:06 +01:00
|
|
|
(tor-browser-bundle-bin.override {
|
|
|
|
mediaSupport = true;
|
|
|
|
pulseaudioSupport = true;
|
|
|
|
# prevent segfault on Intel graphics systems
|
|
|
|
useHardenedMalloc = false;
|
|
|
|
})
|
2019-01-14 13:24:34 +01:00
|
|
|
pdfpc
|
|
|
|
quaternion
|
2019-10-10 01:05:02 +02:00
|
|
|
nheko
|
2019-01-14 13:24:34 +01:00
|
|
|
gpx-viewer
|
|
|
|
gpxsee
|
2021-06-03 13:28:46 +02:00
|
|
|
cawbird
|
2018-11-07 14:09:11 +01:00
|
|
|
subsurface
|
2021-01-28 13:15:49 +01:00
|
|
|
yate
|
2021-02-04 23:51:56 +01:00
|
|
|
# split and merge PDFs in a GUI
|
|
|
|
pdfarranger
|
2021-10-28 22:53:04 +02:00
|
|
|
qbittorrent
|
2021-04-02 19:50:35 +02:00
|
|
|
#(pkgs.pidgin-with-plugins.override {
|
|
|
|
# plugins = [ pkgs.pidginotr ];})
|
|
|
|
|
2019-01-09 12:11:11 +01:00
|
|
|
|
2019-08-07 18:44:04 +02:00
|
|
|
# for Hibiscus banking software
|
|
|
|
jameica
|
2019-10-10 01:05:02 +02:00
|
|
|
#ToDo: which of these drivers is actually used?
|
|
|
|
geckodriver
|
|
|
|
chromedriver
|
2019-11-12 17:59:59 +01:00
|
|
|
];
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
graphicsApps = [
|
2019-01-14 13:24:34 +01:00
|
|
|
inkscape
|
2019-10-10 01:05:02 +02:00
|
|
|
darktable
|
2019-01-14 13:24:34 +01:00
|
|
|
hugin
|
|
|
|
luminanceHDR
|
|
|
|
exiftool
|
2019-01-21 14:40:47 +01:00
|
|
|
gimp
|
2020-10-14 01:38:48 +02:00
|
|
|
xournal
|
2019-11-12 17:59:59 +01:00
|
|
|
]
|
|
|
|
++ (
|
|
|
|
with gimpPlugins; [
|
2021-06-03 13:28:46 +02:00
|
|
|
resynthesizer
|
2019-11-12 17:59:59 +01:00
|
|
|
fourier
|
|
|
|
lqrPlugin
|
2019-01-14 13:24:34 +01:00
|
|
|
]
|
2019-11-12 17:59:59 +01:00
|
|
|
);
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
multimediaApps = [
|
2022-01-02 19:09:23 +01:00
|
|
|
mpv
|
2019-01-14 13:24:34 +01:00
|
|
|
vlc
|
2019-10-10 01:05:02 +02:00
|
|
|
#amarok
|
2019-01-14 13:24:34 +01:00
|
|
|
clementine
|
2021-10-07 23:35:52 +02:00
|
|
|
elisa
|
2021-10-26 06:34:09 +02:00
|
|
|
yt-dlp
|
2019-10-10 01:05:02 +02:00
|
|
|
#sonic-pi
|
2019-01-14 13:24:34 +01:00
|
|
|
musescore
|
|
|
|
audacity
|
|
|
|
avidemux
|
2020-01-07 12:36:24 +01:00
|
|
|
#linphone
|
2019-05-03 00:13:22 +02:00
|
|
|
soundkonverter
|
2019-11-12 17:59:59 +01:00
|
|
|
];
|
|
|
|
|
2018-09-26 01:30:11 +02:00
|
|
|
cliApps = [
|
2018-10-14 16:57:02 +02:00
|
|
|
myVim
|
2019-01-14 13:24:34 +01:00
|
|
|
htop
|
|
|
|
tmux
|
|
|
|
httpie
|
|
|
|
ponysay
|
|
|
|
gti
|
2018-11-18 15:12:30 +01:00
|
|
|
tree
|
|
|
|
lsof
|
2019-01-14 13:24:34 +01:00
|
|
|
mosh
|
|
|
|
openssh
|
|
|
|
sshfsFuse
|
|
|
|
cryfs
|
2019-11-12 17:59:59 +01:00
|
|
|
smbnetfs # for FUSE smb mounting
|
2019-01-14 13:24:34 +01:00
|
|
|
sshuttle
|
|
|
|
thefuck
|
|
|
|
gnupg
|
|
|
|
unar
|
2020-05-08 00:03:26 +02:00
|
|
|
lzop
|
|
|
|
p7zip
|
2019-01-14 13:24:34 +01:00
|
|
|
pwgen
|
|
|
|
pandoc
|
|
|
|
agrep
|
|
|
|
pdfgrep
|
|
|
|
torsocks
|
|
|
|
ncdu
|
|
|
|
psmisc # for killall
|
|
|
|
dos2unix
|
2019-01-09 12:13:36 +01:00
|
|
|
reptyr # re-bind running program to other tty
|
2019-01-31 15:57:53 +01:00
|
|
|
xclip
|
2019-02-11 22:15:45 +01:00
|
|
|
unzip
|
2021-06-01 16:08:08 +02:00
|
|
|
myNur.lolcommits # from NUR
|
2019-11-12 17:59:59 +01:00
|
|
|
];
|
2018-09-26 01:30:11 +02:00
|
|
|
|
2018-09-26 14:23:42 +02:00
|
|
|
nixHelpers = [
|
2019-08-21 23:45:09 +02:00
|
|
|
lorri
|
2019-10-10 01:05:02 +02:00
|
|
|
nix-review
|
|
|
|
nixpkgs-fmt
|
2019-11-12 17:59:59 +01:00
|
|
|
];
|
2018-09-26 14:23:42 +02:00
|
|
|
|
2021-06-03 13:28:46 +02:00
|
|
|
kdeTools = with plasma5Packages; with kdeGear; [
|
|
|
|
okular
|
2019-01-14 13:24:34 +01:00
|
|
|
gwenview
|
|
|
|
yakuake
|
|
|
|
kmail
|
|
|
|
kontact
|
|
|
|
korganizer
|
|
|
|
akonadi-mime #for KOrganizer
|
|
|
|
kaddressbook
|
|
|
|
kdeconnect
|
|
|
|
dolphin
|
|
|
|
spectacle
|
|
|
|
kate
|
|
|
|
kleopatra
|
|
|
|
qdirstat
|
|
|
|
ark
|
|
|
|
kwalletmanager
|
2019-02-07 01:33:36 +01:00
|
|
|
ktouch
|
2019-01-13 23:37:09 +01:00
|
|
|
kcharselect
|
2019-01-14 13:24:34 +01:00
|
|
|
konversation
|
|
|
|
okteta
|
|
|
|
krdc
|
|
|
|
skanlite
|
|
|
|
akonadiconsole
|
2019-01-09 12:13:36 +01:00
|
|
|
plasma-browser-integration
|
2019-11-12 17:59:59 +01:00
|
|
|
]
|
|
|
|
++ (
|
|
|
|
with kdeFrameworks; [
|
|
|
|
networkmanager-qt
|
|
|
|
kcrash
|
2021-06-03 13:28:46 +02:00
|
|
|
breeze-gtk
|
|
|
|
phonon-backend-vlc
|
2019-11-12 17:59:59 +01:00
|
|
|
#(phonon-backend-vlc.override {qtbase=qt5.qtbase; qtx11extras=qt5.qtx11extras;})
|
2019-01-14 13:24:34 +01:00
|
|
|
]
|
2019-11-12 17:59:59 +01:00
|
|
|
);
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
devTools = [
|
|
|
|
curl
|
2019-01-14 13:24:34 +01:00
|
|
|
httpie
|
|
|
|
gdb
|
|
|
|
strace
|
|
|
|
ltrace
|
|
|
|
valgrind
|
|
|
|
zeal
|
|
|
|
gcc
|
|
|
|
shellcheck
|
|
|
|
mtr
|
2019-02-19 23:58:22 +01:00
|
|
|
ripgrep
|
2021-12-30 00:51:06 +01:00
|
|
|
gitui
|
2020-02-16 21:58:11 +01:00
|
|
|
|
|
|
|
# Haskell
|
2019-08-21 23:45:09 +02:00
|
|
|
ghc
|
2020-01-29 17:11:06 +01:00
|
|
|
cabal2nix
|
2019-11-12 17:59:59 +01:00
|
|
|
];
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
latexApps = [
|
|
|
|
texmaker
|
2019-10-10 01:05:02 +02:00
|
|
|
kile
|
2019-03-07 21:28:16 +01:00
|
|
|
biber
|
2019-01-14 13:24:34 +01:00
|
|
|
# customize texlive installation
|
2019-11-12 17:59:59 +01:00
|
|
|
(
|
|
|
|
texlive.combine {
|
|
|
|
inherit (texlive)
|
|
|
|
scheme-medium
|
2019-01-14 13:24:34 +01:00
|
|
|
|
2019-11-12 17:59:59 +01:00
|
|
|
xetex
|
|
|
|
luatex
|
|
|
|
unicode-math
|
|
|
|
fontspec
|
|
|
|
collection-binextra
|
|
|
|
collection-fontsrecommended
|
|
|
|
collection-latex
|
|
|
|
collection-latexextra
|
|
|
|
collection-latexrecommended
|
|
|
|
collection-langgerman
|
|
|
|
IEEEtran
|
|
|
|
moderncv
|
2021-08-21 11:42:31 +02:00
|
|
|
fontawesome5
|
|
|
|
academicons
|
2019-11-12 17:59:59 +01:00
|
|
|
acronym
|
|
|
|
ccicons
|
|
|
|
fontawesome
|
|
|
|
biblatex
|
|
|
|
logreq
|
|
|
|
koma-script
|
|
|
|
;
|
|
|
|
}
|
|
|
|
)
|
2018-09-26 01:30:11 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
pythonApps = with python3Packages; [
|
2019-01-14 13:24:34 +01:00
|
|
|
notebook
|
|
|
|
ipython
|
|
|
|
pip
|
|
|
|
numpy
|
|
|
|
matplotlib
|
|
|
|
jedi
|
2018-11-07 14:09:11 +01:00
|
|
|
flake8
|
|
|
|
mypy
|
2021-06-01 16:08:08 +02:00
|
|
|
];
|
2019-01-09 12:13:36 +01:00
|
|
|
|
2018-09-26 01:30:11 +02:00
|
|
|
|
2018-09-26 12:00:25 +02:00
|
|
|
fonts = [
|
2019-01-14 13:24:34 +01:00
|
|
|
comic-neue
|
|
|
|
source-sans-pro
|
|
|
|
source-serif-pro
|
|
|
|
fira-code
|
|
|
|
ubuntu_font_family
|
2019-01-09 12:13:36 +01:00
|
|
|
twemoji-color-font
|
2019-01-31 15:58:26 +01:00
|
|
|
opensans-ttf
|
2021-06-05 02:01:12 +02:00
|
|
|
(iosevka-bin.override {
|
|
|
|
variant = "curly-slab";
|
|
|
|
})
|
2021-04-02 19:49:57 +02:00
|
|
|
myNur.vollkorn
|
2019-01-14 13:24:34 +01:00
|
|
|
# TODO: humor-sans
|
2018-09-26 12:00:25 +02:00
|
|
|
];
|
|
|
|
|
2019-08-08 01:48:20 +02:00
|
|
|
games = [
|
2019-10-10 01:05:02 +02:00
|
|
|
superTuxKart
|
2019-12-11 22:01:54 +01:00
|
|
|
#hedgewars
|
2018-10-07 19:47:28 +02:00
|
|
|
];
|
|
|
|
|
2018-09-26 01:30:11 +02:00
|
|
|
in
|
|
|
|
{
|
|
|
|
|
2021-03-11 09:43:11 +01:00
|
|
|
home.packages =
|
|
|
|
desktopApps
|
2018-09-26 01:30:11 +02:00
|
|
|
++ latexApps
|
|
|
|
++ pythonApps
|
2019-01-14 13:24:34 +01:00
|
|
|
++ graphicsApps
|
|
|
|
++ cliApps
|
|
|
|
++ multimediaApps
|
|
|
|
++ devTools
|
|
|
|
++ kdeTools
|
|
|
|
++ fonts
|
|
|
|
++ nixHelpers
|
2019-08-08 01:48:20 +02:00
|
|
|
++ games
|
2020-04-15 19:34:27 +02:00
|
|
|
;
|
2018-09-26 01:30:11 +02:00
|
|
|
|
|
|
|
programs.home-manager.enable = true;
|
2018-10-31 00:20:35 +01:00
|
|
|
programs.home-manager.path = "$HOME/.nix-defexpr/channels/home-manager";
|
2019-01-09 12:15:08 +01:00
|
|
|
home.stateVersion = "18.09";
|
2018-10-31 00:20:35 +01:00
|
|
|
|
2018-10-13 00:10:20 +02:00
|
|
|
programs.direnv =
|
2019-11-12 17:59:59 +01:00
|
|
|
{
|
|
|
|
enable = true;
|
2019-01-14 13:24:34 +01:00
|
|
|
enableZshIntegration = true;
|
|
|
|
};
|
2018-10-14 16:57:02 +02:00
|
|
|
|
2019-11-12 17:59:59 +01:00
|
|
|
# programs.vim =
|
|
|
|
# { enable = true;
|
|
|
|
# };
|
2019-04-15 00:28:14 +02:00
|
|
|
|
|
|
|
programs.bat.enable = true;
|
2019-11-12 17:59:59 +01:00
|
|
|
|
2018-10-14 18:01:06 +02:00
|
|
|
services.gpg-agent =
|
2019-11-12 17:59:59 +01:00
|
|
|
{
|
|
|
|
enable = true;
|
2019-01-14 13:24:34 +01:00
|
|
|
enableSshSupport = true;
|
2020-03-08 02:10:28 +01:00
|
|
|
pinentryFlavor = "qt";
|
2019-01-14 13:24:34 +01:00
|
|
|
};
|
2019-05-14 15:33:26 +02:00
|
|
|
|
2020-04-05 19:19:16 +02:00
|
|
|
programs.ssh =
|
|
|
|
{
|
|
|
|
enable = true;
|
|
|
|
# ssh host config
|
|
|
|
matchBlocks =
|
|
|
|
import ./secrets/ssh_hosts.nix;
|
|
|
|
};
|
|
|
|
|
2019-11-12 17:59:59 +01:00
|
|
|
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"
|
2019-05-14 15:33:26 +02:00
|
|
|
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'';
|
2019-11-12 17:59:59 +01:00
|
|
|
terminal = "screen-256color";
|
|
|
|
};
|
2019-05-14 15:33:26 +02:00
|
|
|
|
2020-01-29 17:07:36 +01:00
|
|
|
systemd.user.startServices = true;
|
|
|
|
|
2020-01-07 12:36:24 +01:00
|
|
|
services.lorri.enable = true;
|
2019-10-10 01:05:45 +02:00
|
|
|
|
2022-03-21 00:57:45 +01:00
|
|
|
# media button control support from Bluetooth devices
|
|
|
|
services.mpris-proxy.enable = true;
|
|
|
|
|
2021-02-02 17:03:04 +01:00
|
|
|
fonts.fontconfig.enable = true;
|
2021-04-15 19:35:12 +02:00
|
|
|
|
|
|
|
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";
|
2021-04-21 18:40:23 +02:00
|
|
|
init.defaultBranch = "mainline";
|
2021-04-15 19:35:12 +02:00
|
|
|
diff.tool = "vimdiff";
|
|
|
|
merge.tool = "vimdiff";
|
|
|
|
core.excludesfile = toString (pkgs.writeText ".gitignore_global" ''
|
|
|
|
# Direnv stuff
|
|
|
|
.direnv
|
|
|
|
.envrc
|
|
|
|
# Editor files #
|
|
|
|
################
|
|
|
|
*~
|
|
|
|
*.swp
|
|
|
|
*.swo
|
|
|
|
'');
|
2021-08-15 13:03:03 +02:00
|
|
|
core.whitespace = "-blank-at-eol,blank-at-eof,space-before-tab";
|
2021-04-15 19:35:12 +02:00
|
|
|
};
|
|
|
|
lfs.enable = true;
|
|
|
|
};
|
2022-05-12 22:31:59 +02:00
|
|
|
|
|
|
|
# shell config
|
|
|
|
programs.zsh = {
|
|
|
|
enable = true;
|
|
|
|
enableSyntaxHighlighting = true;
|
|
|
|
history.ignoreSpace = true;
|
|
|
|
initExtra = ''
|
|
|
|
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
|
|
|
COMPLETION_WAITING_DOTS="true"
|
|
|
|
### Fix slowness of pastes with zsh-syntax-highlighting.zsh
|
|
|
|
pasteinit() {
|
2022-05-17 18:34:57 +02:00
|
|
|
OLD_SELF_INSERT=''${''${(s.:.)widgets[self-insert]}[2,3]}
|
2022-05-12 22:31:59 +02:00
|
|
|
zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
|
|
|
|
}
|
|
|
|
|
|
|
|
pastefinish() {
|
|
|
|
zle -N self-insert $OLD_SELF_INSERT
|
|
|
|
}
|
|
|
|
zstyle :bracketed-paste-magic paste-init pasteinit
|
|
|
|
zstyle :bracketed-paste-magic paste-finish pastefinish
|
|
|
|
|
|
|
|
# automatic rehash of path completion
|
|
|
|
zstyle ':completion:*' rehash true
|
|
|
|
|
|
|
|
eval "$(${pkgs.thefuck}/bin/thefuck --alias)"
|
|
|
|
|
|
|
|
## helper functions
|
|
|
|
nixify() {
|
|
|
|
if [ ! -e ./.envrc ]; then
|
|
|
|
echo "eval \"$(lorri direnv)\"" > .envrc
|
|
|
|
direnv allow
|
|
|
|
fi
|
|
|
|
if [ ! -e shell.nix ]; then
|
|
|
|
cat > shell.nix <<'EOF'
|
|
|
|
with import <nixpkgs> {};
|
|
|
|
mkShell {
|
|
|
|
buildInputs = [
|
|
|
|
bashInteractive
|
|
|
|
];
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
${EDITOR:-vim} default.nix
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
binpath() {
|
|
|
|
realpath $(${pkgs.which}/bin/which $1)
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|
oh-my-zsh = {
|
|
|
|
enable = true;
|
|
|
|
theme = "bira";
|
2022-05-12 22:38:48 +02:00
|
|
|
plugins = [ "git" "python" "systemd" "gpg-agent"];
|
2022-05-12 22:31:59 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
home.shellAliases = {
|
|
|
|
ip = "ip --color";
|
|
|
|
ipb = "ip --color --brief";
|
|
|
|
ll = "ls -l";
|
|
|
|
wavesynth = "nix-shell -p sox --run 'play -n synth brownnoise synth pinknoise mix synth 0 0 0 15 40 80 trapezium amod 0.2 20'";
|
2022-05-19 17:11:04 +02:00
|
|
|
vim = "nvim";
|
2022-05-12 22:31:59 +02:00
|
|
|
};
|
|
|
|
home.sessionVariables = {
|
2022-05-19 17:11:04 +02:00
|
|
|
EDITOR = "nvim";
|
2022-05-12 22:31:59 +02:00
|
|
|
};
|
2018-09-26 01:30:11 +02:00
|
|
|
}
|