{ pkgs, ... }: with pkgs; let unstable = import {}; mybrowser = firefox; lorri = import (fetchTarball { url = "https://github.com/target/lorri/archive/rolling-release.tar.gz"; }) {}; pypi2nix = import ( pkgs.fetchgit { url = "https://github.com/nix-community/pypi2nix"; rev = "v2.0.0"; sha256 = "sha256:1mrvbm78jnk7m44gvpa7l2iwrjiv9584f14vlcw9p334zxknpsfr"; } ) {}; desktopApps = [ mybrowser 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-fresh backintime-common anki signal-desktop (tor-browser-bundle-bin.override { mediaSupport = true; pulseaudioSupport = true; }) virtualbox pdfpc quaternion nheko wire-desktop gpx-viewer gpxsee cawbird tootle subsurface ( 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 ] ++ ( with gimpPlugins; [ resynthesizer2 fourier lqrPlugin ] ); multimediaApps = [ mpv vlc #amarok clementine youtube-dl #sonic-pi musescore audacity avidemux linphone picard soundkonverter ]; cliApps = [ myVim htop tmux httpie ponysay gti tree lsof mosh openssh sshfsFuse cryfs smbnetfs # for FUSE smb mounting sshuttle thefuck gnupg unar pwgen pandoc agrep pdfgrep torsocks ncdu psmisc # for killall dos2unix reptyr # re-bind running program to other tty xclip unzip ]; nixHelpers = [ lorri nix-review nixpkgs-fmt pypi2nix ]; kdeTools = with kdeApplications; [ okular redshift-plasma-applet gwenview yakuake kmail kontact korganizer akonadi-mime #for KOrganizer kaddressbook kdeconnect dolphin spectacle kate kleopatra qdirstat ark kwalletmanager ktouch kcharselect konversation okteta ktorrent krdc skanlite akonadiconsole plasma-browser-integration ] ++ ( with kdeFrameworks; [ networkmanager-qt kcrash plasma5.breeze-gtk libsForQt5.phonon-backend-vlc #(phonon-backend-vlc.override {qtbase=qt5.qtbase; qtx11extras=qt5.qtx11extras;}) ] ); devTools = [ curl httpie gdb strace ltrace valgrind zeal gcc kdevelop qtcreator shellcheck mtr wireshark ripgrep ghc ]; 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 acronym ccicons fontawesome biblatex logreq koma-script ; } ) ]; pythonApps = with python3Packages; [ notebook ipython pip numpy matplotlib jedi flake8 mypy ] ++ ( with python2Packages; [] ); fonts = [ comic-neue source-sans-pro source-serif-pro fira-code ubuntu_font_family twemoji-color-font opensans-ttf (iosevka.override { design = [ "slab" "term" ]; set = "serif"; }) # TODO: vollkorn # TODO: humor-sans ]; games = [ superTuxKart #hedgewars steam-run-native ]; 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; }; 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"; }; # lorri daemon service systemd.user = with lib; { services.lorri = { Unit = { Description = "Lorri build daemon"; Documentation = "https://github.com/target/lorri"; ConditionUser = "!@system"; Requires = "lorri.socket"; After = "lorri.socket"; RefuseManualStart = true; }; Service = { ExecStart = "${lorri}/bin/lorri daemon"; PrivateTmp = true; ProtectSystem = "strict"; WorkingDirectory = "%h"; Restart = "on-failure"; Environment = let path = with pkgs; makeSearchPath "bin" [ nix gnutar git mercurial ]; in concatStringsSep " " [ "PATH=${path}" "RUST_BACKTRACE=1" ]; }; }; sockets.lorri = { Unit = { Description = "Socket for lorri build daemon"; }; Socket = { ListenStream = "%t/lorri/daemon.socket"; }; Install = { WantedBy = [ "sockets.target" ]; }; }; }; }