forked from jan-leila/nix-config
Compare commits
14 commits
Author | SHA1 | Date | |
---|---|---|---|
3bf3391eb9 | |||
ffcba0d714 | |||
0f8faadd80 | |||
cf330b1cbb | |||
ca9f54d795 | |||
2745af9443 | |||
487dc21550 | |||
58fec3f132 | |||
09d2588406 | |||
68b791f7c1 | |||
1831fea96a | |||
2aad75a334 | |||
c31eb38229 | |||
fab03391fc |
32 changed files with 746 additions and 89 deletions
|
@ -17,7 +17,6 @@ in {
|
||||||
# See https://search.nixos.org/packages for all options
|
# See https://search.nixos.org/packages for all options
|
||||||
home.packages = lib.lists.optionals userConfig.isDesktopUser (
|
home.packages = lib.lists.optionals userConfig.isDesktopUser (
|
||||||
with pkgs; [
|
with pkgs; [
|
||||||
ungoogled-chromium
|
|
||||||
gnomeExtensions.dash-to-panel
|
gnomeExtensions.dash-to-panel
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
@ -61,6 +60,7 @@ in {
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
piper.enable = hardware.piperMouse.enable;
|
piper.enable = hardware.piperMouse.enable;
|
||||||
krita.enable = true;
|
krita.enable = true;
|
||||||
|
ungoogled-chromium.enable = true;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,6 +37,12 @@ in {
|
||||||
dbeaver-bin.enable = true;
|
dbeaver-bin.enable = true;
|
||||||
bruno.enable = true;
|
bruno.enable = true;
|
||||||
piper.enable = hardware.piperMouse.enable;
|
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) {
|
(lib.mkIf (hardware.directAccess.enable && config.user.isDesktopUser) {
|
||||||
anki.enable = true;
|
anki.enable = true;
|
||||||
|
@ -50,6 +56,20 @@ in {
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
krita.enable = true;
|
krita.enable = true;
|
||||||
|
ungoogled-chromium.enable = true;
|
||||||
|
libreoffice.enable = true;
|
||||||
|
mapillary-uploader.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 +86,6 @@ in {
|
||||||
nixpkgs.config = {
|
nixpkgs.config = {
|
||||||
allowUnfree = true;
|
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;
|
enable = true;
|
||||||
mcp = {
|
mcp = {
|
||||||
nixos.enable = true;
|
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
|
# misc extensions
|
||||||
evenBetterToml.enable = true;
|
evenBetterToml.enable = true;
|
||||||
|
direnv.enable = config.programs.direnv.enable;
|
||||||
|
conventionalCommits.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
extensions = let
|
extensions = let
|
||||||
|
|
|
@ -67,8 +67,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.tailscale.enable = true;
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
# services.xserver.xkb.layout = "us";
|
# services.xserver.xkb.layout = "us";
|
||||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
42
flake.lock
generated
42
flake.lock
generated
|
@ -25,11 +25,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756733629,
|
"lastModified": 1757255839,
|
||||||
"narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=",
|
"narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1",
|
"rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -46,11 +46,11 @@
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "pkgs/firefox-addons",
|
"dir": "pkgs/firefox-addons",
|
||||||
"lastModified": 1756699417,
|
"lastModified": 1757304222,
|
||||||
"narHash": "sha256-rpRy5ae5ijEGaK+Cr66NqCQJ6ZeUE5Zi8gUWgKhesto=",
|
"narHash": "sha256-s070stByAXxeCLgftTXxFxZ2ynJhghne4Y6cTuqGAaw=",
|
||||||
"owner": "rycee",
|
"owner": "rycee",
|
||||||
"repo": "nur-expressions",
|
"repo": "nur-expressions",
|
||||||
"rev": "007b803d1eff595d25e7886e83054dbd038bf029",
|
"rev": "fa312c0175ffb82bc67da095439b9cb683ac52bd",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -118,11 +118,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756734952,
|
"lastModified": 1757256385,
|
||||||
"narHash": "sha256-H6jmduj4QIncLPAPODPSG/8ry9lpr1kRq6fYytU52qU=",
|
"narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "29ab63bbb3d9eee4a491f7ce701b189becd34068",
|
"rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -175,11 +175,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755825449,
|
"lastModified": 1757130842,
|
||||||
"narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=",
|
"narHash": "sha256-4i7KKuXesSZGUv0cLPLfxbmF1S72Gf/3aSypgvVkwuA=",
|
||||||
"owner": "LnL7",
|
"owner": "LnL7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "8df64f819698c1fee0c2969696f54a843b2231e8",
|
"rev": "15f067638e2887c58c4b6ba1bdb65a0b61dc58c5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -217,11 +217,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756692643,
|
"lastModified": 1757296711,
|
||||||
"narHash": "sha256-SVos3AYuLvF6bD8Y0b6EiLABoEaiAOa4M/fTCBe0FV8=",
|
"narHash": "sha256-7u9/tXUdmTj8x7ofet8aELLBlCHSoA+QOhYKheRdacM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "2f1d16db96f1ce8ee3c893ea9dc49c0035846988",
|
"rev": "ab9374ac8c162dacffcd4400e668fd7f9b6f173a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -232,11 +232,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756245047,
|
"lastModified": 1757103352,
|
||||||
"narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=",
|
"narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7",
|
"rev": "11b2a10c7be726321bb854403fdeec391e798bf0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -264,11 +264,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756542300,
|
"lastModified": 1757068644,
|
||||||
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
|
"narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
|
"rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -22,5 +22,8 @@
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
codium-extensions = pkgs.callPackage ./codium-extensions {};
|
codium-extensions = pkgs.callPackage ./codium-extensions {};
|
||||||
})
|
})
|
||||||
|
(final: prev: {
|
||||||
|
mapillary-uploader = pkgs.callPackage ./mapillary-uploader.nix {};
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
42
modules/common-modules/pkgs/mapillary-uploader.nix
Normal file
42
modules/common-modules/pkgs/mapillary-uploader.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
appimageTools,
|
||||||
|
}: let
|
||||||
|
pname = "mapillary-uploader";
|
||||||
|
version = "4.7.2"; # Based on the application output
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://tools.mapillary.com/uploader/download/linux";
|
||||||
|
name = "mapillary-uploader.AppImage";
|
||||||
|
sha256 = "sha256-Oyx7AIdA/2mwBaq7UzXOoyq/z2SU2sViMN40sY2RCQw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
appimageContents = appimageTools.extractType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
appimageTools.wrapType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
# Install desktop file
|
||||||
|
install -Dm644 ${appimageContents}/mapillary-desktop-uploader.desktop $out/share/applications/mapillary-uploader.desktop
|
||||||
|
|
||||||
|
# Install icon
|
||||||
|
install -Dm644 ${appimageContents}/usr/share/icons/hicolor/0x0/apps/mapillary-desktop-uploader.png $out/share/pixmaps/mapillary-uploader.png
|
||||||
|
|
||||||
|
# Fix desktop file paths
|
||||||
|
substituteInPlace $out/share/applications/mapillary-uploader.desktop \
|
||||||
|
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Mapillary Desktop Uploader - Upload street-level imagery to Mapillary";
|
||||||
|
homepage = "https://www.mapillary.com/";
|
||||||
|
license = licenses.unfree; # Mapillary's license terms
|
||||||
|
maintainers = [];
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
sourceProvenance = with sourceTypes; [binaryNativeCode];
|
||||||
|
};
|
||||||
|
}
|
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,24 @@
|
||||||
./dbeaver.nix
|
./dbeaver.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
./vscode
|
./vscode
|
||||||
|
./ungoogled-chromium.nix
|
||||||
|
./libreoffice.nix
|
||||||
|
./mapillary-uploader.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/mapillary-uploader.nix
Normal file
17
modules/home-manager-modules/programs/mapillary-uploader.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.programs.mapillary-uploader;
|
||||||
|
in {
|
||||||
|
options.programs.mapillary-uploader = {
|
||||||
|
enable = mkEnableOption "Mapillary Desktop Uploader";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [pkgs.mapillary-uploader];
|
||||||
|
};
|
||||||
|
}
|
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-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 (
|
anyProfileHasMcpNixos = lib.any (
|
||||||
profile:
|
profile:
|
||||||
profile.extraExtensions.claudeDev.enable
|
profile.extraExtensions.claudeDev.enable
|
||||||
|
@ -25,6 +21,44 @@
|
||||||
profile.extraExtensions.claudeDev.enable
|
profile.extraExtensions.claudeDev.enable
|
||||||
&& profile.extraExtensions.claudeDev.mcp.eslint.enable
|
&& profile.extraExtensions.claudeDev.mcp.eslint.enable
|
||||||
) (lib.attrValues config.programs.vscode.profiles);
|
) (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 {
|
in {
|
||||||
options.programs.vscode.profiles = lib.mkOption {
|
options.programs.vscode.profiles = lib.mkOption {
|
||||||
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
||||||
|
@ -41,6 +75,53 @@ in {
|
||||||
};
|
};
|
||||||
eslint = {
|
eslint = {
|
||||||
enable = lib.mkEnableOption "enable ESLint MCP server for Claude Dev";
|
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 {
|
(lib.mkIf anyProfileHasMcp {
|
||||||
home.packages = [
|
|
||||||
mcp-eslint
|
|
||||||
pkgs.eslint
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (anyProfileHasMcpNixos || anyProfileHasMcpEslint) {
|
|
||||||
home.file."${config.xdg.configHome}/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json" = {
|
home.file."${config.xdg.configHome}/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json" = {
|
||||||
text = builtins.toJSON {
|
text = builtins.toJSON {
|
||||||
mcpServers =
|
mcpServers =
|
||||||
|
@ -77,9 +151,43 @@ in {
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
// (lib.optionalAttrs anyProfileHasMcpEslint {
|
// (lib.optionalAttrs anyProfileHasMcpEslint {
|
||||||
eslint = {
|
eslint =
|
||||||
command = "${mcp-eslint}/bin/mcp-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;
|
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
|
./claudeDev.nix
|
||||||
./nearley.nix
|
./nearley.nix
|
||||||
./vitest.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 = {
|
services.paperless = {
|
||||||
|
domain = "${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}";
|
||||||
configureTika = true;
|
configureTika = true;
|
||||||
settings = {
|
settings = {
|
||||||
PAPERLESS_URL = "https://${config.services.paperless.subdomain}.${config.host.reverse_proxy.hostname}";
|
|
||||||
|
|
||||||
PAPERLESS_DBENGINE = "postgresql";
|
PAPERLESS_DBENGINE = "postgresql";
|
||||||
PAPERLESS_DBHOST = "/run/postgresql";
|
PAPERLESS_DBHOST = "/run/postgresql";
|
||||||
PAPERLESS_DBNAME = config.services.paperless.database.user;
|
PAPERLESS_DBNAME = config.services.paperless.database.user;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue