aboutsummaryrefslogtreecommitdiff
path: root/configuration.nix
diff options
context:
space:
mode:
Diffstat (limited to 'configuration.nix')
-rw-r--r--configuration.nix206
1 files changed, 206 insertions, 0 deletions
diff --git a/configuration.nix b/configuration.nix
new file mode 100644
index 0000000..9ec52ab
--- /dev/null
+++ b/configuration.nix
@@ -0,0 +1,206 @@
+# 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
+ # Packages
+ dmenu = pkgs.callPackage ./packages/dmenu/pkg.nix {};
+ sensible-apps = pkgs.callPackage ./packages/sensible-apps/pkg.nix {};
+ shotkey = pkgs.callPackage ./packages/shotkey/pkg.nix {};
+ dwm = pkgs.callPackage ./packages/dwm/pkg.nix {};
+ dwmBlocks = pkgs.callPackage ./packages/dwmblocks/pkg.nix {};
+ st = pkgs.callPackage ./packages/st/pkg.nix {};
+
+ # Config
+ apps = (import ./packages/sensible-apps/sensible-apps.nix).apps;
+ windowManagers = {
+ dwm = ''
+ while true; do
+ (ssh-agent dwm &>> /tmp/dwm.log) || break;
+ done
+ '';
+ };
+in {
+ imports = [
+ ./hardware-configuration.nix
+ ];
+
+ nixpkgs.config = {
+ allowUnfree = true;
+ allowBroken = false;
+ };
+
+ # Network
+ networking.hostName = "dickhead";
+ networking.networkmanager.enable = true;
+
+ # I18n and keyboard layout
+ time.timeZone = "Asia/Kolkata";
+ i18n.defaultLocale = "en_US.UTF-8";
+ services.xserver.layout = "us";
+
+ # Global
+ environment.variables = {
+ EDITOR = apps.EDITOR;
+ VISUAL = apps.EDITOR;
+ TERMINAL = apps.TERMINAL;
+ BROWSER = apps.BROWSER;
+ PRIVATE_BROWSER = apps.PRIVATE_BROWSER;
+ };
+
+ environment.shells = [ pkgs.zsh pkgs.bashInteractive ];
+ programs.zsh = {
+ enable = true;
+ enableCompletion = true;
+ enableBashCompletion = true;
+ autosuggestions.enable = true;
+ syntaxHighlighting.enable = true;
+ histFile = "~/.config/zshhistory";
+ histSize = 50000;
+ interactiveShellInit = ''source ~/nixos/external/zsh/zshrc'';
+ promptInit = "";
+ loginShellInit = ''
+ setup_dwm() {
+ echo "~/nixos/external/xconfig/init.sh; ${windowManagers.dwm}" > ~/.xinitrc;
+ }
+
+ case "$(tty)" in
+ /dev/tty1) setup_dwm && startx ;;
+ *) echo "No tty for u" ;;
+ esac;
+ '';
+ };
+
+ # X11 config
+ services.xserver = {
+ enable = true;
+ autorun = false;
+ displayManager.startx.enable = true;
+ libinput = {
+ enable = true;
+ tapping = true;
+ naturalScrolling = false;
+ };
+ };
+ fonts.fonts = with pkgs; [
+ # jetbrains-mono
+ (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
+ cozette
+ noto-fonts-emoji
+ ];
+ services.picom = {
+ enable = true;
+ inactiveOpacity = 0.8;
+ backend = "glx";
+ settings = {
+ "inactive-dim" = 0.3;
+ "focus-exclude" = [ "class_g = 'dwm'" "class_g = 'dmenu'"];
+ };
+ opacityRules = [
+ "98:class_g = 'St' && focused"
+ "85:class_g = 'St' && !focused"
+ "90:class_g = 'qutebrowser' && !focused"
+ "100:class_g = 'qutebrowser' && focused"
+ ];
+ menuOpacity = 0.9;
+ };
+
+ # Enable CUPS to print documents.
+ # services.printing.enable = true;
+
+ # Enable sound.
+ sound.enable = true;
+ # hardware.pulseaudio.enable = true;
+
+ # User
+ users.users.imsohexy = {
+ isNormalUser = true;
+ extraGroups = [
+ "wheel"
+ "input"
+ "audio"
+ "video"
+ "storage"
+ "git"
+ "networkmanager"
+ ];
+ shell = pkgs.zsh;
+ };
+
+ # Nix config
+ nixpkgs.overlays = [
+ (import ./external/nvim/neovim.nix)
+ (self: super: {
+ pass = super.pass.override { dmenu = dmenu; };
+ })
+ ];
+
+ # Packages
+ environment.systemPackages = with pkgs; [
+ # Dev
+ neovim
+ silver-searcher
+ ripgrep
+ ctags
+ fzf
+ git
+ nodejs-15_x
+ yarn
+
+ # Browser
+ firefox
+ brave
+ # qutebrowser
+ w3m
+
+ # X
+ xorg.xinit
+ xorg.xrandr
+ xorg.xmodmap
+ xorg.xbacklight
+
+ # Media
+ mpv
+ sxiv
+ feh
+ ffmpeg-full
+
+ # Custom packages
+ sensible-apps
+ shotkey
+ dwm
+ dwmBlocks
+ st
+ dmenu
+
+ # Utils
+ mtm
+ lf
+ pass
+ xcwd
+ alsaUtils
+ unzip
+ curl
+ wget
+ gotop
+ killall
+ inxi
+ pciutils
+ ];
+
+ programs.gnupg.agent = {
+ enable = true;
+ enableSSHSupport = false;
+ };
+
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It‘s perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+ system.stateVersion = "20.09"; # Did you read the comment?
+}
+