clean up 'scope' decl
This commit is contained in:
parent
453d780695
commit
cb72b47661
28 changed files with 261 additions and 195 deletions
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
config,
|
||||
scope,
|
||||
machineName,
|
||||
mainUser,
|
||||
...
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
inputs,
|
||||
localPkgs,
|
||||
scope,
|
||||
getFlakePkg',
|
||||
...
|
||||
}:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
pkgs,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
with pkgs;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
pkgs,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
with pkgs.mate;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ scope, ... }:
|
||||
{ ... }:
|
||||
scope "environment.sessionVariables" {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
GBM_BACKEND = "nvidia-drm";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ scope, ... }:
|
||||
{ ... }:
|
||||
scope "hardware" {
|
||||
enableRedistributableFirmware = true;
|
||||
enableAllFirmware = true;
|
||||
|
|
|
|||
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
pkgs,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
with pkgs;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
config,
|
||||
lib,
|
||||
mainUser,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
scope "options.quick" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
scope "user.systemd.services.startup-sound"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{ scope, ... }: scope "services.syncthing.enable" <| true
|
||||
{ ... }: scope "services.syncthing.enable" <| true
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
(scope "apps.terminal" <| pkgs.foot)
|
||||
|
|
|
|||
132
graphical/webapps.nix
Normal file
132
graphical/webapps.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue