nixos/pkgs/pkgsets.nix

298 lines
6 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.machine;
optPkgs = package: pkgstring: optionals (elem pkgstring cfg.pkgs) (toList package);
gitpkgs = import /nixpkgs {};
stablepkgs = import <nixos-stable> {};
# Programms I'm likely to want on every machine and/or may execute as root
base = with pkgs; [
alsaUtils
finger_bsd
ccze
cksfv
cryptsetup
dhcpcd
dnsutils
git git-lfs
gnupg
gptfdisk
haskellPackages.nix-derivation
home-manager
htop
hwinfo
indent
iptables
jp
lrzip
lsof
lshw
macchanger
mkpasswd
netcat
nix-diff
nix-index
nix-plugins
nix-prefetch-git
nix-serve
nix-update-source
nix-zsh-completions
nixbang
nixops
nmap
nox
ntfs3g
oh-my-zsh
openssl
parted
p7zip
pciutils
psmisc
rfkill
ripgrep
rsync
sl
sysvtools
telnet
traceroute
tree
unrar
unzipNLS
usbutils
vim
vulnix
wget
whois
wirelesstools
wpa_supplicant
zip
zlib
zsh
];
dict = with pkgs; [
translate-shell
( hunspellWithDicts (with pkgs.hunspellDicts; [ de-de en-us ] ))
( aspellWithDicts (d: with d; [ de en en-computers en-science ] ))
];
emacs = gitpkgs.emacsWithPackages (epkgs: with epkgs; [
/* Theming */
solarized-theme color-theme-sanityinc-tomorrow moe-theme powerline moody minions
/*General Stuff */
rainbow-delimiters # color parenthesis by indentation
color-identifiers-mode
/* Python */
company-jedi pylint melpaStablePackages.elpy flycheck-mypy
/* Git support */
magit
emms # multimedia support
wsd-mode
plantuml-mode
/* Other Stuff, not yet sorted */
mu4e-alert
google-translate
tramp
transmission
org-plus-contrib orgit ox-gfm ox-rst
easy-jekyll markdown-mode impatient-mode simple-httpd htmlize
eclim
auto-complete
pkgs.aspell pkgs.aspellDicts.en pkgs.aspellDicts.de
use-package diminish bind-key
smartparens
evil-surround evil-indent-textobject evil-cleverparens avy undo-tree
cdlatex # for math expressions
helm
/* LaTeX */ auctex helm-bibtex cdlatex
markdown-mode
flycheck
pkgs.ledger
yaml-mode
company
# Irony is currently broken.
/* C/C++ */ irony company-irony company-irony-c-headers flycheck-irony clang-format pkgs.clang-tools
/* Haskell */ haskell-mode flycheck-haskell
/* Org */ org org-ref pdf-tools org-bullets org-caldav
/* Rust */ rust-mode flycheck-rust racer
/* mail */ messages-are-flowing
/* Nix */ nix-buffer nix-mode nixos-options company-nixos-options nix-sandbox
paganini-theme
json-navigator
spaceline # modeline beautification
winum eyebrowse # window management
auto-compile
/* Maxima */ pkgs.maxima
visual-fill-column
web-mode
melpaStablePackages.idris-mode helm-idris
/* Java */
# projectile yasnippet lsp-mode hydra company-lsp lsp-ui lsp-java dap-mode
cl-lib meghanada autodisass-java-bytecode google-c-style realgud
weechat
]);
extra = with pkgs; [
imagemagick
texlive.combined.scheme-full
transmission
];
mail_utils = with pkgs; [
fetchmail
isync
mailutils
gitpkgs.mu
pandoc
postfix
];
cpp = with pkgs; [
clang
cmake
gcc
global
irony-server
];
haskell = pkgs.haskellPackages.ghcWithPackages (pkgs: with pkgs; [
hindent
mtl
random
]);
haskell-tools = with pkgs; [ cabal-install hlint]; # ghcid
java = with pkgs; [
openjdk11
maven
(with gitpkgs.eclipses; eclipseWithPlugins {
eclipse = eclipse-platform;
jvmArgs = [ "-Xmx2048m" ];
plugins = with plugins; [
color-theme
# emacsplus
checkstyle
eclemma
];
})
];
python3 = stablepkgs.python3Full.withPackages(ps: with ps; [
GitPython
bpython
cairosvg cairocffi
configparser
django
elpy
emoji
epc
flake8
genanki
mypy
numpy
opencv3
paho-mqtt
pep8
pillow
pip
plotly
pyflakes
pygame pygame_sdl2
pylama
pylint
pyopengl
pyproj
pytest
requests
schedule
scipy
selenium
telegram
tkinter
toolz
virtualenv
xdot
# flask
# flask-common
# flask-compress
# flask-cors
# flask-limiter
# flask-pymongo
# flask-restful
# flask-restplus
# flask_assets
# flask_elastic
# flask_login
# flask_mail
# flask_marshmallow
# flask_migrate
# flask_oauthlib
# flask_principal
# flask_script
# flask_sqlalchemy
# flask_testing
# flask_wtf
# flaskbabel
] ++ optionals (elem "i3" cfg.desktop.wms) [ py3status pytz tzlocal ]);
rustpkgs = with stablepkgs; [
rustup
carnix
rustracer
];
server = with pkgs; [
audit
letsencrypt
php
simp_le
];
uniProgs = with pkgs; [
qucs
];
xpkgs = with pkgs; [
feh
scrot
theme_flat-remix
theme_sddm_midnight
gnome3.dconf
gnome3.gnome-terminal
gnome3.gvfs
gvfs
oneko
pcmanfm lxmenu-data shared_mime_info
pavucontrol
xclip
xlibs.xkill
xorg.xbacklight
xdiskusage
];
in {
environment.systemPackages = base
++ (optPkgs dict "dict")
++ (optPkgs emacs "emacs")
++ (optPkgs extra "extra")
++ (optPkgs mail_utils "mailutils")
++ (optPkgs cpp "cpp")
++ (optPkgs haskell "haskell")
++ (optPkgs java "java")
++ (optPkgs python3 "python3")
++ (optPkgs rustpkgs "rustpkgs")
++ (optPkgs server "server")
++ (optPkgs uniProgs "uniProgs")
++ (optPkgs xpkgs "xpkgs");
services.emacs = mkIf (elem "emacs" cfg.pkgs) {
defaultEditor = true;
enable = true;
install = true;
package = emacs;
};
}