Initial commit

This commit is contained in:
2021-10-17 23:56:50 +01:00
commit f0b00f7e6d
7 changed files with 745 additions and 0 deletions

146
configuration.nix Normal file
View File

@@ -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. Its 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?
}

View File

@@ -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;
}

67
nixpkgs/home.nix Normal file
View File

@@ -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";
}

74
nixpkgs/i3/default.nix Normal file
View File

@@ -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; }
];
};
};
}

View File

@@ -0,0 +1,13 @@
with import <nixpkgs> {};
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";
}

394
nixpkgs/polybar/config Normal file
View File

@@ -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 = <label-state> <label-mode>
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 = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
icon-prev = 
icon-stop = 
icon-play = 
icon-pause = 
icon-next = 
label-song-maxlen = 25
label-song-ellipsis = true
[module/xbacklight]
type = internal/xbacklight
format = <label> <bar>
label = BL
bar-width = 10
bar-indicator = |
bar-indicator-foreground = #fff
bar-indicator-font = 2
bar-fill = ─
bar-fill-font = 2
bar-fill-foreground = #9f78e1
bar-empty = ─
bar-empty-font = 2
bar-empty-foreground = ${colors.foreground-alt}
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #f90000
label = %percentage:2%%
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #4bffdc
label = %percentage_used%%
[module/wlan]
type = internal/network
interface = wlp59s0
interval = 3.0
format-connected = <ramp-signal> <label-connected>
format-connected-underline = #9f78e1
label-connected = %essid%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-3 = 
ramp-signal-4 = 
ramp-signal-foreground = ${colors.foreground-alt}
[module/eth]
type = internal/network
interface = enp0s31f6
interval = 3.0
format-connected-underline = #55aa55
format-connected-prefix = " "
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = %local_ip%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
[module/date]
type = internal/date
interval = 1
date =
date-alt = " %Y-%m-%d"
time = %H:%M
time-alt = %H:%M:%S
format-prefix = 
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #0a6cf5
label = %date% %time%
[module/pulseaudio]
type = internal/pulseaudio
format-volume = <label-volume> <ramp-volume> <bar-volume>
label-volume = vol %percentage%%
label-volume-foreground = ${root.foreground}
label-muted = 
label-muted-foreground = #FF0000
ramp-volume-0 = 
ramp-volume-1 = 
ramp-volume-2 = 
ramp-volume-3 = 
ramp-volume-4 = 
ramp-headphones-0 = 
ramp-headphones-1 = 
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/alsa]
type = internal/alsa
format-volume = <label-volume> <bar-volume>
label-volume = VOL
label-volume-foreground = ${root.foreground}
format-muted-prefix = " "
format-muted-foreground = ${colors.foreground-alt}
label-muted = sound muted
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/battery]
type = internal/battery
poll-interval = 10
format-charging = <label-charging>
label-charging =  %percentage: 2%%
format-charging-underline = #ffb52a
format-discharging = <ramp-capacity> <label-discharging>
label-discharging = %percentage: 2%%
format-discharging-underline = ${self.format-charging-underline}
format-full = <label-full>
label-full = 
format-full-underline = ${self.format-charging-underline}
format-low = <animation-low> <label-low>
label-low = %percentage: 2%%
label-low-foreground = ${colors.warning}
animation-low-foreground = ${colors.warning}
full-at = 99
low-at = 12
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-5 = 
ramp-capacity-6 = 
ramp-capacity-7 = 
ramp-capacity-8 = 
ramp-capacity-9 = 
animation-low-0 = 
animation-low-1 = 
animation-low-2 = 
animation-low-3 = 
animation-low-3-foreground = ${colors.transparent}
animation-low-framerate = 500
[module/temperature]
type = internal/temperature
thermal-zone = 0
warn-temperature = 60
format = <ramp> <label>
format-underline = #f50a4d
format-warn = <ramp> <label-warn>
format-warn-underline = ${self.format-underline}
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colors.secondary}
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-foreground = ${colors.foreground-alt}
[module/powermenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = 
label-open-foreground = ${colors.secondary}
label-close =  cancel
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = reboot
menu-0-0-exec = menu-open-1
menu-0-1 = power off
menu-0-1-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = sudo reboot
menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
;pseudo-transparency = false
[global/wm]
margin-top = 5
margin-bottom = 5
; vim:ft=dosini

View File

@@ -0,0 +1,21 @@
{pkgs, ...}:
{
services.polybar = {
enable = true;
package = pkgs.polybar.override {
i3Support = true;
mpdSupport = true;
pulseSupport = true;
};
script = ''
polybar main & disown
'';
config = ./config;
};
}