Compare commits

...

6 Commits

Author SHA1 Message Date
e0568ddfdc fix: chromium extension installation 2025-10-14 14:14:04 +02:00
9941dfa61f feat: add adb 2025-10-14 14:13:47 +02:00
aac9e9f38f fix: fivefilters https 2025-10-14 14:13:37 +02:00
bdda87778c feat: add android studio 2025-10-13 13:23:51 +02:00
fccec6d87c fix: chrome dev tools mcp 2025-10-13 13:23:37 +02:00
5e259e0b42 feat: add fivefilters 2025-10-13 13:23:13 +02:00
10 changed files with 119 additions and 68 deletions

View File

@@ -48,6 +48,7 @@
./modules/ha-customers
./modules/firefox-sync.nix
./modules/fivefilters.nix
# home assistant
./modules/home-assistant

View File

@@ -91,6 +91,7 @@
"/omada.cloonar.com/${config.networkPrefix}.97.2"
"/web-02.cloonar.com/${config.networkPrefix}.97.5"
"/pla.cloonar.com/${config.networkPrefix}.97.5"
"/fivefilters.cloonar.com/${config.networkPrefix}.97.5"
"/home-assistant.cloonar.com/${config.networkPrefix}.97.20"
"/mopidy.cloonar.com/${config.networkPrefix}.97.21"
"/snapcast.cloonar.com/${config.networkPrefix}.97.21"

View File

@@ -0,0 +1,32 @@
{ config, pkgs, ... }: {
users.users.fivefilters = {
isSystemUser = true;
group = "omada";
home = "/var/lib/fivefilters";
createHome = true;
};
users.groups.fivefilters = { };
systemd.tmpfiles.rules = [
# parent is created by createHome already, but harmless to repeat
"d /var/lib/fivefilters 0755 fivefilters fivefilters - -"
"d /var/lib/fivefilters/cache 0755 fivefilters fivefilters - -"
];
# TODO: check if we can run docker service as other user than root
virtualisation = {
oci-containers.containers = {
fivefilters = {
autoStart = true;
image = "heussd/fivefilters-full-text-rss:3.8.1";
volumes = [
"/var/lib/fivefilters/cache:/var/www/html/cache"
];
extraOptions = [
"--network=server"
"--ip=${config.networkPrefix}.97.10"
];
};
};
};
}

View File

@@ -25,4 +25,12 @@
recommendedProxySettings = true;
};
};
services.nginx.virtualHosts."fivefilters.cloonar.com" = {
forceSSL = true;
enableACME = true;
acmeRoot = null;
locations."/" = {
proxyPass = "http://${config.networkPrefix}.97.10";
};
};
}

View File

@@ -13,7 +13,11 @@
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak install -y https://dl.flathub.org/repo/appstream/io.github.yuki_iptv.yuki-iptv.flatpakref
set -eu
flatpak install --system -y --noninteractive --or-update flathub io.github.yuki_iptv.yuki-iptv
flatpak install --system -y --noninteractive --or-update flathub com.google.AndroidStudio
flatpak run --command=bash com.google.AndroidStudio -c 'curl -fsSL https://claude.ai/install.sh | bash'
'';
};
@@ -25,5 +29,12 @@
exec = "${pkgs.flatpak}/bin/flatpak run io.github.yuki_iptv.yuki-iptv";
terminal = false;
})
(pkgs.makeDesktopItem {
name = "android-studio";
desktopName = "Android Studio";
genericName = "Android Studio";
exec = "${pkgs.flatpak}/bin/flatpak run com.google.AndroidStudio";
terminal = false;
})
];
}

View File

@@ -25,7 +25,7 @@ in {
# Browser must be running with remote debugging on 127.0.0.1:9222.
if ${config.home.homeDirectory}/.nix-profile/bin/claude mcp add --help >/dev/null 2>&1; then
${config.home.homeDirectory}/.nix-profile/bin/claude mcp add --scope user chrome-devtools \
-- npx -y chrome-devtools-mcp --browserUrl=http://127.0.0.1:9222 || true
-- npx -y chrome-devtools-mcp --executablePath=${pkgs.ungoogled-chromium}/bin/chromium --isolated=true --headless=true --chromeArg=--ozone-platform=wayland --chromeArg=--enable-features=UseOzonePlatform --chromeArg=--force-device-scale-factor=1 || true
fi
'';
};

View File

@@ -8,5 +8,14 @@ in {
unstable.claude-code
unstable.code-cursor
unstable.vscode
# android-studio-full
# android-tools
];
nixpkgs.config.android_sdk.accept_license = true;
programs.adb.enable = true; # sets up udev + adb group
services.udev.packages = [ pkgs.android-udev-rules ];
users.users.dominik.extraGroups = [ "adbusers" ];
}

View File

@@ -46,7 +46,24 @@ in
environment.etc."codex/config.toml".text = ''
[mcp_servers.chrome-devtools]
command = "npx"
args = ["-y", "chrome-devtools-mcp@latest", "--browserUrl=http://127.0.0.1:9222"]
args = [
# "-y", "chrome-devtools-mcp@latest", "--browserUrl=http://127.0.0.1:9222"
"-y", "chrome-devtools-mcp@latest",
# Tell MCP exactly which Chromium to launch (Nix store path)
"--executablePath=${pkgs.ungoogled-chromium}/bin/chromium",
# Make every run use a temporary profile (no shared state)
"--isolated=true",
# Headful by default on Wayland
"--headless=true",
# Pass Chromium flags for Wayland + scale
"--chromeArg=--ozone-platform=wayland",
"--chromeArg=--enable-features=UseOzonePlatform",
"--chromeArg=--force-device-scale-factor=1"
]
startup_timeout_sec = 30
tool_timeout_sec = 120
'';

View File

@@ -234,75 +234,49 @@ in
"--force-dark-mode"
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
"--default-search-provider-search-url=\"https://www.perplexity.ai/search/?q={searchTerms}\""
"--default-search-provider-search-url=\"https://www.perplexity.ai/search/?q=%s\""
];
dictionaries = [
pkgs.hunspellDictsChromium.en_US
pkgs.hunspellDictsChromium.de_DE
];
extensions =
let
createChromiumExtensionFor = browserVersion: { id, sha256, version }:
extensions = [
{
# ublock
id = "epcnnfbjfcgphgdmggkamkmgojdagdnn";
}
{
inherit id;
crxPath = builtins.fetchurl {
url = "https://clients2.google.com/service/update2/crx?response=redirect&acceptformat=crx2,crx3&prodversion=${browserVersion}&x=id%3D${id}%26installsource%3Dondemand%26uc";
name = "${id}.crx";
inherit sha256;
};
inherit version;
};
createChromiumExtension = createChromiumExtensionFor (lib.versions.major pkgs.ungoogled-chromium.version);
in
[
(createChromiumExtension {
# ublock origin
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
sha256 = "sha256:054kqrai2kd89bzc5c3x17rjfdil2zzxrxrg65vaywmvm77y7kmn";
version = "1.61.0";
})
(createChromiumExtension {
# dark reader
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
sha256 = "sha256:1i8rs6bcblx4d85rh41pmky3hhlpzn5977lpz5zmhwri7sb77yzk";
version = "4.9.96";
})
(createChromiumExtension {
}
{
# privacy badger
id = "pkehgijcmpdhfbdbbnkijodmdjhbjlgp";
sha256 = "sha256:19vpk8h8q0xgi40hgv1bd24n3napbgbzg12najc3mkapqcvfcmhc";
version = "2024.7.17";
})
(createChromiumExtension {
}
{
# Bitwarden
id = "nngceckbapebfimnlniiiahkandclblb";
sha256 = "sha256:02cscadjqbfx3a5bky1zc38pxymzgndb9h3wing3pb0fwm30yrzd";
version = "2024.10.1";
})
(createChromiumExtension {
}
{
# Dracula Theme
id = "jiaeinnfkmnkpkicpaihogiomcgikcde";
sha256 = "sha256:01nm7p0v3lcvx8bkinq2rr0divvqgf5d2a757lg8m21ccmznqkpc";
version = "1.0";
})
(createChromiumExtension {
}
{
# Vimium
id = "dbepggeogbaibhgnhhndojpepiihcmeb";
sha256 = "sha256:0z6c04kjp13g4ix5kpv2m8q27i8pwz2c0rdi78wcnxqmqnik4ifx";
version = "2.1.2";
})
(createChromiumExtension {
}
{
# BrainTool
id = "fialfmcgpibjgdoeodaondepigiiddio";
sha256 = "sha256:0i8aga8h7jgjgsy1xx453gryzvf6y6wm9fd2i6cnzafjpf2fk51b";
version = "1.0.3";
})
}
{
# Chathub
id = "iaakpnchhognanibcahlpcplchdfmgma";
}
];
};
programs.git = {
enable = true;
lfs.enable = true;
package = pkgs.gitAndTools.gitFull;

View File

@@ -1,9 +1,7 @@
move modules for hosts into respecting hosts directory so not every host gets rebuilded when one module changes
change sddm theme
add yubikey
change playmouth theme
look into secure boot
switch from gitea to forgejo
## chache server
https://github.com/zhaofengli/attic