12 Commits
Author SHA1 Message Date
Noah Masur 671a17af76 fix discord and 1pass dock link 2026-07-25 09:29:58 -04:00
github-actions[bot]andgithub-actions[bot] 71709776f9 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/a4cf1d10853b0d2be19b9eca35d749e201d70b55' (2026-07-15)
  → 'github:lnl7/nix-darwin/57a3171f94705599a2499248ca5758d5eb47c0e0' (2026-07-19)
• Updated input 'home-manager':
    'github:nix-community/home-manager/460108009ca1ff69ca2ff19079ca2c838d6e3080' (2026-07-18)
  → 'github:nix-community/home-manager/079a3b5d1aa6a719920a51316253b7d6dd22738d' (2026-07-24)
• Updated input 'nix-caddy-withplugins':
    'github:MichailiK/nix-caddy-withplugins/79db67d97207b6e32eaba69d5c3e6d7e63144154' (2026-06-14)
  → 'github:MichailiK/nix-caddy-withplugins/70307cfc568e5434cf42067d797b27c38ea69944' (2026-07-24)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/753cc8a3a87467296ddd1fa93f0cc3e81120ee46' (2026-07-15)
  → 'github:nixos/nixpkgs/e2587caef70cea85dd97d7daab492899902dbf5d' (2026-07-23)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/293d6abedf0478e681a4dfcfcb35b30fc796a32f' (2026-07-17)
  → 'github:nixos/nixpkgs/b3fe9581c9061c749abef42b6d4ee7b7c05c33fa' (2026-07-22)
• Updated input 'nur':
    'github:nix-community/nur/697f13fd230047493989b03576419792273c3a9e' (2026-07-18)
  → 'github:nix-community/nur/1166a294990afd245fd72b8d2896075222408399' (2026-07-25)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/3c38e1e1ba9c8d7030f7b5a801398ea7d8a6fdc0' (2026-07-18)
  → 'github:oxalica/rust-overlay/a163bd01a6e11ac58d4f8d11669da550b5afbbc6' (2026-07-25)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad' (2026-07-14)
  → 'github:nix-community/NixOS-WSL/eaeb18da90024448a60eb1ec7132eafa4003404e' (2026-07-21)
2026-07-25 06:05:57 +00:00
Noah Masur 829af86dd8 switch to nix caddy plugin module
in order to prevent frequent need to re-hash
2026-07-21 15:08:29 +00:00
Noah Masur e7fd5eb770 update caddy hash 2026-07-20 23:12:23 +00:00
Noah Masur f0b400d134 set base url for mealie 2026-07-20 22:32:03 +00:00
Noah Masur 573c0acd33 disable flaky paho-mqtt test suite breaking flame rebuild 2026-07-20 18:28:57 -04:00
Noah Masur eec777c0c1 fix mathesar has a flaky test 2026-07-20 17:50:56 -04:00
Noah Masur 638b112db9 fix Discord on macOS: use Homebrew cask instead of broken nixpkgs bundle 2026-07-20 17:50:54 -04:00
Noah Masur 27917ffede remove home-manager module from nix-darwin
this fixes the starship errors when rebuilding nix-darwin
2026-07-20 14:33:48 -04:00
Noah Masur 73b62e0907 fix broken rebuilds 2026-07-20 14:25:58 -04:00
Noah Masur b25cfe6877 add llm-development profile 2026-07-20 14:25:58 -04:00
Noah Masur d162df2515 use noti for gh run watch in zellij pane 2026-07-20 09:00:59 -04:00
23 changed files with 212 additions and 76 deletions
+10
View File
@@ -0,0 +1,10 @@
# Changelog
## 2026-07-20
- Added `overlays/paho-mqtt.nix` to disable paho-mqtt's flaky, socket-based
test suite. Its `checkPhase` hangs in the Nix sandbox and times out with a
`KeyboardInterrupt` after ~150s, which was breaking the `flame` rebuild
(paho-mqtt is pulled in transitively, e.g. via mealie). The override is
applied through `pythonPackagesExtensions` so it covers every Python
package set.
Generated
+78 -25
View File
@@ -28,11 +28,11 @@
]
},
"locked": {
"lastModified": 1784123936,
"narHash": "sha256-IOWwQMJhUxcojm0MRvuKs1fKLH727u4+hHeEOPhdUyA=",
"lastModified": 1784500460,
"narHash": "sha256-UvORnAxTRHax7RG74W8Z2t4GvIkX6AjJ5kk0QlwZomo=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "a4cf1d10853b0d2be19b9eca35d749e201d70b55",
"rev": "57a3171f94705599a2499248ca5758d5eb47c0e0",
"type": "github"
},
"original": {
@@ -80,6 +80,22 @@
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1767039857,
@@ -179,11 +195,11 @@
]
},
"locked": {
"lastModified": 1784351324,
"narHash": "sha256-By+kuRJZRqs2TuXgtR8vJ8cTKWXw33YG/Yollu5cO1U=",
"lastModified": 1784913159,
"narHash": "sha256-JWq0BfjO4ktpH5USfQNQzdvHpIDT8fSKD5K7LvdMRFs=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "460108009ca1ff69ca2ff19079ca2c838d6e3080",
"rev": "079a3b5d1aa6a719920a51316253b7d6dd22738d",
"type": "github"
},
"original": {
@@ -216,6 +232,26 @@
"type": "github"
}
},
"nix-caddy-withplugins": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1784936738,
"narHash": "sha256-X4w9BrFkisfzla3m1WwDJUicUbI7JRdhzq5aS7rrB0k=",
"owner": "MichailiK",
"repo": "nix-caddy-withplugins",
"rev": "70307cfc568e5434cf42067d797b27c38ea69944",
"type": "github"
},
"original": {
"owner": "MichailiK",
"ref": "nixos-unstable",
"repo": "nix-caddy-withplugins",
"type": "github"
}
},
"nix2vim": {
"inputs": {
"flake-utils": "flake-utils_2",
@@ -306,11 +342,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1784280462,
"narHash": "sha256-DtoqIqM7VkR6NxAkcLpMwmi02USwWb3JdmNGLyhthc0=",
"lastModified": 1784707089,
"narHash": "sha256-2V/6imsUgB7mPZlHY54oeVBRDoZbPKnvzwkAHUSSufk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "293d6abedf0478e681a4dfcfcb35b30fc796a32f",
"rev": "b3fe9581c9061c749abef42b6d4ee7b7c05c33fa",
"type": "github"
},
"original": {
@@ -370,11 +406,27 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1784120854,
"narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
"lastModified": 1781074563,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1784796856,
"narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
"type": "github"
},
"original": {
@@ -384,7 +436,7 @@
"type": "github"
}
},
"nixpkgs_6": {
"nixpkgs_7": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
@@ -408,11 +460,11 @@
]
},
"locked": {
"lastModified": 1784353280,
"narHash": "sha256-MV8bFWGuoJCELexhGWWhv0GiWnDY9hpgGXgxB81mr9g=",
"lastModified": 1784959021,
"narHash": "sha256-Atc5ydxAmAAD5o8e6F8VVxVCOQb82bqi5TRNRUSBvZU=",
"owner": "nix-community",
"repo": "nur",
"rev": "697f13fd230047493989b03576419792273c3a9e",
"rev": "1166a294990afd245fd72b8d2896075222408399",
"type": "github"
},
"original": {
@@ -427,9 +479,10 @@
"disko": "disko",
"home-manager": "home-manager",
"mac-app-util": "mac-app-util",
"nix-caddy-withplugins": "nix-caddy-withplugins",
"nix2vim": "nix2vim",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs_5",
"nixpkgs": "nixpkgs_6",
"nixpkgs-stable": "nixpkgs-stable",
"nur": "nur",
"rust-overlay": "rust-overlay",
@@ -440,14 +493,14 @@
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_6"
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1784350408,
"narHash": "sha256-OstzLWL5t7Xe14xEC6GIMJCp0PrYNTSA0El7GG2av88=",
"lastModified": 1784956772,
"narHash": "sha256-5polVWDhgATIQj+RUV2ZlOd5nE6cGJo+C4tOEs5vp6U=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "3c38e1e1ba9c8d7030f7b5a801398ea7d8a6fdc0",
"rev": "a163bd01a6e11ac58d4f8d11669da550b5afbbc6",
"type": "github"
},
"original": {
@@ -554,17 +607,17 @@
},
"wsl": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-compat": "flake-compat_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1784058842,
"narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
"lastModified": 1784642409,
"narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
"rev": "eaeb18da90024448a60eb1ec7132eafa4003404e",
"type": "github"
},
"original": {
+6
View File
@@ -40,6 +40,12 @@
# inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list for their inputs
};
# Caddy with decoupled plugin hashes
nix-caddy-withplugins = {
url = "github:MichailiK/nix-caddy-withplugins/nixos-unstable";
# Important: Do not follow nixpkgs here, per the README
};
# Manage disk format and partitioning
disko = {
url = "github:nix-community/disko";
@@ -27,6 +27,7 @@ rec {
common.enable = true;
darwin-base.enable = true;
darwin-gaming.enable = true;
llm-development.enable = true;
power-user.enable = true;
work.enable = true;
experimental.enable = true;
+1
View File
@@ -28,6 +28,7 @@ rec {
nmasur.profiles = {
common.enable = true;
linux-base.enable = true;
llm-development.enable = true;
power-user.enable = true;
};
nmasur.presets.programs.helix.enable = true;
+1
View File
@@ -26,6 +26,7 @@ rec {
nmasur.profiles = {
common.enable = true;
linux-base.enable = true;
llm-development.enable = true;
power-user.enable = true;
};
home.stateVersion = "23.05";
+1
View File
@@ -30,6 +30,7 @@ rec {
linux-base.enable = true;
linux-gui.enable = true;
linux-gaming.enable = true;
llm-development.enable = true;
power-user.enable = true;
developer.enable = true;
experimental.enable = true;
+9 -11
View File
@@ -179,22 +179,20 @@ lib
inputs.darwin.lib.darwinSystem {
inherit system specialArgs;
modules = [
inputs.home-manager.darwinModules.home-manager
inputs.mac-app-util.darwinModules.default
{
imports = (nixFiles ../platforms/nix-darwin);
nixpkgs.pkgs = pkgsBySystem.${system};
}
module
{
home-manager = {
extraSpecialArgs = {
inherit colorscheme;
}
// specialArgs;
}
// homeModule.home-manager;
}
# Home Manager is intentionally NOT activated here. It is managed
# standalone via `nh home switch` (see homeConfigurations, extracted
# from the host module's `home-manager.users`). Strip that attr so
# darwin-rebuild doesn't also activate a second, divergent HM
# generation with different store paths (useUserPackages puts packages
# in /etc/profiles/per-user vs. ~/.nix-profile standalone) -- that
# mismatch broke the prompt after every darwin-rebuild until the next
# `nh home switch`.
(builtins.removeAttrs module [ "home-manager" ])
];
};
+1
View File
@@ -0,0 +1 @@
inputs: inputs.nix-caddy-withplugins.overlays.default
+20
View File
@@ -0,0 +1,20 @@
# Disable paho-mqtt's flaky test suite.
#
# paho-mqtt's checkPhase runs socket-based integration tests that hang in
# the Nix sandbox (they eventually time out with a KeyboardInterrupt after
# ~150s, reporting errors and failing the build). This breaks the flame
# rebuild, where paho-mqtt is pulled in transitively (e.g. via mealie).
#
# Applied through pythonPackagesExtensions so it covers every Python
# package set (python3Packages, python314Packages, ...).
_inputs: _final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(_pyfinal: pyprev: {
paho-mqtt = pyprev.paho-mqtt.overridePythonAttrs (_old: {
doCheck = false;
doInstallCheck = false;
});
})
];
}
+4 -15
View File
@@ -2,21 +2,10 @@
{
pkgs,
fetchFromGitHub,
...
}:
# Maintain a static version so that the plugin hash doesn't keep breaking
(pkgs.caddy.overrideAttrs rec {
version = "2.10.2";
src = fetchFromGitHub {
owner = "caddyserver";
repo = "caddy";
tag = "v${version}";
hash = "sha256-KvikafRYPFZ0xCXqDdji1rxlkThEDEOHycK8GP5e8vk=";
};
}).withPlugins
{
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
hash = "sha256-xz43pXTsnYmXZDAAUT+vTapoq3O/8br7igGwqZbjFdk=";
}
pkgs.caddy.withPlugins {
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
hash = "sha256-HuVBmiT3kD6RrDejQ6SnjCN8f7pFdZlGtZFbEf47bks=";
}
+7
View File
@@ -89,6 +89,13 @@ let
drf-access-policy
# psycopg-binary
;
# clevercsv's test_encoding_chardet is nondeterministic (chardet
# returns None instead of ISO-8859-1/KOI8-R on some platforms),
# breaking the build. Skip its test suite.
clevercsv = pyprev.clevercsv.overridePythonAttrs (_old: {
doCheck = false;
doInstallCheck = false;
});
};
};
@@ -18,16 +18,16 @@ in
ca = "cargo";
};
home.packages = with pkgs; [
gcc
rustc
cargo
cargo-watch
clippy
rustfmt
pkg-config
openssl
rust-analyzer
home.packages = [
pkgs.gcc
pkgs.rustc
pkgs.cargo
pkgs.stable.cargo-watch
pkgs.clippy
pkgs.rustfmt
pkgs.pkg-config
pkgs.openssl
pkgs.rust-analyzer
];
};
}
@@ -27,6 +27,7 @@ in
cask "notunes" # Don't launch Apple Music with the play button
cask "topnotch" # Darkens the menu bar to complete black
cask "ghostty" # Terminal application (not buildable on Nix on macOS)
cask "discord" # nixpkgs bundle breaks its notarization seal on macOS 26+
# Mac App Store apps (requires 'mas' CLI, optional)
# mas "Tailscale", id: 1475387142
@@ -15,10 +15,21 @@ in
config = lib.mkIf (cfg.enable && (pkgs.stdenv.isDarwin || config.services.dunst.enable)) {
home.packages = [ pkgs.noti ];
programs.fish.shellAbbrs = {
# Add noti for ghpr in Darwin
ghpr = lib.mkForce "gh pr create && sleep 3 && noti gh run watch";
grw = lib.mkForce "noti gh run watch";
programs.fish = {
shellAbbrs = {
# Add noti for ghpr in Darwin
ghpr = lib.mkForce "gh pr create && sleep 3 && noti gh run watch";
grw = lib.mkForce "noti gh run watch";
};
functions = {
gh-run = {
body =
lib.mkForce # fish
''
${lib.getExe pkgs.zellij} action new-pane --start-suspended -- noti gh run watch
'';
};
};
};
};
}
@@ -109,6 +109,10 @@ in
settings = {
default_mode = "locked";
# Spawn fish directly instead of trusting $SHELL, which inherits the
# macOS login shell. On darwin that login shell is no longer managed by
# nix-darwin, so $SHELL can point at a stale /run/current-system path.
default_shell = lib.getExe pkgs.fish;
# default_layout = "compact-top";
# Remove border
pane_frames = false;
@@ -48,7 +48,7 @@ in
tilesize = 44;
persistent-apps = map mkDockApp [
"${pkgs._1password-gui}/Applications/1Password.app"
"/Applications/1Password.app"
"${pkgs.slack}/Applications/Slack.app"
"/System/Applications/Calendar.app"
"${pkgs.firefox-unwrapped}/Applications/Firefox.app"
@@ -56,7 +56,10 @@ in
"/System/Applications/Mail.app"
"/Applications/zoom.us.app"
"${config.programs.ghostty.package}/Applications/Ghostty.app"
"${pkgs.discord}/Applications/Discord.app"
# Discord comes from Homebrew on macOS: the nixpkgs bundle is
# modified in place, breaking its notarization seal, so macOS 26+
# refuses to launch it ("damaged"). See presets/programs/homebrew.nix.
"/Applications/Discord.app"
"${pkgs.obsidian}/Applications/Obsidian.app"
"${pkgs.thunderbird}/Applications/Thunderbird.app"
];
@@ -33,7 +33,7 @@ in
xdg.configFile."hammerspoon/Spoons/Launcher.spoon/init.lua".source =
pkgs.replaceVars ./Spoons/Launcher.spoon/init.lua
{
discord = "${pkgs.discord}/Applications/Discord.app";
discord = "Discord.app";
firefox = "${pkgs.firefox-unwrapped}/Applications/Firefox.app";
ghostty = "${pkgs.ghostty-bin}/Applications/Ghostty.app";
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
@@ -0,0 +1,26 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.nmasur.profiles.llm-development;
in
{
options.nmasur.profiles.llm-development.enable = lib.mkEnableOption "LLM coding tools";
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.pi-coding-agent # AI LLM Agent
];
};
}
@@ -12,12 +12,9 @@ in
options.nmasur.presets.programs._1password.enable = lib.mkEnableOption "1Password password manager";
config = lib.mkIf cfg.enable {
allowUnfreePackages = [
"1password"
"_1password-gui"
"1password-cli"
];
# Unfree packages are already permitted via the shared nixpkgs instance
# created in lib/default.nix (config.allowUnfree = true). Setting
# nixpkgs.config here would conflict with nixpkgs.pkgs being set externally.
programs._1password.enable = true;
programs._1password-gui = {
enable = true;
@@ -50,7 +50,10 @@ in
"/System/Applications/Mail.app"
"/Applications/zoom.us.app"
"/Applications/Ghostty.app"
"${pkgs.discord}/Applications/Discord.app"
# Discord comes from Homebrew on macOS: the nixpkgs bundle is modified
# in place, breaking its notarization seal, so macOS 26+ refuses to
# launch it ("damaged").
"/Applications/Discord.app"
"${pkgs.obsidian}/Applications/Obsidian.app"
"${pkgs.thunderbird}/Applications/Thunderbird.app"
];
@@ -19,7 +19,7 @@ in
nmasur.presets = {
programs = {
_1password.enable = lib.mkDefault true;
# fish.enable = lib.mkDefault true;
fish.enable = lib.mkDefault true;
# homebrew.enable = lib.mkDefault true;
};
services = {
@@ -20,6 +20,9 @@ in
};
};
# Fix BASE_URL for downloading backups
systemd.services.mealie.environment.BASE_URL = lib.mkForce "https://${hostnames.recipes}";
nmasur.presets.services.caddy.routes = [
{
match = [ { host = [ hostnames.recipes ]; } ];