263 lines
5.3 KiB
Nix
263 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;
|
||
|
};
|
||
|
}
|