This commit is contained in:
chrisbell committed 2026-10-02 20:59:47 -05:00
commit 655ef30c69
14 files changed
+472

No files matched your search

Generated
+48
View File
@@ -0,0 +1,48 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1790955005,
"narHash": "sha256-EEQKUylD8zuRTmDFX4rbwsHQ+iZhqqOldYcFN8SLcE0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0560d64401a6d5370732a69d08bc4a6b135962d9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1790822859,
"narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
+26
View File
@@ -0,0 +1,26 @@
{
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, ... }@inputs:
let
mkHost = name: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [ ./hosts/${name}/configuration.nix ];
};
in {
nixosConfigurations = {
p50 = mkHost "p50";
desktop = mkHost "desktop";
};
};
}
+88
View File
@@ -0,0 +1,88 @@
{ config, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
inputs.home-manager.nixosModules.default
../../modules/nixos/bspwm.nix
../../modules/nixos/quadro-m1000m.nix
];
# Nix options
nix.settings = {
experimental-features = ["nix-command" "flakes"];
};
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "p50"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Chicago";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users."chris" = {
isNormalUser = true;
description = "chris";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
home-manager = {
useUserPackages = true;
extraSpecialArgs = { inherit inputs; };
users."chris" = import ./home.nix;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
vim
wget
helix
nixd
git
fastfetch
btop
];
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
system.stateVersion = "26.05"; # Did you read the comment?
}
+31
View File
@@ -0,0 +1,31 @@
# 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" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e313b664-984e-4f55-ad80-388aa39457fc";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/96F9-3011";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+24
View File
@@ -0,0 +1,24 @@
{ config, pkgs, ... }:
{
home.username = "chris";
home.homeDirectory = "/home/chris";
home.stateVersion = "26.05"; # Please read the comment before changing.
programs.home-manager.enable = true;
imports = [
../../modules/home-manager/defaults.nix
../../modules/home-manager/sxhkd.nix
../../modules/home-manager/terminals/alacritty.nix
../../modules/home-manager/browsers/ugc.nix
../../modules/home-manager/bspwm.nix
../../modules/home-manager/polybar.nix
# ../../modules/home-manager/editors/helix.nix
];
my.defaults = {
terminal = "alacritty";
editor = "hx";
browser = "chromium";
};
}
+9
View File
@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
programs.chromium = {
enable = true;
package = pkgs.ungoogled-chromium;
# extensions = [ { id = "..."; } ];
};
}
+34
View File
@@ -0,0 +1,34 @@
{ lib, pkgs, ... }:
{
xdg.configFile."bspwm/bspwmrc" = {
executable = true;
text = ''
#!/bin/sh
bspc monitor -d 1 2 3 4 5 6 7 8 9
# Gaps and borders
bspc config window_gap 10
bspc config border_width 2
bspc config focused_border_color "#7aa2f7"
bspc config normal_border_color "#292e42"
# Layout behaviour
bspc config split_ratio 0.50
bspc config borderless_monocle true
bspc config gapless_monocle true
# Launch polybar
~/.config/polybar/launch.sh
'';
};
home.activation.reloadBspwm = lib.hm.dag.entryAfter [ "linkGeneration" ] ''
if ${pkgs.procps}/bin/pgrep -x bspwm >/dev/null; then
PATH=${pkgs.bspwm}/bin:$PATH DISPLAY=:0 $HOME/.config/bspwm/bspwmrc \
|| echo "bspwmrc reload failed" >&2
fi
'';
}
+23
View File
@@ -0,0 +1,23 @@
{ config, lib, ... }:
let
cfg = config.my.defaults;
mkCmdOption = description: lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
inherit description;
};
in
{
options.my.defaults = {
terminal = mkCmdOption "Command for the default terminal ($TERMINAL).";
browser = mkCmdOption "Command for the default browser ($BROWSER).";
editor = mkCmdOption "Command for the default editor ($EDITOR and $VISUAL).";
};
config.home.sessionVariables = lib.mkMerge [
(lib.mkIf (cfg.terminal != null) { TERMINAL = cfg.terminal; })
(lib.mkIf (cfg.browser != null) { BROWSER = cfg.browser; })
(lib.mkIf (cfg.editor != null) { EDITOR = cfg.editor; VISUAL = cfg.editor; })
];
}
+6
View File
@@ -0,0 +1,6 @@
{ ... }:
{
programs.helix.enable = true;
}
+91
View File
@@ -0,0 +1,91 @@
{ lib, pkgs, ... }:
let
polybar = pkgs.polybar.override { pulseSupport = true; };
in
{
home.packages = [
polybar
pkgs.nerd-fonts.jetbrains-mono
];
fonts.fontconfig.enable = true;
xdg.configFile."polybar/config.ini".text = ''
[colors]
background = #1a1b26
foreground = #c0caf5
primary = #7aa2f7
dim = #565f89
[bar/main]
width = 100%
height = 22pt
background = ''${colors.background}
foreground = ''${colors.foreground}
font-0 = JetBrainsMono Nerd Font:size=10;2
padding = 1
module-margin = 1
separator = |
separator-foreground = ''${colors.dim}
wm-restack = bspwm
enable-ipc = true
modules-left = bspwm
modules-center = date
modules-right = pulseaudio cpu memory
tray-position = right
[module/bspwm]
type = internal/bspwm
label-focused = %name%
label-focused-background = ''${colors.primary}
label-focused-foreground = ''${colors.background}
label-focused-padding = 1
label-occupied = %name%
label-occupied-padding = 1
label-empty = %name%
label-empty-foreground = ''${colors.dim}
label-empty-padding = 1
label-urgent = %name%
label-urgent-background = #f7768e
label-urgent-padding = 1
[module/date]
type = internal/date
interval = 5
date = %a %b %d %H:%M
[module/cpu]
type = internal/cpu
interval = 2
label = CPU %percentage%%
[module/memory]
type = internal/memory
interval = 5
label = RAM %percentage_used%%
[module/pulseaudio]
type = internal/pulseaudio
label-volume = VOL %percentage%%
label-muted = muted
label-muted-foreground = ''${colors.dim}
'';
xdg.configFile."polybar/launch.sh" = {
executable = true;
text = ''
#!/bin/sh
${pkgs.procps}/bin/pkill -x polybar
while ${pkgs.procps}/bin/pgrep -x polybar >/dev/null; do sleep 0.2; done
${pkgs.util-linux}/bin/setsid -f ${polybar}/bin/polybar main
'';
};
# home.activation.reloadPolybar = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
# if ${pkgs.procps}/bin/pgrep -x bspwm >/dev/null; then
# DISPLAY=:0 $HOME/.config/polybar/launch.sh || true
# fi
# '';
}
+47
View File
@@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
{
xdg.configFile."sxhkd/sxhkdrc".text = ''
# terminal / launcher
super + Return
${config.my.defaults.terminal}
super + space
dmenu_run
# close window / quit bspwm
super + q
bspc node -c
super + alt + Escape
bspc quit
# focus window
super + {Left,Down,Up,Right}
bspc node -f {west,south,north,east}
# move (swap) window
super + shift + {Left,Down,Up,Right}
bspc node -s {west,south,north,east}
# resize window
super + alt + {Left,Down,Up,Right}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# go to workspace / send window to workspace
super + {_,shift + }{1-9}
bspc {desktop -f,node -d} '^{1-9}'
# workspace next/previous
super + ctrl + {Left,Right}
bspc desktop -f {prev,next}.local
# fullscreen / floating
super + f
bspc node -t "~fullscreen"
super + shift + f
bspc node -t "~floating"
'';
home.activation.reloadSxhkd = lib.hm.dag.entryAfter [ "linkGeneration" ] ''
${pkgs.procps}/bin/pkill -USR1 -x sxhkd || true
'';
}
@@ -0,0 +1,11 @@
{ ... }:
{
programs.alacritty = {
enable = true;
settings = {
font.size = 11;
window.opacity = 0.95;
};
};
}
+20
View File
@@ -0,0 +1,20 @@
{ pkgs, ... }:
{
services.xserver = {
enable = true;
windowManager.bspwm = {
enable = true;
configFile = "/home/chris/.config/bspwm/bspwmrc";
sxhkd.configFile = "/home/chris/.config/sxhkd/sxhkdrc";
};
displayManager.lightdm.enable = true;
};
services.displayManager.defaultSession = "none+bspwm";
environment.systemPackages = with pkgs; [
xterm
dmenu
];
}
+14
View File
@@ -0,0 +1,14 @@
{ config, ... }:
{
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics.enable = true;
hardware.nvidia = {
open = false;
modesetting.enable = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.legacy_580;
};
}