inital nixos config commit

This commit is contained in:
2025-10-03 23:57:28 -05:00
commit bb73c757a9
29 changed files with 3809 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
users/blake/dotfiles/zsh/zplug
users/blake/dotfiles/zsh/.zsh_history

48
flake.lock generated Normal file
View File

@@ -0,0 +1,48 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758463745,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759281824,
"narHash": "sha256-FIBE1qXv9TKvSNwst6FumyHwCRH3BlWDpfsnqRDCll0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5b5be50345d4113d04ba58c444348849f5585b4a",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-25.05",
"type": "indirect"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

29
flake.nix Normal file
View File

@@ -0,0 +1,29 @@
{
description = "blakes nix config";
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, ... }: {
nixosConfigurations.snowbelle = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/snowbelle/snowbelle.nix
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.blake = import ./users/blake/home.nix;
backupFileExtension = "backup";
};
}
];
};
};
}

17
homelab/nfs.nix Normal file
View File

@@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
let
nfsExports = ''
/holocron/vault *(rw,sync,no_subtree_check,no_root_squash)
/holocron/media *(ro,sync,no_subtree_check)
'';
in
{
# enable nfs with all exports
services.nfs = {
server = {
enable = true;
exports = nfsExports;
};
};
}

27
homelab/smb.nix Normal file
View File

@@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
# define smb shares
let
smbShares = {
vault = {
path = "/holocron/vault";
browseable = true;
writable = true;
guestOk = false;
};
media = {
path = "/holocron/media";
browseable = true;
writable = true;
guestOk = false;
};
};
in
{
# enable smb with all shares
services.samba = {
enable = true;
settings = smbShares;
};
}

27
homelab/zfs.nix Normal file
View File

@@ -0,0 +1,27 @@
{ config, pkgs, ... }:
{
# set network host id
networking.hostId = "3e6e7055";
# enable zfs support
boot.kernelModules = [ "zfs" ];
boot.supportedFilesystems = [ "zfs" ];
# enable smart monitoring
services.smartd.enable = true;
# enable zfs
services.zfs = {
autoScrub.enable = true;
autoScrub.interval = "weekly";
# datasets = {
# "rpool/data" = {
# mountPoint = "/mnt/storage";
# };
# };
};
}

View File

@@ -0,0 +1,37 @@
# 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 + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "uhci_hcd" "ehci_pci" "ahci" "usbhid" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/1263a8f6-089d-45ed-aaa6-06d3160ce0e5";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/AB71-CFC6";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -0,0 +1,73 @@
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
../../modules/ssh.nix
../../modules/docker.nix
../../homelab/zfs.nix
../../homelab/smb.nix
../../homelab/nfs.nix
];
# use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# setup hostname and networking stack
networking.hostName = "snowbelle"; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# set timezone
time.timeZone = "America/Chicago";
# define shell
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
# define blake group
users.groups.blake = {};
# create blake user
users.users.blake = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "docker" ]; # Enable sudo for the user.
shell = pkgs.zsh;
group = "blake";
};
# package install list
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
rsync
wget
git
iptables
nftables
];
# enable flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
22 # ssh
80 # http
111 # portmapper for nfs
139 # smb
443 # https
445 # cifs
2049 # nfs
];
#networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = true;
system.stateVersion = "25.05"; # Did you read the comment?
}

12
modules/docker.nix Normal file
View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
{
virtualisation.docker = {
enable = true;
daemon.settings = {
experimental = true;
};
};
}

15
modules/ssh.nix Normal file
View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
# enable and configure openssh
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
PermitRootLogin = "no";
X11Forwarding = false;
};
};
}

View File

@@ -0,0 +1,9 @@
# general
set forcekitty
set chafasixel
preview glow .md {{
glow -s "dark" < "$f"
}}

View File

@@ -0,0 +1,103 @@
# blake's lf config
# --- folder specific ---
# timesheets show recent first
setlocal ~/documents/holocron/work/nhc/timesheets/2024/ reverse
# --- options ---
# file previews
set previewer ctpv
set cleaner ctpvclear
&ctpv -s $id
&ctpvquit $id
# mouse
set mouse true
# search
set ignorecase true
# --- mappings ---
# navigation
map [ half-up
map ] half-down
# files & archives
map ad mkdir
map af mkfile
map ae extract
map aa archive
# trash
map gt cd ~/.local/share/Trash/files
map <delete> trash
map <s-delete> $trash-restore
# --- functions ---
# extract any archive
cmd extract %{{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}
cmd archive %{{
echo "enter archive name: " ; read archive_name
if [ -z "$archive_name" ]; then
echo "No archive name provided."
exit 1
fi
IFS="$(printf '\n\t')"
file_list=()
for x in $fx; do
file_list+=("$x")
done
case "$archive_name" in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar cjf "$archive_name" "${file_list[@]}" ;;
*.tar.gz|*.tgz) tar czf "$archive_name" "${file_list[@]}" ;;
*.tar.xz|*.txz) tar cJf "$archive_name" "${file_list[@]}" ;;
*.zip) zip -r "$archive_name" "${file_list[@]}" ;;
*.rar) rar a "$archive_name" "${file_list[@]}" ;;
*.7z) 7z a "$archive_name" "${file_list[@]}" ;;
*) echo "Unsupported archive format" ;;
esac
}}
# move files to trash
cmd trash %IFS="$(printf '\n\t')"; trash-put $fx
# make a directory
cmd mkdir %{{
echo "enter directory name: " ; read dir
if [ -n "$dir" ]; then
mkdir -p "$dir" && echo "'$dir' created."
else
echo "no dir name provided"
fi
}}
# make a file
cmd mkfile %{{
echo "enter file name: " ; read file
if [ -n "$file" ]; then
touch "$file" && echo "'$file' created."
else
echo "no file name provided"
fi
}}

View File

@@ -0,0 +1,6 @@
-- blakes neovim config rewritten in lua
require('base.base')
require('base.keymaps')
require('base.lazy')
vim.cmd.colorscheme 'nightfox'

View File

@@ -0,0 +1,14 @@
{
"LuaSnip": { "branch": "master", "commit": "73813308abc2eaeff2bc0d3f2f79270c491be9d7" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"hererocks": { "branch": "master", "commit": "160228946bed9998f5e3b168bd0b66ba2690f8f3" },
"image.nvim": { "branch": "master", "commit": "446a8a5cc7a3eae3185ee0c697732c32a5547a0b" },
"lazy.nvim": { "branch": "main", "commit": "59334064f8604ca073791c25dcc5c9698865406e" },
"nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"vimwiki": { "branch": "dev", "commit": "72792615e739d0eb54a9c8f7e0a46a6e2407c9e8" }
}

View File

@@ -0,0 +1,64 @@
-- blake's nvim config in lua
-- base.base
-- general nvim settings
-- define functions for settings
local g = vim.g
local o = vim.o
local opt = vim.opt
-- clipboard
o.clipboard = "unnamedplus"
-- enable filetype detection
vim.cmd('filetype indent plugin on')
vim.cmd('syntax on')
-- o.nocompatible = true
-- line numbers
o.number = true
o.numberwidth = 2
o.relativenumber = true
vim.cmd('highlight LineNr ctermfg=054')
-- tabs
o.tabstop = 4
o.shiftwidth = 4
o.softtabstop = -1 -- if negative uses shift width
o.expandtab = true
o.smarttab = true
o.autoindent = true
-- improve search
o.ignorecase = true
o.smartcase = true
-- backup files
o.backup = false
o.writebackup = false
o.undofile = true
o.swapfile = true
-- auto-read file changes
o.autoread = true
-- spell checker
o.spelllang = 'en_us'
o.spell = false
-- word wrapping
o.wrap = true
o.linebreak = true
o.breakindent = true
-- visual line movement
vim.keymap.set({'i'}, '<Up>', '<C-o>gk', {desc = 'Visual Line Up (Insert)'})
vim.keymap.set({'i'}, '<Down>', '<C-o>gj', {desc = 'Visual Line Down (Insert)'})
vim.keymap.set({'n', 'v'}, '<Up>', 'g<Up>', {desc = 'Visual Line Up'})
vim.keymap.set({'n', 'v'}, '<Down>', 'g<Down>', {desc = 'Visual Line Down'})
-- set leader
g.mapleader = " "
g.maplocalleader = " "

View File

@@ -0,0 +1,19 @@
-- bootstrap lazy
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- load plugins
require("lazy").setup("plugins")

View File

@@ -0,0 +1,60 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-Space>"] = cmp.mapping.complete(), -- Trigger completion
["<C-e>"] = cmp.mapping.abort(), -- Close completion
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Confirm selection
-- **Navigation**
["<Down>"] = cmp.mapping.select_next_item(), -- Arrow down
["<Up>"] = cmp.mapping.select_prev_item(), -- Arrow up
["<C-n>"] = cmp.mapping.select_next_item(), -- Ctrl+n (alternative)
["<C-p>"] = cmp.mapping.select_prev_item(), -- Ctrl+p (alternative)
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
}),
})
end,
}

View File

@@ -0,0 +1,11 @@
-- return {
{
"willothy/nvim-cokeline",
dependencies = {
"nvim-lua/plenary.nvim", -- Required for v0.4.0+
"nvim-tree/nvim-web-devicons", -- If you want devicons
"stevearc/resession.nvim" -- Optional, for persistent history
},
config = true
}
}

View File

@@ -0,0 +1,3 @@
return {
'rafi/awesome-vim-colorschemes',
}

View File

@@ -0,0 +1,57 @@
return {
{
"3rd/image.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("image").setup({
backend = "kitty", -- or "ueberzug" or "sixel"
processor = "magick_cli", -- or "magick_rock"
integrations = {
markdown = {
enabled = true,
clear_in_insert_mode = false,
download_remote_images = true,
only_render_image_at_cursor = false,
only_render_image_at_cursor_mode = "popup", -- or "inline"
floating_windows = false, -- if true, images will be rendered in floating markdown windows
filetypes = { "markdown", "vimwiki" },
},
neorg = {
enabled = true,
filetypes = { "norg" },
},
typst = {
enabled = true,
filetypes = { "typst" },
},
html = { enabled = false },
css = { enabled = false },
},
max_width = nil,
max_height = nil,
max_width_window_percentage = nil,
max_height_window_percentage = 50,
scale_factor = 1.0,
window_overlap_clear_enabled = false,
window_overlap_clear_ft_ignore = {
"cmp_menu",
"cmp_docs",
"snacks_notif",
"scrollview",
"scrollview_sign",
},
editor_only_render_when_focused = false,
tmux_show_only_in_active_window = false,
hijack_file_patterns = {
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
"*.webp",
"*.avif",
},
})
end,
},
}

View File

@@ -0,0 +1,8 @@
return {
'EdenEast/nightfox.nvim',
opts = {
options = {
transparent = true,
}
}
}

View File

@@ -0,0 +1,15 @@
return {
'vimwiki/vimwiki',
init = function ()
vim.g.vimwiki_list = {
{
path = '~/holocron',
path_html = '~/holocron/html',
syntax = 'markdown',
ext = '.md',
diary_rel_path = 'journal/diary',
auto_diary_index = 1,
},
}
end
}

View File

@@ -0,0 +1,218 @@
blakes
neovim
config
lua
keymaps
PS1
zsh
lf
dir
blake's
zshrc
abc123
abc123
nqu940
Choo
Kwang
https
hyprland
configs
hypr
myColors
conf
env
qt6ct
pseudotiling
mainMod
keybinds
bluetooth
workspace
resizing
off
Holocron
NHC
Timesheet
PLD
lifegroup
ALV
alsa
pci
skl
hda
dsp
HiFi
hw
sofhdadsp
dp1
hdmi
dp
dp3
dp2
VoiceEngine
WEBRTC
workspaces
wireplumber
backlight
BAT0
intel
thunderbird
wlp0s20f3
wifi
ethernet
󰝟
󰈀
󰖪
tooltip
ifname
essid
ipaddr
󰘊
signalStrength
󰥛
󰕒
bandwidthUpBits
󰇚
bandwidthDownBits
gwaddr
nmtui
pulsemixer
wpctl
󰂯
󰂲
󰥉
bluetuith
bluetoothctl
fi
num
tt
mon
pos
ffead3
ecc6d9
ffdd
ffcc66
ff6699
tz
the
holocron
syncthing
repo
yveltal
#hnage
chnage/!
hwmon
sys
hwmon2
temp1
temperatureC
zone0
hwmon3
usr
tofi
xargs
hyprctl
nvim
unnamedplus
filetype
LineNr
ctermfg
greetd
tuigreet
TUI
toml
keymap
gk
gj
filename
wayland
hyprpaper
waybar
qt5
qt6
swaylock
swayidle
mako
dmenu
xdg
wlr
wlroots
nsxiv
mpv
vlc
zathura
pdf
epub
mediainfo
metadata
imagemagick
yacreader
networkmanager
CLI
systemd
DNS
resolv
ufw
pacman
uncomment
ucode
cpu
cpufreq
rtkit
cronie
exfatprogs
exfat
AUR
yay
resolvectl
symlinked
symlink
uplink
nameserver
nameserver
edns0
trust
trust
trust
trust
ad
comcast
tx
hsd1
off
filesystems
fstab
dev
nvme0n1p1
usb
UUID
ventoy
lockbox
uid
gid
lfcd
cd
lfrc
repos
Ervin
Croy
Async
Chirotouch
Steph
th
Asana
subtask
Trax
multihome
ATEM
autorun
Blackmagic

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,152 @@
exit
ls
lf
cat vimwiki.lua
vim nix.lua
lf
https://github.com/zplug/zplug /home/blake/.config/zsh/zplug
git clone https://github.com/zplug/zplug /home/blake/.config/zsh/zplug
src
lf
ssh dockers
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
rm nix.lua
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
ls
lf
v
lf
ls
cd
ls
lf
ls
vim zfs.nix
lf
vim zfs.nix
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
cat ../../modules/zfs.nix
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
printf "%08x\n" $((RANDOM<<16 | RANDOM))
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
zpool status
modprobe zsf
modprobe zfs
sudo modprobe zfs
sudo reboot
zpool status
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
sudo nft list ruleset | grep 'tcp dport'
sudo iptables -L INPUT -n -v | grep tcp
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
sudo iptables -L INPUT -n -v | grep tcp
sudo nft list ruleset | grep 'tcp dport'
sudo iptables -L -n -v
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
sudo nix-env --delete-generations old
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo iptables -L -n -v
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
sudo iptables -L -n -v
lf
vim smb.nix
vim nfs.nix
lf
sudo mkdir /holocron
sudo mkdir /holocron/media
sudo mkdir /holocron/vault
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
ls
lf
ip a
sudo iptables -L -n -v
lf
sudo smbpasswd -a <username>
sudo smbpasswd -a blake
lf
sudo chown blake:blake /holocron -R
ls /holocron/media
rm /holocron/media/hehe
rm /holocron/media/hehe -r
ls
lf
sudo nixos-rebuild switch --flake ~/.nix#snowbelle
ls /holocron/media
rm /holocron/media/asdf -r
ls
lf
git status
lf
ssh-keygen --help
ssh-keygen
ls
lf
cat id_snowbelle.pub
cd
cd .nix
ls
git init
ls
la
ssh://git@git.blakedheld.xyz:7567/blake
git push
git remote origin add origin ssh://git@git.blakedheld.xyz:7567
git remote add origin ssh://git@git.blakedheld.xyz:7567
git push
git push --set-upstream origin trunk
git remote add origin ssh://git@git.blakedheld.xyz:7567/blake/nix.git
git status
git add .
vim .gitignore
ls users/blake/dotfiles/zsh/zplug/
vim .gitignore
git status
git rm --staged *
git rm --cached *
git rm --cached * -r
git rm --cached * -rf
git status
git add .

View File

@@ -0,0 +1,198 @@
# blake's zsh config file
# 'source .zshrc' to load the config after editing
# prompt
#PS1='%B%S%F{004}[%n@%m]:%f%s%F{015}%~%f%S%F{004}$%f%s%b '
# blakes prompt
PS1='%F{0}%K{126}%B[%n@%m]%b%k%f:%F{015}%B[%~]%b%f%F{015}%S$%s%f '
# --- defaults ---
export EDITOR=nvim
export PAGER=less
# --- history ---
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.config/zsh/.zsh_history
setopt append_history
setopt inc_append_history
unsetopt share_history
# --- tab complete ---
autoload -Uz compinit && compinit
setopt no_menu_complete
compinit
# --- aliases ---
# zsh
alias cfz='nvim $HOME/.config/zsh/.zshrc'
alias src='source $HOME/.config/zsh/.zshrc'
# config editing
alias cfh='nvim $HOME/.config/hypr/hyprland.conf'
# navigation
setopt autocd
set -o vi
alias ls='ls --color=auto --group-directories-first'
alias ll='ls -lh --color=auto --group-directories-first'
alias la='ls -Alh --color=auto --group-directories-first'
alias ..='cd ..'
alias ...='cd ../..'
alias fs='du -h | sort -h'
alias ds='du -hs'
# shortcuts
alias vswap='cd ~/.local/state/nvim/swap'
alias tn='lf ~/documents/holocron/notes/tech'
alias nhc='lf ~/documents/holocron/work/nhc'
alias diary='cd ~/documents/holocron/notes/journal/diary'
alias screenies='lf ~/pictures/screenshots'
alias holo='lf ~/documents/holocron'
# safety
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -Iv'
# colors
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# packages
alias update='sudo pacman -Syu && yay -Syu && flatpak update'
alias pacrm='sudo pacman -Rnsu'
alias yayrm='yay -Rns'
alias pacls='pacman -Qe'
alias paclsaur='pacman -Qm'
alias disup="flatpak update com.discordapp.Discord"
# tools
alias v='nvim'
alias sv='sudo nvim'
alias vim='nvim'
alias wifi='nmtui'
alias bt='bluetuith --no-warning'
alias audio='pulsemixer'
alias img='nsxiv'
alias vid='mpv'
alias pdf='zathura'
alias fw='sudo ufw status verbose'
# git
alias status='git status'
alias add='git add'
alias commit='git commit -m'
alias push='git push'
alias pull='git pull'
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
alias dtf='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
# shortcuts
alias chil='nvim ~/documents/holocron/tech/devices/yveltal/chilton'
alias school='nvim ~/documents/holocron/school/school.md'
# system
alias peace='systemctl poweroff'
alias love='systemctl reboot'
alias lock='loginctl lock-session'
# ssh
alias nebby='ssh nebula'
# wild shit
alias mgdrive='rclone mount gdrive: /media/gdrive --daemon --vfs-cache-mode writes'
alias micloud='rclone mount icloud: /media/icloud --daemon --vfs-cache-mode writes'
alias smp='mcrcon -H 10.0.0.104 -P 25575 -p WoopaGangaRecProGamingPassLmaoJkJk'
alias mcap='sudo umount /media/microsd ; sudo cryptsetup luksClose /dev/mapper/capsule ; sudo cryptsetup luksOpen UUID=a9e81f14-1e74-4777-a37a-81a0a43ae8d9 capsule --key-file ~/.config/cred/capsule.keyfile ; sudo mount -a'
# --- ssh auth sock ---
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
# --- path ---
# Define directories to add to PATH
ADDTOPATHS=(
"$HOME/.local/bin"
"$HOME/.local/bin/timecapsule"
)
for ADDTOPATH in "${ADDTOPATHS[@]}"; do
if [ -d "$ADDTOPATH" ]; then
case ":${PATH}:" in
*:"${ADDTOPATH}":*)
;;
*)
PATH="${PATH}:${ADDTOPATH}"
;;
esac
else
fi
done
export PATH
# --- scripts ---
# make lf change the working directory upon exit
alias lf='lfcd'
lfcd () {cd "$(command lf -print-last-dir "$@")"}
# --- plugins ---
# you really hate the idea of your zshrc auto cloning
# and installling the plugin manager. To do so manually:
# git clone https://github.com/zplug/zplug "$HOME/.config/zsh/zplug"
export ZPLUG_HOME="$HOME/.config/zsh/zplug/" # Change this to your custom directory
if [ -d "$HOME/.config/zsh/zplug" ]; then
export ZPLUG_INSTALLED="1"
source "$HOME/.config/zsh/zplug/init.zsh"
else
if [[ $- == *i* ]]; then
echo "⚠️ zplug is not installed. Run: git clone https://github.com/zplug/zplug $HOME/.config/zsh/zplug"
fi
fi
# init zplug
if [ -n "ZPLUG_INSTALLED" ]; then
zplug "zsh-users/zsh-syntax-highlighting", defer:2
zplug "zsh-users/zsh-history-substring-search"
zplug "zsh-users/zsh-autosuggestions" # Command suggestions as you type
zplug "zsh-users/zsh-completions" # Additional completions for more commands
zplug "olivierverdier/zsh-git-prompt"
zplug load
# install if there are new plugins
if ! zplug check --verbose; then
zplug install
zplug load
fi
fi
# -- syntax highlighting --
# Adjusted zsh-syntax-highlighting colors for red-green color blindness
ZSH_HIGHLIGHT_STYLES[default]=none
ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=magenta # (Was red)
ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=cyan
ZSH_HIGHLIGHT_STYLES[alias]=fg=blue # (Was green)
ZSH_HIGHLIGHT_STYLES[builtin]=fg=cyan
ZSH_HIGHLIGHT_STYLES[function]=fg=blue # (Was green)
ZSH_HIGHLIGHT_STYLES[command]=fg=blue,bold # (Was green)
ZSH_HIGHLIGHT_STYLES[precommand]=fg=cyan
ZSH_HIGHLIGHT_STYLES[commandseparator]=fg=cyan
ZSH_HIGHLIGHT_STYLES[hashed-command]=fg=blue # (Was green)
ZSH_HIGHLIGHT_STYLES[path]=fg=cyan,underline # This ensures paths are underlined
ZSH_HIGHLIGHT_STYLES[globbing]=fg=cyan
ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=magenta # (Was red)
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=fg=cyan
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=fg=cyan
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=fg=cyan
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=white,bold
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=white
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]=fg=cyan
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=cyan
ZSH_HIGHLIGHT_STYLES[assign]=fg=cyan
ZSH_HIGHLIGHT_STYLES[comment]=fg=yellow

88
users/blake/home.nix Normal file
View File

@@ -0,0 +1,88 @@
{ config, pkgs, ... }:
{
# general config
home.username = "blake";
home.homeDirectory = "/home/blake";
home.packages = with pkgs; [
git
ripgrep
btop
p7zip
ctpv
imagemagick
];
# setup zsh
home.sessionVariables.ZDOTDIR = "$HOME/.config/zsh";
programs.zsh = {
enable = true;
};
# link dotfiles
xdg.configFile."zsh" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dotfiles/zsh";
recursive = true;
};
# setup neovim
programs.neovim = {
enable = true;
};
# link dotfiles
xdg.configFile."nvim" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dotfiles/nvim";
recursive = true;
};
# setup lf
programs.lf = {
enable = true;
};
# link dotfiles
# xdg.configFile."lf" = {
# source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dotfiles/lf";
# recursive = true;
# };
xdg.configFile."ctpv" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dotfiles/ctpv";
recursive = true;
};
programs.gpg = {
enable = true;
};
services.gpg-agent = {
enable = true;
};
programs.ssh = {
enable = true;
matchBlocks = {
"git.blakedheld.xyz" = {
user = "git";
identityFile = "~/.ssh/id_snowbelle";
};
"dockers" = {
hostname = "10.10.0.30";
user = "blake";
identityFile = "~/.ssh/id_snowbelle";
};
};
};
# configure git
programs.git = {
enable = true;
userName = "blake";
userEmail = "me@blakedheld.xyz";
extraConfig = {
init.defaultBranch = "trunk";
core.editor = "nvim";
pull.rebase = true;
};
};
home.stateVersion = "25.05";
}