Compare commits
6 Commits
496c483050
...
e0568ddfdc
| Author | SHA1 | Date | |
|---|---|---|---|
| e0568ddfdc | |||
| 9941dfa61f | |||
| aac9e9f38f | |||
| bdda87778c | |||
| fccec6d87c | |||
| 5e259e0b42 |
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
32
hosts/fw/modules/fivefilters.nix
Normal file
32
hosts/fw/modules/fivefilters.nix
Normal 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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
6
todos.md
6
todos.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user