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/ha-customers
./modules/firefox-sync.nix ./modules/firefox-sync.nix
./modules/fivefilters.nix
# home assistant # home assistant
./modules/home-assistant ./modules/home-assistant

View File

@@ -91,6 +91,7 @@
"/omada.cloonar.com/${config.networkPrefix}.97.2" "/omada.cloonar.com/${config.networkPrefix}.97.2"
"/web-02.cloonar.com/${config.networkPrefix}.97.5" "/web-02.cloonar.com/${config.networkPrefix}.97.5"
"/pla.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" "/home-assistant.cloonar.com/${config.networkPrefix}.97.20"
"/mopidy.cloonar.com/${config.networkPrefix}.97.21" "/mopidy.cloonar.com/${config.networkPrefix}.97.21"
"/snapcast.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; 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" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ]; path = [ pkgs.flatpak ];
script = '' 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"; exec = "${pkgs.flatpak}/bin/flatpak run io.github.yuki_iptv.yuki-iptv";
terminal = false; 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. # 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 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 \ ${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 fi
''; '';
}; };

View File

@@ -8,5 +8,14 @@ in {
unstable.claude-code unstable.claude-code
unstable.code-cursor unstable.code-cursor
unstable.vscode 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 = '' environment.etc."codex/config.toml".text = ''
[mcp_servers.chrome-devtools] [mcp_servers.chrome-devtools]
command = "npx" 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 startup_timeout_sec = 30
tool_timeout_sec = 120 tool_timeout_sec = 120
''; '';

View File

@@ -234,75 +234,49 @@ in
"--force-dark-mode" "--force-dark-mode"
"--enable-features=UseOzonePlatform" "--enable-features=UseOzonePlatform"
"--ozone-platform=wayland" "--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 = [ dictionaries = [
pkgs.hunspellDictsChromium.en_US pkgs.hunspellDictsChromium.en_US
pkgs.hunspellDictsChromium.de_DE pkgs.hunspellDictsChromium.de_DE
]; ];
extensions = extensions = [
let {
createChromiumExtensionFor = browserVersion: { id, sha256, version }: # 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"; # dark reader
name = "${id}.crx"; id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
inherit sha256; }
}; {
inherit version; # privacy badger
}; id = "pkehgijcmpdhfbdbbnkijodmdjhbjlgp";
createChromiumExtension = createChromiumExtensionFor (lib.versions.major pkgs.ungoogled-chromium.version); }
in {
[ # Bitwarden
(createChromiumExtension { id = "nngceckbapebfimnlniiiahkandclblb";
# ublock origin }
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; {
sha256 = "sha256:054kqrai2kd89bzc5c3x17rjfdil2zzxrxrg65vaywmvm77y7kmn"; # Dracula Theme
version = "1.61.0"; id = "jiaeinnfkmnkpkicpaihogiomcgikcde";
}) }
(createChromiumExtension { {
# dark reader # Vimium
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; id = "dbepggeogbaibhgnhhndojpepiihcmeb";
sha256 = "sha256:1i8rs6bcblx4d85rh41pmky3hhlpzn5977lpz5zmhwri7sb77yzk"; }
version = "4.9.96"; {
}) # BrainTool
(createChromiumExtension { id = "fialfmcgpibjgdoeodaondepigiiddio";
# privacy badger }
id = "pkehgijcmpdhfbdbbnkijodmdjhbjlgp"; {
sha256 = "sha256:19vpk8h8q0xgi40hgv1bd24n3napbgbzg12najc3mkapqcvfcmhc"; # Chathub
version = "2024.7.17"; id = "iaakpnchhognanibcahlpcplchdfmgma";
}) }
(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";
})
];
}; };
programs.git = { programs.git = {
enable = true; enable = true;
lfs.enable = true; lfs.enable = true;
package = pkgs.gitAndTools.gitFull; 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 look into secure boot
switch from gitea to forgejo
## chache server ## chache server
https://github.com/zhaofengli/attic https://github.com/zhaofengli/attic