Merge branch 'master' of 192.168.1.126:TheCrazyInsanity/nixos-configv3

This commit is contained in:
2026-03-13 18:44:17 -04:00
9 changed files with 253 additions and 37 deletions

28
flake.lock generated
View File

@@ -227,12 +227,36 @@
"type": "github" "type": "github"
} }
}, },
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1767662275,
"narHash": "sha256-d5Q1GmQ+sW1Bt8cgDE0vOihzLaswsm8cSdg8124EqXE=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "51816be33a1ff0d4b22427de83222d5bfa96d30e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"impermanence": "impermanence", "impermanence": "impermanence",
"llm-agents": "llm-agents", "llm-agents": "llm-agents",
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3",
"plasma-manager": "plasma-manager"
} }
}, },
"systems": { "systems": {
@@ -274,4 +298,4 @@
}, },
"root": "root", "root": "root",
"version": 7 "version": 7
} }

View File

@@ -12,6 +12,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
llm-agents.url = "github:Qumulo/llm-agents"; llm-agents.url = "github:Qumulo/llm-agents";
# nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0"; # nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
}; };
@@ -22,7 +27,6 @@
nixpkgs, nixpkgs,
home-manager, home-manager,
impermanence, impermanence,
llm-agents,
# nix-flatpak, # nix-flatpak,
}@inputs: }@inputs:
let let
@@ -45,6 +49,7 @@
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.laythe = import ./machines/homepc/home.nix; home-manager.users.laythe = import ./machines/homepc/home.nix;
home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ];
} }
]; ];
}; };
@@ -60,7 +65,8 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.laythe = import ./machines/homepc/home.nix; home-manager.users.laythe = import ./machines/workstation/home.nix;
home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ];
} }
]; ];
}; };

View File

@@ -61,6 +61,7 @@
"Documents" "Documents"
"Videos" "Videos"
"nixos-configv3" "nixos-configv3"
".config/cura"
{ {
directory = ".local/share/Steam"; directory = ".local/share/Steam";
mode = "0777"; mode = "0777";
@@ -92,5 +93,5 @@
]; ];
}; };
}; };
users.users.laythe.hashedPasswordFile="/persistent/etc/passwdfile"; users.users.laythe.hashedPasswordFile = "/persistent/etc/passwdfile";
} }

View File

@@ -87,10 +87,9 @@
# List packages installed in system profile. # List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options). # You can use https://search.nixos.org/ to find more packages (and options).
# environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. cura-appimage # I want cura but not kicad so i dont pull in fabrication
# wget ];
# ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.

View File

@@ -19,40 +19,53 @@
"btrfs" "btrfs"
]; ];
boot.initrd.kernelModules = [ "btrfs" ]; boot.initrd.kernelModules = [ "btrfs" ];
boot.kernelModules = [ "kvm-intel" "btrfs" ]; boot.kernelModules = [
"kvm-intel"
"btrfs"
];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
boot.supportedFilesystems = [ "btrfs" ]; boot.supportedFilesystems = [ "btrfs" ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/BUTTER"; device = "/dev/disk/by-label/BUTTER";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=root" ]; options = [
"compress=zstd"
"subvol=root"
];
}; };
fileSystems."/home" = { # fileSystems."/home" = {
device = "/dev/disk/by-label/BUTTER"; # device = "/dev/disk/by-label/BUTTER";
fsType = "btrfs"; # fsType = "btrfs";
options = [ "compress=zstd" "subvol=home" ]; # options = [ "compress=zstd" "subvol=home" ];
}; # };
fileSystems."/nix" = { fileSystems."/nix" = {
# device = "/dev/disk/by-uuid/3c89fa92-1d43-4c48-b228-e2725fa70ee9"; # device = "/dev/disk/by-uuid/3c89fa92-1d43-4c48-b228-e2725fa70ee9";
device = "/dev/disk/by-label/BUTTER"; device = "/dev/disk/by-label/BUTTER";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "noatime" "subvol=nix" ]; options = [
"compress=zstd"
"noatime"
"subvol=nix"
];
}; };
# fileSystems."/swap" = { # fileSystems."/swap" = {
# device = "/dev/disk/by-label/BUTTER"; # device = "/dev/disk/by-label/BUTTER";
# fsType = "btrfs"; # fsType = "btrfs";
# options = [ "noatime" "subvol=swap" ]; # options = [ "noatime" "subvol=swap" ];
# }; # };
fileSystems."/persistent" = { fileSystems."/persistent" = {
device = "/dev/disk/by-label/BUTTER"; device = "/dev/disk/by-label/BUTTER";
fsType = "btrfs"; fsType = "btrfs";
neededForBoot = true; neededForBoot = true;
options = [ "compress=zstd" "subvol=persist" ]; options = [
"compress=zstd"
"subvol=persist"
];
}; };
fileSystems."/boot" = { fileSystems."/boot" = {
@@ -64,17 +77,56 @@
]; ];
}; };
# fileSystems = { # fileSystems = {
# "/".options = [ "compress=zstd" ]; # "/".options = [ "compress=zstd" ];
# "/home".options = [ "compress=zstd" ]; # "/home".options = [ "compress=zstd" ];
# "/persist".options = [ "compress=zstd" ]; # "/persist".options = [ "compress=zstd" ];
# "/nix".options = [ "compress=zstd" "noatime" ]; # "/nix".options = [ "compress=zstd" "noatime" ];
# "/swap".options = [ "noatime" ]; # "/swap".options = [ "noatime" ];
# }; # };
# swapDevices = [ # swapDevices = [
# { device = "/swap/swapfile"; } # { device = "/swap/swapfile"; }
# ]; # ];
# Enable OpenGL
hardware.graphics = {
enable = true;
};
# Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View File

@@ -1,4 +1,11 @@
{config, pkgs, lib, inputs, outputs, ...}: {
config,
pkgs,
lib,
inputs,
outputs,
...
}:
{ {
# These both are probably always going to be the same, but I'll keep them local just in case:tm: # These both are probably always going to be the same, but I'll keep them local just in case:tm:
home.username = "laythe"; home.username = "laythe";
@@ -6,9 +13,10 @@
imports = [ imports = [
../../home/default.nix ../../home/default.nix
../../modules/kde/home.nix
]; ];
home.stateVersion = "25.11"; home.stateVersion = "24.11";
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }

View File

@@ -1,8 +1,24 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vscode
antigravity # Free Gemini 3 credits was too good of an offer to not take up, even if it requires selling my soul. antigravity # Free Gemini 3 credits was too good of an offer to not take up, even if it requires selling my soul.
chromium chromium
]; ];
home-manager.sharedModules = [
(
{ pkgs, ... }:
{
programs.vscode = {
enable = true;
extensions = with pkgs.vscode-extensions; [
jnoortheen.nix-ide
];
userSettings = {
"editor.formatOnSave" = true;
};
};
}
)
];
} }

View File

@@ -8,9 +8,22 @@
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
firefox # Odd spot, but my choice of browser is determined by environment.
kdePackages.kate kdePackages.kate
kdePackages.filelight kdePackages.filelight
# kdePackages.kdeconnect-kde # kdePackages.kdeconnect-kde
]; ];
programs.firefox = {
enable = true;
policies.ExtensionSettings = {
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
# uBlock Origin:
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
};
};
services.automatic-timezoned.enable = true;
} }

97
modules/kde/home.nix Executable file
View File

@@ -0,0 +1,97 @@
{ pkgs, ... }:
{
programs.plasma = {
enable = true;
workspace = {
lookAndFeel = "org.kde.breezedark.desktop";
};
panels = [
# Windows-like panel at the bottom
{
location = "bottom";
widgets = [
# We can configure the widgets by adding the name and config
# attributes. For example to add the the kickoff widget and set the
# icon to "nix-snowflake-white" use the below configuration. This will
# add the "icon" key to the "General" group for the widget in
# ~/.config/plasma-org.kde.plasma.desktop-appletsrc.
{
name = "org.kde.plasma.kickoff";
config = {
General = {
icon = "nix-snowflake-white";
alphaSort = true;
};
};
}
# Or you can configure the widgets by adding the widget-specific options for it.
# See modules/widgets for supported widgets and options for these widgets.
# For example:
# {
# kickoff = {
# sortAlphabetically = true;
# icon = "nix-snowflake-white";
# };
# }
# Adding configuration to the widgets can also for example be used to
# pin apps to the task-manager, which this example illustrates by
# pinning dolphin and konsole to the task-manager by default with widget-specific options.
# {
# iconTasks = {
# launchers = [
# "applications:org.kde.dolphin.desktop"
# "applications:org.kde.konsole.desktop"
# ];
# };
# }
# Or you can do it manually, for example:
{
name = "org.kde.plasma.icontasks";
config = {
General = {
launchers = [
"applications:org.kde.dolphin.desktop"
"applications:org.kde.konsole.desktop"
];
};
};
}
# If no configuration is needed, specifying only the name of the
# widget will add them with the default configuration.
"org.kde.plasma.marginsseparator"
# If you need configuration for your widget, instead of specifying the
# the keys and values directly using the config attribute as shown
# above, plasma-manager also provides some higher-level interfaces for
# configuring the widgets. See modules/widgets for supported widgets
# and options for these widgets. The widgets below shows two examples
# of usage, one where we add a digital clock, setting 12h time and
# first day of the week to Sunday and another adding a systray with
# some modifications in which entries to show.
{
digitalClock = {
calendar.firstDayOfWeek = "monday";
time.format = "12h";
};
}
{
systemTray.items = {
# We explicitly show bluetooth and battery
shown = [
"org.kde.plasma.battery"
"org.kde.plasma.networkmanagement"
"org.kde.plasma.volume"
];
# And explicitly hide networkmanagement and volume
hidden = [
# "org.kde.plasma.networkmanagement"
# "org.kde.plasma.volume"
"org.kde.plasma.bluetooth"
];
};
}
];
hiding = "none";
}
];
};
}