262 lines
5.3 KiB
Nix
262 lines
5.3 KiB
Nix
{ stable ? import <nixos-stable>,
|
|
unstable ? import <nixos-unstable>,
|
|
gitpkgs ? import /nixpkgs/default.nix,
|
|
config, lib, pkgs, ... }:
|
|
|
|
let
|
|
cfg = with lib; import ("/etc/nixos/machines/" + (replaceStrings ["\n"] [""] (readFile /etc/hostname)) + "/configuration.nix");
|
|
optPkgs = with lib; package: pkgstring: if elem pkgstring cfg.pkgs then package else [];
|
|
gitpkgs = import /nixpkgs/default.nix {};
|
|
|
|
# Programms I'm likely to want on every machine and/or may execute as root
|
|
base = with pkgs; [
|
|
alsaUtils
|
|
ccze
|
|
cksfv
|
|
cryptsetup
|
|
dhcpcd
|
|
dnsutils
|
|
git
|
|
gnupg
|
|
gptfdisk
|
|
home-manager
|
|
htop
|
|
hwinfo
|
|
indent
|
|
iptables
|
|
lrzip
|
|
lshw
|
|
macchanger
|
|
mkpasswd
|
|
netcat
|
|
nix-index
|
|
nix-plugins
|
|
nix-prefetch-git
|
|
nix-serve
|
|
nix-update-source
|
|
nix-zsh-completions
|
|
nixbang
|
|
nixops
|
|
nmap
|
|
nox
|
|
ntfs3g
|
|
oh-my-zsh
|
|
openssl
|
|
p7zip
|
|
pciutils
|
|
psmisc
|
|
rfkill
|
|
rsync
|
|
sl
|
|
sysvtools
|
|
telnet
|
|
traceroute
|
|
tree
|
|
unrar
|
|
unzipNLS
|
|
usbutils
|
|
vim
|
|
vulnix
|
|
wget
|
|
whois
|
|
wirelesstools
|
|
wpa_supplicant
|
|
zip
|
|
zlib
|
|
zsh
|
|
];
|
|
|
|
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
|
|
/* Git support */
|
|
magit
|
|
emms # multimedia support
|
|
wsd-mode
|
|
plantuml-mode
|
|
/* Other Stuff, not yet sorted */
|
|
transmission
|
|
org-plus-contrib orgit ox-gfm ox-rst
|
|
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
|
|
/* C/C++ */ clang-format irony company-irony company-irony-c-headers flycheck-irony
|
|
/* 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
|
|
spaceline # modeline beautification
|
|
winum eyebrowse # window management
|
|
auto-compile
|
|
/* Maxima */ pkgs.maxima
|
|
visual-fill-column
|
|
web-mode
|
|
melpaStablePackages.idris-mode helm-idris
|
|
]);
|
|
|
|
extra = with pkgs; [
|
|
transmission
|
|
texlive.combined.scheme-full
|
|
];
|
|
|
|
mailutils = with pkgs; [
|
|
fetchmail
|
|
imagemagick
|
|
isync
|
|
mu-git
|
|
pandoc
|
|
postfix
|
|
];
|
|
|
|
cpp = with pkgs; [
|
|
clang
|
|
cmake
|
|
gcc
|
|
global
|
|
irony-server
|
|
];
|
|
|
|
haskell = pkgs.haskellPackages.ghcWithPackages (pkgs: with pkgs; [
|
|
mtl
|
|
random
|
|
]);
|
|
|
|
java = with pkgs; [
|
|
openjdk11
|
|
(with pkgs.eclipses; eclipseWithPlugins {
|
|
eclipse = eclipse-platform;
|
|
jvmArgs = [ "-Xmx2048m" ];
|
|
plugins = [
|
|
plugins.color-theme
|
|
plugins.emacsplus
|
|
plugins.checkstyle
|
|
];
|
|
})
|
|
];
|
|
|
|
python3 = gitpkgs.python3Full.withPackages(ps: with ps; [
|
|
GitPython
|
|
bpython
|
|
configparser
|
|
django
|
|
elpy
|
|
emoji
|
|
epc
|
|
numpy
|
|
opencv3
|
|
paho-mqtt
|
|
pep8
|
|
pillow
|
|
pip
|
|
plotly
|
|
pyflakes
|
|
pygame_sdl2
|
|
pylama
|
|
pylint
|
|
pyopengl
|
|
pyproj
|
|
requests
|
|
schedule
|
|
scipy
|
|
selenium
|
|
telegram
|
|
tkinter
|
|
toolz
|
|
virtualenv
|
|
# 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
|
|
/* temporarily fix python stuff */
|
|
py3status pytz tzlocal
|
|
|
|
]);
|
|
|
|
rustpkgs = with pkgs; [
|
|
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
|
|
pcmanfm
|
|
pavucontrol
|
|
xclip
|
|
xlibs.xkill
|
|
xorg.xbacklight
|
|
xdiskusage
|
|
];
|
|
|
|
in {
|
|
environment.systemPackages = base
|
|
++ (optPkgs [emacs] "emacs")
|
|
++ (optPkgs extra "extra")
|
|
++ (optPkgs mailutils "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 = {
|
|
enable = (lib.elem "emacs" cfg.pkgs);
|
|
install = (lib.elem "emacs" cfg.pkgs);
|
|
package = emacs;
|
|
};
|
|
}
|