2015-10-23 01:26:53 +02:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
|
2018-05-04 09:13:54 +02:00
|
|
|
|
|
|
|
let
|
|
|
|
gitpkgs = import /home/steveej/src/github/NixOS/nixpkgs {};
|
2018-05-18 14:34:56 +02:00
|
|
|
unstablepkgs = import <nixos-unstable> {};
|
2018-05-04 09:13:54 +02:00
|
|
|
|
|
|
|
in
|
|
|
|
|
2018-01-26 12:45:56 +01:00
|
|
|
rec {
|
|
|
|
nix.binaryCachePublicKeys = [
|
2018-05-04 09:13:54 +02:00
|
|
|
# "hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs="
|
2018-01-26 12:45:56 +01:00
|
|
|
];
|
2017-01-18 16:11:26 +01:00
|
|
|
nix.binaryCaches = [
|
2015-10-23 01:26:53 +02:00
|
|
|
"https://cache.nixos.org"
|
2018-05-04 09:13:54 +02:00
|
|
|
# "https://hydra.nixos.org"
|
2015-10-23 01:26:53 +02:00
|
|
|
];
|
2017-01-18 16:11:26 +01:00
|
|
|
nix.trustedBinaryCaches = [
|
2015-10-23 01:26:53 +02:00
|
|
|
"https://cache.nixos.org"
|
2018-05-04 09:13:54 +02:00
|
|
|
# "https://hydra.nixos.org"
|
2015-10-23 01:26:53 +02:00
|
|
|
];
|
|
|
|
|
2016-11-17 20:40:45 +01:00
|
|
|
nix.daemonNiceLevel = 19;
|
|
|
|
nix.daemonIONiceLevel = 7;
|
|
|
|
|
2018-05-04 09:13:54 +02:00
|
|
|
nix.package = pkgs.nixUnstable;
|
|
|
|
|
|
|
|
nix.useSandbox = true;
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
# The NixOS release to be compatible with for stateful data such as databases.
|
|
|
|
# system.stateVersion = "unstable";
|
|
|
|
networking.hostName = "steveej-laptop"; # Define your hostname.
|
|
|
|
|
2018-05-04 09:13:54 +02:00
|
|
|
networking.hosts = {
|
|
|
|
"160.85.37.177" = [ "splabchat" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
networking.firewall.enable = true;
|
|
|
|
networking.firewall.checkReversePath = false;
|
|
|
|
|
|
|
|
# Provide a NAT/DHCP Router
|
|
|
|
#
|
|
|
|
# networking.nat.enable = true;
|
|
|
|
# networking.nat.internalInterfaces = [ "enp0s20f0u4u1u3" ];
|
|
|
|
# networking.nat.externalInterface = "wlp1s0";
|
|
|
|
# networking.interfaces."enp0s20f0u4u1u3".ipv4.addresses = [
|
|
|
|
# { address = "10.254.253.254"; prefixLength = 24; }
|
|
|
|
# ];
|
|
|
|
# services.dnsmasq = {
|
|
|
|
# enable = true;
|
|
|
|
# servers = [ "8.8.8.8" "8.8.4.4" ];
|
|
|
|
# extraConfig = ''
|
|
|
|
# domain=lan
|
|
|
|
# interface=enp0s20f0u4u1u3
|
|
|
|
# bind-interfaces
|
|
|
|
# dhcp-range=10.254.253.100,10.254.253.199,1h
|
|
|
|
# '';
|
|
|
|
# };
|
|
|
|
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
networking.networkmanager = {
|
|
|
|
enable = true;
|
|
|
|
unmanaged = [
|
|
|
|
"interface-name:veth*"
|
|
|
|
"interface-name:virbr*"
|
|
|
|
"interface-name:br*"
|
|
|
|
"interface-name:*vbox*"
|
|
|
|
"interface-name:*cni*"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2017-01-18 16:10:25 +01:00
|
|
|
networking.bridges."virbr1".interfaces = [];
|
2018-05-04 09:13:54 +02:00
|
|
|
networking.interfaces."virbr1".ipv4.addresses = [
|
2017-01-18 16:10:25 +01:00
|
|
|
{ address = "10.254.254.254"; prefixLength = 24; }
|
|
|
|
];
|
|
|
|
|
2017-05-04 13:56:14 +02:00
|
|
|
programs.zsh = {
|
2018-05-18 14:35:25 +02:00
|
|
|
enable = false;
|
|
|
|
# enableAutosuggestions = true; # enableCompletion = true;
|
|
|
|
# syntaxHighlighting.enable = true;
|
|
|
|
# syntaxHighlighting.patterns = {};
|
|
|
|
# ohMyZsh = {
|
|
|
|
# enable = true;
|
|
|
|
# theme = "tjkirch";
|
|
|
|
# };
|
|
|
|
# promptInit = ''
|
|
|
|
# autoload -U promptinit
|
|
|
|
# promptinit
|
|
|
|
# ZSH_THEME_GIT_PROMPT_PREFIX='@ '
|
|
|
|
# PROMPT='%F{%(!.red.green)}%n%f@%m %(?.%F{green}✓%f.%F{red}✗ ($?%))%f %F{blue}%~%f %F{magenta}$(git_prompt_info)%f
|
|
|
|
#%_%F{%(!.red.green)}$(prompt_char)%f '
|
|
|
|
# RPROMPT=""
|
|
|
|
# '';
|
|
|
|
# interactiveShellInit = ''
|
|
|
|
# '';
|
2017-05-04 13:56:14 +02:00
|
|
|
};
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
programs.bash = {
|
|
|
|
enableCompletion = true;
|
|
|
|
promptInit = ''
|
2016-05-23 00:35:47 +02:00
|
|
|
function exitstatus() {
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
|
|
printf '✓'
|
|
|
|
else
|
|
|
|
printf '✗'
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
function nixshellEval {
|
|
|
|
if [[ "$1" != "" ]]; then
|
|
|
|
printf "»$1« "
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
function setPS1 {
|
|
|
|
if test "$TERM" != "dumb"; then
|
|
|
|
# Provide a nice prompt.
|
|
|
|
BLUE="\[\033[0;34m\]"
|
|
|
|
RED="\[\033[1;31m\]"
|
|
|
|
GREEN="\[\033[1;32m\]"
|
|
|
|
NO_COLOR="\[\033[0m\]"
|
2015-10-23 01:26:53 +02:00
|
|
|
|
2016-05-23 00:35:47 +02:00
|
|
|
PROMPT_COLOR=$RED
|
|
|
|
let $UID && PROMPT_COLOR=$GREEN
|
|
|
|
PS1="$PROMPT_COLOR\u$NO_COLOR@\h \$(exitstatus) \$(nixshellEval $1)$BLUE\w$NO_COLOR\n$PROMPT_COLOR\\$ $NO_COLOR"
|
|
|
|
if test "$TERM" = "xterm"; then
|
|
|
|
PS1="\[\033]2;\h:\u:\w\007\]$PS1"
|
2015-10-23 01:26:53 +02:00
|
|
|
fi
|
2016-05-23 00:35:47 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
setPS1
|
|
|
|
'';
|
2015-10-23 01:26:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
environment.sessionVariables = {
|
|
|
|
EDITOR = "vim";
|
|
|
|
NIXPKGS_ALLOW_UNFREE = "1";
|
|
|
|
|
|
|
|
# Don't create .pyc files.
|
|
|
|
PYTHONDONTWRITEBYTECODE = "1";
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.etc."lvm/lvm.conf".text = ''
|
|
|
|
devices {
|
|
|
|
issue_discards = 1
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
2018-05-18 14:35:25 +02:00
|
|
|
environment.pathsToLink = [ "/share/zsh" ];
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
# Fonts, I18N, Date ...
|
|
|
|
fonts = {
|
|
|
|
enableCoreFonts = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
i18n = {
|
|
|
|
consoleFont = "lat9w-16";
|
|
|
|
defaultLocale = "en_US.UTF-8";
|
|
|
|
};
|
2016-08-31 17:44:30 +02:00
|
|
|
time.timeZone = "Europe/Berlin";
|
|
|
|
#time.timeZone = "America/Los_Angeles";
|
2015-10-23 01:26:53 +02:00
|
|
|
|
|
|
|
# Services
|
|
|
|
services.gpm.enable = true;
|
|
|
|
services.openssh.enable = true;
|
|
|
|
services.openssh.permitRootLogin = "yes";
|
|
|
|
|
2018-05-04 09:13:54 +02:00
|
|
|
services.gnome3 = {
|
|
|
|
gnome-disks.enable = false;
|
|
|
|
gnome-documents.enable = false;
|
|
|
|
gnome-online-miners.enable = false;
|
|
|
|
gnome-user-share.enable = false;
|
|
|
|
gnome-terminal-server.enable = false;
|
|
|
|
gpaste.enable = false;
|
|
|
|
sushi.enable = false;
|
|
|
|
tracker.enable = false;
|
|
|
|
|
|
|
|
# FIXME: gnome should be moved to user session
|
|
|
|
seahorse.enable = true;
|
|
|
|
gvfs.enable = true;
|
|
|
|
at-spi2-core.enable = true;
|
|
|
|
evolution-data-server.enable = true;
|
|
|
|
gnome-online-accounts.enable = true;
|
|
|
|
gnome-keyring.enable = true;
|
|
|
|
};
|
|
|
|
|
2018-01-26 12:45:56 +01:00
|
|
|
services.teamviewer.enable = false;
|
2015-10-23 01:26:53 +02:00
|
|
|
|
2016-04-25 19:28:34 +02:00
|
|
|
services.printing = {
|
|
|
|
enable = true;
|
2018-05-04 09:13:54 +02:00
|
|
|
drivers = [
|
|
|
|
pkgs.hplip
|
2018-05-18 14:34:56 +02:00
|
|
|
unstablepkgs.cups-kyodialog3
|
2018-05-04 09:13:54 +02:00
|
|
|
];
|
2016-04-25 19:28:34 +02:00
|
|
|
};
|
|
|
|
|
2016-11-17 20:40:45 +01:00
|
|
|
services.pcscd.enable = true;
|
2015-10-23 01:26:53 +02:00
|
|
|
services.xserver = {
|
2018-01-26 12:48:31 +01:00
|
|
|
enable = true;
|
2016-11-17 20:40:45 +01:00
|
|
|
libinput.enable = true;
|
|
|
|
libinput.naturalScrolling = true;
|
2016-03-27 21:43:29 +02:00
|
|
|
|
2017-01-18 16:07:47 +01:00
|
|
|
videoDrivers = [ "qxl" "modesetting" ];
|
2018-01-26 12:48:31 +01:00
|
|
|
xkbVariant = "altgr-intl";
|
2018-05-18 14:35:43 +02:00
|
|
|
xkbOptions = "nodeadkeys";
|
2015-10-23 01:26:53 +02:00
|
|
|
|
|
|
|
desktopManager = {
|
2018-05-04 09:13:54 +02:00
|
|
|
# FIXME: gnome should be moved to user session
|
2018-01-26 12:48:31 +01:00
|
|
|
gnome3.enable = true;
|
2018-05-04 09:13:54 +02:00
|
|
|
|
2016-11-17 20:40:45 +01:00
|
|
|
xterm.enable = true;
|
2018-01-26 12:48:31 +01:00
|
|
|
plasma5.enable = false;
|
2015-10-23 01:26:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
displayManager = {
|
2018-05-04 09:13:54 +02:00
|
|
|
lightdm = {
|
|
|
|
enable = true;
|
|
|
|
autoLogin = {
|
|
|
|
enable = true;
|
|
|
|
user = "steveej";
|
|
|
|
};
|
|
|
|
background = "${pkgs.nixos-artwork.wallpapers.simple-blue}/share/artwork/gnome/nix-wallpaper-simple-blue.png";
|
|
|
|
};
|
|
|
|
|
2016-06-28 11:35:43 -07:00
|
|
|
sessionCommands = ''
|
|
|
|
'';
|
2015-10-23 01:26:53 +02:00
|
|
|
};
|
|
|
|
};
|
2018-05-04 09:13:54 +02:00
|
|
|
|
|
|
|
# Package configuration
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
];
|
|
|
|
|
|
|
|
# More Services
|
2016-11-17 20:40:45 +01:00
|
|
|
services.udev.packages = [
|
2018-05-04 09:13:54 +02:00
|
|
|
pkgs.libu2f-host
|
|
|
|
pkgs.yubikey-personalization
|
|
|
|
];
|
2015-10-23 01:26:53 +02:00
|
|
|
services.udev.extraRules = ''
|
|
|
|
# OnePlusOne
|
|
|
|
ATTR{idVendor}=="05c6", ATTR{idProduct}=="6764", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1", TAG+="uaccess"
|
|
|
|
ATTR{idVendor}=="05c6", ATTR{idProduct}=="6765", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1", TAG+="uaccess"
|
2018-01-26 12:49:09 +01:00
|
|
|
|
|
|
|
# Plantronics BackBeat PRO
|
|
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="047f", ATTR{idProduct}=="011a", GROUP="users", MODE="0777"
|
|
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="047f", ATTR{idProduct}=="fffe", GROUP="users", MODE="0777"
|
|
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="047f", ATTR{idProduct}=="0001", GROUP="users", MODE="0777"
|
2017-01-18 16:11:26 +01:00
|
|
|
''
|
|
|
|
;
|
2015-10-23 01:26:53 +02:00
|
|
|
|
2018-01-26 12:48:31 +01:00
|
|
|
services.packagekit.enable = true;
|
|
|
|
|
2016-08-31 17:45:03 +02:00
|
|
|
services.resolved.enable = false;
|
2018-01-26 12:49:31 +01:00
|
|
|
services.nix-serve.enable = true;
|
|
|
|
|
|
|
|
services.samba.enable = true;
|
|
|
|
services.samba.extraConfig = ''
|
|
|
|
client max protocol = SMB3
|
|
|
|
'';
|
2016-06-28 11:36:11 -07:00
|
|
|
|
|
|
|
# hardware related services
|
2018-01-26 12:48:31 +01:00
|
|
|
services.illum.enable = true;
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
hardware = {
|
|
|
|
bluetooth.enable = true;
|
|
|
|
pulseaudio = {
|
|
|
|
enable = true;
|
|
|
|
package = pkgs.pulseaudioFull;
|
|
|
|
support32Bit = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2018-05-04 09:13:54 +02:00
|
|
|
services.fprintd.enable = true;
|
|
|
|
security.pam.services = {
|
|
|
|
login.fprintAuth = true;
|
|
|
|
sudo.fprintAuth = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
# required for running blueman-applet in user sessions
|
|
|
|
services.dbus.packages = with pkgs; [
|
|
|
|
blueman
|
|
|
|
];
|
|
|
|
|
|
|
|
# Kubernetes
|
|
|
|
# services.kubernetes.roles = ["master" "node"];
|
|
|
|
|
2016-06-28 11:36:11 -07:00
|
|
|
# virtualization
|
2016-07-14 10:26:26 -07:00
|
|
|
virtualisation = {
|
|
|
|
libvirtd.enable = true;
|
2018-05-04 09:13:54 +02:00
|
|
|
libvirtd.qemuPackage = pkgs.qemu;
|
2016-08-31 17:44:04 +02:00
|
|
|
virtualbox.host.enable = true;
|
|
|
|
virtualbox.host.addNetworkInterface = true;
|
2018-01-26 12:49:31 +01:00
|
|
|
docker.enable = true;
|
2016-07-14 10:26:26 -07:00
|
|
|
};
|
2016-08-09 22:50:23 +02:00
|
|
|
|
2018-01-26 12:48:31 +01:00
|
|
|
# Activation scripts for impure set up of paths in /
|
2016-08-09 22:50:23 +02:00
|
|
|
system.activationScripts.bin = ''
|
|
|
|
echo "setting up /bin..."
|
|
|
|
ln -sfn ${pkgs.bash}/bin/bash /tmp/.binbash
|
|
|
|
mv /tmp/.binbash /bin/bash
|
|
|
|
'';
|
2018-01-26 12:48:31 +01:00
|
|
|
system.activationScripts.etcX11sessinos = ''
|
|
|
|
echo "setting up /etc/X11/sessions..."
|
|
|
|
mkdir -p /etc/X11
|
|
|
|
[[ ! -L /etc/X11/sessions ]] || rm /etc/X11/sessions
|
|
|
|
ln -sf ${config.services.xserver.displayManager.session.desktops} /etc/X11/sessions
|
|
|
|
'';
|
|
|
|
|
2015-10-23 01:26:53 +02:00
|
|
|
}
|