153 lines
5.0 KiB
Nix
Executable File
153 lines
5.0 KiB
Nix
Executable File
# Edit this configuration file to define what should be installed on
|
||
# your system. Help is available in the configuration.nix(5) man page
|
||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
imports =
|
||
[ # Include the results of the hardware scan.
|
||
../hardware-configuration.nix
|
||
../config/base.nix
|
||
../config/users.nix
|
||
../config/laptop.nix
|
||
../config/gui.nix
|
||
../config/i3.nix
|
||
../config/gnome.nix
|
||
#../config/grsec.nix
|
||
];
|
||
services.xserver.displayManager.defaultSession = "none+i3"; # set default WM
|
||
networking.hostName = "dynamix"; # Set Hostname
|
||
|
||
# https://bugzilla.kernel.org/show_bug.cgi?id=1l0941
|
||
boot.kernelParams = ["intel_pstate=no_hwp" ];
|
||
|
||
# Supposedly better for the SSD
|
||
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
|
||
|
||
# Use the GRUB 2 boot loader.
|
||
boot.loader.grub.enable = true;
|
||
boot.loader.grub.version = 2;
|
||
#boot.loader.grub.efiSupport = true;
|
||
# boot.loader.grub.efiInstallAsRemovable = true;
|
||
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||
# Define on which hard drive you want to install Grub.
|
||
#boot.loader.grub.device = "nodev"; # or "nodev" for efi only
|
||
#boot.loader.efi.canTouchEfiVariables = true;
|
||
#boot.loader.grub.gfxmodeEfi = "1024x768";
|
||
#boot.loader.systemd-boot.enable = true;
|
||
#boot.loader.efi.canTouchEfiVariables = true;
|
||
#boot.cleanTmpDir = true;
|
||
boot.loader.grub.device = "/dev/sda";
|
||
boot.initrd.availableKernelModules = [ "aes_x86_64" "aesni_intel" "cryptd" ];
|
||
|
||
swapDevices = [{device = "/swapfile"; size = 10000;}];
|
||
|
||
#networking.useNetworkd = true; # Use Networkd as default Networking Daemon - suitable on static Networks e.g. PCs
|
||
networking.networkmanager.enable = true; # Use Networkmanager as defaukt Networking Daemon - suitable on dynamic Networks e.g. Laptops
|
||
|
||
hardware.pulseaudio.package = pkgs.pulseaudioFull; # support for bluetooth headsets
|
||
hardware.bluetooth.enable = true;
|
||
|
||
# Have stable and unstable Packages
|
||
nixpkgs.config = {
|
||
# Allow proprietary packages
|
||
allowUnfree = true;
|
||
|
||
# Create an alias for the unstable channel
|
||
packageOverrides = pkgs: {
|
||
unstable = import <nixos-unstable> {
|
||
# pass the nixpgs config to the unstable alias
|
||
# to ensure 'allowUnfree = true;' is propagated:
|
||
config = config.nixpkgs.config;
|
||
};
|
||
# stable = import <nixos-stable> {
|
||
# pass the nixpgs config to the unstable alias
|
||
# to ensure 'allowUnfree = true;' is propagated:
|
||
# config = config.nixpkgs.config;
|
||
# };
|
||
};
|
||
|
||
#firefox.enableAdobeFlash = true;
|
||
#chromium.enablePepperFlash = true;
|
||
#google-chrome-stable.enablePepperFlash = true;
|
||
};
|
||
|
||
# List packages installed in system profile. To search by name, run:
|
||
# $ nix-env -qaP | grep wget
|
||
environment.systemPackages = with pkgs; [
|
||
acpi
|
||
acpitool
|
||
];
|
||
|
||
# Some programs need SUID wrappers, can be configured further or are
|
||
# started in user sessions.
|
||
programs.bash.enableCompletion = true;
|
||
# programs.mtr.enable = true;
|
||
programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
|
||
|
||
# List services that you want to enable:
|
||
|
||
# Enable the OpenSSH daemon.
|
||
services.openssh.enable = true;
|
||
|
||
# Open ports in the firewall.
|
||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||
networking.firewall.allowedUDPPorts = [ ];
|
||
# Or disable the firewall altogether.
|
||
# networking.firewall.enable = false;
|
||
networking.firewall.allowPing = true;
|
||
|
||
services.journald.extraConfig = ''
|
||
MaxRetentionSec=4day
|
||
'';
|
||
|
||
# Enable CUPS to print documents.
|
||
services.printing.enable = true;
|
||
|
||
# Enable touchpad support.
|
||
services.xserver.libinput.enable = true;
|
||
|
||
# Enable the KDE Desktop Environment.
|
||
# services.xserver.displayManager.sddm.enable = true;
|
||
# services.xserver.desktopManager.plasma5.enable = true;
|
||
|
||
# This value determines the NixOS release with which your system is to be
|
||
# compatible, in order to avoid breaking some software such as database
|
||
# servers. You should change this only after NixOS release notes say you
|
||
# should.
|
||
system.stateVersion = "20.09"; # Did you read the comment?
|
||
|
||
# Enable Autoupgrades
|
||
system.autoUpgrade.enable = true;
|
||
|
||
# enable pulseaudio
|
||
hardware.pulseaudio.enable = true;
|
||
hardware.pulseaudio.support32Bit = true;
|
||
|
||
# Add user to sudoers file
|
||
security.sudo.configFile = "templis ALL=(ALL) NOPASSWD: ALL";
|
||
|
||
programs.zsh.enable = true;
|
||
|
||
services.acpid = {
|
||
enable = true;
|
||
lidEventCommands = ''
|
||
if grep -q closed /proc/acpi/button/lid/LID/state; then
|
||
date >> /tmp/i3lock.log
|
||
DISPLAY=":0.0" XAUTHORITY=/home/templis/.Xauthority ${pkgs.i3lock}/bin/i3lock-fancy &>> /tmp/i3lock.log
|
||
fi
|
||
'';
|
||
};
|
||
systemd.user.services.i3lock-sleep = {
|
||
enable = true;
|
||
description = "Automatically lock screen before going to sleep";
|
||
wantedBy = [ "default.target" ];
|
||
path = with pkgs; [ xss-lock i3lock-fancy getopt fontconfig ];
|
||
serviceConfig = {
|
||
Restart = "always";
|
||
ExecStart = "${pkgs.xss-lock}/bin/xss-lock ${pkgs.i3lock-fancy}/bin/i3lock-fancy";
|
||
};
|
||
};
|
||
}
|