dotfiles/nixos/configuration.nix

313 lines
6.4 KiB
Nix
Raw Normal View History

{ config, pkgs, ... }:
let
my-python-packages = python-packages: with python-packages; [
appdirs
requests
virtualenv
ipython
ipdb
virtualenvwrapper
pip
];
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
udiskie-appindicator = pkgs.udiskie.overrideAttrs (oldAttrs: rec {
version = "1.7.5";
src = pkgs.fetchFromGitHub {
owner = "coldfix";
repo = "udiskie";
rev = version;
sha256 = "1mcdn8ha5d5nsmrzk6xnnsqrmk94rdrzym9sqm38zk5r8gpyl1k4";
};
propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [pkgs.libappindicator-gtk3];
});
2018-06-17 04:01:41 -06:00
clipit-master = pkgs.clipit.overrideAttrs (oldAttrs: rec {
2018-06-25 19:35:23 -06:00
version = "50d983514386029a1f133187902084b753458f32";
2018-06-17 04:01:41 -06:00
preConfigure = "./autogen.sh";
configureFlags = ["--with-gtk3" "--enable-appindicator"];
src = pkgs.fetchFromGitHub {
owner = "IvanMalison";
repo = "ClipIt";
2018-06-25 19:35:23 -06:00
sha256 = "1d52zjnxmcp2kr4wvq2yn9fhr61v9scp91fxfvasvz5m7k1zagdn";
2018-06-17 04:01:41 -06:00
rev = version;
};
buildInputs = with pkgs; [
autoconf automake intltool gtk3 xdotool hicolor-icon-theme
libappindicator-gtk3
];
});
2018-06-17 04:27:04 -06:00
git-sync = with pkgs; stdenv.mkDerivation rec {
name = "git-sync-${version}";
version = "20151024";
src = fetchFromGitHub {
owner = "simonthum";
repo = "git-sync";
rev = "eb9adaf2b5fd65aac1e83d6544b9076aae6af5b7";
sha256 = "01if8y93wa0mwbkzkzx2v1vqh47zlz4k1dysl6yh5rmppd1psknz";
};
buildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp -a git-sync $out/bin/git-sync
'';
wrapperPath = with stdenv.lib; makeBinPath [
coreutils
git
gnugrep
gnused
];
fixupPhase = ''
patchShebangs $out/bin
wrapProgram $out/bin/git-sync \
--prefix PATH : "${wrapperPath}"
'';
};
2018-06-18 18:12:26 -06:00
pasystray-appindicator = with pkgs; pasystray.overrideAttrs (oldAttrs: rec {
buildInputs = oldAttrs.buildInputs ++ [libappindicator-gtk3];
});
in
{
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-06-17 04:16:49 -06:00
google-chrome
hexchat
2018-06-17 04:16:49 -06:00
keybase-gui
kodi
2018-06-18 18:12:26 -06:00
lxappearance
2018-06-17 04:16:49 -06:00
rxvt_unicode
spotify
termite
2018-06-17 04:16:49 -06:00
vlc
xfce.thunar
# 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
2018-06-17 04:01:41 -06:00
clipit-master
compton
feh
2018-06-17 04:02:10 -06:00
gnome3.gpaste
kdeconnect
2018-06-26 22:55:26 -06:00
libnotify
2018-06-20 15:19:04 -06:00
lxqt.lxqt-powermanagement
networkmanagerapplet
2018-06-26 22:55:26 -06:00
notify-osd
2018-06-18 18:12:26 -06:00
pasystray-appindicator
pinentry
pommed_light
rofi
rofi-pass
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
stack2nix
stack
# Tools
binutils
2018-06-19 23:30:58 -06:00
dfeet
gcc
2018-06-25 19:28:04 -06:00
gdb
gitFull
2018-06-17 04:27:04 -06:00
git-sync
gnumake
gnupg
htop
inotify-tools
2018-06-19 23:51:49 -06:00
ispell
ncdu
2018-06-19 23:51:49 -06:00
neofetch
pass
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-06-19 23:30:58 -06:00
scrot
silver-searcher
stow
tmux
wget
2018-06-16 20:17:57 -06:00
wmctrl
zsh
# Nix
nix-prefetch-git
# Miscellaneous
android-udev-rules
librsvg
2018-06-14 17:04:36 -06:00
transmission-gtk
];
environment.variables = {
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
};
programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
# 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
environment.etc."zshenv".text =
''
if [ -n "$__ETC_PROFILE_DONE" ]; then return; fi
source /etc/profile
'';
services.openssh.enable = true;
services.avahi = {
enable = true;
nssmdns = true;
publish = {
enable = true;
domain = true;
userServices = true;
};
};
sound.enable = true;
hardware.pulseaudio.enable = true;
services.xserver = {
exportConfiguration = true;
enable = true;
layout = "us";
desktopManager = {
gnome3.enable = true;
default = "none";
};
windowManager = {
default = "xmonad";
i3.enable = true;
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 = [
"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;
};
};
2018-06-16 20:17:57 -06:00
system.stateVersion = "18.03";
}