caesium: thunderbird and vscode updates
This commit is contained in:
+29
-13
@@ -1,38 +1,54 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config
|
||||||
|
, lib
|
||||||
|
, modulesPath
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "ahci" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" "sr_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"ahci"
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"sr_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@" ];
|
options = [ "subvol=@" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@nix" ];
|
options = [ "subvol=@nix" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/038C-E1E1";
|
device = "/dev/disk/by-uuid/038C-E1E1";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "/dev/disk/by-uuid/ddbb8d84-7704-45a0-93b4-7d38905755f3";
|
device = "/dev/disk/by-uuid/ddbb8d84-7704-45a0-93b4-7d38905755f3";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+13
-16
@@ -1,4 +1,9 @@
|
|||||||
{ config, inputs, lib, pkgs, ... }: {
|
{ config, pkgs, ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./programs.vscode.nix
|
||||||
|
./programs.thunderbird.nix
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
@@ -6,32 +11,23 @@
|
|||||||
faugus-launcher
|
faugus-launcher
|
||||||
];
|
];
|
||||||
|
|
||||||
|
systemd.user.sessionVariables = {
|
||||||
|
## Required to fix firefox unrendered addressbar and tabs
|
||||||
|
XDG_DATA_DIRS = "${config.home.homeDirectory}/.nix-profile/share:/usr/local/share:/usr/share";
|
||||||
|
};
|
||||||
|
|
||||||
services.flatpak = {
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
packages = [
|
packages = [
|
||||||
"com.spotify.Client"
|
"com.spotify.Client"
|
||||||
"com.discordapp.Discord"
|
"com.discordapp.Discord"
|
||||||
"flathub:app/com.anthropic.Claude/x86_64/stable"
|
|
||||||
];
|
];
|
||||||
overrides = [];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh.shellAliases = {
|
programs.zsh.shellAliases = {
|
||||||
claude = "nix run github:sadjow/claude-code-nix";
|
claude = "nix run github:sadjow/claude-code-nix";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscode-fhs;
|
|
||||||
profiles.default = {
|
|
||||||
userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json);
|
|
||||||
extensions = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
|
||||||
bbenoist.nix
|
|
||||||
vscode-icons-team.vscode-icons
|
|
||||||
waderyan.gitblame
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
NPM_CONFIG_PREFIX = "/mnt/Projects/.npm-global/.npm-global";
|
NPM_CONFIG_PREFIX = "/mnt/Projects/.npm-global/.npm-global";
|
||||||
};
|
};
|
||||||
@@ -44,3 +40,4 @@
|
|||||||
prefix=/mnt/Projects/.npm-global/.npm-global
|
prefix=/mnt/Projects/.npm-global/.npm-global
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
+41
-8
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -8,7 +8,10 @@
|
|||||||
|
|
||||||
time.timeZone = "America/New_York";
|
time.timeZone = "America/New_York";
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
# --- BOOTLOADER ---
|
# --- BOOTLOADER ---
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
@@ -44,19 +47,30 @@
|
|||||||
# Primary Swap: Compressed RAM (Fastest)
|
# Primary Swap: Compressed RAM (Fastest)
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
zramSwap.memoryPercent = 25;
|
zramSwap.memoryPercent = 25;
|
||||||
|
systemd.oomd.enable = true;
|
||||||
|
services.earlyoom.enable = true;
|
||||||
|
services.earlyoom.freeMemThreshold = 5; # trigger at 5% free RAM
|
||||||
|
services.earlyoom.freeSwapThreshold = 10; # trigger at 10% free swap
|
||||||
|
|
||||||
# Secondary Swap: 16GB File on Alpha (Safety Net)
|
# Secondary Swap: 16GB File on Alpha (Safety Net)
|
||||||
swapDevices = [ {
|
swapDevices = [
|
||||||
|
{
|
||||||
device = "/var/lib/swapfile";
|
device = "/var/lib/swapfile";
|
||||||
size = 16 * 1024; # 16GB
|
size = 16 * 1024; # 16GB
|
||||||
} ];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# --- USER & GROUPS ---
|
# --- USER & GROUPS ---
|
||||||
users.groups.storage = { };
|
users.groups.storage = { };
|
||||||
users.users.mbessette = {
|
users.users.mbessette = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
extraGroups = [ "wheel" "networkmanager" "storage" "docker" ];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
"storage"
|
||||||
|
"docker"
|
||||||
|
];
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILsZW38Ad1GAhGgfo7LsBzt6M4oo30VafsmNrILPMVio"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILsZW38Ad1GAhGgfo7LsBzt6M4oo30VafsmNrILPMVio"
|
||||||
];
|
];
|
||||||
@@ -66,17 +80,29 @@
|
|||||||
# Note: The UUIDs stay in hardware-configuration.nix.
|
# Note: The UUIDs stay in hardware-configuration.nix.
|
||||||
# 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."/mnt/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" = {
|
fileSystems."/mnt/steam-games" = {
|
||||||
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
device = "/dev/disk/by-uuid/9523b80b-8a1f-4784-9750-9b8fadf91b92";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@steam" "compress=zstd" "noatime" ];
|
options = [
|
||||||
|
"subvol=@steam"
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/mnt/Projects" = {
|
fileSystems."/mnt/Projects" = {
|
||||||
@@ -157,6 +183,13 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# --- PROGRAMS ---
|
# --- PROGRAMS ---
|
||||||
|
services.printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = [
|
||||||
|
pkgs.hplip
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
|
|||||||
+26
-9
@@ -1,4 +1,7 @@
|
|||||||
{ pkgs, lib, inputs, ... }:
|
{ pkgs
|
||||||
|
, lib
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
ansibleRequired = {
|
ansibleRequired = {
|
||||||
taps = [
|
taps = [
|
||||||
@@ -47,7 +50,8 @@ let
|
|||||||
# "jetbrains-toolbox"
|
# "jetbrains-toolbox"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
ids.gids.nixbld = 350;
|
ids.gids.nixbld = 350;
|
||||||
security.pam.services.sudo_local.touchIdAuth = true;
|
security.pam.services.sudo_local.touchIdAuth = true;
|
||||||
|
|
||||||
@@ -74,7 +78,11 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Add Homebrew to PATH
|
# Add Homebrew to PATH
|
||||||
environment.systemPath = [ "/opt/homebrew/bin" "/opt/homebrew/sbin" "/Users/matthew.bessette/.local/bin" ];
|
environment.systemPath = [
|
||||||
|
"/opt/homebrew/bin"
|
||||||
|
"/opt/homebrew/sbin"
|
||||||
|
"/Users/matthew.bessette/.local/bin"
|
||||||
|
];
|
||||||
|
|
||||||
system.primaryUser = "matthew.bessette";
|
system.primaryUser = "matthew.bessette";
|
||||||
users.users."matthew.bessette" = {
|
users.users."matthew.bessette" = {
|
||||||
@@ -95,18 +103,26 @@ in {
|
|||||||
# Each list is (ansible-managed set) ++ (nix-only extras), deduped. With
|
# Each list is (ansible-managed set) ++ (nix-only extras), deduped. With
|
||||||
# cleanup = "uninstall" above, anything NOT listed here gets removed on
|
# cleanup = "uninstall" above, anything NOT listed here gets removed on
|
||||||
# activation — so ansibleRequired must be merged in or nix would clobber it.
|
# activation — so ansibleRequired must be merged in or nix would clobber it.
|
||||||
taps = lib.unique (ansibleRequired.taps ++ [
|
taps = lib.unique (
|
||||||
|
ansibleRequired.taps
|
||||||
|
++ [
|
||||||
# nix-only taps go here
|
# nix-only taps go here
|
||||||
]);
|
]
|
||||||
brews = lib.unique (ansibleRequired.brews ++ [
|
);
|
||||||
|
brews = lib.unique (
|
||||||
|
ansibleRequired.brews
|
||||||
|
++ [
|
||||||
"biome"
|
"biome"
|
||||||
"jira-cli"
|
"jira-cli"
|
||||||
"treehouse"
|
"treehouse"
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
# visual-studio-code is installed by Homebrew (in ansibleRequired.casks) so
|
# visual-studio-code is installed by Homebrew (in ansibleRequired.casks) so
|
||||||
# Homebrew owns the .app; home-manager (cleo.home.nix) owns settings +
|
# Homebrew owns the .app; home-manager (cleo.home.nix) owns settings +
|
||||||
# extensions only (programs.vscode with package = null) — no second copy.
|
# extensions only (programs.vscode with package = null) — no second copy.
|
||||||
casks = lib.unique (ansibleRequired.casks ++ [
|
casks = lib.unique (
|
||||||
|
ansibleRequired.casks
|
||||||
|
++ [
|
||||||
"android-commandlinetools"
|
"android-commandlinetools"
|
||||||
"android-platform-tools"
|
"android-platform-tools"
|
||||||
"bruno"
|
"bruno"
|
||||||
@@ -121,7 +137,8 @@ in {
|
|||||||
"spotify"
|
"spotify"
|
||||||
"yubico-yubikey-manager"
|
"yubico-yubikey-manager"
|
||||||
"zoom"
|
"zoom"
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
|
|
||||||
masApps = {
|
masApps = {
|
||||||
BetterSnapTool = 417375580;
|
BetterSnapTool = 417375580;
|
||||||
|
|||||||
+4
-89
@@ -1,47 +1,11 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
{ config, pkgs, inputs, ... }:
|
||||||
let
|
|
||||||
oldPkgs = import inputs.nixpkgs-nodejs {
|
|
||||||
system = pkgs.stdenv.hostPlatform.system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
home.username = "matthew.bessette";
|
imports = [
|
||||||
home.homeDirectory = "/Users/matthew.bessette";
|
./programs.vscode.nix
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [ ];
|
home.packages = with pkgs; [ ];
|
||||||
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
mutableExtensionsDir = false;
|
|
||||||
profiles.default = {
|
|
||||||
userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json);
|
|
||||||
extensions = (
|
|
||||||
with pkgs.vscode-marketplace-release; [
|
|
||||||
bbenoist.nix
|
|
||||||
graphql.vscode-graphql-syntax
|
|
||||||
graphql.vscode-graphql
|
|
||||||
ms-python.debugpy
|
|
||||||
ms-python.python
|
|
||||||
ms-python.vscode-pylance
|
|
||||||
oxc.oxc-vscode
|
|
||||||
vscode-icons-team.vscode-icons
|
|
||||||
typescriptteam.native-preview
|
|
||||||
waderyan.gitblame
|
|
||||||
]
|
|
||||||
) ++ (
|
|
||||||
with pkgs.vscode-marketplace; [
|
|
||||||
biomejs.biome
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# mise runtime manager — installed by nix. Zsh integration is disabled
|
|
||||||
# because `mise activate zsh` registers a precmd hook that re-evaluates the
|
|
||||||
# environment before every prompt, causing a per-command shell delay.
|
|
||||||
# Tools still resolve via shims on PATH (see home.sessionPath below); this
|
|
||||||
# trades away mise's per-directory env-var auto-loading for prompt speed.
|
|
||||||
programs.mise = {
|
programs.mise = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = false;
|
enableZshIntegration = false;
|
||||||
@@ -110,22 +74,9 @@ in
|
|||||||
prefix=${config.home.homeDirectory}/.npm-global
|
prefix=${config.home.homeDirectory}/.npm-global
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Stub Android SDK directory so ANDROID_HOME/platform-tools/adb resolves to
|
|
||||||
# the adb binary installed by the android-platform-tools Homebrew cask.
|
|
||||||
home.file."android-sdk/platform-tools/adb".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/adb";
|
home.file."android-sdk/platform-tools/adb".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/adb";
|
||||||
home.file."android-sdk/cmdline-tools/latest/bin/sdkmanager".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/sdkmanager";
|
home.file."android-sdk/cmdline-tools/latest/bin/sdkmanager".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/sdkmanager";
|
||||||
xdg.configFile."oxlint/oxlintrc.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.oxlintrc.json";
|
|
||||||
xdg.configFile."biome/biome.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.biome.json";
|
|
||||||
|
|
||||||
# --- Tool config parity with local-dev-ansible (tasks/config/*) ---
|
|
||||||
# Note: ~/.aws/config is intentionally NOT managed here — `aws-sso-util configure
|
|
||||||
# populate` must rewrite it at runtime, which a read-only nix symlink would block.
|
|
||||||
# Run once after switch:
|
|
||||||
# aws-sso-util configure populate \
|
|
||||||
# --sso-start-url https://d-9067516d20.awsapps.com/start \
|
|
||||||
# --sso-region us-east-1 --region us-east-1 --config-default output=json
|
|
||||||
|
|
||||||
# GitHub Copilot CLI (tasks/config/copilot.yml)
|
|
||||||
home.file.".copilot/settings.json".text = builtins.toJSON {
|
home.file.".copilot/settings.json".text = builtins.toJSON {
|
||||||
footer = {
|
footer = {
|
||||||
showModelEffort = true;
|
showModelEffort = true;
|
||||||
@@ -156,40 +107,4 @@ in
|
|||||||
tuiSidebarPanel.enabled = true;
|
tuiSidebarPanel.enabled = true;
|
||||||
maintainerAnnouncements = { enabled = false; home = false; };
|
maintainerAnnouncements = { enabled = false; home = false; };
|
||||||
};
|
};
|
||||||
|
|
||||||
# Claude Code settings (tasks/config/claude-code.yml) — cleo-scoped override of the
|
|
||||||
# shared config.claude.json, since claude-statusline is only installed on cleo.
|
|
||||||
# mkForce wins over home.shared.nix's `.source = ./config.claude.json`.
|
|
||||||
xdg.configFile."claude/settings.json".source = lib.mkForce (pkgs.writeText "claude-settings.json" (builtins.toJSON {
|
|
||||||
"$schema" = "https://json.schemastore.org/claude-code-settings.json";
|
|
||||||
theme = "dark";
|
|
||||||
agent = "plan";
|
|
||||||
denyCommands = [ "code --install-extension*" ];
|
|
||||||
additionalDirectories = [ "/tmp" ];
|
|
||||||
autoMemoryEnabled = false;
|
|
||||||
effortLevel = "medium";
|
|
||||||
fastModePerSessionOptIn = true;
|
|
||||||
feedbackSurveyRate = 0;
|
|
||||||
model = "opusplan";
|
|
||||||
showClearContextOnPlanAccept = false;
|
|
||||||
statusLine = { type = "command"; command = "claude-statusline prompt"; };
|
|
||||||
}));
|
|
||||||
xdg.configFile."claude-statusline/config.toml".text = ''
|
|
||||||
format = "$directory | $git_branch | $model | $cost | $context | $usage"
|
|
||||||
preset = "default"
|
|
||||||
|
|
||||||
[usage]
|
|
||||||
disabled = false
|
|
||||||
format = 'S: {{printf "%.0f" .BlockPct}}% ({{.BlockResets}}) | W: {{printf "%.0f" .WeeklyPct}}%'
|
|
||||||
'';
|
|
||||||
|
|
||||||
xdg.configFile."1Password/ssh/agent.toml".text = lib.mkForce ''
|
|
||||||
[[ssh-keys]]
|
|
||||||
item = "Cleo SSH Key"
|
|
||||||
vault = "Cleo"
|
|
||||||
|
|
||||||
[[ssh-keys]]
|
|
||||||
item = "Personal SSH Key"
|
|
||||||
vault = "Private"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
||||||
"theme": "dark",
|
|
||||||
"agent": "plan",
|
|
||||||
"denyCommands": ["code --install-extension*"]
|
|
||||||
}
|
|
||||||
@@ -32,6 +32,19 @@
|
|||||||
"source.organizeImports": "explicit"
|
"source.organizeImports": "explicit"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"[nix]": {
|
||||||
|
"editor.defaultFormatter": "jnoortheen.nix-ide",
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
},
|
||||||
|
"nix.enableLanguageServer": true,
|
||||||
|
"nix.serverPath": "nixd",
|
||||||
|
"nix.serverSettings": {
|
||||||
|
"nixd": {
|
||||||
|
"formatting": {
|
||||||
|
"command": ["treefmt", "--stdin", "buffer.nix"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"js/ts.updateImportsOnPaste.enabled": true,
|
"js/ts.updateImportsOnPaste.enabled": true,
|
||||||
"js/ts.preferences.importModuleSpecifier": "relative",
|
"js/ts.preferences.importModuleSpecifier": "relative",
|
||||||
"git.openRepositoryInParentFolders": "never",
|
"git.openRepositoryInParentFolders": "never",
|
||||||
|
|||||||
@@ -42,17 +42,15 @@
|
|||||||
nixpkgs-nodejs.url = "github:NixOS/nixpkgs/21808d22b1cda1898b71cf1a1beb524a97add2c4";
|
nixpkgs-nodejs.url = "github:NixOS/nixpkgs/21808d22b1cda1898b71cf1a1beb524a97add2c4";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs =
|
||||||
self,
|
inputs@{
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
nixpkgsUnstable,
|
nixpkgsUnstable,
|
||||||
nixos-hardware,
|
|
||||||
home-manager,
|
home-manager,
|
||||||
home-manager-darwin,
|
home-manager-darwin,
|
||||||
nix-darwin,
|
nix-darwin,
|
||||||
mac-app-util,
|
mac-app-util,
|
||||||
nix-flatpak,
|
nix-flatpak,
|
||||||
nixpkgs-nodejs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -71,12 +69,16 @@
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# NixOS Configuration (Linux)
|
# NixOS Configuration (Linux)
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
nixosConfigurations.caesium = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.caesium = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = { system = linuxSystem; inherit inputs; };
|
specialArgs = {
|
||||||
|
system = linuxSystem;
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = mkOverlays linuxSystem;
|
nixpkgs.overlays = mkOverlays linuxSystem;
|
||||||
@@ -90,7 +92,10 @@
|
|||||||
# nix-darwin Configuration (macOS)
|
# nix-darwin Configuration (macOS)
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
darwinConfigurations.cleo-darwin = nix-darwin.lib.darwinSystem {
|
darwinConfigurations.cleo-darwin = nix-darwin.lib.darwinSystem {
|
||||||
specialArgs = { system = darwinSystem; inherit inputs; };
|
specialArgs = {
|
||||||
|
system = darwinSystem;
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
@@ -103,7 +108,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
darwinConfigurations.hydrogen = nix-darwin.lib.darwinSystem {
|
darwinConfigurations.hydrogen = nix-darwin.lib.darwinSystem {
|
||||||
specialArgs = { system = darwinSystem; inherit inputs; };
|
specialArgs = {
|
||||||
|
system = darwinSystem;
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
@@ -118,13 +126,15 @@
|
|||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# Homemanager configuration
|
# Homemanager configuration
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
homeConfigurations."mbessette@caesium" = let
|
homeConfigurations."mbessette@caesium" =
|
||||||
|
let
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
system = linuxSystem;
|
system = linuxSystem;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = mkOverlays linuxSystem;
|
overlays = mkOverlays linuxSystem;
|
||||||
};
|
};
|
||||||
in home-manager.lib.homeManagerConfiguration {
|
in
|
||||||
|
home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
system = linuxSystem;
|
system = linuxSystem;
|
||||||
@@ -139,13 +149,15 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations."mbessette@hydrogen" = let
|
homeConfigurations."mbessette@hydrogen" =
|
||||||
|
let
|
||||||
pkgs = import nixpkgsUnstable {
|
pkgs = import nixpkgsUnstable {
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = mkOverlays darwinSystem;
|
overlays = mkOverlays darwinSystem;
|
||||||
};
|
};
|
||||||
in home-manager-darwin.lib.homeManagerConfiguration {
|
in
|
||||||
|
home-manager-darwin.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
@@ -160,13 +172,15 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations."matthew.bessette@cleo-darwin" = let
|
homeConfigurations."matthew.bessette@cleo-darwin" =
|
||||||
|
let
|
||||||
pkgs = import nixpkgsUnstable {
|
pkgs = import nixpkgsUnstable {
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = mkOverlays darwinSystem;
|
overlays = mkOverlays darwinSystem;
|
||||||
};
|
};
|
||||||
in home-manager-darwin.lib.homeManagerConfiguration {
|
in
|
||||||
|
home-manager-darwin.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
system = darwinSystem;
|
system = darwinSystem;
|
||||||
|
|||||||
+53
-12
@@ -1,34 +1,75 @@
|
|||||||
{ config, lib, pkgs, hostname, userConfig, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
hostname,
|
||||||
|
userConfig,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
onePassPath = if pkgs.stdenv.isDarwin
|
onePassPath =
|
||||||
then "${userConfig.homeDirectory}/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
if pkgs.stdenv.isDarwin then
|
||||||
else "${userConfig.homeDirectory}/.1password/agent.sock";
|
"${userConfig.homeDirectory}/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
||||||
ghosttyPkg = if pkgs.stdenv.isDarwin
|
else
|
||||||
then pkgs."ghostty-bin"
|
"${userConfig.homeDirectory}/.1password/agent.sock";
|
||||||
else pkgs.ghostty;
|
ghosttyPkg = if pkgs.stdenv.isDarwin then pkgs."ghostty-bin" else pkgs.ghostty;
|
||||||
rebuildCmd = if pkgs.stdenv.isDarwin
|
rebuildCmd = if pkgs.stdenv.isDarwin then "darwin-rebuild" else "nixos-rebuild";
|
||||||
then "darwin-rebuild"
|
in
|
||||||
else "nixos-rebuild";
|
{
|
||||||
in {
|
|
||||||
home.stateVersion = lib.mkDefault "26.05";
|
home.stateVersion = lib.mkDefault "26.05";
|
||||||
home.username = userConfig.username;
|
home.username = userConfig.username;
|
||||||
home.homeDirectory = userConfig.homeDirectory;
|
home.homeDirectory = userConfig.homeDirectory;
|
||||||
home.sessionVariables.SSH_AUTH_SOCK = onePassPath;
|
home.sessionVariables.SSH_AUTH_SOCK = onePassPath;
|
||||||
home.sessionVariables.CLAUDE_CONFIG_DIR = "${config.xdg.configHome}/claude";
|
home.sessionVariables.CLAUDE_CONFIG_DIR = "${config.xdg.configHome}/claude";
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nixd
|
||||||
|
treefmt
|
||||||
|
nixpkgs-fmt
|
||||||
|
deadnix
|
||||||
|
];
|
||||||
|
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
xdg.configHome = "${config.home.homeDirectory}/.config";
|
xdg.configHome = "${config.home.homeDirectory}/.config";
|
||||||
xdg.cacheHome = "${config.home.homeDirectory}/.cache";
|
xdg.cacheHome = "${config.home.homeDirectory}/.cache";
|
||||||
xdg.dataHome = "${config.home.homeDirectory}/.local/share";
|
xdg.dataHome = "${config.home.homeDirectory}/.local/share";
|
||||||
xdg.stateHome = "${config.home.homeDirectory}/.config/state";
|
xdg.stateHome = "${config.home.homeDirectory}/.config/state";
|
||||||
xdg.configFile."ssh.conf".source = ./config.ssh.conf;
|
xdg.configFile."ssh.conf".source = ./config.ssh.conf;
|
||||||
xdg.configFile."claude/settings.json".source = ./config.claude.json;
|
|
||||||
xdg.configFile."1Password/ssh/agent.toml".text = ''
|
xdg.configFile."1Password/ssh/agent.toml".text = ''
|
||||||
[[ssh-keys]]
|
[[ssh-keys]]
|
||||||
item = "${userConfig._1PassKeyName}"
|
item = "${userConfig._1PassKeyName}"
|
||||||
vault = "${userConfig._1PassKeyVault}"
|
vault = "${userConfig._1PassKeyVault}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."claude/settings.json".source = pkgs.writeText "claude-settings.json" (
|
||||||
|
builtins.toJSON {
|
||||||
|
"$schema" = "https://json.schemastore.org/claude-code-settings.json";
|
||||||
|
theme = "dark";
|
||||||
|
agent = "plan";
|
||||||
|
denyCommands = [ "code --install-extension*" ];
|
||||||
|
additionalDirectories = [ "/tmp" ];
|
||||||
|
autoMemoryEnabled = false;
|
||||||
|
effortLevel = "medium";
|
||||||
|
fastModePerSessionOptIn = true;
|
||||||
|
feedbackSurveyRate = 0;
|
||||||
|
model = "opusplan";
|
||||||
|
showClearContextOnPlanAccept = false;
|
||||||
|
statusLine = {
|
||||||
|
type = "command";
|
||||||
|
command = "claude-statusline prompt";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
xdg.configFile."claude-statusline/config.toml".text = ''
|
||||||
|
format = "$directory | $git_branch | $model | $cost | $context | $usage"
|
||||||
|
preset = "default"
|
||||||
|
|
||||||
|
[usage]
|
||||||
|
disabled = false
|
||||||
|
format = 'S: {{printf "%.0f" .BlockPct}}% ({{.BlockResets}}) | W: {{printf "%.0f" .WeeklyPct}}%'
|
||||||
|
'';
|
||||||
|
|
||||||
programs.tmux.enable = true;
|
programs.tmux.enable = true;
|
||||||
programs.fastfetch.enable = true;
|
programs.fastfetch.enable = true;
|
||||||
|
|
||||||
|
|||||||
+3
-12
@@ -1,17 +1,8 @@
|
|||||||
{ config, inputs, pkgs, ... }: {
|
{ config, inputs, pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
# Managed VS Code Extensions (The "Clean" Way)
|
./programs.vscode.nix
|
||||||
programs.vscode = {
|
./programs.thunderbird.nix
|
||||||
enable = true;
|
|
||||||
profiles.default = {
|
|
||||||
userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json);
|
|
||||||
extensions = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
|
||||||
bbenoist.nix
|
|
||||||
vscode-icons-team.vscode-icons
|
|
||||||
waderyan.gitblame
|
|
||||||
];
|
];
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
# Points to the Homebrew location mentioned in your caveat
|
# Points to the Homebrew location mentioned in your caveat
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
tbPkg = if pkgs.stdenv.isDarwin then pkgs.thunderbird-bin else pkgs.thunderbird;
|
||||||
|
|
||||||
|
mkGmailAccount = address: realName: {
|
||||||
|
inherit address realName;
|
||||||
|
flavor = "gmail.com";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
mkCalendar = collection: {
|
||||||
|
remote = {
|
||||||
|
type = "caldav";
|
||||||
|
url = "https://cloud.thiccdata.io/remote.php/dav/calendars/mbessette/${collection}/";
|
||||||
|
userName = "mbessette";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkAddressBook = book: {
|
||||||
|
remote = {
|
||||||
|
type = "carddav";
|
||||||
|
url = "https://cloud.thiccdata.io/remote.php/dav/addressbooks/users/mbessette/${book}/";
|
||||||
|
userName = "mbessette";
|
||||||
|
};
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
package = tbPkg;
|
||||||
|
|
||||||
|
profiles.default = {
|
||||||
|
isDefault = true;
|
||||||
|
accountsOrder = [ "personal" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
accounts.calendar.basePath = ".calendars";
|
||||||
|
accounts.contact.basePath = ".contacts";
|
||||||
|
|
||||||
|
accounts.email.accounts = {
|
||||||
|
personal = mkGmailAccount "blade30912@gmail.com" "Matthew Bessette" // {
|
||||||
|
primary = true;
|
||||||
|
};
|
||||||
|
bessette = mkGmailAccount "bessette.matthew94@gmail.com" "Matthew Bessette";
|
||||||
|
house = mkGmailAccount "mbessette.house@gmail.com" "Matthew Bessette";
|
||||||
|
joseph = mkGmailAccount "joseph.lamothe55@gmail.com" "Joseph Lamothe";
|
||||||
|
};
|
||||||
|
|
||||||
|
accounts.calendar.accounts = {
|
||||||
|
family = mkCalendar "test" // {
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
color = "#FED3D9";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
matt = mkCalendar "matt-calendar" // {
|
||||||
|
primary = true;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
color = "#FDF0D7";
|
||||||
|
settings = id: {
|
||||||
|
"calendar.registry.${id}.imip.identity.key" =
|
||||||
|
"id_${builtins.hashString "sha256" "personal"}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
joseph-cal = mkCalendar "joseph-calendar" // {
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
color = "#CEF4F8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
accounts.contact.accounts = {
|
||||||
|
contacts = mkAddressBook "contacts";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
|
||||||
|
xdg.configFile."oxlint/oxlintrc.json".source =
|
||||||
|
config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.oxlintrc.json";
|
||||||
|
xdg.configFile."biome/biome.json".source =
|
||||||
|
config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.biome.json";
|
||||||
|
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.vscode;
|
||||||
|
mutableExtensionsDir = false;
|
||||||
|
profiles.default = {
|
||||||
|
userSettings = builtins.fromJSON (builtins.readFile ./config.vscode.settings.json);
|
||||||
|
extensions =
|
||||||
|
(with pkgs.vscode-marketplace-release; [
|
||||||
|
bbenoist.nix
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
graphql.vscode-graphql-syntax
|
||||||
|
graphql.vscode-graphql
|
||||||
|
ms-python.debugpy
|
||||||
|
ms-python.python
|
||||||
|
ms-python.vscode-pylance
|
||||||
|
oxc.oxc-vscode
|
||||||
|
vscode-icons-team.vscode-icons
|
||||||
|
typescriptteam.native-preview
|
||||||
|
lucasprag.dont-git-lost
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
])
|
||||||
|
++ (with pkgs.vscode-marketplace; [
|
||||||
|
biomejs.biome
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[formatter.deadnix]
|
||||||
|
command = "deadnix"
|
||||||
|
options = ["--edit", "--quiet"]
|
||||||
|
includes = ["*.nix"]
|
||||||
|
|
||||||
|
[formatter.nix]
|
||||||
|
command = "nixpkgs-fmt"
|
||||||
|
includes = ["*.nix"]
|
||||||
Reference in New Issue
Block a user