dotfiles/nixos/configuration.nix

297 lines
5.5 KiB
Nix
Raw Normal View History

{ config, pkgs, options, ... }:
let
my-overlays = import ./overlays.nix;
my-python-packages = python-packages: with python-packages; [
appdirs
requests
virtualenv
ipython
ipdb
virtualenvwrapper
pip
2018-07-30 13:17:43 -06:00
python-language-server
];
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
in
{
nixpkgs.overlays = [ my-overlays ];
# XXX: This ensures that all nix tools pick up the overlays that are set here
nix.nixPath =
# Prepend default nixPath values.
options.nix.nixPath.default ++
# Append our nixpkgs-overlays.
[ "nixpkgs-overlays=/etc/nixos/overlays-compat/" ];
nixpkgs.config.allowUnfree = true;
security.sudo.wheelNeedsPassword = false;
networking.networkmanager.enable = true;
2018-06-18 15:41:28 -06:00
networking.firewall.enable = false;
i18n = {
consoleKeyMap = "us";
defaultLocale = "en_US.UTF-8";
};
# Set your time zone.
# TODO: this should be set dynamically
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;
};
};
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# Applications
2018-06-18 14:24:26 -06:00
calibre
discord
2018-06-17 04:16:49 -06:00
emacs
firefox
kleopatra
2018-07-13 18:28:16 -06:00
gitter
2018-06-17 04:16:49 -06:00
google-chrome
dfeet
hexchat
2018-07-14 11:32:03 -06:00
quassel
2018-07-11 21:28:41 -06:00
keybase-gui-fixed
kodi
2018-06-18 18:12:26 -06:00
lxappearance
2018-06-17 04:16:49 -06:00
rxvt_unicode
pulseeffects
spotify
termite
2018-06-17 04:16:49 -06:00
vlc
xfce.thunar
wire-desktop
# Appearance
numix-icon-theme-circle
gnome3.adwaita-icon-theme
hicolor-icon-theme
2018-06-17 05:36:38 -06:00
plasma5.breeze-gtk
plasma5.breeze-qt5
2018-06-18 18:12:26 -06:00
gnome-breeze
# Desktop
2018-06-18 18:12:26 -06:00
# haskellPackages.status-notifier-item
autorandr
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
2018-06-18 18:12:26 -06:00
pasystray-appindicator
pinentry
pommed_light
rofi
rofi-pass
2018-07-04 17:27:39 -06:00
skippy-xd
2018-06-18 15:09:15 -06:00
synergy
udiskie-appindicator
volnoti
xclip
xdotool
xorg.xkbcomp
xsettingsd
# Audio
pulsemixer
pavucontrol
playerctl
# Haskell
cabal-install
cabal2nix
ghc
stack
# 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
2018-08-27 16:52:53 -06:00
# Clojure
boot
leiningen
# Tools
2018-07-30 13:17:43 -06:00
automake
2018-07-07 22:45:02 -06:00
bazaar
binutils
dex
2018-07-13 18:20:10 -06:00
dpkg
file
gcc
2018-06-25 19:28:04 -06:00
gdb
gitAndTools.git-sync
2018-07-07 22:45:02 -06:00
gitAndTools.git-fame
gitAndTools.hub
gitFull
gnumake
gnupg
htop
inotify-tools
2018-06-19 23:51:49 -06:00
ispell
mercurial
ncdu
2018-06-19 23:51:49 -06:00
neofetch
pass
2018-07-13 18:20:10 -06:00
patchelf
plasma-workspace
2018-06-20 15:08:03 -06:00
powertop
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
tmux
unzip
2018-07-04 17:27:39 -06:00
valgrind
wget
2018-06-16 20:17:57 -06:00
wmctrl
2018-07-11 21:14:53 -06:00
xorg.xev
zsh
# Nix
nix-prefetch-git
# 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";
# };
# Enabling zsh will clobber path because of the way it sets up /etc/zshenv
# programs.zsh.enable = true;
# Instead we just make sure to source profile from zsh
2018-07-30 13:17:43 -06:00
environment.etc."zshenv".text =
''
if [ -n "$__ETC_PROFILE_DONE" ]; then return; fi
source /etc/profile
'';
2018-07-30 13:17:43 -06:00
programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
services.openssh.enable = true;
services.avahi = {
enable = true;
nssmdns = true;
publish = {
enable = true;
domain = true;
userServices = true;
};
};
2018-07-30 13:17:43 -06:00
services.gnome3.at-spi2-core.enable = true;
2018-07-11 21:14:18 -06:00
services.kbfs.enable = true;
sound.enable = true;
hardware.pulseaudio.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";
session = [{
name = "xmonad";
start = ''
/usr/bin/env imalison-xmonad &
waitPID=$!
'';
}];
};
displayManager = {
# lightdm = {
# enable = true;
# extraSeatDefaults=''
# greeter-hide-users=false
# '';
# };
sddm = {
enable = true;
};
sessionCommands = ''
systemctl --user import-environment GDK_PIXBUF_MODULE_FILE
'';
};
};
hardware.opengl.driSupport32Bit = true;
# Define a user account. Don't forget to set a password with passwd.
2018-06-26 22:55:26 -06:00
users.extraUsers = let
extraGroups = [
2018-07-13 18:52:59 -06:00
"wheel" "disk" "audio" "video" "networkmanager" "systemd-journal"
];
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;
};
};
system.nixos.stateVersion = "18.03";
}