Compare commits

..

3 commits
main ... main

29 changed files with 89 additions and 682 deletions

View file

@ -17,6 +17,7 @@ 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
]
);
@ -60,7 +61,6 @@ in {
steam.enable = true;
piper.enable = hardware.piperMouse.enable;
krita.enable = true;
ungoogled-chromium.enable = true;
})
];
};

View file

@ -37,12 +37,6 @@ 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;
@ -56,19 +50,6 @@ 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;
})
];
}
@ -85,6 +66,53 @@ 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)
])
)
);
})
];
}

View file

@ -72,34 +72,12 @@ in {
enable = true;
mcp = {
nixos.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;
};
};
eslint.enable = true;
};
};
# misc extensions
evenBetterToml.enable = true;
direnv.enable = config.programs.direnv.enable;
conventionalCommits.enable = true;
};
extensions = let

View file

@ -67,6 +67,8 @@
};
};
services.tailscale.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";

42
flake.lock generated
View file

@ -25,11 +25,11 @@
]
},
"locked": {
"lastModified": 1757255839,
"narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=",
"lastModified": 1756733629,
"narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=",
"owner": "nix-community",
"repo": "disko",
"rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a",
"rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1",
"type": "github"
},
"original": {
@ -46,11 +46,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1757304222,
"narHash": "sha256-s070stByAXxeCLgftTXxFxZ2ynJhghne4Y6cTuqGAaw=",
"lastModified": 1756699417,
"narHash": "sha256-rpRy5ae5ijEGaK+Cr66NqCQJ6ZeUE5Zi8gUWgKhesto=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "fa312c0175ffb82bc67da095439b9cb683ac52bd",
"rev": "007b803d1eff595d25e7886e83054dbd038bf029",
"type": "gitlab"
},
"original": {
@ -118,11 +118,11 @@
]
},
"locked": {
"lastModified": 1757256385,
"narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=",
"lastModified": 1756734952,
"narHash": "sha256-H6jmduj4QIncLPAPODPSG/8ry9lpr1kRq6fYytU52qU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37",
"rev": "29ab63bbb3d9eee4a491f7ce701b189becd34068",
"type": "github"
},
"original": {
@ -175,11 +175,11 @@
]
},
"locked": {
"lastModified": 1757130842,
"narHash": "sha256-4i7KKuXesSZGUv0cLPLfxbmF1S72Gf/3aSypgvVkwuA=",
"lastModified": 1755825449,
"narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "15f067638e2887c58c4b6ba1bdb65a0b61dc58c5",
"rev": "8df64f819698c1fee0c2969696f54a843b2231e8",
"type": "github"
},
"original": {
@ -217,11 +217,11 @@
]
},
"locked": {
"lastModified": 1757296711,
"narHash": "sha256-7u9/tXUdmTj8x7ofet8aELLBlCHSoA+QOhYKheRdacM=",
"lastModified": 1756692643,
"narHash": "sha256-SVos3AYuLvF6bD8Y0b6EiLABoEaiAOa4M/fTCBe0FV8=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "ab9374ac8c162dacffcd4400e668fd7f9b6f173a",
"rev": "2f1d16db96f1ce8ee3c893ea9dc49c0035846988",
"type": "github"
},
"original": {
@ -232,11 +232,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1757103352,
"narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=",
"lastModified": 1756245047,
"narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "11b2a10c7be726321bb854403fdeec391e798bf0",
"rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7",
"type": "github"
},
"original": {
@ -264,11 +264,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1757068644,
"narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=",
"lastModified": 1756542300,
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9",
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
"type": "github"
},
"original": {

View file

@ -1,30 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -19,23 +19,5 @@
./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
];
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,17 +0,0 @@
{
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
];
};
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.mfoc = {
enable = lib.mkEnableOption "enable mfoc";
};
config = lib.mkIf config.programs.mfoc.enable {
home.packages = with pkgs; [
mfoc
];
};
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.noisetorch = {
enable = lib.mkEnableOption "enable noisetorch";
};
config = lib.mkIf config.programs.noisetorch.enable {
home.packages = with pkgs; [
noisetorch
];
};
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.onionshare = {
enable = lib.mkEnableOption "enable onionshare";
};
config = lib.mkIf config.programs.onionshare.enable {
home.packages = with pkgs; [
onionshare
];
};
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.openrgb = {
enable = lib.mkEnableOption "enable openrgb";
};
config = lib.mkIf config.programs.openrgb.enable {
home.packages = with pkgs; [
openrgb
];
};
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.openvpn = {
enable = lib.mkEnableOption "enable openvpn";
};
config = lib.mkIf config.programs.openvpn.enable {
home.packages = with pkgs; [
openvpn
];
};
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.pdfarranger = {
enable = lib.mkEnableOption "enable pdfarranger";
};
config = lib.mkIf config.programs.pdfarranger.enable {
home.packages = with pkgs; [
pdfarranger
];
};
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.proxmark3 = {
enable = lib.mkEnableOption "enable proxmark3";
};
config = lib.mkIf config.programs.proxmark3.enable {
home.packages = with pkgs; [
proxmark3
];
};
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,29 +0,0 @@
{
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;
};
}
)
]);
}

View file

@ -1,17 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: {
options.programs.via = {
enable = lib.mkEnableOption "enable via";
};
config = lib.mkIf config.programs.via.enable {
home.packages = with pkgs; [
via
];
};
}

View file

@ -10,6 +10,10 @@
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
@ -21,44 +25,6 @@
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, ...}: {
@ -75,53 +41,6 @@ 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";
};
};
};
};
@ -141,7 +60,14 @@ in {
];
})
(lib.mkIf anyProfileHasMcp {
(lib.mkIf anyProfileHasMcpEslint {
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" = {
text = builtins.toJSON {
mcpServers =
@ -151,43 +77,9 @@ in {
};
})
// (lib.optionalAttrs anyProfileHasMcpEslint {
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"));
});
eslint = {
command = "${mcp-eslint}/bin/mcp-eslint";
};
});
};
force = true;

View file

@ -1,34 +0,0 @@
{
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;
};
};
}));
};
}

View file

@ -21,7 +21,5 @@
./claudeDev.nix
./nearley.nix
./vitest.nix
./direnv.nix
./conventionalCommits.nix
];
}

View file

@ -1,25 +0,0 @@
{
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];
};
}));
};
}

View file

@ -51,9 +51,10 @@ 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;