Compare commits

...

No commits in common. "reorg" and "main" have entirely different histories.
reorg ... main

48 changed files with 1247 additions and 826 deletions

3
.gitignore vendored
View file

@ -1,2 +1,3 @@
result/*
result result
result/
https_cache.sqlite

View file

@ -1,8 +1,4 @@
# NixOS Config # NixOS Config
My personal NixOS Configuration Repository My personal NixOS Configuration Repository
This Nix flake defines NixOS configurations for two machines: creatorforge-vm and creatorforge-framework. The flake imports various external repositories to provide additional functionality, such as Home Manager, sops-nix, and disko.
Here is an overview of the flake:
[![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org) [![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org)

930
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,36 +1,28 @@
{ {
description = "spec's nixos configs"; description = "Nixos config flake";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager = {
sops-nix.url = "github:Mic92/sops-nix"; url = "github:nix-community/home-manager/release-25.05";
xremap.url = "github:xremap/nix-flake"; inputs.nixpkgs.follows = "nixpkgs";
hyprland.url = "github:hyprwm/Hyprland";
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, ... }@inputs: { sops-nix.url = "github:Mic92/sops-nix";
xremap.url = "github:xremap/nix-flake";
hyprland.url = "github:hyprwm/Hyprland";
sk-extract.url = "git+https://git.skdevstudios.com/specCon18/sk_extract.git";
yunodo.url = "git+https://git.skdevstudios.com/specCon18/yunodo_redux.git";
};
nixosConfigurations = { outputs = { self, nixpkgs, ... }@inputs: {
katana = nixpkgs.lib.nixosSystem { nixosConfigurations.katana = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = {inherit inputs;};
# Define the system type modules = [
system = "x86_64-linux"; inputs.home-manager.nixosModules.default
homeManagerModules.default = ./home_manager/home-manager.nix; ./hosts/katana.nix
# Define the modules for the configuration ./modules
modules = [ ./users/speccon18
# Your configuration modules here. Example: ];
./hosts/katana.nix
./nixosModules/default.nix
];
};
}; };
}; };
} }

View file

@ -1,16 +1,11 @@
{ modulesPath, config, pkgs, lib, self, ... }: { config, pkgs, lib, self,inputs, ... }:
{ {
system.stateVersion = "23.05"; system.stateVersion = "23.05";
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
# Hardware # Hardware
hardware = { hardware = {
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; enableRedistributableFirmware = lib.mkDefault true;
pulseaudio.enable = false; cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
bluetooth = { bluetooth = {
enable = true; # enables support for Bluetooth enable = true; # enables support for Bluetooth
powerOnBoot = true; # powers up the default Bluetooth controller on boot powerOnBoot = true; # powers up the default Bluetooth controller on boot
@ -20,7 +15,7 @@
}; };
}; };
}; };
}; };
# Boot # Boot
boot = { boot = {
@ -40,16 +35,19 @@
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-uuid/55c746b3-b9dc-4c9b-ab56-de68a561f9a3"; device = "/dev/disk/by-uuid/7a97edd8-c5a9-4354-a461-24c0f311e61b";
fsType = "ext4"; fsType = "ext4";
}; };
"/boot" = { "/boot" = {
device = "/dev/disk/by-uuid/0C59-9996"; device = "/dev/disk/by-uuid/F0BD-FE72";
fsType = "vfat"; fsType = "vfat";
}; };
}; };
swapDevices = [
swapDevices = [ ]; {
device = "/dev/disk/by-uuid/e107d78d-d934-4939-889d-1860410321d5";
}
];
# Networking # Networking
networking = { networking = {
@ -62,8 +60,6 @@
}; };
}; };
# Sound
sound.enable = true;
# Localization # Localization
time.timeZone = "America/Detroit"; time.timeZone = "America/Detroit";
@ -82,25 +78,31 @@
}; };
}; };
# Services. programs.steam.enable = true;
# Services
services = { services = {
blueman.enable = true; pcscd.enable = true;
blueman.enable = false;
pulseaudio.enable = false;
printing.enable = true; printing.enable = true;
xserver = { xserver = {
layout = "us"; xkb = {
xkbVariant = ""; layout = "us";
variant = "";
};
}; };
}; };
# Package Manager # Package Manager
nixpkgs = { nixpkgs = {
config.allowUnfree = true; config = {
allowUnfree = true;
};
hostPlatform = lib.mkDefault "x86_64-linux"; hostPlatform = lib.mkDefault "x86_64-linux";
}; };
nix = { nix = {
# Sets flakes to unstable track instead of stable #
package = pkgs.nixUnstable; # or versioned attributes like nix_2_4
# Enable flakes and nix-command # Enable flakes and nix-command
extraOptions = ''experimental-features = nix-command flakes''; extraOptions = ''experimental-features = nix-command flakes'';
# Auto maintainence # Auto maintainence
@ -114,32 +116,42 @@
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
gparted gparted # Drive Partition Manger
bluez bluez # Bluetooth Stack
blueman # blueman # Bluetooth Management
nerdfonts home-manager # Dotfiles Management
home-manager pkg-config # Determine lib locations for linking during compliation
pkg-config ripgrep # regex parser written in rust
ripgrep openssl # SSL TLS Protocol
openssl tree # Filetree to stdout
tree eza # LS rewritten in rust
eza zsh # Prefered Shell
htop
zsh
dig #dns lookup dig #dns lookup
rage #file encryption rage #file encryption
age-plugin-yubikey #plugin for rage to manage yubi-2fa age-plugin-yubikey #plugin for rage to manage yubi-2fa
sops #file based secrets operations sops #file based secrets operations
direnv #used for development environments direnv #used for development environments
gcc gcc # Gnu C Compiler
bottom bottom # Top rewritten in rust
felix-fm felix-fm # File browser tui written in rust
zulip discord # Discord for comms with friends
vscode neovim # Modal Text Editor
brave # Web Browser
libation # Backup audible libraries
libreoffice-qt6 # Microsoft office but OSS
spotify # Spotify offical client
p7zip # posix complient 7zip
yubioath-flutter # Yubico Authenticator Client
lazygit # Git tui written in rust
glow # Markdown renderer for terminal
inputs.sk-extract.packages.${system}.default
inputs.yunodo.packages.${system}.default
signal-desktop
]; ];
# Fonts # Fonts
fonts.packages = with pkgs; [ fonts.packages = [
(nerdfonts.override { fonts = [ "SourceCodePro" "DroidSansMono" ]; }) pkgs.nerd-fonts.droid-sans-mono
]; ];
}
}

6
modules/default.nix Normal file
View file

@ -0,0 +1,6 @@
{config,lib,inputs,...}:{
imports = [
./system
./home-manager
];
}

View file

@ -1,17 +1,11 @@
{ pkgs, config, lib, ...}: { config, lib, pkgs, ... }:
{ {
options.speccon18.home_manager.alacritty.enable = lib.mkEnableOption "enables specs custom alacritty config"; options.speccon18.hm.alacritty.enable = lib.mkEnableOption "Enable Alacritty";
config = lib.mkIf config.speccon18.home_manager.alacritty.enable { config = lib.mkIf config.speccon18.hm.alacritty.enable {
programs.alacritty = { programs.alacritty = {
enable = true; enable = true;
settings = { settings = {
cursor = {
style = {
shape = "Beam";
blinking = "On";
blink_interval = 75;
};
};
window = { window = {
dimensions = { dimensions = {
columns = 120; columns = 120;
@ -21,21 +15,6 @@
opacity = 1.0; opacity = 1.0;
title = "Alacritty"; title = "Alacritty";
}; };
font = {
normal = {
family = "SauceCodePro Nerd Font";
style = "Regular";
};
bold = {
family = "SauceCodePro Nerd Font";
style = "Bold";
};
italic = {
family = "SauceCodePro Nerd Font";
style = "Italic";
};
size = 14;
};
colors = { colors = {
primary = { primary = {
background = "#1d1f21"; background = "#1d1f21";
@ -45,7 +24,6 @@
text = "CellBackground"; text = "CellBackground";
cursor = "CellForeground"; cursor = "CellForeground";
}; };
# Normal colors
normal = { normal = {
black = "#363537"; black = "#363537";
red = "#FC618D"; red = "#FC618D";
@ -56,8 +34,6 @@
cyan = "#5AD4E6"; cyan = "#5AD4E6";
white = "#F7F1FF"; white = "#F7F1FF";
}; };
# Bright colors
bright = { bright = {
black = "#69676C"; black = "#69676C";
red = "#FC618D"; red = "#FC618D";
@ -66,10 +42,10 @@
blue = "#FD9353"; blue = "#FD9353";
magenta = "#948AE3"; magenta = "#948AE3";
cyan = "#5AD4E6"; cyan = "#5AD4E6";
white = "#F7F1FF"; white = "#F7F1FF";
}; };
}; };
}; };
}; };
}; };
} }

View file

@ -0,0 +1,11 @@
{inputs,config,pkgs,...}:{
imports = [
inputs.home-manager.nixosModules.home-manager
];
home-manager = {
# useGlobalPackages = true;
# useUserPackages = true;
extraSpecialArgs = { inherit inputs; };
users.speccon18 = import ./home.nix;
};
}

View file

@ -0,0 +1,10 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.hm.direnv.enable = lib.mkEnableOption "enables direnv with zsh integration";
config = lib.mkIf config.speccon18.hm.direnv.enable {
programs.direnv = {
enable = true;
enableZshIntegration = lib.mkDefault true;
};
};
}

View file

@ -1,6 +1,6 @@
{pkgs, config, lib, ...}:{ {pkgs, config, lib, ...}:{
options.speccon18.home_manager.git.enable = lib.mkEnableOption "enables specs personal git preferences"; options.speccon18.hm.git.enable = lib.mkEnableOption "enables specs personal git preferences";
config = lib.mkIf config.speccon18.home_manager.git.enable { config = lib.mkIf config.speccon18.hm.git.enable {
programs.git = { programs.git = {
enable = true; enable = true;
userName = "specCon18"; userName = "specCon18";
@ -12,4 +12,4 @@
}; };
}; };
}; };
} }

View file

@ -0,0 +1,111 @@
{ config, pkgs, ... }:
{
imports = [
./alacritty.nix
./rio.nix
./direnv.nix
./git.nix
./ncspot.nix
./starship.nix
./syncthing.nix
./waybar.nix
./zellij.nix
./zoxide.nix
./zsh.nix
./ssh.nix
./superfile.nix
];
speccon18.hm.alacritty.enable = true;
speccon18.hm.direnv.enable = true;
speccon18.hm.git.enable = true;
speccon18.hm.ncspot.enable = true;
speccon18.hm.starship.enable = true;
speccon18.hm.syncthing.enable = false;
speccon18.hm.waybar.enable = false;
speccon18.hm.zellij.enable = true;
speccon18.hm.zoxide.enable = true;
speccon18.hm.zsh.enable = true;
speccon18.hm.rio.enable = false;
speccon18.hm.ssh.enable = true;
speccon18.hm.superfile.enable = true;
# Home Manager needs a bit of information about you and the paths it should
# manage.
home = {
username = "speccon18";
homeDirectory = "/home/speccon18";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
packages = with pkgs; [
calibre
bitwarden
gimp
vlc
atuin
superfile
#rio
#imgcat
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/speccon18/etc/profile.d/hm-session-vars.sh
#
sessionVariables = {
# EDITOR = "emacs";
};
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -0,0 +1,10 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.hm.ncspot.enable = lib.mkEnableOption "enable ncspot";
config = lib.mkIf config.speccon18.hm.ncspot.enable {
programs.ncspot = {
enable = true;
package = pkgs.ncspot;
};
};
}

View file

@ -0,0 +1,10 @@
{ config, lib, pkgs,... }:
{
options.speccon18.hm.rio.enable = lib.mkEnableOption "Enable Rio Term";
config = lib.mkIf config.speccon18.hm.rio.enable {
programs.rio= {
enable = true;
};
};
}

View file

@ -0,0 +1,17 @@
{pkgs, config, lib, ...}:{
options.speccon18.hm.ssh.enable = lib.mkEnableOption "enables specs personal git preferences";
config = lib.mkIf config.speccon18.hm.ssh.enable {
programs.ssh = {
enable = true;
matchBlocks = {
"git.skdevstudios.com" = {
hostname = "git.skdevstudios.com";
user = "git";
port = 2223;
identityFile = "~/.ssh/id_ed25519"; # Adjust as needed
};
};
};
};
}

View file

@ -0,0 +1,10 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.hm.starship.enable = lib.mkEnableOption "enables specs custom starship config";
config = lib.mkIf config.speccon18.hm.starship.enable {
programs.starship = {
enable = true;
enableZshIntegration = true;
};
};
}

View file

@ -0,0 +1,12 @@
{ pkgs, config, lib, ... }:
{
options.speccon18.hm.superfile.enable = lib.mkEnableOption "enables specs superfile config";
config = lib.mkIf config.speccon18.hm.superfile.enable {
programs.superfile = {
enable = true;
package = pkgs.superfile;
};
};
}

View file

@ -0,0 +1,10 @@
{config, lib, pkgs, modulesPath, ... }:
{
options.speccon18.hm.syncthing.enable = lib.mkEnableOption "enable syncthing";
config = lib.mkIf config.speccon18.hm.syncthing.enable {
services.syncthing = {
enable = true;
tray.enable = false;
};
};
}

View file

@ -1,7 +1,7 @@
{ pkgs, config, lib, ...}: { pkgs, config, lib, ...}:
{ {
options.speccon18.home_manager.waybar.enable = lib.mkEnableOption "enable specs custom waybar for hyprland"; options.speccon18.hm.waybar.enable = lib.mkEnableOption "enable specs custom waybar for hyprland";
config = lib.mkIf config.speccon18.home_manager.waybar.enable { config = lib.mkIf config.speccon18.hm.waybar.enable {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
package = pkgs.waybar; package = pkgs.waybar;
@ -118,7 +118,7 @@
}; };
}; };
}; };
style = builtins.readFile ./style.css; style = builtins.readFile ./waybar-style.css;
}; };
}; };
} }

View file

@ -0,0 +1,10 @@
{pkgs,config,lib,...}:
{
options.speccon18.hm.zellij.enable = lib.mkEnableOption "enable zellij";
config = lib.mkIf config.speccon18.hm.zellij.enable {
programs.zellij = {
enable = true;
package = pkgs.zellij;
};
};
}

View file

@ -1,10 +1,10 @@
{pkgs,config,lib,...}: {pkgs,config,lib,...}:
{ {
options.speccon18.home_manager.zoxide.enable = lib.mkEnableOption ""; options.speccon18.hm.zoxide.enable = lib.mkEnableOption "";
config = lib.mkIf config.speccon18.home_manager.zoxide.enable { config = lib.mkIf config.speccon18.hm.zoxide.enable {
programs.zoxide = { programs.zoxide = {
enable = true; enable = true;
enableZshIntegration = lib.mkDefault true; enableZshIntegration = lib.mkDefault true;
}; };
}; };
} }

View file

@ -0,0 +1,38 @@
{ pkgs, config, lib, ... }:
{
options.speccon18.hm.zsh.enable = lib.mkEnableOption "enables specs zsh config";
config = lib.mkIf config.speccon18.hm.zsh.enable {
programs.zsh = {
enable = lib.mkDefault true;
dotDir = ".config/zsh";
history = {
path = "$ZDOTDIR/.zsh_history";
save = 10000000;
};
autosuggestion.enable = lib.mkDefault true;
enableCompletion = lib.mkDefault true;
syntaxHighlighting.enable = lib.mkDefault true;
shellAliases = {
ls = "eza -l";
lsa = "eza -al";
grep = "rg";
osrb = "sudo nixos-rebuild $1 --flake ~/Documents/code/nix/nixos-config/#katana";
nvim-cfg = "nvim /home/speccon18/.config/nvim/";
};
localVariables = {
EDITOR = "nvim";
};
# This adds the atuin init line to your Zsh config
initContent = ''
eval "$(atuin init zsh)"
'';
};
};
}

View file

@ -0,0 +1,6 @@
{config,...}:{
imports = [
./desktop-environments
./services
];
}

View file

@ -0,0 +1,25 @@
{ config, pkgs, lib, ... }:
let
cfg = config.speccon18.desktop.budgie;
in {
options.speccon18.desktop.budgie = {
enable = lib.mkEnableOption "enables specs custom budgie setup";
};
config = lib.mkIf cfg.enable {
services.xserver = {
enable = true;
desktopManager.budgie.enable = true;
displayManager.lightdm.enable = true;
excludePackages = with pkgs; [ xterm ];
};
environment.budgie.excludePackages = with pkgs; [
mate.mate-terminal
mate.pluma
mate.atril
mate.eom
mate.engrampa
gnome-terminal
xterm
];
};
}

View file

@ -1,5 +1,4 @@
{pkgs,config,...}: {config,...}:{
{
imports = [ imports = [
./budgie.nix ./budgie.nix
./gnome.nix ./gnome.nix
@ -9,5 +8,5 @@
speccon18.desktop.budgie.enable = true; speccon18.desktop.budgie.enable = true;
speccon18.desktop.gnome.enable = false; speccon18.desktop.gnome.enable = false;
speccon18.desktop.hyprland.enable = false; speccon18.desktop.hyprland.enable = false;
speccon18.desktop.displayManager.tuigreet.enable = false; speccon18.desktop.tuigreet.enable = false;
} }

View file

@ -1,23 +1,22 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ {
options.speccon18.desktop.gnome.enable = lib.mkEnableOption "enables specs custom gnome setup"; options.speccon18.desktop.gnome.enable = lib.mkEnableOption "enables specs custom gnome setup";
config = lib.mkIf config.speccon18.desktop.gnome.enable { config = lib.mkIf config.speccon18.desktop.gnome.enable {
Dconf settings # Dconf settings for home manager
dconf = { # dconf = {
enable = true; # enable = true;
settings = { # settings = {
"org/gnome/mutter" = { # "org/gnome/mutter" = {
attach-modal-dialogs = true; # attach-modal-dialogs = true;
dynamic-workspaces = true; # dynamic-workspaces = true;
edge-tiling = false; # edge-tiling = false;
experimental-features = [ "scale-monitor-framebuffer" ]; # experimental-features = [ "scale-monitor-framebuffer" ];
focus-change-on-pointer-rest = true; # focus-change-on-pointer-rest = true;
workspaces-only-on-primary = true; # workspaces-only-on-primary = true;
}; # };
}; # };
}; # };
Gnome extensions # Gnome extensions
environment.systemPackages = with pkgs; [ ]; environment.systemPackages = with pkgs; [ ];
services = { services = {
@ -25,7 +24,7 @@
core-utilities.enable = false; core-utilities.enable = false;
gnome-keyring.enable = true; gnome-keyring.enable = true;
}; };
xserver = { xserver = {
enable = true; enable = true;
layout = "us"; layout = "us";
@ -39,19 +38,19 @@
}; };
desktopManager = { desktopManager = {
xterm.enable = false; xterm.enable = false;
# gnome.enable = lib.mkDefault true; gnome.enable = false;
}; };
}; };
}; };
programs = { programs = {
xwayland.enable = lib.mkDefault true; xwayland.enable = lib.mkDefault true;
}; };
xdg = { xdg = {
portal = { enable = lib.mkDefault true; }; portal = { enable = lib.mkDefault true; };
mime.defaultApplications = { mime.defaultApplications = {
"text/markdown" = "hx"; "text/markdown" = "nvim";
}; };
}; };
}; };

View file

@ -0,0 +1,113 @@
{ config, pkgs, lib, ...}:
{
options.speccon18.desktop.hyprland.enable = lib.mkEnableOption "enables specs custom hyprland setup";
config = lib.mkIf config.speccon18.desktop.hyprland.enable {
programs.hyprland = {
enable = true;
nvidiaPatches = true;
xwayland.enable = true;
};
environment = {
systemPackages = with pkgs; [
# libsForQt5.polkit-kde-agent
libsForQt5.qt5.qtwayland
qt6.full
qt6.qtwayland
waybar
swww
pw-volume
rofi-wayland
libnotify
mako
hyprland
font-awesome
brightnessctl
grim
slurp
wl-clipboard
];
sessionVariables = {
#Enable Wayland
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
SDL_VIDEODRIVER = "wayland";
# XDG_Config
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
#Default Applications
BROWSER = "firefox";
TERMINAL = "alacritty";
};
};
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
};
hardware = {
opengl.enable = true;
nvidia.modesetting.enable = true;
};
# wayland.windowManager.hyprland = {
# # systemdIntegration = true;
# enable = true;
# extraConfig = ''
# $mainMod = SUPER
# # Application Lauch Keybinds
# bind = $mainMod, Return, exec, alacritty
# bind = $mainMod, W, exec, firefox
# bind = $mainMod, R, exec, rofi -show drun
# # Switch workspaces with mainMod + [0-9]
# bind = $mainMod, 1, workspace, 1
# bind = $mainMod, 2, workspace, 2
# bind = $mainMod, 3, workspace, 3
# bind = $mainMod, 4, workspace, 4
# bind = $mainMod, 5, workspace, 5
# bind = $mainMod, 6, workspace, 6
# bind = $mainMod, 7, workspace, 7
# bind = $mainMod, 8, workspace, 8
# bind = $mainMod, 9, workspace, 9
# bind = $mainMod, 0, workspace, 10
# # Move active window to a workspace with mainMod + SHIFT + [0-9]
# bind = $mainMod SHIFT, 1, movetoworkspace, 1
# bind = $mainMod SHIFT, 2, movetoworkspace, 2
# bind = $mainMod SHIFT, 3, movetoworkspace, 3
# bind = $mainMod SHIFT, 4, movetoworkspace, 4
# bind = $mainMod SHIFT, 5, movetoworkspace, 5
# bind = $mainMod SHIFT, 6, movetoworkspace, 6
# bind = $mainMod SHIFT, 7, movetoworkspace, 7
# bind = $mainMod SHIFT, 8, movetoworkspace, 8
# bind = $mainMod SHIFT, 9, movetoworkspace, 9
# bind = $mainMod SHIFT, 0, movetoworkspace, 10
# bind = $mainMod, Print, exec, grim -o /home/speccon18/Pictures/$(date +'%s_grim.png') -g "$(slurp)" -t png
# # Startup Runners
# exec-once=systemctl --user start waybar.service
# exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
# exec-once=mako
# exec-once = swww init
# monitor=,highres,auto,1
# '';
# };
# options.speccon18.home_manager.rofi.enable = lib.mkEnableOption "enable specs custom rofi config for hyprland";
# config = lib.mkIf config.speccon18.home_manager.rofi.enable {
# programs.rofi = {
# enable = true;
# theme = "android_notification";
# location = "top-left";
# };
# };
};
}

View file

@ -2,10 +2,10 @@
let let
inherit (lib) mkEnableOption mkOption optionalString mkIf types; inherit (lib) mkEnableOption mkOption optionalString mkIf types;
dmcfg = config.services.xserver.displayManager; dmcfg = config.services.xserver.displayManager;
cfg = config.speccon18.desktop.displayManager.tuigreet; cfg = config.speccon18.desktop.tuigreet;
gduser = config.services.greetd.settings.default_session.user; gduser = config.services.greetd.settings.default_session.user;
in { in {
options.speccon18.desktop.displayManager.tuigreet = { options.speccon18.desktop.tuigreet = {
enable = mkEnableOption "enables tuigreet"; enable = mkEnableOption "enables tuigreet";
args = mkOption { args = mkOption {
default = "--time --asterisks --remember -s ${dmcfg.sessionData.desktops}/share/wayland-sessions:${dmcfg.sessionData.desktops}/share/xsessions"; default = "--time --asterisks --remember -s ${dmcfg.sessionData.desktops}/share/wayland-sessions:${dmcfg.sessionData.desktops}/share/xsessions";
@ -42,4 +42,4 @@ in {
]; ];
}; };
}; };
} }

View file

@ -3,7 +3,7 @@
./tailscale.nix ./tailscale.nix
./pipewire.nix ./pipewire.nix
]; ];
speccon18.tailscale.enable = true; speccon18.tailscale.enable = true;
speccon18.sound.pipewire.enable = true; speccon18.sound.pipewire.enable = true;
} }

View file

@ -2,7 +2,7 @@
{pkgs,config,lib, ...}: {pkgs,config,lib, ...}:
{ {
options.speccon18.sound.pipewire.enable = lib.mkEnableOption "enable pipewire with jack integrations"; options.speccon18.sound.pipewire.enable = lib.mkEnableOption "enable pipewire with jack integrations";
config = lib.mkIf config.speccon18.sound.pipewire.enable { config = lib.mkIf config.speccon18.sound.pipewire.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pipewire pipewire

View file

@ -1,7 +1,7 @@
{ pkgs, config, lib, ... }: { { pkgs, config, lib, ... }: {
options.speccon18.tailscale.enable = lib.mkEnableOption "enables the tailscale service and sets the package to use"; options.speccon18.tailscale.enable = lib.mkEnableOption "enables the tailscale service and sets the package to use";
config = lib.mkIf config.speccon18.tailscale.enable { config = lib.mkIf config.speccon18.tailscale.enable {
# make the tailscale command usable to users # make the tailscale command usable to users
environment.systemPackages = with pkgs;[ environment.systemPackages = with pkgs;[

View file

@ -1,7 +0,0 @@
{pkgs, lib, ... }: {
imports = [
./users/default.nix
./services/default.nix
./desktop_environments/default.nix
];
}

View file

@ -1,12 +0,0 @@
{ config, pkgs, lib, ...}:
{
options.speccon18.desktop.budgie.enable = lib.mkEnableOption "enables specs custom budgie setup";
config = lib.mkIf config.speccon18.desktop.budgie.enable {
services.xserver = {
enable = true;
desktopManager.budgie.enable = true;
displayManager.lightdm.enable = true;
};
};
}

View file

@ -1,108 +0,0 @@
{ config, pkgs, lib, ...}:
{
options.speccon18.desktop.hyprland.enable = lib.mkEnableOption "enables specs custom hyprland setup";
config = lib.mkIf config.speccon18.desktop.hyprland.enable {
programs.hyprland = {
enable = true;
nvidiaPatches = true;
xwayland.enable = true;
};
environment = {
systemPackages = with pkgs; [
# libsForQt5.polkit-kde-agent
libsForQt5.qt5.qtwayland
qt6.full
qt6.qtwayland
waybar
swww
pw-volume
rofi-wayland
libnotify
mako
hyprland
font-awesome
brightnessctl
grim
slurp
wl-clipboard
];
sessionVariables = {
#Enable Wayland
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
SDL_VIDEODRIVER = "wayland";
# XDG_Config
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
#Default Applications
BROWSER = "firefox";
TERMINAL = "alacritty";
};
};
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
};
hardware = {
opengl.enable = true;
nvidia.modesetting.enable = true;
};
wayland.windowManager.hyprland = {
# systemdIntegration = true;
enable = true;
extraConfig = ''
$mainMod = SUPER
# Application Lauch Keybinds
bind = $mainMod, Return, exec, alacritty
bind = $mainMod, W, exec, firefox
bind = $mainMod, R, exec, rofi -show drun
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod, Print, exec, grim -o /home/speccon18/Pictures/$(date +'%s_grim.png') -g "$(slurp)" -t png
# Startup Runners
exec-once=systemctl --user start waybar.service
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=mako
exec-once = swww init
monitor=,highres,auto,1
'';
};
};
}

View file

@ -1,29 +0,0 @@
{pkgs,config,...}:{
imports = [
./zsh.nix
./alacritty.nix
./direnv.nix
./git.nix
./helix.nix
./ncspot.nix
./rofi.nix
./starship.nix
./syncthing.nix
./waybar.nix
./zellij.nix
./zoxide.nix
];
speccon18.home_manager.home-manager.enable = true;
speccon18.home_manager.zsh.enable = true;
speccon18.home_manager.alacritty.enable = false;
speccon18.home_manager.direnv.enable = true;
speccon18.home_manager.git.enable = true;
speccon18.home_manager.helix.enable = true;
speccon18.home_manager.ncspot.enable = true;
speccon18.home_manager.rofi.enable = false;
speccon18.home_manager.starship.enable = true;
speccon18.home_manager.syncthing.enable = false;
speccon18.home_manager.waybar.enable = false;
speccon18.home_manager.zellij.enable = true;
speccon18.home_manager.zoxide.enable = true;
}

View file

@ -1,10 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.direnv.enable = lib.mkEnableOption "enables direnv with zsh integration";
config = lib.mkIf config.speccon18.home_manager.direnv.enable {
programs.direnv = {
enable = true;
enableZshIntegration = lib.mkDefault true;
};
};
}

View file

@ -1,146 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.helix.enable = lib.mkEnableOption "enables specs custom helix configuration";
config = lib.mkIf config.speccon18.home_manager.helix.enable {
home.packages = with pkgs; [
nodePackages_latest.yaml-language-server
nodePackages_latest.bash-language-server
nodePackages_latest.vscode-langservers-extracted
nodePackages_latest.dockerfile-language-server-nodejs
nodePackages_latest.typescript
nodePackages_latest.typescript-language-server
nodePackages_latest.svelte-language-server
nodePackages_latest.vls
python311Packages.python-lsp-server
rnix-lsp
rust-analyzer
taplo
];
programs.helix = {
enable = true;
settings = {
theme = "monokai_pro_octagon";
editor = {
line-number = "relative";
shell = ["zsh" "-c"];
completion-trigger-len = 0;
scroll-lines = 1;
scrolloff = 5;
cursorline = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
color-modes = true;
indent-guides.render = true;
file-picker.hidden = false;
auto-pairs = true;
lsp = {
enable = true;
display-messages = true;
auto-signature-help = true;
display-signature-help-docs = true;
snippets = true;
goto-reference-include-declaration = true;
};
statusline = {
mode = {
normal = "NORMAL";
insert = "INSERT";
select = "SELECT";
};
left = [ "mode" "separator" "spinner" "separator" "file-name" ];
right = [ "diagnostics" "position" "file-encoding" ];
};
};
};
themes = {
monokai_pro_octagon = let
red = "#ff657a";
orange = "#ff9b5e";
yellow = "#ffd76d";
green = "#bad761";
blue = "#9cd1bb";
purple = "#c39ac9";
base0 = "#161821";
base1 = "#1e1f2b";
base2 = "#282a3a";
base3 = "#3a3d4b";
base4 = "#535763";
base5 = "#696d77";
base6 = "#767b81";
base7 = "#b2b9bd";
base8 = "#eaf2f1";
base8x0c = "#303342";
in {
"ui.linenr.selected" = { bg = base3; };
"ui.text.focus" = { fg = yellow; modifiers = ["bold"]; };
"ui.menu" = { fg = base8; bg = base3; };
"ui.menu.selected" = { fg = base2; bg = yellow; };
"ui.virtual.whitespace" = base5;
"ui.virtual.ruler" = { bg = base1; };
"info" = base8;
"hint" = base8;
"ui.background" = {};
"ui.statusline.inactive" = { fg = base8; bg = base8x0c; };
"ui.statusline" = { fg = base8; bg = base4; };
"ui.statusline.normal" = { fg = base4; bg = blue; };
"ui.statusline.insert" = { fg = base4; bg = green; };
"ui.statusline.select" = { fg = base4; bg = purple; };
"ui.popup" = { bg = base3; };
"ui.window" = { bg = base3; };
"ui.help" = { fg = base8; bg = base3; };
"ui.selection" = { bg = base4; };
"ui.cursor.match" = { bg = base4; };
"ui.cursorline" = { bg = base1; };
"comment" = { fg = base5; modifiers = ["italic"]; };
"ui.linenr" = { fg = base5; };
"ui.cursor.primary" = { fg = base7; modifiers = ["reversed"]; };
"attribute" = blue;
"variable" = base8;
"constant" = orange;
"variable.builtin" = red;
"constant.builtin" = red;
"namespace" = base8;
"ui.text" = { fg = base8; };
"punctuation" = base6;
"type" = green;
"type.builtin" = { fg = red; };
"label" = base8;
"constructor" = blue;
"function" = green;
"function.macro" = { fg = blue; };
"function.builtin" = { fg = "cyan"; };
"operator" = red;
"variable.other.member" = base8;
"keyword" = { fg = red; };
"keyword.directive" = blue;
"variable.parameter" = "#f59762";
"error" = red;
"special" = "#f59762";
"module" = "#f59762";
"warning" = "orange";
"constant.character.escape" = { fg = base8; };
"string" = yellow;
"constant.numeric" = purple;
"diff.plus" = green;
"diff.delta" = "orange";
"diff.minus" = red;
"diagnostic.warning" = { underline = { color = "orange"; style = "curl"; }; };
"diagnostic.error" = { underline = { color = red; style = "curl"; }; };
"diagnostic.info" = { underline = { color = base8; style = "curl"; }; };
"diagnostic.hint" = { underline = { color = base8; style = "curl"; }; };
"markup.heading" = green;
"markup.bold" = { fg = "orange"; modifiers = ["bold"]; };
"markup.italic" = { fg = "orange"; modifiers = ["italic"]; };
"markup.strikethrough" = { modifiers = ["crossed_out"]; };
"markup.link.url" = { fg = "orange"; modifiers = ["underlined"]; };
"markup.link.text" = yellow;
"markup.quote" = green;
};
};
};
};
}

View file

@ -1,9 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.home-manager.enable = lib.mkEnableOption "enable home manager";
config = lib.mkIf config.speccon18.home_manager.home-manager.enable = true {
programs.home-manager = {
enable = true;
};
};
}

View file

@ -1,10 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.ncspot.enable = lib.mkEnableOption "enable ncspot";
config = lib.mkIf config.speccon18.home_manager.ncspot.enable {
programs.ncspot = {
enable = true;
package = pkgs.ncspot;
};
};
}

View file

@ -1,11 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.rofi.enable = lib.mkEnableOption "enable specs custom rofi config for hyprland";
config = lib.mkIf config.speccon18.home_manager.rofi.enable {
programs.rofi = {
enable = true;
theme = "android_notification";
location = "top-left";
};
};
}

View file

@ -1,10 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.enable = lib.mkEnableOption "enables specs custom starship config";
config = lib.mkIf config.speccon18.home_manager.enable {
programs.starship = {
enable = true;
enableZshIntegration = true;
};
};
}

View file

@ -1,10 +0,0 @@
{config, lib, pkgs, modulesPath, ... }:
{
options.speccon18.home_manager.syncthing.enable = lib.mkEnableOption "enable syncthing";
config = lib.mkIf config.speccon18.home_manager.syncthing.enable {
services.syncthing = {
enable = true;
tray.enable = false;
};
};
}

View file

@ -1,10 +0,0 @@
{pkgs,config,lib,...}:
{
options.speccon18.home_manager.zellij.enable = lib.mkEnableOption "enable zellij";
config = lib.mkIf config.speccon18.home_manager.zellij.enable {
programs.zellij = {
enable = true;
package = pkgs.zellij;
};
};
}

View file

@ -1,26 +0,0 @@
{ pkgs, config, lib, ...}:
{
options.speccon18.home_manager.zsh.enable = lib.mkEnableOption "enables specs zsh config";
config = lib.mkIf config.speccon18.home_manager.zsh.enable {
programs.zsh = {
enable = lib.mkDefault true;
dotDir = ".config/zsh";
history = {
path = "$ZDOTDIR/.zsh_history";
save = 10000000;
};
enableAutosuggestions = lib.mkDefault true;
enableCompletion = lib.mkDefault true;
syntaxHighlighting.enable = lib.mkDefault true;
shellAliases = {
ls = "eza -l";
lsa = "eza -al";
grep = "rg";
osrb = "sudo nixos-rebuild $1 --flake ~/code/nixos-config/#katana";
};
localVariables = {
EDITOR="hx";
};
};
};
}

View file

@ -1,7 +0,0 @@
{pkgs, lib, ...}: {
imports = [
./speccon18.nix
];
speccon18.enable = true;
speccon18.home_manager.enable = true;
}

View file

@ -1,48 +0,0 @@
{pkgs, lib, config, ... }: {
#Create new nixos options
options = {
speccon18.enable = lib.mkEnableOption "enables the speccon18 administrator user";
speccon18.home_manager.enable = lib.mkEnableOption "enables home-manager support for the speccon18 administrator user";
};
#Declare already defined nixos options and enable if the above mkEnable options parameter is ture
config = lib.mkIf config.speccon18.enable {
programs.zsh.enable = true;
users.users.speccon18 = {
shell = pkgs.zsh;
isNormalUser = true;
initialHashedPassword = "$y$j9T$RdLBHOvUpb17egl0d16LT/$3Y2RD/tT1IZ0nkfAR13pp3IzBjvKLRgGpDPLobUeO23";
openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrZpH5QV62dtTb2yx5I3PF2lJyNpPkV57pDlo6xawID" ];
description = "Steven Carpenter";
extraGroups = [ "wheel" ];
};
home = lib.mkIf config.speccon18.home_manager.enable {
username = "speccon18";
homeDirectory = "/home/speccon18";
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
stateVersion = "22.11";
packages = with pkgs; [
freecad
calibre
bitwarden
firefox
discord
gimp
obsidian
neofetch
vlc
remmina
];
};
};
}

View file

View file

@ -0,0 +1,14 @@
{ config, pkgs, lib, ... }:
{
programs.zsh.enable = true;
users.users.speccon18 = {
shell = pkgs.zsh;
isNormalUser = true;
initialHashedPassword = "$y$j9T$RdLBHOvUpb17egl0d16LT/$3Y2RD/tT1IZ0nkfAR13pp3IzBjvKLRgGpDPLobUeO23";
openssh.authorizedKeys.keys = [];
description = "Steven Carpenter";
extraGroups = [
"wheel"
];
};
}