initial commit

This commit is contained in:
TheGeneralist 2025-05-24 15:38:19 +02:00
commit 50da7ffff8
Signed by: thegeneralist01
SSH key fingerprint: SHA256:pp9qddbCNmVNoSjevdvQvM5z0DHN7LTa8qBMbcMq/R4
68 changed files with 3086 additions and 0 deletions

9
modules/linux/agenix.nix Normal file
View file

@ -0,0 +1,9 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
agenix
];
age.identityPaths = [
"/home/thegeneralist/.ssh/id_ed25519"
];
}

6
modules/linux/boot.nix Normal file
View file

@ -0,0 +1,6 @@
{
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.device = "/dev/nvme0n1";
}

29
modules/linux/ghostty.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs, ... }: {
environment.variables = {
TERMINAL = "ghostty";
};
home-manager.sharedModules = [{
programs.ghostty = {
enable = true;
package = pkgs.ghostty;
clearDefaultKeybinds = false;
settings = {
theme = "tokyonight";
font-family = "JetBrainsMono NL NFM Medium";
font-size = 16;
shell-integration-features = "no-cursor";
cursor-style = "block";
background-opacity = 1;
background-blur-radius = 0;
gtk-titlebar = false;
mouse-hide-while-typing = true;
};
};
}];
}

27
modules/linux/git.nix Normal file
View file

@ -0,0 +1,27 @@
{
home-manager.sharedModules = [{
programs.git = {
enable = true;
userName = "TheGeneralist";
userEmail = "180094941+thegeneralist01@users.noreply.github.com";
lfs = {
enable = true;
};
extraConfig = {
commit.gpgSign = true;
tag.gpgSign = true;
gpg.format = "ssh";
user.signingKey = "~/.ssh/id_ed25519";
};
};
programs.gh = {
enable = true;
};
programs.gh-dash = {
enable = true;
};
}];
}

41
modules/linux/neovim.nix Normal file
View file

@ -0,0 +1,41 @@
{ pkgs, lib, ... }: {
environment.variables.EDITOR = "nvim";
home-manager.sharedModules = [{
programs.neovim = {
enable = true;
extraLuaConfig = lib.fileContents ../home/dotfiles/nvim/init.lua;
};
home.sessionVariables = {
EDITOR = "nvim";
};
home.packages = with pkgs; [
vimPlugins.markdown-preview-nvim
# Lua
luajitPackages.luarocks_bootstrap
lua-language-server
python311
nodejs
nodePackages."sass"
gcc_multi
#llvmPackages_20.clangWithLibcAndBasicRtAndLibcxx
];
home.file.".config/i3status" = {
source = ../home/dotfiles/i3status;
force = true;
recursive = true;
};
}];
programs.npm.npmrc = ''
prefix=~/.npm-packages
color=true
'';
}

View file

@ -0,0 +1,5 @@
{
networking.hostName = "thegeneralist";
networking.networkmanager.enable = true;
networking.networkmanager.wifi.powersave = false;
}

8
modules/linux/nix.nix Normal file
View file

@ -0,0 +1,8 @@
{
# todo: gc
nix.settings.experimental-features = [
"flakes"
"nix-command"
"pipe-operators"
];
}

View file

@ -0,0 +1,33 @@
$env.config.buffer_editor = "/home/thegeneralist/.nix-profile/bin/nvim"
$env.config.show_banner = false
# Basic Aliases
alias v = nvim .
alias ff = fastfetch --load-config examples/10.jsonc
alias g = glimpse --interactive -o both -f llm.md
def gg [] {
open llm.md | save -r /dev/stdout | ^xclip -sel c
}
alias rn = yazi
# Zoxide init
#^zoxide init nushell | save --force ~/.config/nushell/zoxide.nu
#source ~/.config/nushell/zoxide.nu
alias c = clear
alias e = exa
alias el = exa -la
alias l = ls -a
alias ll = ls -la
alias cl = c; l
alias ap = cd ~/personal
alias ad = cd ~/Downloads
alias ab = cd ~/books
alias a = cd ~
alias ah = cd ~/dotfiles/hosts/thegeneralist
alias ai3 = nvim /home/thegeneralist/dotfiles/hosts/thegeneralist/dotfiles/i3/config
# alias rb = sudo nixos-rebuild switch --flake ~/dotfiles#thegeneralist
alias rb = nh os switch . -v -- --show-trace --verbose
source ~/.zoxide.nu

View file

@ -0,0 +1,49 @@
{ config, pkgs, lib, ... }: let
inherit (lib) readFile;
in {
# TODO: starship + change the zoxide src
# TODO: Rust tooling
environment = {
systemPackages = with pkgs; [
nushell
zoxide
ripgrep
jq
yq-go
eza
fzf
gh
fastfetch
];
shellAliases = {
v = "nvim .";
ff = "fastfetch --load-config examples/10.jsonc";
g = "glimpse --interactive -o both -f llm.md";
gg = "open llm.md | save -r /dev/stdout | ^xclip -sel c";
rn = "yazi";
c = "clear";
e = "exa";
el = "exa -la";
l = "ls -a";
ll = "ls -la";
cl = "c; l";
ap = "cd ~/personal";
ad = "cd ~/Downloads";
ab = "cd ~/books";
a = "cd ~";
ah = "cd ~/dotfiles/hosts/thegeneralist";
ai3 = "nvim /home/thegeneralist/dotfiles/hosts/thegeneralist/dotfiles/i3/config";
rb = "nh os switch . -v -- --show-trace --verbose";
};
};
home-manager.sharedModules = [{
programs.nushell = {
enable = true;
configFile.text = readFile ./config.nu;
envFile.text = readFile ./env.nu;
environmentVariables = config.environment.variables;
};
}];
}

View file

@ -0,0 +1,31 @@
# NVM
# TODO: this
# source ("/Users/thegeneralist/.nvm/" | path join "nvm.sh")
# GPG TTY
# $env.GPG_TTY = (tty)
# Extra PATHs
# $env.PATH = [
# # "/home/thegeneralist/AppImages"
# # ($env.HOME | path join "personal/zen")
# # ($env.HOME | path join ".local/scripts")
# # ($env.HOME | path join ".local/bin")
# # ($env.HOME | path join ".bun/bin")
# # ($env.HOME | path join ".nix-profile/bin")
# # "/nix/var/nix/profiles/default/bin"
# # ($env.HOME | path join ".local/share/pnpm")
# # "/usr/bin"
# # "/usr/sbin"
# # "/sbin"
# # "/Applications/Ghostty.app/Contents/MacOS"
# # ($env.HOME | path join ".local/bin")
# # ($env.HOME | path join ".cargo/env")
# # ($env.HOME | path join ".cargo/bin")
# # "/usr/local/go/bin"
# # ($env.HOME | path join "go/bin")
# # ($env.HOME | path join ".npm-packages/bin")
# # ($env.HOME | path join ".Android/Sdk/platform-tools")
# # ($env.HOME | path join ".Android/Sdk/emulator")
# ] ++ $env.PATH

10
modules/linux/nvidia.nix Normal file
View file

@ -0,0 +1,10 @@
{
hardware.nvidia = {
open = true;
modesetting.enable = true;
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics.enable = true;
}

View file

@ -0,0 +1,21 @@
{ pkgs, lib, agenix, ...}: let
inherit (lib) attrValues;
in {
environment.systemPackages = attrValues {
inherit (pkgs)
wget
zsh
neovim
vim
home-manager
protonup-qt
pipewire
pwvucontrol
wireplumber
playerctl
xsane
simple-scan
;
};
}

View file

@ -0,0 +1,18 @@
{ pkgs, ... }: {
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound.
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Epson proprietary backend
hardware.sane.enable = true;
hardware.sane.extraBackends = [
pkgs.epkowa
];
}

13
modules/linux/ssh.nix Normal file
View file

@ -0,0 +1,13 @@
{
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
};
};
networking.firewall.enable = true;
networking.firewall.allowedTCPPorts = [ 22 ];
# networking.firewall.allowedUDPPorts = [ ... ];
}

17
modules/linux/steam.nix Normal file
View file

@ -0,0 +1,17 @@
{ lib, ... }: {
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-unwrapped"
"steam-run"
];
nixpkgs.config.allowUnfree = true;
}

View file

@ -0,0 +1,5 @@
age-encryption.org/v1
-> ssh-ed25519 pp9qdQ 6l47mExiqqxdEP4ELKCvj/YnFows5CSfNqgSuI9Pumc
eqQCf0gVfLblki2WaTZBsfxwU3CZ5yAoW2K1yY7kewk
--- cuSZYUOIOdGIjEtNCfZ2/GMqF2PCn0J56GS0K3yISHw
Çc3&ñ¼øY8{€*ÔS¨æùêòϘ9Ï:ísˆöŒßªômç|¬fÌTÀ[«€h\^eˆ7ØrÕ<6C><C399>PËDF°Mô¢¬]ëÓp¢5ÓT§ssî

View file

@ -0,0 +1,17 @@
{ config, ... }: {
age.secrets.tailscaleMarshall.file = ./tailscale-marshall.age;
services.tailscale = {
enable = true;
interfaceName = "tailscale0";
useRoutingFeatures = "both";
openFirewall = true; # or false?
extraUpFlags = [ "--ssh" ];
extraSetFlags = [ "--advertise-exit-node" ];
disableTaildrop = false;
authKeyFile = config.age.secrets.tailscaleMarshall.path;
};
networking.nameservers = [ "100.100.100.100" "8.8.8.8" "1.1.1.1" ];
networking.search = [ "shorthair-wall.ts.net" ];
networking.firewall.trustedInterfaces = [ "tailscale0" ];
}

50
modules/linux/xserver.nix Normal file
View file

@ -0,0 +1,50 @@
{ pkgs, ... }: {
# TODO: write i3 and i3status here instead of stowing
services.xserver = {
enable = true;
displayManager = {
lightdm = {
enable = true;
greeters = {
gtk = {
enable = true;
};
};
};
};
windowManager.i3 = {
enable = true;
package = pkgs.i3;
configFile = ../home/dotfiles/i3/config;
extraPackages = with pkgs; [
i3
i3status
rofi
dmenu
feh
picom # transparency effects compositor
dunst # notification daemon
xfce.thunar
nemo
arandr # screen conf
lxappearance
];
};
};
# Configure keymap in X11
services.xserver.xkb.layout = "us,ru";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# home.file.".xprofile".text = ''
# xrandr --output HDMI-0 --primary
# '';
# services.xserver.xrandrHeads = builtins.map (head:
# head // {
# primary = if head.output == "HDMI-0" then true else head.primary;
# }
# ) options.services.xserver.xrandrHeads;
}

11
modules/linux/zsh.nix Normal file
View file

@ -0,0 +1,11 @@
{
home-manager.sharedModules = [{
programs.zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion.enable = true;
};
}];
environment.pathsToLink = [ "/share/zsh" ];
}