This commit is contained in:
Matthew Bessette
2026-04-06 23:19:08 -04:00
parent 566fe26025
commit 26fce9d3d3
25 changed files with 153 additions and 1024 deletions

BIN
_hosts/.DS_Store vendored

Binary file not shown.

View File

@@ -1,5 +0,0 @@
# Hardware
## Thunderbolt
Device ID (0-0): d1cc8780-a003-c6ad-ffff-ffffffffffff
Device ID (1-0): 64078780-21bf-3488-ffff-ffffffffffff

View File

@@ -1,139 +0,0 @@
{ config, pkgs, inputs, nix, system, ... }:
{
imports = [
./hardware-configuration.nix
inputs.home-manager.nixosModules.default
../../nixos-modules
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.luks.devices."luks-e9ee8166-a569-4bfc-9ada-fb2b718d9ad5".device = "/dev/disk/by-uuid/e9ee8166-a569-4bfc-9ada-fb2b718d9ad5";
networking.hostName = "argon"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/New_York";
# 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";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
# Thunderbolt Controller
services.hardware.bolt.enable = true;
# Configure keymap in X11
services.xserver = {
layout = "us";
xkbVariant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
###########
# MUTABLE #
###########
home-manager = {
extraSpecialArgs = { inherit inputs; inherit system; };
backupFileExtension = "backup";
users.mbessette = import ./home.nix;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# Kernel Tools
pciutils
plasma5Packages.plasma-thunderbolt
# Cli
nodejs_22
vim
];
##################
# CUSTOM MODULES #
##################
main-user.enable = true;
main-user.userName = "mbessette";
_1password.enable = true;
############
# PROGRAMS #
############
programs.zsh.enable = true;
virtualisation.docker.enable = true;
############
# SERVICES #
############
services.fwupd.enable = true;
# ...
}

View File

@@ -1,42 +0,0 @@
# 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" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/1647a4ac-27a4-4410-bf17-58f3ea762251";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-82108119-4645-4508-8f48-466041adbb60".device = "/dev/disk/by-uuid/82108119-4645-4508-8f48-466041adbb60";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/69FE-9A31";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/18cdfd30-cb27-4096-a6e4-ff1fcdc09b55"; }
];
# 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.wlp166s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,74 +0,0 @@
{ config, pkgs, inputs, ... }:
{
imports = [
../../home-manager-modules
];
firefox.enable = true;
ssh.enable = true;
vscode.enable = true;
zsh.enable = true;
home.username = "mbessette";
home.homeDirectory = "/home/mbessette";
home.stateVersion = "24.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
bruno
dbeaver-bin
moonlight-qt
signal-desktop
steam
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.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.sessionVariables = {
EDITOR = "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.git = {
enable = true;
userEmail = "blade30912@gmail.com";
userName = "Matthew Bessette";
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
nixpkgs = {
config.allowUnfreePredicate = pkg:
builtins.elem (pkgs.lib.getName pkg) [
"1password-gui"
"1password"
"vscode"
"vscode-extension-ms-vsliveshare-vsliveshare"
"onepassword-password-manager"
"vscode-extension-ms-vscode-remote-remote-ssh"
"steam"
"steam-original"
];
};
}

View File

@@ -1,103 +0,0 @@
{ config, inputs, pkgs, system, ... }:
{
imports = [
./hardware-configuration.nix
../../nixos-modules
inputs.home-manager.nixosModules.default
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "bromine"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/New_York";
# 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 = {
layout = "us";
xkbVariant = "";
};
###########
# MUTABLE #
###########
home-manager = {
extraSpecialArgs = { inherit inputs; inherit system; };
backupFileExtension = "backup";
users.mbessette = import ./home.nix;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
earthly
git
nodejs_20
vim
];
##################
# CUSTOM MODULES #
##################
main-user.enable = true;
main-user.userName = "mbessette";
############
# PROGRAMS #
############
programs.zsh.enable = true;
############
# SERVICES #
############
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
};
virtualisation.docker.enable = true;
}

View File

@@ -1,41 +0,0 @@
# 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" "thunderbolt" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/3063e8b5-aadd-4bcc-99c7-141748dd69d8";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/01FA-418F";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/d26174b8-281e-493e-83f2-ea38b42af2fe"; }
];
# 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.enp0s13f0u1u2.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s13f0u2.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,55 +0,0 @@
{ config, pkgs, inputs, ... }:
{
imports = [
../../home-manager-modules
];
firefox.enable = false;
ssh.enable = false;
vscode.enable = true;
zsh.enable = true;
home.username = "mbessette";
home.homeDirectory = "/home/mbessette";
home.stateVersion = "24.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.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.sessionVariables = {
EDITOR = "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
nixpkgs = {
config.allowUnfreePredicate = pkg:
builtins.elem (pkgs.lib.getName pkg) [
"1password-gui"
"1password"
"vscode"
"vscode-extension-ms-vsliveshare-vsliveshare"
"onepassword-password-manager"
"vscode-extension-ms-vscode-remote-remote-ssh"
];
};
}

View File

@@ -1,59 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
# NixOS-WSL specific options are documented on the NixOS-WSL repository:
# https://github.com/nix-community/NixOS-WSL
{ config, lib, pkgs, ... }:
{
imports = [
];
environment.systemPackages = with pkgs; [
git
wget
];
programs.zsh = {
enable = true;
enableCompletion = true;
# autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
ll = "ls -l";
update = "sudo nixos-rebuild switch --flake ~/nixos#caesium-wsl";
laws = "aws --endpoint=http://localhost:8081";
dev = "nix develop -c $SHELL";
nixos = "code ~/nixos";
};
histSize = 10000;
ohMyZsh = {
enable = true;
plugins = [ "git" ];
theme = "robbyrussell";
};
};
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs; # only for NixOS 24.05
};
users.defaultUserShell = pkgs.zsh;
wsl.enable = true;
wsl.defaultUser = "nixos";
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -1,10 +0,0 @@
# World of Warcraft
- Bottles via Flatpak
```
flatpak override --user --filesystem="/data/bravo" com.usebottles.bottles
```
- C:\Program Files\World of Warcraft\_retail\WTF\Config.wtf
```
SET rawMouseAccelerationEnable "0"
SET MouseNoRepositioning "1"
```

View File

@@ -1,198 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot = {
enable = true;
};
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelModules = [
"r8169"
];
networking.hostName = "Caesium"; # Define your hostname
hardware.graphics = {
enable = true;
};
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/New_York";
# 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";
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
services.xserver.videoDrivers = ["nvidia"];
## https://discourse.nixos.org/t/drm-kernel-driver-nvidia-drm-in-use-nvk-requires-nouveau/42222/29
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
nvidiaSettings = true;
open = false;
# package = config.boot.kernelPackages.nvidiaPackages.stable;
};
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
services.flatpak.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
virtualisation.containers.enable = true;
virtualisation = {
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
};
nixpkgs.config.allowUnfree = true;
## https://www.reddit.com/r/NixOS/comments/1dl61a8/firefox_crashing_frequently_after_updating_flake/
environment.sessionVariables.MOZ_ENABLE_WAYLAND = 0;
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
gparted
openssl
earthly
];
programs.firefox.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
programs.zsh = {
enable = true;
enableCompletion = true;
# autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
ll = "ls -l";
update = "sudo nixos-rebuild switch --flake ~/nixos#caesium";
laws = "aws --endpoint=http://localhost:8081";
dev = "nix develop -c $SHELL";
nixos = "code ~/.nixos";
};
histSize = 10000;
ohMyZsh = {
enable = true;
plugins = [ "git" ];
theme = "robbyrussell";
};
};
users.defaultUserShell = pkgs.zsh;
users.users.mbessette = {
isNormalUser = true;
description = "Matthew Bessette";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
kdePackages.kate
vscode
_1password-gui
discord
];
};
# Future - Flatpak
# https://github.com/gmodena/nix-flatpak
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
}

View File

@@ -1,71 +0,0 @@
# 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 = [ "nvme" "ahci" "xhci_pci" "thunderbolt" "usbhid" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/99fe114e-be1a-414b-893f-669bef13baeb";
fsType = "ext4";
};
fileSystems."/nix/store" =
{ device = "/dev/disk/by-uuid/77fb07a2-68f7-4f4f-a4a0-d3bcdc83b98a";
fsType = "btrfs";
};
fileSystems."/var/lib" =
{ device = "/dev/disk/by-uuid/05ccb595-f73e-4a00-a3f6-1fb537c9b2a3";
fsType = "btrfs";
};
fileSystems."/data/charlie" =
{ device = "/dev/disk/by-uuid/cb29be2a-a6e8-4581-98fd-1648de77e9c1";
fsType = "ext4";
};
fileSystems."/data/bravo" =
{ device = "/dev/disk/by-uuid/1259b0aa-3b6d-43c3-a45a-1073e82fb554";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/23e4cffe-4f57-486b-9a9f-24e715838a4d";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/EC54-3580";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/data/alpha" =
{ device = "/dev/disk/by-uuid/465436bf-d997-4961-b577-2a91f9061e33";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/25377ac7-4a7a-4648-abe1-f65990145c54"; }
];
# 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.enp15s0u1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp8s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -25,18 +25,6 @@
options = [ "subvol=@nix" ]; options = [ "subvol=@nix" ];
}; };
fileSystems."/usr/local/steam-games" =
{ device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
fsType = "btrfs";
options = [ "subvol=@steam" ];
};
fileSystems."/usr/local/bottles" =
{ device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
fsType = "btrfs";
options = [ "subvol=@bottles" ];
};
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/038C-E1E1"; { device = "/dev/disk/by-uuid/038C-E1E1";
fsType = "vfat"; fsType = "vfat";
@@ -48,11 +36,6 @@
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/usr/local/Projects" =
{ device = "/dev/disk/by-uuid/bd31dc44-4bc0-4080-95c7-faee9ebc2b79";
fsType = "ext4";
};
swapDevices = [ ]; swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";

View File

@@ -16,6 +16,7 @@
# Managed VS Code Extensions (The "Clean" Way) # Managed VS Code Extensions (The "Clean" Way)
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscode-fhs;
profiles.default = { profiles.default = {
userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json); userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json);
extensions = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ extensions = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
@@ -29,6 +30,9 @@
redhat.vscode-xml redhat.vscode-xml
vscode-icons-team.vscode-icons vscode-icons-team.vscode-icons
typescriptteam.native-preview typescriptteam.native-preview
mkhl.direnv
oxc.oxc-vscode
biomejs.biome
]; ];
}; };
}; };
@@ -47,7 +51,7 @@
]; ];
initContent = '' initContent = ''
export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock export SSH_AUTH_SOCK=~/.1password/agent.sock
# Auto-allow direnv for directories with flake.nix # Auto-allow direnv for directories with flake.nix
auto_allow_direnv() { auto_allow_direnv() {
@@ -73,15 +77,15 @@
home.sessionVariables = { home.sessionVariables = {
# Points to the Homebrew location mentioned in your caveat # Points to the Homebrew location mentioned in your caveat
NPM_CONFIG_PREFIX = "/usr/local/Projects/.npm-global/.npm-global"; NPM_CONFIG_PREFIX = "/mnt/Projects/.npm-global/.npm-global";
}; };
home.sessionPath = [ home.sessionPath = [
"/usr/local/Projects/.npm-global/bin" "/mnt/Projects/.npm-global/bin"
]; ];
home.file.".npmrc".text = '' home.file.".npmrc".text = ''
prefix=/usr/local/Projects/.npm-global/.npm-global prefix=/mnt/Projects/.npm-global/.npm-global
'' ; '' ;
home.file.".config/1Password/ssh/agent.toml".source = ./config.agent.toml; home.file.".config/1Password/ssh/agent.toml".source = ./config.agent.toml;
@@ -96,7 +100,7 @@
}; };
"*" = { "*" = {
extraOptions = { extraOptions = {
"IdentityAgent" = "\"~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock\""; "IdentityAgent" = "~/.1password/agent.sock";
}; };
}; };
}; };

View File

@@ -12,9 +12,11 @@
# --- BOOTLOADER --- # --- BOOTLOADER ---
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.kernelParams = [ "usbcore.autosuspend=-1" ];
networking.hostName = "caesium"; networking.hostName = "caesium";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.interfaces.enp13s0.wakeOnLan.enable = true;
# --- STORAGE & SSD OPTIMIZATION --- # --- STORAGE & SSD OPTIMIZATION ---
# Enable TRIM for SSD longevity # Enable TRIM for SSD longevity
@@ -23,6 +25,8 @@
nix.settings.auto-optimise-store = true; nix.settings.auto-optimise-store = true;
# --- SWAP STRATEGY --- # --- SWAP STRATEGY ---
systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false;
# Primary Swap: Compressed RAM (Fastest) # Primary Swap: Compressed RAM (Fastest)
zramSwap.enable = true; zramSwap.enable = true;
zramSwap.memoryPercent = 25; zramSwap.memoryPercent = 25;
@@ -37,6 +41,7 @@
users.groups.storage = {}; users.groups.storage = {};
users.users.mbessette = { users.users.mbessette = {
isNormalUser = true; isNormalUser = true;
shell = pkgs.zsh;
extraGroups = [ "wheel" "networkmanager" "storage" "docker" ]; extraGroups = [ "wheel" "networkmanager" "storage" "docker" ];
}; };
@@ -45,37 +50,69 @@
# We only list them here if we want to add specific options like compression. # We only list them here if we want to add specific options like compression.
fileSystems."/nix".options = [ "subvol=@nix" "compress=zstd" "noatime" ]; fileSystems."/nix".options = [ "subvol=@nix" "compress=zstd" "noatime" ];
fileSystems."/usr/local/bottles" = { fileSystems."/mnt/bottles" = {
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92"; # Use the same Alpha UUID device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92"; # Use the same Alpha UUID
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@bottles" "compress=zstd" "noatime" ]; options = [ "subvol=@bottles" "compress=zstd" "noatime" ];
}; };
fileSystems."/mnt/steam-games" = {
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
fsType = "btrfs";
options = [ "subvol=@steam" "compress=zstd" "noatime" ];
};
fileSystems."/mnt/Projects" = {
device = "/dev/disk/by-uuid/bd31dc44-4bc0-4080-95c7-faee9ebc2b79";
fsType = "ext4";
};
# --- SYSTEM PERMISSIONS --- # --- SYSTEM PERMISSIONS ---
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /usr/local/steam-games 0775 mbessette storage -" "d /mnt 0775 mbessette storage -"
"d /usr/local/bottles 0775 mbessette storage -" "d /mnt/steam-games 0775 mbessette storage -"
"d /usr/local/Projects 0775 mbessette storage -" "d /mnt/bottles 0775 mbessette storage -"
"d /usr/local/docker-data 0770 root root -" "d /mnt/Projects 0775 mbessette storage -"
"d /mnt/Projects/.docker-data 0770 root root -"
]; ];
# --- VIRTUALIZATION --- # --- VIRTUALIZATION ---
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
virtualisation.docker.daemon.settings = { virtualisation.docker.daemon.settings = {
data-root = "/usr/local/docker-data"; data-root = "/mnt/Projects/.docker-data";
}; };
# --- AUDIO --- # --- AUDIO ---
security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
# Use pulse.rules to target specific apps or set global pulse defaults
extraConfig.pipewire-pulse."92-discord-fix" = {
"pulse.rules" = [
{
matches = [ { "application.name" = "~Discord*"; } ];
actions = {
update-props = {
"pulse.min.req" = "1024/48000";
"pulse.default.req" = "1024/48000";
"pulse.max.req" = "2048/48000";
"pulse.min.quantum" = "1024/48000";
};
};
}
];
};
}; };
# --- OS --- # --- OS ---
# This stays 'true' to enable the graphical pipeline # This stays 'true' to enable the graphical pipeline
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.videoDrivers = [ "amdgpu" ];
services.flatpak.enable = true;
# SDDM is the login manager; Plasma 6 is the desktop # SDDM is the login manager; Plasma 6 is the desktop
services.displayManager.sddm.enable = true; services.displayManager.sddm.enable = true;
@@ -84,6 +121,18 @@
# Tell SDDM to use Wayland for the login screen itself (Ultra Modern) # Tell SDDM to use Wayland for the login screen itself (Ultra Modern)
services.displayManager.sddm.wayland.enable = true; services.displayManager.sddm.wayland.enable = true;
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
liberation_ttf
fira-code
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
];
# Ensure hardware acceleration is ready for Wayland # Ensure hardware acceleration is ready for Wayland
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
@@ -91,16 +140,57 @@
}; };
# --- PROGRAMS --- # --- PROGRAMS ---
programs.steam.enable = true; programs.zsh.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
extraPackages = with pkgs; [
gperftools
];
package = pkgs.steam.override {
extraBwrapArgs = [
"--bind /mnt/steam-games /mnt/steam-games"
];
};
};
programs._1password-gui = {
enable = true;
polkitPolicyOwners = [ "mbessette" ];
};
# Biome config
environment.etc."biome.json".source = ./config.biome.json;
environment.etc."oxlintrc.json".source = ./config.oxlintrc.json;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
ethtool
vim vim
git git
wget wget
curl curl
bottles firefox
_1password-gui discord
wowup-cf
spotify
faugus-launcher
]; ];
services.flatpak.packages = [
# "io.github.Faugus.faugus-launcher"
];
services.flatpak.overrides = {
# "io.github.Faugus.faugus-launcher".Context.filesystems = [
# "/mtn/bottles"
# ];
};
programs.appimage = {
enable = true;
binfmt = true;
};
# --- SYSTEM VERSION --- # --- SYSTEM VERSION ---
system.stateVersion = "24.11"; # Or current stable version system.stateVersion = "24.11"; # Or current stable version
} }

65
flake.lock generated
View File

@@ -28,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771992996, "lastModified": 1775037210,
"narHash": "sha256-Y/ijH/unOPxzUicbla6yT/14RJgubUWnY2I2A6Ast2Q=", "narHash": "sha256-KM2WYj6EA7M/FVZVCl3rqWY+TFV5QzSyyGE2gQxeODU=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "3bfa436c1975674ca465ce34586467be301ff509", "rev": "06648f4902343228ce2de79f291dd5a58ee12146",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -50,11 +50,11 @@
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
"lastModified": 1771992172, "lastModified": 1775361787,
"narHash": "sha256-XdaMLD1Gjev6i3tBeVFLORc1uLGNg9XbUf+LmxpGIYo=", "narHash": "sha256-0UY3G8QkoXFls5ThRIN6SBLUvf8E6t4d4hV7vj+f1pI=",
"owner": "rycee", "owner": "rycee",
"repo": "nur-expressions", "repo": "nur-expressions",
"rev": "0002367df8f1b5d8089eaf0314ddc4afe73b271a", "rev": "f8df1456eb3ddf837e3743f1cb5bcfc7730d29d2",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -142,11 +142,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771851181, "lastModified": 1775427330,
"narHash": "sha256-gFgE6mGUftwseV3DUENMb0k0EiHd739lZexPo5O/sdQ=", "narHash": "sha256-pm1SDX9Tj4eHWwjtDEqSU+5QZO7nHHqU8GT0JtbI9rc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "9a4b494b1aa1b93d8edf167f46dc8e0c0011280c", "rev": "7e7269ac064bea120d7b23daed432a096617872d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -178,6 +178,22 @@
"type": "github" "type": "github"
} }
}, },
"nix-flatpak": {
"locked": {
"lastModified": 1767983141,
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"nix-vscode-extensions": { "nix-vscode-extensions": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -185,11 +201,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773196667, "lastModified": 1775358276,
"narHash": "sha256-jFlVopQCfQumeZ6iXTJR/jrFvuS408ReTeLfggNiLLM=", "narHash": "sha256-TlWo4NYKlogZZ+EF1CCMz8J2L4Q+roBb8CE74ZPHBLE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "931b0da906b0bf70162d84074c5085934e64750d", "rev": "cffd84d2e0ca47c61dc15b941e2383ca56106e05",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -200,11 +216,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1771969195, "lastModified": 1775203647,
"narHash": "sha256-qwcDBtrRvJbrrnv1lf/pREQi8t2hWZxVAyeMo7/E9sw=", "narHash": "sha256-6MWaMLXK9QMndI94CIxeiPafi3wuO+imCtK9tfhsZdw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "41c6b421bdc301b2624486e11905c9af7b8ec68e", "rev": "80afbd13eea0b7c4ac188de949e1711b31c2b5f0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -220,11 +236,11 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1771563879, "lastModified": 1774972752,
"narHash": "sha256-vA5hocvdGhr+jfBN7A7ogeZqIz2qx01EixXwdVsQcnE=", "narHash": "sha256-DnLIpFxznohpLkIFs390uZ0gxwkVyhtknhKNu+lQJK8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "379d20c55f552e91fb9f3f0382e4a97d3f452943", "rev": "d97e078f4788cddb8d11c3c99f72a4bb9ddec221",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -315,11 +331,11 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1770019141, "lastModified": 1773734432,
"narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=", "narHash": "sha256-IF5ppUWh6gHGHYDbtVUyhwy/i7D261P7fWD1bPefOsw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137", "rev": "cda48547b432e8d3b18b4180ba07473762ec8558",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -331,11 +347,11 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1771848320, "lastModified": 1775036866,
"narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2fc6539b481e1d2569f25f8799236694180c0993", "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -351,6 +367,7 @@
"firefox-addons": "firefox-addons", "firefox-addons": "firefox-addons",
"home-manager": "home-manager", "home-manager": "home-manager",
"mac-app-util": "mac-app-util", "mac-app-util": "mac-app-util",
"nix-flatpak": "nix-flatpak",
"nix-vscode-extensions": "nix-vscode-extensions", "nix-vscode-extensions": "nix-vscode-extensions",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",

View File

@@ -25,9 +25,10 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
}; };
outputs = { self, darwin, nixpkgs, nixos-hardware, nixos-wsl, home-manager, mac-app-util, ... }@inputs: outputs = { self, darwin, nixpkgs, nixos-hardware, nixos-wsl, home-manager, mac-app-util, nix-flatpak, ... }@inputs:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = import nixpkgs { pkgs = import nixpkgs {
@@ -63,6 +64,7 @@
specialArgs = { inherit system; inherit inputs; }; specialArgs = { inherit system; inherit inputs; };
modules = [ modules = [
nix-flatpak.nixosModules.nix-flatpak
./caesium.nixos.nix ./caesium.nixos.nix
{ {
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;

View File

@@ -1,8 +0,0 @@
{
imports = [
./firefox.nix
./ssh.nix
./vscode.nix
./zsh.nix
];
}

View File

@@ -1,31 +0,0 @@
{ config, lib, inputs, pkgs, ... }:
let
cfg = config.firefox;
ext = inputs.firefox-addons.packages.${pkgs.system};
in
{
options = {
firefox.enable = lib.mkEnableOption "enable firefox module";
};
config.programs.firefox = lib.mkIf cfg.enable {
enable = true;
profiles.default = {
bookmarks = [
{
name = "Wikipedia";
tags = ["wiki"];
url = "https://en.wikipedia.org";
}
];
extensions = [
# ext."1password-x-password-manager"
ext.ublock-origin
ext.plasma-integration
];
};
};
}

View File

@@ -1,24 +0,0 @@
{ config, lib, ... }:
let
cfg = config.ssh;
agentPath = "~/.1password/agent.sock";
in
{
options = {
ssh.enable = lib.mkEnableOption "enable ssh module";
};
config.programs.ssh = lib.mkIf cfg.enable {
enable = true;
forwardAgent = true;
extraConfig = ''
Host *
IdentityAgent ${agentPath}
Host bromine
HostName 192.168.1.200
User mbessette
ForwardAgent yes
'';
};
}

View File

@@ -1,31 +0,0 @@
{ config, lib, nixpkgs, pkgs, ... }:
let
cfg = config.vscode;
in
{
options = {
vscode.enable = lib.mkEnableOption "enable vscode module";
};
config.programs.vscode = lib.mkIf cfg.enable {
enable = true;
extensions = with pkgs.vscode-extensions; [
bbenoist.nix
# rokoroku.vscode-theme-darcula
eamodio.gitlens
oderwat.indent-rainbow
prisma.prisma
ms-vsliveshare.vsliveshare
ms-vscode-remote.remote-ssh
];
userSettings = {
editor.tabSize = 2;
terminal.integrated.defaultProfile.linux = "zsh";
terminal.integrated.defaultProfile.osx = "zsh";
};
};
}

View File

@@ -1,22 +0,0 @@
{ config, lib, ... }:
let
cfg = config.zsh;
in
{
options = {
zsh.enable = lib.mkEnableOption "enable zsh module";
};
config.programs.zsh = lib.mkIf cfg.enable {
enable = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh.enable = true;
oh-my-zsh.theme = "robbyrussell";
oh-my-zsh.plugins = [
"git"
"npm"
];
};
}

View File

@@ -1,19 +0,0 @@
{ config, lib, ... }:
let
cfg = config._1password;
in
{
options = {
_1password.enable = lib.mkEnableOption "enable _1password module";
};
config.programs._1password = lib.mkIf cfg.enable {
enable = true;
};
config.programs._1password-gui = lib.mkIf cfg.enable {
enable = true;
polkitPolicyOwners = [ "mbessette" ];
};
}

View File

@@ -1,6 +0,0 @@
{
imports = [
./1password.nix
./main-user.nix
];
}

View File

@@ -1,29 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.main-user;
in
{
options = {
main-user.enable = lib.mkEnableOption "enable user module";
main-user.userName = lib.mkOption {
default = "mbessette";
description = "username";
};
};
config = lib.mkIf cfg.enable {
users.groups.docker = {};
users.users.${cfg.userName} = {
isNormalUser = true;
initialPassword = "12345";
description = "main user";
shell = pkgs.zsh;
extraGroups = [ "networkmanager" "wheel" "docker" ];
packages = with pkgs; [];
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxwgo35pdtk5dJKYBNLk723yvxmaJzN87KW3L2U82nY5HTYkMP6eoLN2S71RRN0deSE9//1xE3Pj1RXUates5Bq42csEa0s791VEC3zWdTlYeVaHbGgyRIOtNv6s5celwvqYZkMERbvbz/7cmTbOuQf5bdvopS7tofzj83s5iwOO8pmayavZ/xWSOfau07z0Sj2KuJSjqGkLtFD9P4o9BeNc3ZxghaMidZtpUNgSq/n06aph+dZOCLQpAQlQPIxqowGX/gQSailYId0SfAtuTesFvdgi9xkokia2erxv0RVbnblSZuucYoNdEm/sAX3bMxG9mLGxpyeIRfZjNynhzQh6jk4xLNsNszWVhmh49nrBADwmjXS6vO/QT8aaByKwJNmkPZxRMOquy18bZeEOl+Qya/Ui0g9diL3c6Mqmz4SwrWiROo70nFiInEMPAl/sXZSfpWsiFsAqqV2WyFKTNBzIM+XYE8wZf5h8thh8YuE3uGduR86u9HH7IU+fNCPR0="
];
};
};
}