This commit is contained in:
2021-10-23 17:53:31 +01:00
parent 30148a6529
commit 7ebec48d40
17 changed files with 171 additions and 596 deletions

5
apply-system.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
pushd ~/.dotfiles
sudo nixos-rebuild switch --flake .#
popd

48
flake.lock generated Normal file
View File

@@ -0,0 +1,48 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1635123562,
"narHash": "sha256-kYuwQqHXDYxy5ijpm8SvCoPNx0br1TpoWeTIOEwOYvA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "da8a78eec9f7adb57f9e961d1da64805efacff37",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1634782485,
"narHash": "sha256-psfh4OQSokGXG0lpq3zKFbhOo3QfoeudRcaUnwMRkQo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "34ad3ffe08adfca17fcb4e4a47bb5f3b113687be",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

51
flake.nix Normal file
View File

@@ -0,0 +1,51 @@
{
description = "My System Configs";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager/master";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { nixpkgs, home-manager, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config = {
allowUnfree = true;
};
};
lib = nixpkgs.lib;
in {
homeConfigurations = {
daniel = home-manager.lib.homeManagerConfiguration {
inherit system pkgs;
username = "daniel";
homeDirectory = "/home/daniel";
configuration = {
imports = [
./user/dingbox/home.nix
];
};
stateVersion = "21.05";
};
};
nixosConfigurations = {
dingbox = lib.nixosSystem {
inherit system;
modules = [
./hosts/dingbox/configuration.nix
];
};
};
};
}

View File

@@ -11,11 +11,20 @@
]; ];
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.kernelPackages = pkgs.linuxKernel.packages.linux_5_14;
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# nix flakes compatibility
nix = {
package = pkgs.nixUnstable;
extraOptions = ''
experimental-features = nix-command flakes
'';
};
networking.hostName = "dingbox"; # Define your hostname. networking.hostName = "dingbox"; # Define your hostname.
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
programs.nm-applet.enable = true; programs.nm-applet.enable = true;
@@ -47,6 +56,7 @@
enable = true; enable = true;
layout = "gb"; layout = "gb";
dpi = 144;
videoDrivers = [ "nvidia" ]; videoDrivers = [ "nvidia" ];
screenSection = '' screenSection = ''
Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}" Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}"
@@ -62,6 +72,10 @@
}; };
}; };
displayManager = {
gdm.enable = true;
};
windowManager.i3.enable = true; windowManager.i3.enable = true;
}; };

2
update-system.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
nix flake update

View File

@@ -1,72 +0,0 @@
{ 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;
home.packages = with pkgs;
[
(import ./i3utils)
alacritty
chezmoi
element-desktop
feh
fzf
go_1_17
i3
i3lock
lazygit
nerdfonts
oh-my-zsh
pavucontrol
restic
rofi
starship
xclip
];
home.keyboard = {
layout = "gb";
options = [
"caps:escape"
];
};
programs = {
zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" "fzf" ];
theme = "agnoster";
};
};
};
programs.git = {
enable = true;
userName = "Daniel Patterson";
userEmail = "me@danielpatterson.dev";
};
programs.starship.enable = true;
programs.neovim.enable = true;
programs.neovim.viAlias = true;
programs.neovim.vimAlias = true;
home.stateVersion = "21.05";
}

View File

@@ -1,74 +0,0 @@
{ 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

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

View File

@@ -1,394 +0,0 @@
[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

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

View File

@@ -2,8 +2,9 @@
{ {
imports = [ imports = [
../common/i3 ../i3
../common/polybar ../neovim
../polybar
]; ];
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
@@ -17,9 +18,12 @@
xsession.enable = true; xsession.enable = true;
services.dunst.enable = true; services.dunst.enable = true;
home.packages = with pkgs; home.packages =let
i3utils = pkgs.lib.callPackageWith (pkgs) ../i3utils {};
in
with pkgs;
[ [
(import ../common/i3utils)
alacritty alacritty
chezmoi chezmoi
element-desktop element-desktop
@@ -28,6 +32,7 @@
go_1_17 go_1_17
i3 i3
i3lock i3lock
i3utils
lazygit lazygit
nerdfonts nerdfonts
oh-my-zsh oh-my-zsh
@@ -64,9 +69,6 @@
programs.starship.enable = true; programs.starship.enable = true;
programs.neovim.enable = true;
programs.neovim.viAlias = true;
programs.neovim.vimAlias = true;
home.stateVersion = "21.05"; home.stateVersion = "21.05";
} }

View File

@@ -6,13 +6,9 @@ in {
xsession.windowManager.i3 = { xsession.windowManager.i3 = {
enable = true; enable = true;
config = { config = {
modifier = mod; bars = [ ];
fonts = {
names = [ "pango:monospace 8" ]; defaultWorkspace = "workspace number 1";
style = "monospace";
size = 8.0;
};
terminal = "alacritty";
floating = { floating = {
modifier = mod; modifier = mod;
@@ -25,7 +21,11 @@ in {
followMouse = false; followMouse = false;
}; };
bars = [ ]; fonts = {
names = [ "pango:monospace 8" ];
style = "monospace";
size = 8.0;
};
keybindings = lib.mkOptionDefault { keybindings = lib.mkOptionDefault {
"${mod}+q" = "kill"; "${mod}+q" = "kill";
@@ -57,8 +57,16 @@ in {
"${mod}+Shift+Escape" = "exec i3lock -i /home/daniel/Pictures/wallpapers/wallpaper_3840x2160_blur.png && systemctl suspend"; "${mod}+Shift+Escape" = "exec i3lock -i /home/daniel/Pictures/wallpapers/wallpaper_3840x2160_blur.png && systemctl suspend";
}; };
modifier = mod;
startup = [
{ command = "$HOME/bin/scripts/flower"; always = true; }
];
terminal = "alacritty";
window = { window = {
border = 3; border = 5;
titlebar = false; titlebar = false;
commands = [ commands = [
{ command = "move position center #2116 46"; criteria = { class = "jetbrains-toolbox"; }; } { command = "move position center #2116 46"; criteria = { class = "jetbrains-toolbox"; }; }
@@ -66,9 +74,6 @@ in {
]; ];
}; };
startup = [
{ command = "$HOME/bin/scripts/flower"; always = true; }
];
}; };
}; };
} }

View File

@@ -1,4 +1,4 @@
with import <nixpkgs> {}; {pkgs, buildGoModule, fetchFromSourcehut, ...}:
buildGoModule rec { buildGoModule rec {
pname = "i3utils"; pname = "i3utils";

View File

@@ -2,8 +2,8 @@
{ {
imports = [ imports = [
../common/i3 ../i3
../common/polybar ../polybar
]; ];
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.

22
user/neovim/default.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, ... }:
{
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
plugins = with pkgs.vimPlugins; [
fzf-vim
gruvbox-nvim
nerdtree
nvim-lspconfig
(nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars))
nvim-whichkey-setup-lua
vim-nix
];
};
}