# 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 ]; # Use the GRUB 2 boot loader. boot.loader.grub.enable = true; boot.loader.grub.version = 2; boot.tmpOnTmpfs = true; # Define on which hard drive you want to install Grub. boot.loader.grub.device = "/dev/sda"; hardware.opengl.enable = true; networking = { # Hostname and wireless enabled hostName = "jx230"; # wireless.enable = true; # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config # replicates the default behaviour. interfaces.enp0s25.useDHCP = true; interfaces.wlp3s0.useDHCP = true; # Firewall configuration firewall.enable = true; networkmanager = { enable = true; }; }; # Select internationalisation properties. i18n = { defaultLocale = "en_DK.UTF-8"; }; console = { keyMap = "us"; font = "Lat2-Terminus16"; }; # Set your time zone. time.timeZone = "Europe/Copenhagen"; # Enabled services # Enable the OpenSSH daemon. # services.openssh.enable = true; # Enable CUPS to print documents. services.printing.enable = true; # Enable sound. sound.enable = true; hardware.pulseaudio.enable = true; # Stupid but need it to control sound from acpid # hardware.pulseaudio.systemWide = true; # Turn down sound when inserting headphones services.acpid.handlers = { headphone = { action = '' vals=($1) case ''${vals[2]} in plug) whoami >> /tmp/acpi.log amixer set Master 10% ;; esac ''; event = "jack/headphone.*"; }; }; programs.gnupg.agent = { enable = true; enableSSHSupport = true; pinentryFlavor = "gtk2"; }; # Enable the X11 windowing system. services.xserver = { enable = true; layout = "us"; xkbVariant = "altgr-intl"; exportConfiguration = true; windowManager.i3 = { enable = true; package = pkgs.i3-gaps; }; displayManager = { defaultSession = "none+i3"; }; desktopManager = { xterm.enable = false; }; # Touchpad studd libinput.enable = true; # Start dbus? startDbusSession = true; }; services.gvfs.enable = true; # Yubikey services.pcscd.enable = true; # Thinkpad stuff hardware.acpilight.enable = true; services.acpid.enable = true; services.tlp.enable = true; # Passwords services.gnome3.gnome-keyring.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.julian = { isNormalUser = true; shell = pkgs.zsh; extraGroups = [ "wheel" "video" ]; }; # 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.03"; # Did you read the comment? fonts.fonts = with pkgs; [ noto-fonts noto-fonts-emoji liberation_ttf ubuntu_font_family ]; # List packages installed in system profile. To search, run: # $ nix search wget nixpkgs.config.allowUnfree = true; environment = { systemPackages = with pkgs; [ # General stuff wget vim neovim git htop zsh stow pass python tree python3 dnsutils gnupg zip unzip gopass tig file imagemagick gcc binutils whois nmap go # Network stuff networkmanagerapplet networkmanager-openconnect networkmanager-l2tp # X stuff feh xscreensaver dmenu rofi xorg.xmodmap xss-lock acpilight xdotool dunst xcompmgr scrot libnotify # Gui applications firefox gnome3.evolution pavucontrol okular leafpad inkscape gimp meld pinentry gnome3.gnome-system-monitor gnome3.dconf pcmanfm termite quasselClient nomacs wireshark spotify # (st.override { conf = builtins.readFile ./st-config.h; }) # Other stuff # texlive.combined.scheme-full biber # Hardware stuff. X230 linuxPackages.acpi_call ]; }; }