299 lines
6.1 KiB
Nix
299 lines
6.1 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.machine;
|
|
optPkgs = package: pkgstring: optionals (elem pkgstring cfg.pkgs) 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
|
|
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 = pkgs.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
|
|
gitpkgs.krita gitpkgs.gmic_krita_qt
|
|
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;
|
|
};
|
|
}
|