diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..097d9fc --- /dev/null +++ b/configuration.nix @@ -0,0 +1,135 @@ +# 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, ... }: + +let + fsOptions = [ "noatime" "ssd" "space_cache" "compress=lzo" ]; + +in { + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ./packages.nix + /home/spiollinux/src/nixos-hardware/lenovo/thinkpad/t440s + ]; + + # encrypted partitions + boot.initrd.luks = + { devices = + { "systemA".device = "/dev/disk/by-uuid/1d57fb8c-301b-4d8c-8652-dcda39910404"; + "systemB".device = "/dev/disk/by-uuid/d68d217b-5443-49ca-af1b-9f2eacb73d8b"; + "cryptswap".device = "/dev/disk/by-uuid/472d5c58-d834-4ff8-82f1-f98d627e9163"; + }; + reusePassphrases = true; + }; + + fileSystems."/".options = fsOptions ++ [ "subvol=nixos_root" ]; + fileSystems."/home".options = fsOptions ++ [ "subvol=home" ]; + + services.fstrim.enable = true; + + # powermanagement + services.tlp.enable = true; + #powerManagement.powertop.enable = true; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "thinknix"; + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Select internationalisation properties. + i18n = { + consoleFont = "Lat2-Terminus16"; + consoleKeyMap = "de"; + defaultLocale = "de_DE.UTF-8"; + }; + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # 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 = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + networking.networkmanager.enable = true; + + services.avahi.enable = true; + + # Enable CUPS to print documents. + services.printing = + { enable = true; + drivers = [ pkgs.hplip ]; + }; + # scanners + hardware.sane = + { enable = true; + extraBackends = [ pkgs.hplip ]; + }; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + # Bluetooth + hardware.bluetooth.enable = true; + hardware.pulseaudio.package = pkgs.pulseaudioFull; + + # Enable the X11 windowing system. + services.xserver.enable = true; + services.xserver.layout = "de"; + services.xserver.xkbOptions = "eurosign:e"; + + services.xserver.videoDrivers = [ "modesetting" "intel" ]; + + # 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; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.extraUsers.spiollinux = { + isNormalUser = true; + uid = 1000; + extraGroups = [ "vboxusers" "wheel" "networkmanager" "scanner" "lp" "wireshark"]; + shell = pkgs.zsh; + }; + + programs.zsh = + { enable = true; + autosuggestions.enable = true; + }; + + services.smartd = + { enable = true; + devices = [ { device = "/dev/sda"; } { device = "/dev/sdb"; } ]; + }; + +# fix nix-env memory issues +boot.kernel.sysctl."vm.overcommit_memory" = "1"; + + # 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 = "18.03"; # Did you read the comment? + +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..2764865 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, ... }: + +{ + imports = + [ + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/0cd6d909-dba3-4542-a3b3-bffa16f6ce78"; + fsType = "btrfs"; + options = [ "subvol=nixos_root" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/0cd6d909-dba3-4542-a3b3-bffa16f6ce78"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B8CE-E83B"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/d6dce42c-56c6-4477-b4fe-d1b35c92bc38"; } + ]; + + nix.maxJobs = lib.mkDefault 4; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; +} diff --git a/packages.nix b/packages.nix new file mode 100644 index 0000000..b900f1d --- /dev/null +++ b/packages.nix @@ -0,0 +1,42 @@ +{ pkgs, config, ... }: + +{ + # List packages installed in system profile. + environment.systemPackages = with pkgs; [ + wget + vim + vimPlugins.vim-nix + vimPlugins.pathogen + tmux + htop + zsh + btrfs-progs + git + python3 + manpages + dnsutils + netcat + ntfs3g + file + strace + ltrace + valgrind + lzop + p7zip + testdisk + rsync + pv + exfat + exfat-utils + iotop + cifs-utils + dstat + + # NetworkManager stuff + networkmanager-openconnect + networkmanager-vpnc + kdeApplications.akonadi-mime # for KOrganizer + ]; +} + +