- # cat /etc/nixos/configuration.nix
- { config, pkgs, ... }:
- let nixos-unstable = import <nixos-unstable> {}; in
- {
- boot.kernelPackages = pkgs.linuxPackages_latest;
- nixpkgs.overlays = [(self: super: {
- unstable = import <nixos-unstable>{};
- })];
- imports =
- [
- ./hardware-configuration.nix
- ./exwm-overlay.nix
- ];
- # Auto Updates
- system.autoUpgrade.enable = true;
- # Use the systemd-boot EFI boot loader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.timeout = 999999;
- boot.loader.efi.canTouchEfiVariables = true;
- # Set-up shared partition
- fileSystems."/mnt/shared" = {
- device = "/dev/disk/by-uuid/2AC4782EC477FB01";
- fsType = "ntfs";
- options = [ "users" "rw" "uid=1000" "gid=1000" ];
- };
- # ZFS customizations
- services.zfs.autoSnapshot.enable = true;
- services.zfs.autoScrub.enable = true;
- # Swap
- swapDevices = [
- { device = "/dev/sda7"; }
- ];
- # Select internationalisation properties.
- i18n = {
- consoleFont = "Lat2-Terminus16";
- consoleKeyMap = "us";
- defaultLocale = "en_US.UTF-8";
- };
- # Set-Up Networking Stuff
- networking.hostName = "LATITUDE-NIXOS";
- networking.networkmanager.enable = true;
- networking.hostId = "47c501b5";
- # Set your time zone.
- time.timeZone = "America/Los_Angeles";
- # Fonts
- fonts = {
- enableDefaultFonts = true;
- enableFontDir = true;
- enableGhostscriptFonts = true;
- fonts = with pkgs; [
- symbola
- noto-fonts
- noto-fonts-cjk
- noto-fonts-emoji
- nerdfonts
- ];
- };
- # No Suspending
- services.logind.lidSwitch = "ignore";
- # I'm fine with closed-source stuff
- nixpkgs.config.allowUnfree = true;
- # Packages
- environment.systemPackages = with pkgs; [
- acpi
- alsaUtils
- arandr
- aspell
- aspellDicts.en
- aspellDicts.en-computers
- aspellDicts.en-science
- binutils
- bluez
- bluez-tools
- cabal2nix
- citra
- coq
- direnv
- nixos-unstable.discord
- firefox-bin
- fzf
- gitAndTools.gitFull
- gnupg
- gnuplot
- haskellPackages.cabal-install
- haskellPackages.ghc
- haskellPackages.hlint
- haskellPackages.hoogle
- htop
- killall
- kpcli
- libreoffice
- ncurses.dev
- netcat
- nix-prefetch-git
- ntfs3g
- p7zip
- pandoc
- pango
- pavucontrol
- pciutils
- pianobar
- pinta
- qemu
- qutebrowser
- ripgrep
- sbcl
- scrot
- syslinux
- usbutils
- steam
- # steam-run
- sxiv
- tasksh
- taskwarrior
- texlive.combined.scheme-full
- unzip
- unrar
- virtmanager
- vlc
- wine
- wget
- wgetpaste
- xclip
- xorg.xbacklight
- xorg.xrandr
- xterm
- ];
- hardware.bluetooth.enable = true;
- hardware.opengl.driSupport32Bit = true;
- # Virtualization
- virtualisation.libvirtd.enable = true;
- # Printing
- services.printing.enable = true;
- services.printing.drivers = with pkgs; [
- gutenprint
- brgenml1cupswrapper
- brgenml1lpr
- ];
- # Shell Config
- programs.zsh = {
- enable = true;
- enableCompletion = true;
- interactiveShellInit = ''
- setopt correct
- bindkey -v'';
- ohMyZsh = {
- enable = true;
- plugins = [ "cabal" "git" "sudo" "systemd" "vi-mode" "wd" ];
- theme = "bureau";
- };
- shellAliases = {
- am = "alsamixer";
- xbl = "xbacklight";
- grep = "rg -S";
- tb = "nc termbin.com 9999";
- uninstall = "nix-env -q | fzf | xargs -I{} nix-env -e {}";
- };
- };
- users.defaultUserShell = pkgs.zsh;
- programs.command-not-found.enable = true;
- # Power Management
- services.acpid.enable = true;
- # Sound
- hardware.pulseaudio = {
- enable = true;
- package = pkgs.pulseaudioFull;
- };
- # Haskell
- services.hoogle.enable = true;
- services.hoogle.packages = hp: with hp; [ megaparsec parser-combinators recursion-schemes ];
- # Enable the X11 windowing system.
- services.xserver = {
- enable = true;
- layout = "us, gr";
- xkbOptions = "grp:shift_toggle, grp_led:caps, caps:escape, compose:menu";
- synaptics = {
- enable = true;
- vertEdgeScroll = true;
- vertTwoFingerScroll = true;
- scrollDelta = 111;
- tapButtons = true;
- };
- displayManager.lightdm = {
- enable = true;
- };
- desktopManager.xterm.enable = true;
- desktopManager.default = "none";
- windowManager = {
- default = "exwm";
- exwm = {
- enable = true;
- enableDefaultConfig = false;
- };
- };
- };
- # Define a user account.
- users.users = {
- avi = {
- isNormalUser = true;
- description = "Avi Caspe";
- group = "users";
- extraGroups = [ "networkmanager" "wheel" "audio" "systemd-journal" "libvirtd" ];
- };
- };
- # Enable Sudo
- security.sudo = {
- enable = true;
- wheelNeedsPassword = true;
- };
- # The NixOS release to be compatible with for stateful data such as databases.
- system.stateVersion = "17.09";
- }