forked from jan-leila/nix-config
Compare commits
12 commits
Author | SHA1 | Date | |
---|---|---|---|
0f8faadd80 | |||
cf330b1cbb | |||
ca9f54d795 | |||
2745af9443 | |||
487dc21550 | |||
58fec3f132 | |||
09d2588406 | |||
68b791f7c1 | |||
1831fea96a | |||
2aad75a334 | |||
c31eb38229 | |||
fab03391fc |
28 changed files with 682 additions and 87 deletions
|
@ -17,7 +17,6 @@ in {
|
|||
# See https://search.nixos.org/packages for all options
|
||||
home.packages = lib.lists.optionals userConfig.isDesktopUser (
|
||||
with pkgs; [
|
||||
ungoogled-chromium
|
||||
gnomeExtensions.dash-to-panel
|
||||
]
|
||||
);
|
||||
|
@ -61,6 +60,7 @@ in {
|
|||
steam.enable = true;
|
||||
piper.enable = hardware.piperMouse.enable;
|
||||
krita.enable = true;
|
||||
ungoogled-chromium.enable = true;
|
||||
})
|
||||
];
|
||||
};
|
||||
|
|
|
@ -37,6 +37,12 @@ in {
|
|||
dbeaver-bin.enable = true;
|
||||
bruno.enable = true;
|
||||
piper.enable = hardware.piperMouse.enable;
|
||||
proxmark3.enable = true;
|
||||
openrgb.enable = hardware.openRGB.enable;
|
||||
via.enable = hardware.viaKeyboard.enable;
|
||||
claude-code.enable = osConfig.host.ai.enable;
|
||||
davinci-resolve.enable = hardware.graphicsAcceleration.enable;
|
||||
mfoc.enable = true;
|
||||
})
|
||||
(lib.mkIf (hardware.directAccess.enable && config.user.isDesktopUser) {
|
||||
anki.enable = true;
|
||||
|
@ -50,6 +56,19 @@ in {
|
|||
firefox.enable = true;
|
||||
steam.enable = true;
|
||||
krita.enable = true;
|
||||
ungoogled-chromium.enable = true;
|
||||
libreoffice.enable = true;
|
||||
inkscape.enable = true;
|
||||
gimp.enable = true;
|
||||
freecad.enable = true;
|
||||
onionshare.enable = true;
|
||||
pdfarranger.enable = true;
|
||||
picard.enable = true;
|
||||
qflipper.enable = true;
|
||||
openvpn.enable = true;
|
||||
noisetorch.enable = true;
|
||||
tor-browser.enable = true;
|
||||
gdx-liftoff.enable = true;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
@ -66,53 +85,6 @@ in {
|
|||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
|
||||
home.packages = (
|
||||
(with pkgs; [
|
||||
proxmark3
|
||||
])
|
||||
++ (
|
||||
lib.lists.optionals hardware.directAccess.enable (with pkgs; [
|
||||
#foss platforms
|
||||
ungoogled-chromium
|
||||
libreoffice
|
||||
inkscape
|
||||
gimp
|
||||
freecad
|
||||
# cura
|
||||
# kicad-small
|
||||
onionshare
|
||||
# rhythmbox
|
||||
|
||||
# wireshark
|
||||
# rpi-imager
|
||||
# fritzing
|
||||
mfoc
|
||||
tor-browser
|
||||
pdfarranger
|
||||
picard
|
||||
|
||||
gdx-liftoff
|
||||
|
||||
# proprietary platforms
|
||||
(lib.mkIf hardware.graphicsAcceleration.enable davinci-resolve)
|
||||
|
||||
# development tools
|
||||
# androidStudioPackages.canary
|
||||
qFlipper
|
||||
|
||||
# system tools
|
||||
openvpn
|
||||
noisetorch
|
||||
|
||||
# hardware management tools
|
||||
(lib.mkIf hardware.openRGB.enable openrgb)
|
||||
(lib.mkIf hardware.viaKeyboard.enable via)
|
||||
|
||||
(lib.mkIf osConfig.host.ai.enable claude-code)
|
||||
])
|
||||
)
|
||||
);
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
|
@ -72,12 +72,34 @@ in {
|
|||
enable = true;
|
||||
mcp = {
|
||||
nixos.enable = true;
|
||||
eslint.enable = true;
|
||||
eslint = {
|
||||
enable = true;
|
||||
autoApprove = {
|
||||
lint-files = true;
|
||||
};
|
||||
};
|
||||
vitest = {
|
||||
enable = true;
|
||||
autoApprove = {
|
||||
list_tests = true;
|
||||
run_tests = true;
|
||||
analyze_coverage = true;
|
||||
};
|
||||
};
|
||||
sleep = {
|
||||
enable = true;
|
||||
timeout = 18000; # 5 hours to match claude codes timeout
|
||||
autoApprove = {
|
||||
sleep = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# misc extensions
|
||||
evenBetterToml.enable = true;
|
||||
direnv.enable = config.programs.direnv.enable;
|
||||
conventionalCommits.enable = true;
|
||||
};
|
||||
|
||||
extensions = let
|
||||
|
|
42
flake.lock
generated
42
flake.lock
generated
|
@ -25,11 +25,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756733629,
|
||||
"narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=",
|
||||
"lastModified": 1757255839,
|
||||
"narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1",
|
||||
"rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -46,11 +46,11 @@
|
|||
},
|
||||
"locked": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"lastModified": 1756699417,
|
||||
"narHash": "sha256-rpRy5ae5ijEGaK+Cr66NqCQJ6ZeUE5Zi8gUWgKhesto=",
|
||||
"lastModified": 1757304222,
|
||||
"narHash": "sha256-s070stByAXxeCLgftTXxFxZ2ynJhghne4Y6cTuqGAaw=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "007b803d1eff595d25e7886e83054dbd038bf029",
|
||||
"rev": "fa312c0175ffb82bc67da095439b9cb683ac52bd",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
|
@ -118,11 +118,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756734952,
|
||||
"narHash": "sha256-H6jmduj4QIncLPAPODPSG/8ry9lpr1kRq6fYytU52qU=",
|
||||
"lastModified": 1757256385,
|
||||
"narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "29ab63bbb3d9eee4a491f7ce701b189becd34068",
|
||||
"rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -175,11 +175,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755825449,
|
||||
"narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=",
|
||||
"lastModified": 1757130842,
|
||||
"narHash": "sha256-4i7KKuXesSZGUv0cLPLfxbmF1S72Gf/3aSypgvVkwuA=",
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "8df64f819698c1fee0c2969696f54a843b2231e8",
|
||||
"rev": "15f067638e2887c58c4b6ba1bdb65a0b61dc58c5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -217,11 +217,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756692643,
|
||||
"narHash": "sha256-SVos3AYuLvF6bD8Y0b6EiLABoEaiAOa4M/fTCBe0FV8=",
|
||||
"lastModified": 1757296711,
|
||||
"narHash": "sha256-7u9/tXUdmTj8x7ofet8aELLBlCHSoA+QOhYKheRdacM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "2f1d16db96f1ce8ee3c893ea9dc49c0035846988",
|
||||
"rev": "ab9374ac8c162dacffcd4400e668fd7f9b6f173a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -232,11 +232,11 @@
|
|||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1756245047,
|
||||
"narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=",
|
||||
"lastModified": 1757103352,
|
||||
"narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7",
|
||||
"rev": "11b2a10c7be726321bb854403fdeec391e798bf0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -264,11 +264,11 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1756542300,
|
||||
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
|
||||
"lastModified": 1757068644,
|
||||
"narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
|
||||
"rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
30
modules/home-manager-modules/programs/davinci-resolve.nix
Normal file
30
modules/home-manager-modules/programs/davinci-resolve.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.davinci-resolve = {
|
||||
enable = lib.mkEnableOption "enable davinci-resolve";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.davinci-resolve.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
davinci-resolve
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.dataHome}/DaVinciResolve"
|
||||
"${config.xdg.configHome}/blackmagic"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
|
@ -19,5 +19,23 @@
|
|||
./dbeaver.nix
|
||||
./steam.nix
|
||||
./vscode
|
||||
./ungoogled-chromium.nix
|
||||
./libreoffice.nix
|
||||
./inkscape.nix
|
||||
./gimp.nix
|
||||
./proxmark3.nix
|
||||
./freecad.nix
|
||||
./onionshare.nix
|
||||
./mfoc.nix
|
||||
./pdfarranger.nix
|
||||
./picard.nix
|
||||
./qflipper.nix
|
||||
./openvpn.nix
|
||||
./noisetorch.nix
|
||||
./openrgb.nix
|
||||
./via.nix
|
||||
./davinci-resolve.nix
|
||||
./gdx-liftoff.nix
|
||||
./tor-browser.nix
|
||||
];
|
||||
}
|
||||
|
|
29
modules/home-manager-modules/programs/freecad.nix
Normal file
29
modules/home-manager-modules/programs/freecad.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.freecad = {
|
||||
enable = lib.mkEnableOption "enable freecad";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.freecad.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
freecad
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/FreeCAD"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
17
modules/home-manager-modules/programs/gdx-liftoff.nix
Normal file
17
modules/home-manager-modules/programs/gdx-liftoff.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.gdx-liftoff = {
|
||||
enable = lib.mkEnableOption "enable gdx-liftoff";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.gdx-liftoff.enable {
|
||||
home.packages = with pkgs; [
|
||||
gdx-liftoff
|
||||
];
|
||||
};
|
||||
}
|
29
modules/home-manager-modules/programs/gimp.nix
Normal file
29
modules/home-manager-modules/programs/gimp.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.gimp = {
|
||||
enable = lib.mkEnableOption "enable gimp";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.gimp.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
gimp
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/GIMP"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
29
modules/home-manager-modules/programs/inkscape.nix
Normal file
29
modules/home-manager-modules/programs/inkscape.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.inkscape = {
|
||||
enable = lib.mkEnableOption "enable inkscape";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.inkscape.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
inkscape
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/inkscape"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
29
modules/home-manager-modules/programs/libreoffice.nix
Normal file
29
modules/home-manager-modules/programs/libreoffice.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.libreoffice = {
|
||||
enable = lib.mkEnableOption "enable libreoffice";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.libreoffice.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
libreoffice
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/libreoffice"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
17
modules/home-manager-modules/programs/mfoc.nix
Normal file
17
modules/home-manager-modules/programs/mfoc.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.mfoc = {
|
||||
enable = lib.mkEnableOption "enable mfoc";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.mfoc.enable {
|
||||
home.packages = with pkgs; [
|
||||
mfoc
|
||||
];
|
||||
};
|
||||
}
|
17
modules/home-manager-modules/programs/noisetorch.nix
Normal file
17
modules/home-manager-modules/programs/noisetorch.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.noisetorch = {
|
||||
enable = lib.mkEnableOption "enable noisetorch";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.noisetorch.enable {
|
||||
home.packages = with pkgs; [
|
||||
noisetorch
|
||||
];
|
||||
};
|
||||
}
|
17
modules/home-manager-modules/programs/onionshare.nix
Normal file
17
modules/home-manager-modules/programs/onionshare.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.onionshare = {
|
||||
enable = lib.mkEnableOption "enable onionshare";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.onionshare.enable {
|
||||
home.packages = with pkgs; [
|
||||
onionshare
|
||||
];
|
||||
};
|
||||
}
|
17
modules/home-manager-modules/programs/openrgb.nix
Normal file
17
modules/home-manager-modules/programs/openrgb.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.openrgb = {
|
||||
enable = lib.mkEnableOption "enable openrgb";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.openrgb.enable {
|
||||
home.packages = with pkgs; [
|
||||
openrgb
|
||||
];
|
||||
};
|
||||
}
|
17
modules/home-manager-modules/programs/openvpn.nix
Normal file
17
modules/home-manager-modules/programs/openvpn.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.openvpn = {
|
||||
enable = lib.mkEnableOption "enable openvpn";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.openvpn.enable {
|
||||
home.packages = with pkgs; [
|
||||
openvpn
|
||||
];
|
||||
};
|
||||
}
|
17
modules/home-manager-modules/programs/pdfarranger.nix
Normal file
17
modules/home-manager-modules/programs/pdfarranger.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.pdfarranger = {
|
||||
enable = lib.mkEnableOption "enable pdfarranger";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.pdfarranger.enable {
|
||||
home.packages = with pkgs; [
|
||||
pdfarranger
|
||||
];
|
||||
};
|
||||
}
|
29
modules/home-manager-modules/programs/picard.nix
Normal file
29
modules/home-manager-modules/programs/picard.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.picard = {
|
||||
enable = lib.mkEnableOption "enable picard";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.picard.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
picard
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/MusicBrainz"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
17
modules/home-manager-modules/programs/proxmark3.nix
Normal file
17
modules/home-manager-modules/programs/proxmark3.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.proxmark3 = {
|
||||
enable = lib.mkEnableOption "enable proxmark3";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.proxmark3.enable {
|
||||
home.packages = with pkgs; [
|
||||
proxmark3
|
||||
];
|
||||
};
|
||||
}
|
29
modules/home-manager-modules/programs/qflipper.nix
Normal file
29
modules/home-manager-modules/programs/qflipper.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.qflipper = {
|
||||
enable = lib.mkEnableOption "enable qflipper";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.qflipper.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
qFlipper
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/qFlipper"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
29
modules/home-manager-modules/programs/tor-browser.nix
Normal file
29
modules/home-manager-modules/programs/tor-browser.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.tor-browser = {
|
||||
enable = lib.mkEnableOption "enable tor-browser";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.tor-browser.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
tor-browser
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.dataHome}/torbrowser"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
29
modules/home-manager-modules/programs/ungoogled-chromium.nix
Normal file
29
modules/home-manager-modules/programs/ungoogled-chromium.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.ungoogled-chromium = {
|
||||
enable = lib.mkEnableOption "enable ungoogled-chromium";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.ungoogled-chromium.enable (lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ungoogled-chromium
|
||||
];
|
||||
}
|
||||
(
|
||||
lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
"${config.xdg.configHome}/chromium"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
}
|
||||
)
|
||||
]);
|
||||
}
|
17
modules/home-manager-modules/programs/via.nix
Normal file
17
modules/home-manager-modules/programs/via.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
options.programs.via = {
|
||||
enable = lib.mkEnableOption "enable via";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.via.enable {
|
||||
home.packages = with pkgs; [
|
||||
via
|
||||
];
|
||||
};
|
||||
}
|
|
@ -10,10 +10,6 @@
|
|||
|
||||
mcp-nixos = inputs.mcp-nixos.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
|
||||
mcp-eslint = pkgs.writeShellScriptBin "mcp-eslint" ''
|
||||
${pkgs.nodejs}/bin/npx --yes @modelcontextprotocol/server-eslint "$@"
|
||||
'';
|
||||
|
||||
anyProfileHasMcpNixos = lib.any (
|
||||
profile:
|
||||
profile.extraExtensions.claudeDev.enable
|
||||
|
@ -25,6 +21,44 @@
|
|||
profile.extraExtensions.claudeDev.enable
|
||||
&& profile.extraExtensions.claudeDev.mcp.eslint.enable
|
||||
) (lib.attrValues config.programs.vscode.profiles);
|
||||
|
||||
anyProfileHasMcpVitest = lib.any (
|
||||
profile:
|
||||
profile.extraExtensions.claudeDev.enable
|
||||
&& profile.extraExtensions.claudeDev.mcp.vitest.enable
|
||||
) (lib.attrValues config.programs.vscode.profiles);
|
||||
|
||||
anyProfileHasMcpSleep = lib.any (
|
||||
profile:
|
||||
profile.extraExtensions.claudeDev.enable
|
||||
&& profile.extraExtensions.claudeDev.mcp.sleep.enable
|
||||
) (lib.attrValues config.programs.vscode.profiles);
|
||||
|
||||
anyProfileHasMcp = anyProfileHasMcpNixos || anyProfileHasMcpEslint || anyProfileHasMcpVitest || anyProfileHasMcpSleep;
|
||||
|
||||
getMcpTimeout = serverName:
|
||||
lib.findFirst (timeout: timeout != null) null (map (
|
||||
profile:
|
||||
if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable
|
||||
then profile.extraExtensions.claudeDev.mcp.${serverName}.timeout
|
||||
else null
|
||||
) (lib.attrValues config.programs.vscode.profiles));
|
||||
|
||||
getMcpAutoApprove = serverName:
|
||||
lib.foldl' (
|
||||
acc: profile:
|
||||
if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable
|
||||
then acc // profile.extraExtensions.claudeDev.mcp.${serverName}.autoApprove
|
||||
else acc
|
||||
) {} (lib.attrValues config.programs.vscode.profiles);
|
||||
|
||||
getMcpPackage = serverName:
|
||||
lib.findFirst (package: package != null) null (map (
|
||||
profile:
|
||||
if profile.extraExtensions.claudeDev.enable && profile.extraExtensions.claudeDev.mcp.${serverName}.enable
|
||||
then profile.extraExtensions.claudeDev.mcp.${serverName}.package
|
||||
else null
|
||||
) (lib.attrValues config.programs.vscode.profiles));
|
||||
in {
|
||||
options.programs.vscode.profiles = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
||||
|
@ -41,6 +75,53 @@ in {
|
|||
};
|
||||
eslint = {
|
||||
enable = lib.mkEnableOption "enable ESLint MCP server for Claude Dev";
|
||||
package = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "@eslint/mcp@latest";
|
||||
description = "NPM package to use for ESLint MCP server";
|
||||
};
|
||||
timeout = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.int;
|
||||
default = null;
|
||||
description = "Timeout in seconds for ESLint MCP server operations";
|
||||
};
|
||||
autoApprove = {
|
||||
lint-files = lib.mkEnableOption "Should the lint-files tool be auto approved for ESLint MCP server";
|
||||
};
|
||||
};
|
||||
vitest = {
|
||||
enable = lib.mkEnableOption "enable Vitest MCP server for Claude Dev";
|
||||
package = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "@djankies/vitest-mcp";
|
||||
description = "NPM package to use for Vitest MCP server";
|
||||
};
|
||||
timeout = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.int;
|
||||
default = null;
|
||||
description = "Timeout in seconds for Vitest MCP server operations";
|
||||
};
|
||||
autoApprove = {
|
||||
list_tests = lib.mkEnableOption "Should the list_tests tool be auto approved for Vitest MCP server";
|
||||
run_tests = lib.mkEnableOption "Should the run_tests tool be auto approved for Vitest MCP server";
|
||||
analyze_coverage = lib.mkEnableOption "Should the analyze_coverage tool be auto approved for Vitest MCP server";
|
||||
};
|
||||
};
|
||||
sleep = {
|
||||
enable = lib.mkEnableOption "enable Sleep MCP server for Claude Dev";
|
||||
package = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "sleep-mcp";
|
||||
description = "NPM package to use for Sleep MCP server";
|
||||
};
|
||||
timeout = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.int;
|
||||
default = null;
|
||||
description = "Timeout in seconds for Sleep MCP server operations";
|
||||
};
|
||||
autoApprove = {
|
||||
sleep = lib.mkEnableOption "Should the sleep tool be auto approved for Sleep MCP server";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -60,14 +141,7 @@ in {
|
|||
];
|
||||
})
|
||||
|
||||
(lib.mkIf anyProfileHasMcpEslint {
|
||||
home.packages = [
|
||||
mcp-eslint
|
||||
pkgs.eslint
|
||||
];
|
||||
})
|
||||
|
||||
(lib.mkIf (anyProfileHasMcpNixos || anyProfileHasMcpEslint) {
|
||||
(lib.mkIf anyProfileHasMcp {
|
||||
home.file."${config.xdg.configHome}/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json" = {
|
||||
text = builtins.toJSON {
|
||||
mcpServers =
|
||||
|
@ -77,9 +151,43 @@ in {
|
|||
};
|
||||
})
|
||||
// (lib.optionalAttrs anyProfileHasMcpEslint {
|
||||
eslint = {
|
||||
command = "${mcp-eslint}/bin/mcp-eslint";
|
||||
};
|
||||
eslint =
|
||||
{
|
||||
command = "${pkgs.nodejs}/bin/npx";
|
||||
args = ["-y" (getMcpPackage "eslint")];
|
||||
}
|
||||
// (lib.optionalAttrs ((getMcpTimeout "eslint") != null) {
|
||||
timeout = getMcpTimeout "eslint";
|
||||
})
|
||||
// (lib.optionalAttrs ((getMcpAutoApprove "eslint") != {}) {
|
||||
autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "eslint"));
|
||||
});
|
||||
})
|
||||
// (lib.optionalAttrs anyProfileHasMcpVitest {
|
||||
vitest =
|
||||
{
|
||||
command = "${pkgs.nodejs}/bin/npx";
|
||||
args = ["-y" (getMcpPackage "vitest")];
|
||||
}
|
||||
// (lib.optionalAttrs ((getMcpTimeout "vitest") != null) {
|
||||
timeout = getMcpTimeout "vitest";
|
||||
})
|
||||
// (lib.optionalAttrs ((getMcpAutoApprove "vitest") != {}) {
|
||||
autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "vitest"));
|
||||
});
|
||||
})
|
||||
// (lib.optionalAttrs anyProfileHasMcpSleep {
|
||||
sleep-mcp =
|
||||
{
|
||||
command = "${pkgs.nodejs}/bin/npx";
|
||||
args = ["-y" (getMcpPackage "sleep")];
|
||||
}
|
||||
// (lib.optionalAttrs ((getMcpTimeout "sleep") != null) {
|
||||
timeout = getMcpTimeout "sleep";
|
||||
})
|
||||
// (lib.optionalAttrs ((getMcpAutoApprove "sleep") != {}) {
|
||||
autoApprove = builtins.attrNames (lib.filterAttrs (_: v: v) (getMcpAutoApprove "sleep"));
|
||||
});
|
||||
});
|
||||
};
|
||||
force = true;
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
pkgsRepositories = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version;
|
||||
pkgsRepository = pkgsRepositories.vscode-marketplace;
|
||||
in {
|
||||
options.programs.vscode.profiles = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
||||
options = {
|
||||
extraExtensions.conventionalCommits = {
|
||||
enable = lib.mkEnableOption "Enable VSCode Conventional Commits extension";
|
||||
extension = lib.mkPackageOption pkgsRepository "conventional-commits" {
|
||||
default = ["vivaxy" "vscode-conventional-commits"];
|
||||
};
|
||||
|
||||
gitmoji = lib.mkEnableOption "should emoji be prompted for as a part of the commit message./";
|
||||
|
||||
promptScopes = lib.mkEnableOption "prompting for scopes in conventional commits";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.extraExtensions.conventionalCommits.enable {
|
||||
extensions = [config.extraExtensions.conventionalCommits.extension];
|
||||
|
||||
userSettings = {
|
||||
"conventionalCommits.gitmoji" = config.extraExtensions.conventionalCommits.gitmoji;
|
||||
"conventionalCommits.promptScopes" = config.extraExtensions.conventionalCommits.promptScopes;
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
}
|
|
@ -21,5 +21,7 @@
|
|||
./claudeDev.nix
|
||||
./nearley.nix
|
||||
./vitest.nix
|
||||
./direnv.nix
|
||||
./conventionalCommits.nix
|
||||
];
|
||||
}
|
||||
|
|
25
modules/home-manager-modules/programs/vscode/direnv.nix
Normal file
25
modules/home-manager-modules/programs/vscode/direnv.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
pkgsRepositories = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version;
|
||||
pkgsRepository = pkgsRepositories.vscode-marketplace;
|
||||
in {
|
||||
options.programs.vscode.profiles = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
||||
options = {
|
||||
extraExtensions.direnv = {
|
||||
enable = lib.mkEnableOption "Enable direnv extension";
|
||||
extension = lib.mkPackageOption pkgsRepository "direnv" {
|
||||
default = ["mkhl" "direnv"];
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.extraExtensions.direnv.enable {
|
||||
extensions = [config.extraExtensions.direnv.extension];
|
||||
};
|
||||
}));
|
||||
};
|
||||
}
|
|
@ -51,10 +51,9 @@ in {
|
|||
};
|
||||
};
|
||||
services.paperless = {
|
||||
domain = "${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}";
|
||||
configureTika = true;
|
||||
settings = {
|
||||
PAPERLESS_URL = "https://${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}";
|
||||
|
||||
PAPERLESS_DBENGINE = "postgresql";
|
||||
PAPERLESS_DBHOST = "/run/postgresql";
|
||||
PAPERLESS_DBNAME = config.services.paperless.database.user;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue