Initial commit for phosphorous branch

This commit is contained in:
2025-07-29 12:17:29 -04:00
parent caeb108974
commit 82d34571c8
23 changed files with 720 additions and 501 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,2 @@
result
target
hardware.nix

50
flake.lock generated
View File

@@ -105,11 +105,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1752113600,
"narHash": "sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB+jb4A2UmiR+kzY9CLI=",
"lastModified": 1752718651,
"narHash": "sha256-PkaR0qmyP9q/MDN3uYa+RLeBA0PjvEQiM0rTDDBXkL8=",
"owner": "nix-community",
"repo": "disko",
"rev": "79264292b7e3482e5702932949de9cbb69fedf6d",
"rev": "d5ad4485e6f2edcc06751df65c5e16572877db88",
"type": "github"
},
"original": {
@@ -269,11 +269,11 @@
"zon2nix": "zon2nix"
},
"locked": {
"lastModified": 1752468632,
"narHash": "sha256-3Hmq3XMTPg12zWmNsDgxTCsXDthBi+Umfv/XeNsa9Es=",
"lastModified": 1752781573,
"narHash": "sha256-lciLQos2xk62PrLi/RbD12V8Da5xAysPnhP4KvI3Jho=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "37c2c3a4ba696e90f0be2b7c2c0cd6f613dbf70a",
"rev": "155ddc3f8f0e99731d30f15653c62ac7e2476c46",
"type": "github"
},
"original": {
@@ -328,11 +328,11 @@
]
},
"locked": {
"lastModified": 1752467539,
"narHash": "sha256-4kaR+xmng9YPASckfvIgl5flF/1nAZOplM+Wp9I5SMI=",
"lastModified": 1752798675,
"narHash": "sha256-oMJhxLVGVC7v0ReNQ/vFVKMQOPUixg/74MnZZ1Wkv4s=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "1e54837569e0b80797c47be4720fab19e0db1616",
"rev": "dcfd70f80fe6d872c2dc58fe3be384a681e56fea",
"type": "github"
},
"original": {
@@ -433,11 +433,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1752500930,
"narHash": "sha256-bQlflVQSUwSWm//WJX9mPGXsouRKyS6fGfOmkMvYR5s=",
"lastModified": 1752782660,
"narHash": "sha256-lv5ohWVV8P/T8QBzSBmGVo45oxc4a7snwHF05KRwaK8=",
"ref": "refs/heads/main",
"rev": "06fcdbd9c77c90fc9c3115b646f602a84c53a40e",
"revCount": 6273,
"rev": "a05c797e4a7b32f933569aec6cfba180bc693528",
"revCount": 6286,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@@ -736,11 +736,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1751949589,
"narHash": "sha256-mgFxAPLWw0Kq+C8P3dRrZrOYEQXOtKuYVlo9xvPntt8=",
"lastModified": 1752596105,
"narHash": "sha256-lFNVsu/mHLq3q11MuGkMhUUoSXEdQjCHvpReaGP1S2k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b008d60392981ad674e04016d25619281550a9d",
"rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708",
"type": "github"
},
"original": {
@@ -813,11 +813,11 @@
},
"nixpkgs_6": {
"locked": {
"lastModified": 1751984180,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"lastModified": 1752480373,
"narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08",
"type": "github"
},
"original": {
@@ -853,11 +853,11 @@
"systems": "systems_5"
},
"locked": {
"lastModified": 1752496197,
"narHash": "sha256-yADANK6gJL+BJrL0f450RGCZlUixCuYSoEqdjmBE5nY=",
"lastModified": 1752762787,
"narHash": "sha256-WZLSOR2Pei7C4nH/ntKUqOZOAa5rgvc2fVZl4RoEXmw=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "03fa28a65f23210934cb3a3c0454eb8870af748b",
"rev": "bc0555c8694d43fb63ae2c7afec08b6987431a04",
"type": "github"
},
"original": {
@@ -992,11 +992,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1752449117,
"narHash": "sha256-Cn24ySH/LN/Q/SsDhpOX4cTMYZa1JMOLNeNsoYqcZpY=",
"lastModified": 1752750082,
"narHash": "sha256-NoVAqy+Wj4tgkvrYB8zWncl8Z6Hb80aX3t/TYGdsfaM=",
"owner": "danth",
"repo": "stylix",
"rev": "d683e35fa5ec8bbfd45d52e4b53c7b91f7b38d06",
"rev": "03699ed214f6e8195bc7199d6ae3aeccf9732b08",
"type": "github"
},
"original": {

View File

@@ -60,6 +60,25 @@
nixvim.homeManagerModules.nixvim
];
};
phosphorousHome = let host = "phosphorous"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { inherit host; root = self; })
];
};
extraSpecialArgs = {
inherit host self username inputs;
};
modules = [
./hosts/work/home.nix
./modules/home
stylix.homeManagerModules.stylix
nixvim.homeManagerModules.nixvim
];
};
mercuryHome = let host = "mercury"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
@@ -126,6 +145,29 @@
];
};
phosphorous = nixpkgs.lib.nixosSystem { # Desktop
specialArgs = {
inherit self inputs username;
host = "oganesson";
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
inherit system;
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
modules = [
./hosts/work/config.nix
./modules/sys
stylix.nixosModules.stylix
];
};
mercury = nixpkgs.lib.nixosSystem { # Laptop
specialArgs = {
inherit self inputs username;

54
hosts/work/config.nix Executable file
View File

@@ -0,0 +1,54 @@
{ slash, pkgs, username, ... }:
{
imports = [
./hardware.nix
];
# My module options
movOpts = {
sysEnv = {
issue.enable = true;
sddmConfig.enable = false;
stylixConfig.enable = true;
nixSettings.enable = true;
#consoleSettings.enable = true;
};
hardwareCfg = {
networkModule.enable = true;
kernelModule.enable = true;
bootLoader.enable = true;
};
softwareCfg = {
gamingPkgs.enable = true;
steamConfig.enable = true;
sysPkgs.enable = true;
sysProgs.enable = true;
sysServices.enable = true;
virtConfig.enable = true;
};
};
environment = {
variables = { PATH = "${pkgs.clang-tools}/bin:$PATH"; };
shells = [ pkgs.myPkgs.slash pkgs.zsh pkgs.bash ];
};
users = {
groups.persist = { };
users = {
root.initialPassword = "1234";
${username} = {
isNormalUser = true;
initialPassword = "1234";
shell = pkgs.zsh;
extraGroups = [ "input" "wheel" "persist" "libvirtd" ];
};
};
};
security.sudo.extraConfig = ''
${username} ALL=(ALL) NOPASSWD: /etc/profiles/per-user/${username}/bin/rebuild
'';
nix.settings.allowed-users = [ "${username}" ];
time.timeZone = "America/New_York";
}

126
hosts/work/containers.nix Normal file
View File

@@ -0,0 +1,126 @@
{ slash, pkgs, username, ... }:
let
kickstartServer =
let
libsrcds = pkgs.stdenv.mkDerivation {
name = "libsrcds";
src = pkgs.fetchFromGitHub {
owner = "km-clay";
repo = "sourceds-libraries";
rev = "08d12c91af664ffd103482ae1a24714222bef2df";
hash = "sha256-EFXBhqZEkBNpYjNuG7oTZLgfjqM5G+nLb7e/qeN1Tvw=";
};
installPhase = ''
mkdir -p $out/lib
cp ./* $out/lib
'';
};
startTf2Server = pkgs.writeShellScript "start-srv.sh" ''
set -euo pipefail
export HOME=/home/tf2
export LD_LIBRARY_PATH=/usr/lib:/usr/lib32
mkdir -p "$HOME/tf2server"
mkdir -p "$HOME/tf2server"
steamcmd +force_install_dir "$HOME/tf2server" \
+login anonymous \
+app_update 232250 validate \
+quit
cd "$HOME/tf2server"
ln -sf "$HOME/.steam/steam/linux64" "$HOME/.steam/sdk64"
ln -sf "$HOME/.steam/steam/linux32" "$HOME/.steam/sdk32"
exec ./srcds_run -game tf -console -port 25565 +map cp_dustbowl \
+ip 10.233.1.2 -norestart \
+sv_setsteamaccount 8862FD4B30F401036B8AAC6A7FE6B123
'';
in
pkgs.buildFHSEnv {
name = "srcds-env";
targetPkgs = pkgs: with pkgs; [
steamcmd
glibc
zlib
curl
libuuid
openssl
libnl
libsrcds
# Optional: link compat
stdenv.cc.cc.lib
];
multiPkgs = pkgs: with pkgs.pkgsi686Linux; [
glibc
zlib
ncurses5
libuuid
alsa-lib
libxcrypt-legacy
gcc
];
multiArch = true;
runScript = "${startTf2Server}";
};
in
{
networking = {
nat = {
enable = true;
internalInterfaces = ["ve-+"];
externalInterface = "enp8s0";
};
};
containers.tf2server = {
autoStart = true;
privateNetwork = true;
hostAddress = "10.233.1.1";
localAddress = "10.233.1.2";
config = {
imports = [ ];
nixpkgs.config.allowUnfree = true;
services.openssh.enable = true;
users.users.root.password = "root"; # For quick login, remove in prod
environment.systemPackages = with pkgs; [
steamcmd
steam-run
coreutils
wget
unzip
bash
nix
coreutils
vim
];
users.users.tf2server = {
isNormalUser = true;
initialPassword = "1234";
shell = pkgs.bash;
extraGroups = [ "wheel" ];
};
systemd.services.tf2server = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${kickstartServer}/bin/srcds-env";
};
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Optional: open ports on the container
networking.firewall.allowedTCPPorts = [ 25565 ];
networking.firewall.allowedUDPPorts = [ 25565 27005 27015 27020 ];
system.stateVersion = "25.11"; # or your NixOS version
};
};
}

37
hosts/work/hardware.nix Normal file
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 = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/db4cf956-df00-4c26-851d-419136434eae";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/336C-A94E";
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.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

57
hosts/work/home.nix Executable file
View File

@@ -0,0 +1,57 @@
{ username, ... }: {
home.username = "${username}";
home.homeDirectory =
"/home/${username}";
home.stateVersion = "25.05";
programs.home-manager.enable = true;
movOpts = {
# modules/home/files
homeFiles.enable = true;
# modules/home/environment
envConfig = {
hyprlandConfig = {
enable = true;
monitorNames = [ "DP-3" "DP-1" ];
workspaceLayout = "dualmonitor";
};
userPkgs.enable = true;
stylixHomeConfig.enable = true;
waybarConfig.enable = true;
gtkConfig.enable = true;
spicetifyConfig.enable = false;
starshipConfig.enable = true;
swayncConfig.enable = true;
zshConfig = {
shellAliases.enable = true;
envVariables.enable = true;
shellOptions.enable = true;
extraConfig.enable = true;
};
};
# modules/home/programs
programConfigs = {
autojumpConfig.enable = true;
btopConfig.enable = true;
cavaConfig.enable = false;
ezaConfig.enable = true;
fuzzelConfig.enable = true;
fzfConfig.enable = true;
gitConfig.enable = true;
kittyConfig.enable = true;
yaziConfig.enable = true;
passConfig.enable = true;
batConfig.enable = true;
};
};
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu:///system" ];
uris = [ "qemu:///system" ];
};
};
}

View File

@@ -2,17 +2,27 @@
let
desktop = host == "oganesson";
screenshot_bind = if desktop then
[ "super, print, exec, grimblast copy area"
"super shift, print, exec, grimblast --freeze copy area"
]
[
"super, print, exec, grimblast copy area"
"super shift, print, exec, grimblast --freeze copy area"
]
else
[
# My laptop does not have a printscreen button
"super, insert, exec, grimblast copy area"
];
[
# My laptop does not have a printscreen button
"super, insert, exec, grimblast copy area"
];
scheme = config.lib.stylix.colors;
mons = config.movOpts.envConfig.hyprlandConfig.monitorNames;
smartGapsWorkspaces = [
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
];
smartGapsWindowrules = [
"bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]"
];
in {
options = {
@@ -55,6 +65,9 @@ in {
monitor = if (host == "oganesson") then [
"DP-1, 1920x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080, 0x0, 1"
] else if (host == "phosphorous") then [
"DP-1, highrr, 0x0, 1"
"DP-3, highrr, -1080x-420, 1, transform, 3"
] else
[ "eDP-1, 1600x900, 0x0, 1" ];
@@ -69,7 +82,7 @@ in {
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &"
];
workspace = if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "dualmonitor") then [
workspace = (if (config.movOpts.envConfig.hyprlandConfig.workspaceLayout == "dualmonitor") then [
"1,persistent=true,monitor:${builtins.elemAt mons 0}"
"2,persistent=true,monitor:${builtins.elemAt mons 0}"
"3,persistent=true,monitor:${builtins.elemAt mons 0}"
@@ -88,7 +101,7 @@ in {
"4,persistent=true,monitor:${builtins.elemAt mons 1}"
"5,persistent=true,monitor:${builtins.elemAt mons 0}"
"6,persistent=true,monitor:${builtins.elemAt mons 0}"
] else [ ];
] else [ ]) ++ smartGapsWorkspaces;
env = [
"XDG_CONFIG_HOME,$HOME/.config"
@@ -96,6 +109,37 @@ in {
"XDG_CACHE_HOME,$HOME/.cache"
];
layerrule = [ "blur,waybar" "ignorezero,waybar" "blur,launcher" ];
windowrulev2 = [
"float, class:^(thunar)$,title:^(.*File Operation Progress.*)$"
"float, class:^(firefox)$,title:^(Library)$"
"float, class:^(thunar)$,title:^(File Operation Progress)$"
"float, class:^(thunar)$,title:^(Confirm to replace files)$"
"float, title:^(bwarn)$"
"float, title:^(bwarn)$"
"noinitialfocus, class:^(steam)$"
"float, class:^(firefox)$,title:^( - Google Mozilla Firefox)$"
"float, class:^(firefox)$,title:^(Firefox Sharing Indicator)$"
"float, class:^(firefox)$,title:^(Firefox )$"
"float, class:(firefox), title:^(*.Sign in.*)$"
];
windowrule = [
"float, class:^(qt5ct)$"
"float, class:^(zoom)$"
"float, class:^(Steam)$"
"idleinhibit focus, class:mpv"
"float, title:^(Picture-in-Picture)$"
"float, class:^(nm-connection-editor)$"
"float, class:^(waypaper)$"
"float, title:^(Sign In)(.*)$"
"float, title:^(Firefox )$"
"nofocus, title:^(Firefox )$"
"float, class:^(firefox)$,title^(Sign in - Google Accounts Mozilla Firefox)$"
"= nofullscreenrequest, title:^(Firefox )$"
"size 0 0, title:^(Firefox )$"
"move 100%-470 15,title:^(Firefox Sharing Indicator)$"
"move 100%-470 15,title:^(Firefox )$"
] ++ smartGapsWindowrules;
input = {
kb_layout = "us";
@@ -104,16 +148,21 @@ in {
force_no_accel = 1;
sensitivity = 0;
};
general = {
"$mainMod" = "super";
layout = "dwindle";
gaps_in = 4;
gaps_out = 8;
border_size = 3;
#"col.inactive_border" = "0xff${scheme.base01}";
"col.active_border" = lib.mkForce "0xff${scheme.base04}";
no_border_on_floating = false;
};
general = {
gaps_in = 5;
gaps_out = 9;
border_size = 3;
col.active_border = "rgba(404042ff)";
col.inactive_border = "rgba(83858a00)";
layout = "dwindle";
resize_on_border = true;
no_border_on_floating = false;
snap = {
enabled = true;
window_gap = 5;
};
};
misc = {
disable_autoreload = true;
disable_hyprland_logo = true;
@@ -125,10 +174,7 @@ in {
};
dwindle = {
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
force_split = 2;
pseudotile = "yes";
preserve_split = "yes";
};
@@ -139,96 +185,83 @@ in {
};
decoration = {
rounding = 10;
blur = {
enabled = true;
# size = 1;
# passes = 1;
size = 2;
passes = 1;
brightness = 1;
contrast = 1.4;
ignore_opacity = true;
popups = true;
noise = 0;
new_optimizations = true;
xray = true;
};
rounding = 4;
shadow = {
enabled = true;
ignore_window = true;
range = 80;
render_power = 50;
color = "rbga(00000065)";
};
};
cursor = {
hide_on_key_press = true;
};
experimental = {
xx_color_management_v4 = true;
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"easeinoutsine, 0.37, 0, 0.63, 1"
"myBezier, 0.16, 1, 0.3, 1"
];
animation = [
# Windows
"windowsIn, 1, 3, easeOutCubic, popin 30%" # window open
"windowsOut, 1, 3, fluent_decel, popin 70%" # window close.
"windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows
"fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
"border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
"borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
"windows, 1, 7, myBezier, popin 80%"
"fade, 1, 7, myBezier"
"workspaces, 1, 6, myBezier, slidefade 80%"
];
bind = [
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
"super, t, exec, swaync-client -t -sw"
"super, a, exec, firefox"
"super, q, exec, kitty"
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty"
"super, c, killactive,"
"super shift, c,exec, hyprctl kill"
"super, e, exec, [float;size 40% 50%;move onscreen cursor -50% -50%] nemo"
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
"super shift, m, exit,"
"super, m, exec, fuzzel"
"super, r, exec, neovide"
"super, b, togglesplit, # dwindle"
"super, f, togglefloating"
"super, g, fullscreen"
"super, h, movefocus, l"
"super, l, movefocus, r"
"super, k, movefocus, u"
"super, j, movefocus, d"
"super shift, h, movewindow, l"
"super shift, l, movewindow, r"
"super shift, k, movewindow, u"
"super shift, j, movewindow, d"
"super, d, exec, switchmon"
"super, 1, exec, hyprctl 'dispatch workspace 1'"
"super, 2, exec, hyprctl 'dispatch workspace 2'"
"super, 3, exec, hyprctl 'dispatch workspace 3'"
"super, 4, exec, hyprctl 'dispatch workspace 4'"
"super, 5, exec, hyprctl 'dispatch workspace 5'"
"super, 6, exec, hyprctl 'dispatch workspace 6'"
"super shift, 1, movetoworkspace, 1"
"super shift, 2, movetoworkspace, 2"
"super shift, 3, movetoworkspace, 3"
"super shift, 4, movetoworkspace, 4"
"super shift, 5, movetoworkspace, 5"
"super shift, 6, movetoworkspace, 6"
"super, s, togglespecialworkspace, magic"
"super shift, s, movetoworkspace, special:magic"
] ++ screenshot_bind;
bindm =
[ "super, mouse:272, movewindow" "super, mouse:273, resizewindow" ];
};
bind = [
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
"super, t, exec, swaync-client -t -sw"
"super, a, exec, firefox"
"super, q, exec, kitty"
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty"
"super, c, killactive,"
"super shift, c,exec, hyprctl kill"
"super, e, exec, [float;size 40% 50%;move onscreen cursor -50% -50%] nemo"
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
"super shift, m, exit,"
"super, m, exec, fuzzel"
"super, r, exec, neovide"
"super, b, togglesplit, # dwindle"
"super, f, togglefloating"
"super, g, fullscreen"
"super, h, movefocus, l"
"super, l, movefocus, r"
"super, k, movefocus, u"
"super, j, movefocus, d"
"super shift, h, movewindow, l"
"super shift, l, movewindow, r"
"super shift, k, movewindow, u"
"super shift, j, movewindow, d"
"super, d, exec, switchmon"
"super, 1, exec, hyprctl 'dispatch workspace 1'"
"super, 2, exec, hyprctl 'dispatch workspace 2'"
"super, 3, exec, hyprctl 'dispatch workspace 3'"
"super, 4, exec, hyprctl 'dispatch workspace 4'"
"super, 5, exec, hyprctl 'dispatch workspace 5'"
"super, 6, exec, hyprctl 'dispatch workspace 6'"
"super shift, 1, movetoworkspace, 1"
"super shift, 2, movetoworkspace, 2"
"super shift, 3, movetoworkspace, 3"
"super shift, 4, movetoworkspace, 4"
"super shift, 5, movetoworkspace, 5"
"super shift, 6, movetoworkspace, 6"
"super, s, togglespecialworkspace, magic"
"super shift, s, movetoworkspace, special:magic"
] ++ screenshot_bind;
bindm =
[ "super, mouse:272, movewindow" "super, mouse:273, resizewindow" ];
};
};
};

View File

@@ -1,7 +1,7 @@
{ lib, self, config, host, pkgs, ... }:
let
scheme = "chalk";
scheme = "ayu-dark";
wallpaper = "${self}/assets/wallpapers/dark-waves.jpg";
server = (host == "xenon");
in {

View File

@@ -34,7 +34,6 @@ in {
nemo
feh
gtk3
gimp
imagemagick
vlc
lolcat

View File

@@ -6,12 +6,26 @@ let
workspaces = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"10" = "10";
"11" = "11";
"12" = "12";
"13" = "13";
"14" = "14";
"15" = "15";
"16" = "16";
"17" = "17";
"18" = "18";
"19" = "19";
"20" = "20";
};
persistent-workspaces =
if (layout == "singlemonitor") then {
@@ -36,7 +50,7 @@ let
dark = scheme.base03;
};
fg = {
lightester = scheme.base07;
lightest = scheme.base07;
lightest = scheme.base06;
lighter = scheme.base05;
light = scheme.base04;
@@ -55,6 +69,17 @@ let
circle-gauge = [ "󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥" ];
cava-gauge = [ "" "" "" "" "" "" "" "" ];
battery-gauge = [ "󰁺" "󰁻" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
bar-gauge = [
""
""
""
""
""
""
""
""
""
];
in {
options = {
movOpts.envConfig.waybarConfig.enable =
@@ -68,7 +93,7 @@ in {
});
settings = {
mainBar = {
layer = "bottom";
layer = "top";
output = if layout == "singlemonitor" then builtins.elemAt monitors 0
else builtins.elemAt monitors 1;
position = "top";
@@ -77,374 +102,174 @@ in {
margin-top = 5;
margin-right = if desktop then 8 else 5;
mode = "dock";
exclusive = true;
passthrough = false;
"gtk-layer-shell" = true;
modules-left = [ "hyprland/workspaces" "cava" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "group/hardware" "clock" "group/powerbtns" ];
modules-left = [ "clock" "hyprland/workspaces" "tray" ];
modules-center = [];
modules-right = [ "cpu" "memory" "pulseaudio" "network" ];
"hyprland/workspaces" = workspaces;
cava = {
framerate = 30;
autosens = 1;
sensitivity = 1;
bars = 14;
lower_cutoff_freq = 50;
higher_cutoff_freq = 10000;
method = "pulse";
source = "auto";
hide_on_silence = false;
stereo = true;
reverse = true;
bar_delimiter = 0;
monstercat = false;
waves = false;
noise_reduction = 0.77;
input_delay = 1;
format-icons = cava-gauge;
};
"group/hardware" = {
orientation = "inherit";
modules = [ "custom/disk-icon" "memory" "cpu" ];
};
"custom/disk-icon" = {
exec = ''
df / | awk '
function format(size) {
if (size >= 1024) return sprintf("%.1fTB", size / 1024);
else return sprintf("%.1fGB", size)
}
$6 == "/" {
usage = $3 / 1024 / 1024;
total = $2 / 1024 / 1024;
percent = $5;
sub(/%/, "", percent);
printf "{\"class\": \"disk-icon\", \"tooltip\": \"/: %s / %s\", \"percentage\": %s}\n", format(usage), format(total), percent
}
' | jq --unbuffered --compact-output
'';
interval = 60;
return-type = "json";
rotate = 270;
format = "{icon}";
format-icons = circle-gauge;
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = circle-gauge;
max-length = 10;
tooltip-format = "RAM: {used:0.1f} GB / {total:0.1f} GB";
};
cpu = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = circle-gauge;
tooltip-format = "CPU: {usage:0.1f}%";
};
"custom/power" = {
on-click = "shutdown now";
tooltip = false;
format = " ";
};
"custom/logout" = {
on-click = "hyprctl dispatch exit";
tooltip = false;
format = "󰗽 ";
};
"custom/reboot" = {
on-click = "reboot";
tooltip = false;
format = " ";
};
"group/powerbtns" = {
orientation = "horizontal";
drawer = {
transition-duration = 500;
children-class = "power-drawer";
transition-left-to-right = false;
};
modules = [ "custom/power" "custom/logout" "custom/reboot" ];
};
clock = {
format = "{:%I:%M %p}";
tooltip = false;
};
};
sideBar = {
layer = "bottom";
output = builtins.elemAt monitors 0;
position = "right";
margin-top = 8;
margin-right = 5;
margin-bottom = 8;
name = "sideBar";
mode = "dock";
"gtk-layer-shell" = true;
modules-left = if desktop then
[ "hyprland/workspaces" ]
else [
"group/brightness"
"battery"
];
modules-center = [ ];
modules-right = [ "network" "group/audio" ];
"hyprland/workspaces" = workspaces;
"pulseaudio/slider" = { orientation = "vertical"; };
"group/audio" = {
orientation = "vertical";
modules = [ "pulseaudio/slider" "pulseaudio" ];
format = "[ CLK: {:%H.%M <span size='8pt'> %a %b %d</span>} ]";
tooltip-format = "<tt>{calendar}";
calendar = {
mode = "month";
weeks-pos = "";
on-scroll = 1;
format = {
months = "<span size = '16pt'><b>CAL: {}\n</b></span>";
days = "<span size = '16pt'><b>{}</b></span>";
weeks = "<span size = '16pt'><b>{}</b></span>";
weekdays = "<span size = '16pt'><b>{}</b></span>";
today = "<span color='#E6E1CF'><b>{}</b></span>";
};
};
actions = {
on-scroll-up = "shift_down";
on-scroll-down = "shift_up";
};
};
pulseaudio = {
format = "{icon}";
format-muted = " ";
format-icons = { default = [ " " " " ]; };
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
on-click-right =
"hyprctl dispatch exec '[float;size 40% 55%] pavucontrol'";
};
pulseaudio = {
format = "VOL: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{volume}%</span>";
tooltip = true;
tooltip-format = "DEVICE: {desc}";
format-muted = "VOL: <span color='#F07178'>[ XXXXXXXX ] <span size='8pt'>{volume}%</span></span>";
on-click = "if [ $(pamixer --get-mute) == true ]; then pamixer --unmute; else pamixer --mute; fi";
on-scroll-up = "pamixer -i 2";
on-scroll-down = "pamixer -d 2";
scroll-step = 2;
reverse-scrolling = true;
format-icons = bar-gauge;
};
network = {
interval = 30;
format-wifi = "󰖩 ";
tooltip-format-wifi = "{essid} ({signalStrength}%)";
format-ethernet = " ";
tooltip-format-ethernet = "{ifname}";
format-disconnected = "󰖪 ";
tooltip-format-disconnected = "Disconnected";
on-click =
"hyprctl dispatch exec '[float;size 40% 55%] kitty nmtui'";
};
network = {
format-wifi = "[ <span color='#B8CC52'>ONLINE</span> ]";
format-ethernet = "[ <span color='#B8CC52'>ONLINE</span> ]";
tooltip-format-wifi = "ESSID\t: {essid}\nSTRNGTH\t: {signaldBm}\n\nADDRESS\t: {ipaddr}\nGATE\t: {gwaddr}\nMASK\t: {netmask} | {cidr}";
tooltip-format-ethernet = "IFNAME: {ifname}\nADDRESS: {ipaddr}";
format-disconnected = "[ <span color='#F07178'>XXXXXX</span> ]";
on-click = "nm-connection-editor";
};
battery = {
bat = "BAT1";
interval = 1;
tooltip-format = ''
{capacity}%
Til empty: {time}'';
tooltip-format-charging = ''
{capacity}%
Til full: {time}'';
format = "{icon}";
format-icons = battery-gauge;
format-charging = "󰂄";
};
memory = {
interval = 20;
format = "MEM: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{percentage}%</span>";
tooltip-format = "MEM_TOT\t: {total}GiB\nSWP_TOT\t: {swapTotal}GiB\n\nMEM_USD\t: {used:0.1f}GiB\nSWP_USD\t: {swapUsed:0.1f}GiB";
format-icons = [
""
""
""
""
""
""
""
"<span color='#F07178'>!!!!!!!!</span>"
"<span color='#F07178'>CRITICAL</span>"
];
};
"group/brightness" = {
orientation = "vertical";
modules = [ "backlight" "backlight/slider" ];
};
backlight = {
format = "󰃠";
tooltip = "{percentage}%";
};
"backlight/slider" = {
min = 10;
max = 100;
orientation = "vertical";
rotate = 180;
};
cpu = {
interval = 1;
format = "CPU: [ <span color='#272D38'>{icon}</span> ] <span size='8pt'>{usage}%</span>";
tooltip = true;
format-icons = [
""
""
""
""
""
""
""
"<span color='#272D38'>!!!!!!!!</span>"
"<span color='#272D38'>CRITICAL</span>"
];
};
};
};
style = ''
* {
border: none;
border-radius: 0;
font-size: 16px;
font-family: "JetBrains Mono Nerd Font";
}
* {
font-size: 14px;
border: none;
font-familty: EnvyCodeR Nerd Font Mono;
font-weight: Bold;
min-height: 0;
border-radius 0px;
padding: 2px;
}
window#waybar {
border-radius: 10px;
border: 3px solid #${fg.light};
background: rgba(23,29,35,0.50);
margin: 20px;
}
window#waybar.empty #window {
background: none;
border: none;
}
window#waybar {
color: #${fg.lightest};
background: #${bg.darkester};
}
#workspaces {
margin: 3px;
background: #${bg.darker};
border: 3px solid #${bg.dark};
border-radius: 8px;
}
tooltip {
background: #${bg.darkester};
}
#workspaces button:hover {
border-radius: 8px;
background: #${fg.lightest};
color: #${bg.darkest};
}
#workspaces button {
color: #${fg.lightest};
background: #${bg.darkester};
}
#workspaces button.active {
background: #${fg.lightester};
border-radius: 8px;
color: #${bg.darkest};
}
#workspaces button.active {
color: #${bg.darker};
background: #${bg.darkester};
}
#cava {
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px 3px 3px 6px;
padding: 0px 15px 0px 15px;
color: #${colors.color6};
}
#workspaces button.focused {
color: #${bg.dark};
background: #${bg.darkester};
}
#window {
margin: 3px;
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
padding: 0 15px 0 15px;
font-weight: bold;
}
#workspaces button.urgent {
color: #${fg.lightest};
background: #${bg.darkester};
}
#hardware {
margin: 3px;
padding: 0 10px 0 10px;
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
}
#workspaces button:hover {
color: #${fg.lightest};
background: #${bg.darkester};
}
#custom-disk-icon, #cpu, #memory {
margin-bottom: 4px;
font-size: 20px;
font-weight: bold;
}
#window,
#clock,
#pulseaudio,
#network,
#workspaces,
#tray,
#cpu {
padding: 0px 10px;
margin: 0px;
}
#custom-disk-icon {
color: #${colors.color4};
}
#tray {
margin-right: 10px;
}
#memory {
color: #${colors.color1};
}
#workspaces {
color: #${fg.lightest};
}
#cpu {
color: #${colors.color3};
}
#window {
color: #${fg.lightest};
}
#clock {
font-weight: bold;
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px;
padding: 0 10px 0 10px;
font-size: 18px;
}
#clock {
color: #${fg.lightest};
}
#powerbtns {
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px;
padding: 0 5px 0 10px;
}
#network {
color: #${fg.lightest};
}
#custom-power {
color: #${colors.color2};
font-size: 18px;
}
#custom-logout {
color: #${colors.color4};
font-size: 18px;
}
#custom-reboot {
color: #${colors.color0};
font-size: 18px;
}
#audio {
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px;
padding: 5px 0 10px 0;
}
#pulseaudio {
color: #${colors.color1};
font-size: 18px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
background: #${colors.color4};
background-color: transparent;
box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
min-width: 9px;
min-height: 90px;
border-radius: 8px;
background: #121212;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
border-radius: 8px;
background-color: #${colors.color4};
}
#network {
color: #${colors.color1};
font-size: 20px;
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px;
padding: 5px 0 5px 6px;
}
#brightness {
background: #${bg.darker};
border-radius: 8px;
border: 3px solid #${bg.dark};
margin: 3px;
padding: 10px 0px 5px 0;
}
#backlight {
color: #${colors.color4};
font-size: 18px;
padding: 0 4px 0 0;
}
#battery {
color: #${colors.color4};
font-size: 20px;
background: #${bg.darker};
border: 3px solid #${bg.dark};
border-radius: 8px;
margin: 3px;
padding: 5px 0 5px 0px;
}
#pulseaudio {
color: #${fg.lightest};
}
'';
};
};

View File

@@ -6,11 +6,6 @@
config = lib.mkIf config.movOpts.programConfigs.gitConfig.enable {
programs.git = {
enable = true;
signing = {
signer = "${pkgs.gnupg}/bin/gpg";
key = "2453DF4EF63B92D5D8FE8C9DC741C9DFD8156540";
signByDefault = true;
};
userEmail = "kylerclay@proton.me";
userName = "${username}";
extraConfig = {

View File

@@ -1,3 +1,9 @@
{ env, config, pkgs, host, self, ... }: {
programs.nixvim.extraPackages = [
pkgs.cargo
pkgs.rustc
pkgs.rustup
pkgs.rust-analyzer
];
imports = [ ./plugins ./options.nix ./keymaps.nix ./autocmd.nix ];
}

View File

@@ -3,7 +3,7 @@
keymaps = [
{
action = "<cmd>Telescope find_files<CR>"; # select entire document
key = "!fs";
key = "<F3>";
mode = "n";
}
{
@@ -46,11 +46,6 @@
key = "<F2>";
mode = [ "n" "t" ];
}
{
action = "<cmd>NvimTreeToggle<CR>";
key = "<F3>";
mode = "n";
}
{
action = "<cmd>COQnow<CR>";
key = "!cq";

View File

@@ -26,15 +26,17 @@ in {
#};
};
enable = true;
diagnostic.settings.signs = false;
diagnostic.settings = {
virtual_text = true;
signs = false;
};
extraConfigLua = ''
if vim.g.started_by_firenvim == true then
vim.o.laststatus = 0
end
if vim.g.neovide then
vim.g.neovide_refresh_rate = 144
vim.g.neovide_cursor_vfx_mode = "sonicboom"
vim.g.neovide_cursor_animate_in_insert_mode = false
vim.g.neovide_cursor_animate_in_insert_mode = true
end
vim.g.vimwiki_list = {{path = '~/vimwiki/', syntax = 'markdown', ext = '.md'}}

View File

@@ -2,8 +2,19 @@
programs.nixvim = {
plugins.cmp = {
autoEnableSources = true;
settings.sources =
[ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ];
settings = {
sources = [
{
name = "nvim_lsp";
}
{
name = "path";
}
{
name = "buffer";
}
];
};
};
plugins.cmp-nvim-lsp.enable = true;
plugins.cmp-nvim-lsp-document-symbol.enable = true;

View File

@@ -0,0 +1,10 @@
{
programs.nixvim.plugins.copilot-lua = {
enable = true;
settings = {
suggestion = {
auto_trigger = false;
};
};
};
}

View File

@@ -16,6 +16,7 @@
./airline.nix
./nvim-lightbulb.nix
./neocord.nix
./copilot.nix
./plugins.nix
./nvim-tree.nix
./telescope.nix

View File

@@ -13,28 +13,51 @@
['<C-j>'] = cmp.mapping.scroll_docs(-4),
['<C-k>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<C-Enter>'] = function()
local copilot = require("copilot.suggestion")
cmp.abort()
copilot.next()
end,
['<CR>'] = function(fallback)
if cmp.visible() then
cmp.confirm()
else
fallback()
end
end, -- Added a comma here
end,
['<Tab>'] = function(fallback)
local copilot = require("copilot.suggestion")
if cmp.visible() then
cmp.select_next_item()
elseif copilot.is_visible() then
cmp.abort()
copilot.accept()
else
fallback()
end
end, -- Added a comma here
['<S-Tab>'] = function(fallback)
end,
['<A-Tab>'] = function(fallback)
local copilot = require("copilot.suggestion")
if cmp.visible() then
cmp.select_prev_item()
elseif copilot.is_visible() then
cmp.abort()
copilot.accept_word()
else
fallback()
end
end -- No comma needed for the last item
end,
['<S-Tab>'] = function(fallback)
local copilot = require("copilot.suggestion")
if cmp.visible() then
cmp.select_prev_item()
elseif copilot.is_visible() then
cmp.abort()
copilot.accept_line()
else
fallback()
end
end
})
'';
};

View File

@@ -11,6 +11,7 @@
"192.168.1.200" = [ "xenon" ];
"192.168.1.201" = [ "oganesson" ];
"192.168.1.202" = [ "mercury" ];
"192.168.1.134" = [ "hosting.localhost" ];
};
firewall = {
enable = true;

View File

@@ -9,6 +9,9 @@ let
"-DDOWNLOAD_TITLE_SEQUENCES=ON"
];
});
cust-prismlauncher = pkgs.prismlauncher.override (oldAttrs: {
jdks = [ pkgs.temurin-bin-21 ];
});
in {
options = {
movOpts.softwareCfg.gamingPkgs.enable =
@@ -19,8 +22,7 @@ in {
#snes9x-gtk
#cust-openrct2
mgba
dwarf-fortress-packages.dwarf-fortress-full
prismlauncher
cust-prismlauncher
];
};
}

View File

@@ -20,6 +20,7 @@
hyprpaper
hyprpicker
inetutils
rcon-cli
kitty
lolcat
lsof

View File

@@ -1,7 +1,7 @@
{ pkgs, self, lib, config, ... }:
let
scheme = "chalk";
scheme = "ayu-dark";
wallpaper = "${self}/assets/wallpapers/dark-waves.jpg";
in {
options = {