commit f0b00f7e6d10773c28f3ce88b5e58ade632cdadc Author: Daniel Patterson Date: Sun Oct 17 23:56:50 2021 +0100 Initial commit diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..60943ec --- /dev/null +++ b/configuration.nix @@ -0,0 +1,146 @@ +# 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 systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + nixpkgs.config.allowUnfree = true; + + networking.hostName = "dingbox"; # Define your hostname. + networking.networkmanager.enable = true; + programs.nm-applet.enable = true; + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Set your time zone. + time.timeZone = "Europe/London"; + + # 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. + networking.useDHCP = false; + networking.interfaces.enp5s0.useDHCP = true; + networking.interfaces.wlp6s0.useDHCP = true; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n.defaultLocale = "en_US.UTF-8"; + console = { + # font = "Lat2-Terminus16"; + useXkbConfig = true; + }; + + # Enable the X11 windowing system. + services.xserver = { + enable = true; + layout = "gb"; + + videoDrivers = [ "nvidia" ]; + screenSection = '' + Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}" + Option "AllowIndirectGLXProtocol" "off" + Option "TripleBuffer" "on" + ''; + + libinput = { + enable = true; + mouse = { + accelProfile = "flat"; + accelSpeed = "1"; + }; + }; + + windowManager.i3.enable = true; + + }; + + + # Configure keymap in X11 + # services.xserver.xkbOptions = "eurosign:e"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + hardware.opengl.driSupport32Bit = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.daniel = { + isNormalUser = true; + home = "/home/daniel"; + initialPassword = "password"; + extraGroups = [ "wheel" "networkmanager" ]; # Enable ‘sudo’ for the user. + shell = pkgs.zsh; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + curl + fd + firefox + git + i3 + ripgrep + wget + zsh + ]; + + environment.homeBinInPath = true; + + # 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; + # }; + + programs.zsh = { + enable = true; + ohMyZsh = { + enable = true; + plugins = [ "git" "fzf" ]; + theme = "agnoster"; + }; + }; + + # 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; + + # 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 = "21.05"; # Did you read the comment? + +} + diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..9c810f3 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,30 @@ +# 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, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1c0e1988-4420-4485-bf16-ffb8ec854c69"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/F5EA-A9CB"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +} diff --git a/nixpkgs/home.nix b/nixpkgs/home.nix new file mode 100644 index 0000000..4611aff --- /dev/null +++ b/nixpkgs/home.nix @@ -0,0 +1,67 @@ +{ pkgs, ... }: + +{ + imports = [ + ./i3 + ./polybar + ]; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + + home.username = "daniel"; + home.homeDirectory = "/home/daniel"; + + home.file.".icons/default".source = "${pkgs.capitaine-cursors}/share/icons/capitaine-cursors"; + + xsession.enable = true; + services.dunst.enable = true; + + nixpkgs.overlays = [ + (import (builtins.fetchTarball { + url = https://github.com/nix-community/neovim-nightly-overlay/archive/master.tar.gz; + })) + ]; + + home.packages = with pkgs; + [ + (import ./i3utils) + alacritty + chezmoi + element-desktop + feh + fzf + go + i3 + i3lock + lazygit + nerdfonts + oh-my-zsh + pavucontrol + restic + rofi + starship + xclip + ]; + + home.keyboard = { + layout = "gb"; + options = [ + "caps:escape" + ]; + }; + + programs.git = { + enable = true; + userName = "Daniel Patterson"; + userEmail = "me@danielpatterson.dev"; + }; + + programs.neovim.enable = true; + programs.neovim.viAlias = true; + programs.neovim.vimAlias = true; + + + + home.stateVersion = "21.05"; +} diff --git a/nixpkgs/i3/default.nix b/nixpkgs/i3/default.nix new file mode 100644 index 0000000..096499b --- /dev/null +++ b/nixpkgs/i3/default.nix @@ -0,0 +1,74 @@ +{ config, lib, pkgs, ...}: + +let + mod = "Mod4"; +in { + xsession.windowManager.i3 = { + enable = true; + config = { + modifier = mod; + fonts = { + names = [ "pango:monospace 8" ]; + style = "monospace"; + size = 8.0; + }; + terminal = "alacritty"; + + floating = { + modifier = mod; + criteria = [ + { instance = "pavucontrol"; } + ]; + }; + + focus = { + followMouse = false; + }; + + bars = [ ]; + + keybindings = lib.mkOptionDefault { + "${mod}+q" = "kill"; + "${mod}+d" = "exec rofi -show drun"; + + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+l" = "move right"; + + "${mod}+b" = "split h"; + "${mod}+v" = "split v"; + "${mod}+Control+Return" = "exec --no-startup-id i3utils workspace new"; + "${mod}+Control+Shift+Return" = "exec --no-startup-id i3utils workspace new -b"; + "${mod}+Shift+Return" = "exec --no-startup-id i3utils workspace new -n, move next"; + + "${mod}+Control+j" = "exec --no-startup-id $HOME/bin/scripts/godown"; + "${mod}+Control+k" = "exec --no-startup-id $HOME/bin/scripts/goup"; + "${mod}+Control+h" = "exec --no-startup-id i3utils workspace new -b"; + + "${mod}+Shift+k" = "exec --no-startup-id i3utils window move prev"; + "${mod}+Shift+j" = "exec --no-startup-id i3utils window move next"; + + "${mod}+p" = "scratchpad show"; + "${mod}+Escape" = "exec i3lock -i /home/daniel/Pictures/wallpapers/wallpaper_3840x2160_blur.png"; + "${mod}+Shift+Escape" = "exec i3lock -i /home/daniel/Pictures/wallpapers/wallpaper_3840x2160_blur.png && systemctl suspend"; + }; + + window = { + border = 3; + titlebar = false; + commands = [ + { command = "move position center #2116 46"; criteria = { class = "jetbrains-toolbox"; }; } + { command = "move scratchpad"; criteria = { instance = "spotify"; }; } + ]; + }; + + startup = [ + { command = "$HOME/bin/scripts/flower"; always = true; } + ]; + }; + }; +} diff --git a/nixpkgs/i3utils/default.nix b/nixpkgs/i3utils/default.nix new file mode 100644 index 0000000..986d680 --- /dev/null +++ b/nixpkgs/i3utils/default.nix @@ -0,0 +1,13 @@ +with import {}; + +buildGoModule rec { + pname = "i3utils"; + version = "0.0.1"; + src = fetchgit { + url = "https://git.sr.ht/~dpatterbee/i3utils"; + rev = "refs/heads/main"; + sha256 = "1h97131558nklhi3f2a3jl9np2n8y1irh088jc5iry63zpsfx2qm"; + }; + + vendorSha256 = "1lzr4ga58aa35z0vkpw8jldplvg174q49nqqpdv0vz0aj3m585nq"; +} diff --git a/nixpkgs/polybar/config b/nixpkgs/polybar/config new file mode 100644 index 0000000..76d1a6b --- /dev/null +++ b/nixpkgs/polybar/config @@ -0,0 +1,394 @@ +[colors] +;background = ${xrdb:color0:#222} +background = #222 +background-alt = #444 +;foreground = ${xrdb:color7:#222} +foreground = #dfdfdf +foreground-alt = #555 +primary = #ffb52a +secondary = #e60053 +alert = #bd2c40 + +[bar/main] +width = 100% + +height = 34 + +font-0 = Ubuntu:size=10;2 + +font-1 = Font Awesome 5 Free Solid:size=10;3 +font-2 = Font Awesome 5 Brands:size=10;1 + +fixed-center = true + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +;border-size = 4 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 2 + +modules-left = i3 +modules-center = mpd date +modules-right = filesystem xbacklight pulseaudio memory cpu wlan eth battery temperature powermenu + +tray-position = right +tray-padding = 2 + +dpi = 120 +;tray-background = #0063ff + +;wm-restack = bspwm +;wm-restack = i3 + +;override-redirect = true + +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev + +;scroll-up = i3wm-wsnext +;scroll-down = i3wm-wsprev + +cursor-click = pointer +cursor-scroll = ns-resize + +[module/xwindow] +type = internal/xwindow +label = %title:0:30:...% + +[module/xkeyboard] +type = internal/xkeyboard +blacklist-0 = num lock + +format-prefix = " " +format-prefix-foreground = ${colors.foreground-alt} +format-prefix-underline = ${colors.secondary} + +label-layout = %layout% +label-layout-underline = ${colors.secondary} + +label-indicator-padding = 2 +label-indicator-margin = 1 +label-indicator-background = ${colors.secondary} +label-indicator-underline = ${colors.secondary} + +[module/filesystem] +type = internal/fs +interval = 25 + +mount-0 = / + +label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% +label-unmounted = %mountpoint% not mounted +label-unmounted-foreground = ${colors.foreground-alt} + +[module/i3] +type = internal/i3 +format = +index-sort = false +wrapping-scroll = false + +; Only show workspaces on the same output as the bar +;pin-workspaces = true + +label-mode-padding = 2 +label-mode-foreground = #000 +label-mode-background = ${colors.primary} + +; focused = Active workspace on focused monitor +label-focused = %name% +label-focused-background = ${colors.background-alt} +label-focused-underline= ${colors.primary} +label-focused-padding = 2 + +; unfocused = Inactive workspace on any monitor +label-unfocused = %name% +label-unfocused-padding = 2 + +; visible = Active workspace on unfocused monitor +label-visible = %name% +label-visible-background = ${self.label-focused-background} +label-visible-underline = ${self.label-focused-underline} +label-visible-padding = ${self.label-focused-padding} + +; urgent = Workspace with urgency hint set +label-urgent = %index% +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +; Separator in between workspaces +; label-separator = | + + +[module/mpd] +type = internal/mpd +format-online = + +icon-prev =  +icon-stop =  +icon-play =  +icon-pause =  +icon-next =  + +label-song-maxlen = 25 +label-song-ellipsis = true + +[module/xbacklight] +type = internal/xbacklight + +format =