clean up 'scope' decl

This commit is contained in:
atagen 2026-02-25 21:30:31 +11:00
parent 453d780695
commit cb72b47661
28 changed files with 261 additions and 195 deletions

View file

@ -1,7 +1,6 @@
{
lib,
config,
scope,
...
}:
let

View file

@ -1,6 +1,5 @@
{
config,
scope,
machineName,
mainUser,
...

View file

@ -1,98 +1,60 @@
{
lib,
pkgs,
scope,
inputs,
getFlakePkg,
...
}:
scope "apps.browser" <| getFlakePkg inputs.helium
# let
# officialAddon = name: {
# install_url = lib.strings.concatStrings [
# "https://addons.mozilla.org/firefox/downloads/latest/"
# name
# "/latest.xpi"
# ];
# installation_mode = "force_installed";
# };
# lock-false = {
# Value = false;
# Status = "locked";
# };
# lock-true = {
# Value = true;
# Status = "locked";
# };
# in
# scope "programs.firefox" {
# enable = true;
# policies = {
# DisableTelemetry = true;
# DisableFirefoxStudies = true;
# EnableTrackingProtection = {
# Value = true;
# Locked = true;
# Cryptomining = true;
# Fingerprinting = true;
# };
# DisablePocket = true;
# DisableFirefoxAccounts = true;
# DisableAccounts = true;
# DisableFirefoxScreenshots = true;
# DisableAppUpdate = true;
# DisablePrivateBrowsing = true;
# DontCheckDefaultBrowser = true;
# OverrideFirstRunPage = "";
# OverridePostUpdatePage = "";
# DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab"
# DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
# SearchBar = "unified"; # alternative: "separate"
# ExtensionSettings = {
# "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
# "uBlock0@raymondhill.net" = officialAddon "ublock-origin";
# "addon@darkreader.org" = officialAddon "darkreader";
# "vimium-c@gdh1995.cn" = officialAddon "vimium-c";
# "{b86e4813-687a-43e6-ab65-0bde4ab75758}" = officialAddon "localcdn-fork-of-decentraleyes";
# "jid1-5Fs7iTLscUaZBgwr@jetpack" = officialAddon "happy-bonobo-disable-webrtc";
# "{446900e4-71c2-419f-a6a7-df9c091e268b}" = officialAddon "bitwarden-password-mananger";
# };
# Preferences = {
# "extensions.pocket.enabled" = lock-false;
# "extensions.screenshots.disabled" = lock-true;
# "browser.topsites.contile.enabled" = lock-false;
# "browser.formfill.enable" = lock-false;
# "browser.search.suggest.enabled" = lock-false;
# "browser.search.suggest.enabled.private" = lock-false;
# "browser.urlbar.suggest.searches" = lock-false;
# "browser.urlbar.showSearchSuggestionsFirst" = lock-false;
# "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
# "browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
# "browser.newtabpage.activity-stream.showSponsored" = lock-false;
# "browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
# "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
# };
# };
# # profiles.default = {
# # id = 0;
# # name = "Default";
# # settings = {
# # "browser.startup.homepage" = "about:blank";
# # "browser.shell.didSkipDefaultBrowserCheckOnFirstRun" = true;
# # "browser.policies.applied" = true;
# # "widget.use-xdg-desktop-portal.file-picker" = 1;
# # "widget.use-xdg-desktop-portal.mime-handler" = 1;
# # };
# # };
# }
# // (scope "apps.browser" <| pkgs.firefox)
# TODO switch to helium
let
extensions = {
adnauseam = {
id = "dlkmkipjfgcmnfckfdflcemkhlfbeiak";
updateUrl = "https://gist.githubusercontent.com/amaanq/791db15b547cf00d27c99e784bbe0459/raw/adnauseam-updates.xml";
};
bypass-paywalls = {
id = "lkbebcjgcmobigpeffafkodonchffocl";
updateUrl = "https://gitflic.ru/project/magnolia1234/bpc_updates/blob/raw?file=updates.xml";
};
vencord = {
id = "jfcaohdhgnfchhifdffmldmodkmndfjp";
updateUrl = "https://github.com/amaanq/Vencord/releases/latest/download/updates.xml";
};
bitwarden.id = "nngceckbapebfimnlniiiahkandclblb";
clearurls.id = "lckanjgmijmafbedllaakclkaicjfmnk";
dark-reader.id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
i-still-dont-care-about-cookies.id = "edibdbjcniadpccecjdfdjjppcpchdlm";
fastforward.id = "icallnadddjmdinamnolclfjanhfoafe";
refined-github.id = "hlepfoohegkhhmjieoechaddaejaokhf";
sponsorblock.id = "mnjggcdmjocbbbhaepdhchncahnbgone";
vimium-c.id = "hfjbmagddngcpeloejdejnfgbamkjaeg";
web-archives.id = "hkligngkgcpcolhcnkgccglchdafcnao";
# webrtc-leak-shield.id = "bppamachkoflopbagkdoflbgfjflfnfl";
};
extensionStrings = map (
key:
let
ext = extensions.${key};
url = ext.updateUrl or "https://services.helium.imput.net/ext";
in
"${ext.id};${url}"
) (builtins.attrNames extensions);
in
(scope "apps.browser" <| getFlakePkg inputs.helium)
// scope "programs.chromium" {
enable = true;
extensions = extensionStrings;
extraOpts = {
PrivacySandboxFingerprintingProtectionEnabled = true;
PrivacySandboxIpProtectionEnabled = true;
# Explicitly allow our extensions
ExtensionInstallAllowlist = map (entry: entry.value.id) (lib.attrsToList extensions);
# Allow extensions from Helium proxy and self-hosted sources
ExtensionInstallSources = [
"https://services.helium.imput.net/*" # Helium proxy
"https://rednoise.org/*" # AdNauseam manifest
"https://github.com/*" # AdNauseam CRX host
"https://*.githubusercontent.com/*" # GitHub release assets
"https://gitflic.ru/*" # Bypass Paywalls
];
};
}

View file

@ -54,3 +54,13 @@ window-rule {
}
xwayland-satellite { path "%SATELLITE%"; }
spawn-at-startup "systemctl" "--user" "start" "startup-sound.service"
window-rule {
match app-id="Bitwarden"
open-floating true
default-column-width { proportion 0.16667; }
}
window-rule {
match app-id="feishin"
open-floating true
default-column-width { proportion 0.16667; }
}

View file

@ -78,10 +78,11 @@ in
services.niri-tag = {
enable = true;
# scratchpads = {
# "${config.apps.streamPlayer}" = 99;
# "${config.apps.passwordManager}" = 101;
# };
scratchpads = {
# TODO FIXME these could use the getExe ?
"feishin" = 99;
"Bitwarden" = 101;
};
};
services.niri-s76-bridge.enable = true;

View file

@ -1,7 +1,6 @@
{
inputs,
localPkgs,
scope,
getFlakePkg',
...
}:

View file

@ -1,6 +1,5 @@
{
pkgs,
scope,
...
}:
with pkgs;

View file

@ -1,6 +1,5 @@
{
pkgs,
scope,
...
}:
with pkgs.mate;

View file

@ -1,4 +1,4 @@
{ scope, ... }:
{ ... }:
scope "environment.sessionVariables" {
NIXOS_OZONE_WL = "1";
GBM_BACKEND = "nvidia-drm";

View file

@ -1,4 +1,4 @@
{ scope, ... }:
{ ... }:
scope "hardware" {
enableRedistributableFirmware = true;
enableAllFirmware = true;

View file

@ -2,7 +2,6 @@
pkgs,
lib,
inputs,
scope,
...
}:
let
@ -137,5 +136,8 @@ in
(scope "apps.slopcode" <| claude-code)
// {
# required for loaderslop
programs.nix-ld.enable = true;
programs.nix-ld = {
enable = true;
libraries = [ pkgs.stdenv.cc.cc.lib ];
};
}

View file

@ -1,6 +1,5 @@
{
pkgs,
scope,
...
}:
with pkgs;

View file

@ -2,7 +2,6 @@
config,
lib,
mainUser,
scope,
...
}:
scope "options.quick" {

View file

@ -1,7 +1,6 @@
{
pkgs,
lib,
scope,
...
}:
scope "user.systemd.services.startup-sound"

View file

@ -1 +1 @@
{ scope, ... }: scope "services.syncthing.enable" <| true
{ ... }: scope "services.syncthing.enable" <| true

View file

@ -1,7 +1,6 @@
{
pkgs,
config,
scope,
...
}:
(scope "apps.terminal" <| pkgs.foot)

132
graphical/webapps.nix Normal file
View file

@ -0,0 +1,132 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkIf;
browser = lib.getExe config.apps.browser;
webAppLauncher = pkgs.writeShellScript "web-app-launcher" ''
browser="${browser}"
browser_exec=""
for path in ~/.local ~/.nix-profile /usr; do
if [ -f "$path/share/applications/$browser.desktop" ]; then
browser_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' "$path/share/applications/$browser.desktop" 2>/dev/null | head -1)
break
fi
done
if [ -z "$browser_exec" ]; then
browser_exec="${browser}"
fi
url="$1"
app_name="''${2:-$(basename "$0")}"
shift 2
exec setsid "$browser_exec" \
--app="$url" \
--user-data-dir="$HOME/.local/share/web-apps/$app_name" \
--no-first-run \
--no-default-browser-check \
--disable-background-timer-throttling \
--disable-backgrounding-occluded-windows \
--disable-renderer-backgrounding \
--enable-quic \
--quic-version=h3-29 \
--enable-features=UseOzonePlatform,WaylandWindowDecorations,WaylandPerWindowScaling,WaylandTextInputV3,WebRTCPipeWireCapturer \
--disable-features=WebRtcAllowInputVolumeAdjustment \
--ozone-platform=wayland \
--gtk-version=4 \
--enable-experimental-web-platform-features \
"$@"
'';
# Create web app package
createWebApp =
{
name,
url,
icon,
description ? "",
categories ? [
"Network"
"Chat"
"InstantMessaging"
],
}:
let
pkgName = "${lib.replaceStrings [ " " ] [ "-" ] (lib.toLower name)}-web-app";
in
{
name = pkgName;
value = pkgs.stdenv.mkDerivation {
pname = pkgName;
version = "1.0";
dontUnpack = true;
nativeBuildInputs = [
pkgs.copyDesktopItems
pkgs.makeWrapper
];
installPhase = ''
runHook preInstall
makeWrapper ${webAppLauncher} $out/bin/${pkgName} \
--add-flags "${url}" \
--add-flags "${pkgName}"
runHook postInstall
'';
desktopItems = [
(pkgs.makeDesktopItem {
inherit icon categories;
name = pkgName;
exec = "${pkgName} %U";
desktopName = name;
comment = description;
startupNotify = true;
startupWMClass = pkgName;
})
];
};
};
apps = builtins.listToAttrs (
map createWebApp [
{
name = "Cinny";
url = "https://chat.lobotomise.me";
icon = "cinny";
description = "Cinny, a Matrix client";
}
{
name = "Discord";
url = "https://discord.com/app";
icon = "discord";
description = "Discord Web";
}
{
name = "FB Messenger";
url = "https://m.me";
icon = "facebook";
description = "Facebook Messenger";
}
]
);
in
{
config = {
environment.systemPackages = builtins.attrValues apps;
xdg.mime.defaultApplications = {
"x-scheme-handler/matrix" = "cinny-web-app.desktop";
};
environment.etc."web-apps-setup".text = ''
mkdir -p /home/*/.local/share/web-apps
'';
};
}