dotfiles/nixos/configuration.nix

396 lines
7.5 KiB
Nix
Raw Normal View History

{ config, pkgs, options, ... }:
let
my-python-packages = python-packages: with python-packages; [
appdirs
ipdb
2019-02-12 22:43:50 -07:00
ipython
numpy
2019-05-11 13:36:06 -06:00
openpyxl
pip
2018-07-30 13:17:43 -06:00
python-language-server
2019-02-12 22:43:50 -07:00
requests
tensorflow
2019-02-12 22:43:50 -07:00
tox
virtualenv
virtualenvwrapper
];
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
2019-06-10 09:11:50 -06:00
all-hies = import (fetchTarball "https://github.com/infinisil/all-hies/tarball/master") {};
2019-06-03 03:01:49 -06:00
notifications-tray-icon-source = pkgs.fetchFromGitHub {
owner = "IvanMalison";
repo = "notifications-tray-icon";
2019-12-09 17:13:57 -07:00
rev = "e2a412922438e46f0a67bf2c09f66b5285c51a68";
sha256 = "07401ic45b7a343146avy4466mbqqx1f86bad8d9dy2qmi8hlhx4";
2019-06-03 03:01:49 -06:00
};
2019-06-05 01:35:47 -06:00
ntiOverlay = (import (notifications-tray-icon-source.outPath + "/overlay.nix"));
ntiHaskellPackages = (ntiOverlay pkgs pkgs).haskellPackages;
2019-06-26 21:50:03 -06:00
# XXX: Can't use pkgs here because it would cause infinite recursion
lorriSource = (import <nixpkgs> {}).fetchurl {
url = "https://raw.githubusercontent.com/target/lorri/master/direnv/nixos.nix";
sha256 = "057kqbivf4xbhakz1j1b19sxd5c6p6rqhg6pwnq2zfvvmp8nmylm";
};
lorriBinSource = pkgs.fetchFromGitHub {
2019-07-10 14:36:26 -06:00
owner = "IvanMalison";
2019-06-26 21:50:03 -06:00
repo = "lorri";
2019-07-10 14:36:26 -06:00
rev = "d3e452ebc2b24ab86aec18af44c8217b2e469b2a";
sha256 = "07yf3gl9sixh7acxayq4q8h7z4q8a66412z0r49sr69yxb7b4q89";
2019-06-26 21:50:03 -06:00
};
lorri = (import (lorriBinSource.outPath + "/default.nix")) { inherit pkgs; };
2019-12-09 17:13:57 -07:00
notifications-tray-icon = (import (notifications-tray-icon-source.outPath + "/default.nix"));
in
{
2019-06-26 21:50:03 -06:00
imports = [ lorriSource.outPath ];
2019-07-10 14:36:26 -06:00
nixpkgs.overlays = [
(import ./overlays.nix)
(import ../dotfiles/config/xmonad/overlay.nix)
];
# Allow all the things
nixpkgs.config.allowUnfree = true;
nixpkgs.config.android_sdk.accept_license = true;
# Security and networking
security.sudo.wheelNeedsPassword = false;
networking.networkmanager = {
enable = true;
enableStrongSwan = true;
packages = [ pkgs.networkmanager-l2tp ];
extraConfig = ''
[main]
rc-manager=resolvconf
'';
};
2018-06-18 15:41:28 -06:00
networking.firewall.enable = false;
2019-01-11 16:48:28 -07:00
# Audio
sound.enable = true;
hardware.pulseaudio.enable = true;
hardware.opengl.driSupport32Bit = true;
i18n = {
consoleKeyMap = "us";
defaultLocale = "en_US.UTF-8";
};
time.timeZone = "America/Los_Angeles";
fonts = {
fonts = with pkgs; [
dejavu_fonts
emojione
2018-06-24 17:39:40 -06:00
fira-mono
font-awesome-ttf
noto-fonts-emoji
roboto
2018-06-24 17:39:40 -06:00
source-code-pro
source-sans-pro
source-serif-pro
2018-06-24 17:39:40 -06:00
twemoji-color-font
];
fontconfig = {
defaultFonts = {
monospace = [ "Source Code Pro" ];
sansSerif = [ "Roboto" ];
serif = [ "Source Serif Pro" ];
};
ultimate = {
enable = false;
};
};
};
2019-06-10 09:11:50 -06:00
xdg.menus.enable = true;
2019-06-23 14:55:11 -06:00
environment.systemPackages = with pkgs; [
# Applications
2018-06-18 14:24:26 -06:00
calibre
2019-06-02 23:25:08 -06:00
gnome3.cheese
2019-02-27 15:57:18 -07:00
dfeet
discord
2018-06-17 04:16:49 -06:00
emacs
firefox
2018-07-13 18:28:16 -06:00
gitter
2018-06-17 04:16:49 -06:00
google-chrome
hexchat
2019-06-23 18:32:58 -06:00
keybase-gui
2019-02-27 15:57:18 -07:00
kleopatra
kodi
2019-05-11 13:36:06 -06:00
libreoffice
2018-06-18 18:12:26 -06:00
lxappearance
2019-07-10 14:36:26 -06:00
okular
pulseeffects
2019-02-27 15:57:18 -07:00
quassel
rxvt_unicode
2019-06-23 14:52:56 -06:00
slack
2019-02-27 15:57:18 -07:00
simplescreenrecorder
spotify
termite
2018-06-17 04:16:49 -06:00
vlc
xfce.thunar
wire-desktop
2019-02-27 14:53:10 -07:00
zoom-us
# Appearance
2019-06-24 00:22:33 -06:00
gnome-breeze
gnome3.adwaita-icon-theme
hicolor-icon-theme
2019-06-24 00:22:33 -06:00
materia-theme
numix-icon-theme-circle
2019-07-10 14:36:26 -06:00
papirus-icon-theme
2018-06-17 05:36:38 -06:00
plasma5.breeze-gtk
plasma5.breeze-qt5
2019-06-10 09:11:50 -06:00
# Haskell Desktop
(import ../dotfiles/config/taffybar/default.nix)
(import ../dotfiles/config/xmonad/default.nix)
2019-06-05 01:35:47 -06:00
(ntiHaskellPackages.callCabal2nix "notifications-tray-icon" notifications-tray-icon-source { })
2019-06-06 01:30:15 -06:00
haskellPackages.gtk-sni-tray
haskellPackages.status-notifier-item
2019-06-03 03:01:49 -06:00
haskellPackages.xmonad
haskellPackages.dbus-hslogger
2019-06-05 01:35:47 -06:00
2019-06-10 09:11:50 -06:00
# Desktop
autorandr
2019-05-25 22:18:23 -06:00
betterlockscreen
2019-01-11 01:18:32 -07:00
blueman
clipit
compton
feh
2018-06-17 04:02:10 -06:00
gnome3.gpaste
kdeconnect
2018-06-26 22:55:26 -06:00
libnotify
lxqt.lxqt-powermanagement
networkmanagerapplet
2018-07-08 02:43:59 -06:00
customizable-notify-osd
2019-06-03 03:01:49 -06:00
2018-06-18 18:12:26 -06:00
pasystray-appindicator
pinentry
pommed_light
rofi
rofi-pass
rofi-systemd
2018-07-04 17:27:39 -06:00
skippy-xd
2018-06-18 15:09:15 -06:00
synergy
udiskie
volnoti
2019-03-14 19:15:29 -06:00
# xorg
wmctrl
xclip
xdotool
2019-03-14 19:15:29 -06:00
xorg.xev
xorg.xkbcomp
2019-03-14 19:15:29 -06:00
xorg.xwininfo
xsettingsd
# Audio
pulsemixer
pavucontrol
playerctl
# Haskell
cabal-install
cabal2nix
ghc
stack
2019-06-20 13:17:20 -06:00
haskellPackages.hpack
2019-05-07 15:10:44 -06:00
haskellPackages.hasktags
2019-06-10 09:11:50 -06:00
haskellPackages.hoogle
2019-06-23 14:55:11 -06:00
(all-hies.selection { selector = p: { inherit (p) ghc864 ghc865; }; })
# Scala
sbt
scala
2018-07-13 18:20:10 -06:00
# Node
nodePackages.npm
nodejs
2018-07-14 11:32:03 -06:00
# Rust
cargo
2019-06-20 21:59:33 -06:00
carnix
2019-06-23 14:55:59 -06:00
racer
rls
rustc
2018-07-14 11:32:03 -06:00
2018-08-27 16:52:53 -06:00
# Clojure
boot
leiningen
2019-03-06 18:07:31 -07:00
# Ruby
ruby
# Tools
2018-07-30 13:17:43 -06:00
automake
2018-07-07 22:45:02 -06:00
bazaar
2019-06-05 01:35:47 -06:00
bind
binutils
dex
2019-05-07 15:10:44 -06:00
direnv
2018-07-13 18:20:10 -06:00
dpkg
2019-03-06 18:07:31 -07:00
emacs26Packages.cask
2019-01-06 20:45:06 -07:00
fd
file
gcc
2018-06-25 19:28:04 -06:00
gdb
2019-06-05 01:35:47 -06:00
gitAndTools.git-crypt
2018-07-07 22:45:02 -06:00
gitAndTools.git-fame
2019-06-05 01:35:47 -06:00
gitAndTools.git-sync
2018-07-07 22:45:02 -06:00
gitAndTools.hub
gitFull
2019-05-09 15:26:48 -06:00
glxinfo
gnumake
gnupg
2019-05-25 22:18:23 -06:00
gparted
htop
inotify-tools
2018-06-19 23:51:49 -06:00
ispell
2019-01-06 20:45:06 -07:00
jq
2019-06-20 21:59:33 -06:00
lsof
mercurial
ncdu
2018-06-19 23:51:49 -06:00
neofetch
2019-02-05 10:30:25 -07:00
openvpn
2019-05-25 22:18:23 -06:00
parallel
pass
2018-07-13 18:20:10 -06:00
patchelf
2019-05-09 15:26:48 -06:00
pciutils
plasma-workspace
2019-06-20 21:59:33 -06:00
pijul
2018-06-20 15:08:03 -06:00
powertop
2019-05-25 22:18:23 -06:00
prometheus_2
2019-01-02 13:41:19 -07:00
pscircle
python-with-my-packages
2018-06-17 05:36:38 -06:00
qt5.qttools
rcm
2018-09-05 10:49:26 -06:00
rr
2018-06-19 23:30:58 -06:00
scrot
silver-searcher
stow
2019-07-10 14:36:26 -06:00
subversion
tmux
unzip
2019-02-05 10:30:25 -07:00
usbutils
2018-07-04 17:27:39 -06:00
valgrind
wget
# Nix
nix-prefetch-git
2019-06-10 09:11:50 -06:00
cachix
2019-06-26 21:50:03 -06:00
lorri
# Miscellaneous
android-udev-rules
librsvg
2018-06-14 17:04:36 -06:00
transmission-gtk
];
2018-07-14 11:31:44 -06:00
# XXX: Plasma seems to set this
# environment.variables = {
# GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
# };
2019-06-03 03:01:49 -06:00
programs.zsh.enable = true;
2018-07-30 13:17:43 -06:00
programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
2019-01-02 13:41:19 -07:00
programs.adb.enable = true;
2019-01-11 16:48:28 -07:00
services.openssh.enable = true;
2019-02-14 23:45:26 -07:00
services.avahi = {
enable = true;
nssmdns = true;
publish = {
enable = true;
domain = true;
userServices = true;
};
};
2019-02-14 23:45:26 -07:00
2018-07-30 13:17:43 -06:00
services.gnome3.at-spi2-core.enable = true;
2019-02-14 23:45:26 -07:00
2018-07-11 21:14:18 -06:00
services.kbfs.enable = true;
2019-02-14 23:45:26 -07:00
services.autorandr.enable = true;
2019-05-11 13:36:06 -06:00
services.locate.enable = true;
services.xserver = {
exportConfiguration = true;
enable = true;
layout = "us";
desktopManager = {
2018-07-14 11:31:44 -06:00
plasma5.enable = true;
2018-07-30 13:17:43 -06:00
gnome3.enable = true;
default = "none";
};
windowManager = {
default = "xmonad";
2019-07-10 14:36:26 -06:00
session = [
{
name = "xmonad";
start = ''
/usr/bin/env imalison-xmonad &
waitPID=$!
'';
}
{
name = "waymonad";
start = ''
/usr/bin/env waymonad
waitPID=$!
'';
}
];
};
displayManager = {
sddm = {
enable = true;
};
sessionCommands = ''
systemctl --user import-environment GDK_PIXBUF_MODULE_FILE
'';
};
};
2019-06-26 15:11:48 -06:00
virtualisation.docker.enable = true;
2018-06-26 22:55:26 -06:00
users.extraUsers = let
extraGroups = [
2019-01-02 13:41:19 -07:00
"audio"
"adbusers"
"disk"
2019-06-26 15:11:48 -06:00
"docker"
2019-01-02 13:41:19 -07:00
"networkmanager"
"systemd-journal"
"video"
"wheel"
];
2018-06-26 22:55:26 -06:00
userDefaults = {
inherit extraGroups;
group = "users";
isNormalUser = true;
createHome = true;
shell = pkgs.zsh;
};
in {
imalison = userDefaults // {
name = "imalison";
uid = 1000;
home = "/home/imalison";
shell = pkgs.zsh;
};
kat = userDefaults // {
name = "kat";
uid = 1001;
home = "/home/kat";
shell = pkgs.zsh;
};
};
2019-01-02 13:41:19 -07:00
system.stateVersion = "18.03";
}