From 075b1a98c432d890218a65967f4426b4cefcff81 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Tue, 5 Jun 2018 21:55:07 -0700 Subject: [PATCH] [NixOS] Add nixOS machine configuration and base configuration --- nixos/configuration.nix | 201 +++++++++++++++++++++++++++++++ nixos/machines/imalison-home.nix | 60 +++++++++ 2 files changed, 261 insertions(+) create mode 100644 nixos/configuration.nix create mode 100644 nixos/machines/imalison-home.nix diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 00000000..c3a96cdb --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,201 @@ +{ 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; +in +{ + boot.loader.systemd-boot.enable = true; + nixpkgs.config.allowUnfree = true; + security.sudo.wheelNeedsPassword = false; + networking.networkmanager.enable = true; + + 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; [ + fira-mono + dejavu_fonts + noto-fonts-emoji + emojione + twemoji-color-font + source-code-pro + roboto + source-sans-pro + source-serif-pro + ]; + 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 + google-chrome + firefox + hexchat + kodi + vlc + xfce.thunar + spotify + termite + rxvt_unicode + emacs + + # Appearance + numix-icon-theme-circle + gnome3.adwaita-icon-theme + hicolor-icon-theme + + # Desktop + autorandr + clipit + compton + feh + sddm-kcm + networkmanagerapplet + pinentry + pommed_light + rofi + rofi-pass + volnoti + xclip + xdotool + xorg.xkbcomp + xsettingsd + + # Audio + pulsemixer + pavucontrol + playerctl + + # Haskell + cabal-install + cabal2nix + ghc + stack2nix + stack + + # Tools + binutils + gcc + gitFull + gnumake + gnupg + htop + ncdu + pass + python-with-my-packages + rcm + silver-searcher + stow + tmux + wget + zsh + + # Miscellaneous + librsvg + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # 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 = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + environment.loginShellInit = ". ~/.lib/nix_login.sh"; + + services.xserver = { + exportConfiguration = true; + enable = true; + layout = "us"; + videoDrivers = [ "nvidia" ]; + 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; + }; + }; + + }; + + hardware.opengl.driSupport32Bit = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.extraUsers.imalison = { + name = "imalison"; + group = "users"; + isNormalUser = true; + extraGroups = [ + "wheel" "disk" "audio" "video" + "networkmanager" "systemd-journal" + ]; + createHome = true; + uid = 1000; + home = "/home/imalison"; + shell = pkgs.zsh; + }; + + system.stateVersion = "18.03"; # Did you read the comment? +} diff --git a/nixos/machines/imalison-home.nix b/nixos/machines/imalison-home.nix new file mode 100644 index 00000000..53fd22b5 --- /dev/null +++ b/nixos/machines/imalison-home.nix @@ -0,0 +1,60 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + + ../configuration.nix + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/110e3bf8-19b7-4a39-8e2a-b4c3c0d59d0e"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/B2DA-CD21"; + fsType = "vfat"; + }; + + fileSystems."/arch-linux-root" = { + device = "/dev/disk/by-uuid/9095e51e-33f9-440d-a272-46e129800f81"; + fsType = "ext4"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/a6933b22-c7f4-4c57-b330-1450f313922e"; } + { device = "/dev/disk/by-uuid/dbd49a76-4b3e-4b5c-9a88-68a9e61f6210"; } + ]; + + nix.maxJobs = lib.mkDefault 4; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + + boot.initrd.luks.devices = [ + { + name = "root"; + device = "/dev/sda3"; + preLVM = true; + } + ]; + + boot.loader.grub.device = "/dev/sda"; + + networking.hostName = "imalison-home"; + boot.loader.efi.canTouchEfiVariables = true; + + services.xserver.screenSection = '' + DefaultDepth 24 + Option "RegistryDwords" "PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1" + Option "TripleBuffer" "True" + Option "Stereo" "0" + Option "nvidiaXineramaInfoOrder" "DFP-0" + Option "metamodes" "DVI-D-0: nvidia-auto-select +0+2160 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, HDMI-0: nvidia-auto-select +640+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, HDMI-1: nvidia-auto-select +2560+2160 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}" + Option "SLI" "Off" + Option "MultiGPU" "Off" + Option "BaseMosaic" "off" + ''; +}