Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
9c9935b550
|
|||
|
5da4d36d25
|
|||
|
d83b03bbd8
|
|||
|
c371552dfd
|
|||
|
8b5111e9a1
|
|||
|
cca5c48725
|
|||
|
b4e4036c41
|
|||
|
3aab755e37
|
|||
|
6e361b197c
|
|||
|
6fd0b18746
|
|||
|
0c15063a58
|
|||
|
9056237e8a
|
|||
|
64b450bbe7
|
|||
|
8eee1ab82f
|
+36
-7
@@ -156,6 +156,11 @@
|
||||
# Allow /etc/hosts to be modified without system rebuild
|
||||
environment.etc.hosts.mode = "0644";
|
||||
|
||||
# KiCad footprint libraries
|
||||
environment.sessionVariables = {
|
||||
KICAD9_FOOTPRINT_DIR = "${pkgs.kicad-libraries.footprints}/share/kicad/footprints";
|
||||
};
|
||||
|
||||
# Enable flakes and extras
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
@@ -176,26 +181,49 @@
|
||||
|
||||
# WireGuard VPN
|
||||
networking.wg-quick.interfaces.wg0 = {
|
||||
address = [ "10.0.1.66/28" ];
|
||||
address = [ "10.0.1.67/32" ];
|
||||
dns = [ "10.0.1.65" ];
|
||||
privateKeyFile = "/etc/wireguard/private.key";
|
||||
|
||||
peers = [{
|
||||
publicKey = "VEpzr/CeGdS6Wsy0NDDfmlB/bCYxS55A155HWGCIIzc=";
|
||||
endpoint = "vpn.leeworks.dev:51820";
|
||||
allowedIPs = [ "10.0.1.64/28" ];
|
||||
# Route all traffic through VPN EXCEPT the local 10.0.0.0/24 network
|
||||
allowedIPs = [
|
||||
"0.0.0.0/5"
|
||||
"8.0.0.0/7"
|
||||
"10.0.1.0/24"
|
||||
"10.0.2.0/23"
|
||||
"10.0.4.0/22"
|
||||
"10.0.8.0/21"
|
||||
"10.0.16.0/20"
|
||||
"10.0.32.0/19"
|
||||
"10.0.64.0/18"
|
||||
"10.0.128.0/17"
|
||||
"10.1.0.0/16"
|
||||
"10.2.0.0/15"
|
||||
"10.4.0.0/14"
|
||||
"10.8.0.0/13"
|
||||
"10.16.0.0/12"
|
||||
"10.32.0.0/11"
|
||||
"10.64.0.0/10"
|
||||
"10.128.0.0/9"
|
||||
"11.0.0.0/8"
|
||||
"12.0.0.0/6"
|
||||
"16.0.0.0/4"
|
||||
"32.0.0.0/3"
|
||||
"64.0.0.0/2"
|
||||
"128.0.0.0/1"
|
||||
];
|
||||
persistentKeepalive = 25;
|
||||
}];
|
||||
};
|
||||
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
useRoutingFeatures = "client"; # or "both" for subnet routing
|
||||
};
|
||||
|
||||
# Open firewall for Tailscale
|
||||
networking.firewall = {
|
||||
checkReversePath = "loose";
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
trustedInterfaces = [ "tailscale0" "wg0" ];
|
||||
allowedUDPPorts = [ config.services.tailscale.port ];
|
||||
};
|
||||
|
||||
@@ -229,6 +257,7 @@
|
||||
# Enable necessary services
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
};
|
||||
|
||||
services.pcscd.enable = true;
|
||||
|
||||
Generated
+38
-4
@@ -1,5 +1,21 @@
|
||||
{
|
||||
"nodes": {
|
||||
"caveman": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1776507098,
|
||||
"narHash": "sha256-M+NoWXxrhtbkbe/lmq7P0/KpmqOZzJjhgeUVjY+7N2k=",
|
||||
"owner": "JuliusBrussee",
|
||||
"repo": "caveman",
|
||||
"rev": "84cc3c14fa1e10182adaced856e003406ccd250d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "JuliusBrussee",
|
||||
"repo": "caveman",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
@@ -76,11 +92,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1775126147,
|
||||
"narHash": "sha256-J0dZU4atgcfo4QvM9D92uQ0Oe1eLTxBVXjJzdEMQpD0=",
|
||||
"lastModified": 1776329215,
|
||||
"narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8d8c1fa5b412c223ffa47410867813290cdedfef",
|
||||
"rev": "b86751bc4085f48661017fa226dee99fab6c651b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -106,12 +122,30 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"oh-my-claudecode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1776693787,
|
||||
"narHash": "sha256-C/m8Vlt6MXy8nlgqtoey9A5JnVTHCPkGUjar9x5Y2uw=",
|
||||
"owner": "Yeachan-Heo",
|
||||
"repo": "oh-my-claudecode",
|
||||
"rev": "084fc47266824b35f4c8cbe886c0990ae716c184",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Yeachan-Heo",
|
||||
"repo": "oh-my-claudecode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"caveman": "caveman",
|
||||
"home-manager": "home-manager",
|
||||
"kickstart-nvim": "kickstart-nvim",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"oh-my-claudecode": "oh-my-claudecode"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
|
||||
@@ -9,9 +9,17 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
kickstart-nvim.url = "github:0xWheatyz/kickstart.nvim";
|
||||
caveman = {
|
||||
url = "github:JuliusBrussee/caveman";
|
||||
flake = false;
|
||||
};
|
||||
oh-my-claudecode = {
|
||||
url = "github:Yeachan-Heo/oh-my-claudecode";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, kickstart-nvim, ... }:
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, kickstart-nvim, caveman, oh-my-claudecode, ... }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs-unstable = import nixpkgs-unstable {
|
||||
@@ -31,7 +39,7 @@
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.l-wyatt = import ./home.nix;
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit kickstart-nvim;
|
||||
inherit kickstart-nvim caveman oh-my-claudecode;
|
||||
};
|
||||
home-manager.sharedModules = [
|
||||
kickstart-nvim.homeManagerModules.default
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, lib, caveman, oh-my-claudecode, ... }:
|
||||
|
||||
{
|
||||
home.username = "l-wyatt";
|
||||
@@ -28,6 +28,7 @@
|
||||
gnomeExtensions.just-perfection
|
||||
gnomeExtensions.arc-menu
|
||||
freecad
|
||||
gtk3 # Provides org.gtk.Settings.FileChooser schema for FreeCAD
|
||||
];
|
||||
|
||||
# --------------------------
|
||||
@@ -206,6 +207,20 @@
|
||||
# Use kickstart.nvim configuration from flake
|
||||
programs.neovim-kickstart.enable = true;
|
||||
|
||||
# Claude Code skills (managed declaratively via flake inputs)
|
||||
home.file.".claude/skills/caveman" = {
|
||||
source = "${caveman}/skills/caveman";
|
||||
recursive = true;
|
||||
};
|
||||
home.file.".claude/skills/caveman-help" = {
|
||||
source = "${caveman}/skills/caveman-help";
|
||||
recursive = true;
|
||||
};
|
||||
home.file.".claude/skills/oh-my-claudecode" = {
|
||||
source = "${oh-my-claudecode}/skills";
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
# Claude Code configuration
|
||||
home.file.".claude/CLAUDE.md" = {
|
||||
text = ''
|
||||
|
||||
Reference in New Issue
Block a user