Compare commits
No commits in common. "eba5856f4738c5a23e5f662ce67983310b76f648" and "7beacf414537e1a671c651deb16a041edffc47b4" have entirely different histories.
eba5856f47
...
7beacf4145
29 changed files with 952 additions and 450 deletions
272
flake.lock
generated
272
flake.lock
generated
|
@ -31,6 +31,29 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"niri-tag",
|
||||
"naersk",
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752475459,
|
||||
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -224,6 +247,25 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"fenix": "fenix",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752689277,
|
||||
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nh": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -264,6 +306,99 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri": {
|
||||
"inputs": {
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756801989,
|
||||
"narHash": "sha256-eOIQ1CUMHwU4zsBGaCj9jCgNTxzyq2aeHuwgx0xLFwo=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "d6a98b86d86b512c6167601ea646ab785137bada",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756556321,
|
||||
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"ref": "v25.08",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-tag": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"niri": "niri_2",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755582059,
|
||||
"narHash": "sha256-fDyhFfRazK2SvPQVGi6tcMTpOAu6CoUhZSyaaE2edtE=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "0c1a104cea3de07c3416edb0d16db324daf5f61f",
|
||||
"revCount": 37,
|
||||
"type": "git",
|
||||
"url": "https://git.atagen.co/atagen/niri-tag"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.atagen.co/atagen/niri-tag"
|
||||
}
|
||||
},
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756728273,
|
||||
"narHash": "sha256-7tYNlNO/qVRA6shdWxNuBMYOE+pGgxqE0f54S4Wr9PE=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "77465e11fe36fdd9bc0a304b96bb2558116568af",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755539138,
|
||||
"narHash": "sha256-8LoWAwBqHFOM1Je3b+XCs6gM5LbJlMfZtSpJvTe3sQk=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "43a2648e579fc81366fc81b15f834c9c9dff119b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1755972213,
|
||||
|
@ -277,7 +412,71 @@
|
|||
"url": "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1756754095,
|
||||
"narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1756542300,
|
||||
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1752077645,
|
||||
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1756696532,
|
||||
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 315532800,
|
||||
"narHash": "sha256-JaSDu+RYnaHrkMCcW95rc8pG9QjD7nzX+/VHleiPVxA=",
|
||||
|
@ -290,7 +489,7 @@
|
|||
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1754214453,
|
||||
"narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=",
|
||||
|
@ -361,7 +560,9 @@
|
|||
"lanzaboote": "lanzaboote",
|
||||
"nh": "nh",
|
||||
"nil": "nil",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"niri": "niri",
|
||||
"niri-tag": "niri-tag",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"quickshell": "quickshell",
|
||||
"sops-nix": "sops-nix",
|
||||
"watt": "watt",
|
||||
|
@ -369,6 +570,23 @@
|
|||
"zen-browser-flake": "zen-browser-flake"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752428706,
|
||||
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-lang",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -485,6 +703,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"watt": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -505,10 +738,43 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755491097,
|
||||
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"ref": "v0.7",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756679414,
|
||||
"narHash": "sha256-yQGJ/n6mRwoIQnaL5oV2TGOHg4SEHpINTaoHrvkjr1Q=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "c0497c990d46fcc012d9deff885bbe533e91e044",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"zedless": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754831523,
|
||||
|
|
|
@ -61,6 +61,12 @@
|
|||
flake = false;
|
||||
};
|
||||
|
||||
niri.url = "github:sodiboo/niri-flake";
|
||||
|
||||
niri-tag = {
|
||||
url = "git+https://git.atagen.co/atagen/niri-tag";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = _: { };
|
||||
|
|
|
@ -24,10 +24,6 @@
|
|||
|
||||
meta = {
|
||||
mainUser.gitSigningKey = "";
|
||||
system = {
|
||||
isWorkstation = true;
|
||||
isGraphical = true;
|
||||
};
|
||||
};
|
||||
modules = {
|
||||
system = {
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
anki
|
||||
asciinema
|
||||
beets
|
||||
blender
|
||||
bubblewrap
|
||||
cachix
|
||||
calc
|
||||
|
|
|
@ -12,11 +12,6 @@
|
|||
fish
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
CARAPACE_BRIDGES = "fish,inshellisense,carapace,clap,bash";
|
||||
CARAPACE_MATCH = 1;
|
||||
};
|
||||
|
||||
files = {
|
||||
".config/nushell/config.nu".source = ./config.nu;
|
||||
".config/nushell/prompt.nu".source = ./prompt.nu;
|
||||
|
|
|
@ -47,7 +47,7 @@ let
|
|||
confirm-close-surface = "false";
|
||||
cursor-style-blink = "false";
|
||||
gtk-single-instance = "true";
|
||||
gtk-tabs-location = "top";
|
||||
gtk-tabs-location = "bottom";
|
||||
gtk-wide-tabs = false;
|
||||
mouse-hide-while-typing = "true";
|
||||
resize-overlay-duration = "0s";
|
||||
|
@ -56,12 +56,10 @@ let
|
|||
theme = "GruvboxDarkHard";
|
||||
window-decoration = "none";
|
||||
window-padding-balance = true;
|
||||
window-padding-x = 2;
|
||||
window-padding-y = 2;
|
||||
window-theme = "system";
|
||||
window-padding-x = 8;
|
||||
window-padding-y = 8;
|
||||
window-theme = "ghostty";
|
||||
cursor-style = "block";
|
||||
gtk-adwaita = true;
|
||||
gtk-titlebar = false;
|
||||
|
||||
# Whether to automatically copy selected text to the clipboard. true will prefer to copy to the selection clipboard, otherwise it will copy to the system clipboard.
|
||||
# The value clipboard will always copy text to the selection clipboard as well as the system clipboard.
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
|
@ -19,13 +18,13 @@ let
|
|||
doInstallCheck = false;
|
||||
meta.mainProgram = "nil";
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
environment = {
|
||||
defaultPackages = [ ];
|
||||
systemPackages =
|
||||
(with pkgs; [
|
||||
with pkgs;
|
||||
[
|
||||
asciinema
|
||||
atuin
|
||||
bat
|
||||
|
@ -109,9 +108,9 @@ in
|
|||
ty
|
||||
python3
|
||||
comma
|
||||
radicle-node
|
||||
radicle-tui
|
||||
])
|
||||
radicle-node
|
||||
]
|
||||
++ [
|
||||
nil
|
||||
];
|
||||
|
|
245
modules/programs/gui/brave.mod.nix
Normal file
245
modules/programs/gui/brave.mod.nix
Normal file
|
@ -0,0 +1,245 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.lists) map;
|
||||
inherit (lib.strings) concatStringsSep;
|
||||
|
||||
# https://peter.sh/experiments/chromium-command-line-switches/
|
||||
flags = concatStringsSep " " [
|
||||
"--no-first-run"
|
||||
"--enable-gpu-rasterization"
|
||||
"--force-dark-mode"
|
||||
"--enable-smooth-scrolling"
|
||||
"--enable-features=UseOzonePlatform"
|
||||
"--ozone-platform=wayland"
|
||||
"--user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3'"
|
||||
# https://source.chromium.org/chromium/chromium/src/+/main:headless/app/headless_shell_switches.cc;drc=3556fbff47c18193f4a39d2496596e89b8307a15;l=47-55
|
||||
"--password-store=gnome-keyring"
|
||||
];
|
||||
brave-wrapped = pkgs.symlinkJoin {
|
||||
name = "brave";
|
||||
paths = [
|
||||
pkgs.brave
|
||||
];
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/brave --append-flags "${flags}"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
# brave-wrapped
|
||||
];
|
||||
programs.chromium = {
|
||||
enable = false;
|
||||
|
||||
# This sets a bunch of flags to make Brave usable.
|
||||
# This was made possible through several similar projects,
|
||||
# which facilitated this process a lot:
|
||||
# https://gist.github.com/yashgorana/869542b66d7188729716379abe7464e0
|
||||
# https://github.com/yashgorana/chrome-debloat
|
||||
# https://chromeenterprise.google/intl/en_ca/policies
|
||||
extraOpts = {
|
||||
BraveRewardsDisabled = true;
|
||||
BraveWalletDisabled = true;
|
||||
|
||||
# Setting the policy to False prevents Google Chrome from showing
|
||||
# product promotional content.
|
||||
PromotionsEnabled = false;
|
||||
TorDisabled = true;
|
||||
BraveVPNDisabled = true;
|
||||
BraveAIChatEnabled = false;
|
||||
SyncDisabled = true;
|
||||
|
||||
# Setting the policy to False stops Google Chrome from ever checking if
|
||||
# it's the default and turns user controls off for this option.
|
||||
DefaultBrowserSettingEnabled = false;
|
||||
|
||||
# In background mode, a Google Chrome process is started on OS sign-in and keeps
|
||||
# running when the last browser window is closed, allowing background apps and
|
||||
# the browsing session to remain active.
|
||||
BackgroundModeEnabled = false;
|
||||
|
||||
# By default the browser will show media recommendations that are personalized to the user.
|
||||
# Setting this policy to Disabled will result in these recommendations being hidden from the user.
|
||||
MediaRecommendationsEnabled = false;
|
||||
|
||||
# This policy controls the availability of the shopping list feature.
|
||||
# If enabled, users will be presented with UI to track the price of
|
||||
# the product displayed on the current page. The tracked product will
|
||||
# be shown in the bookmarks side panel. If this policy is set to Enabled
|
||||
# or not set, the shopping list feature will be available to users.
|
||||
# If this policy is set to Disabled, the shopping list feature will be unavailable.
|
||||
ShoppingListEnabled = false;
|
||||
BraveSyncUrl = "";
|
||||
PrivacySandboxFingerprintingProtectionEnabled = true;
|
||||
PrivacySandboxIpProtectionEnabled = true;
|
||||
DefaultSearchProviderEnabled = true;
|
||||
DefaultSearchProviderName = "Kagi";
|
||||
DefaultSearchProviderSearchURL = "https://kagi.com/search?q={searchTerms}";
|
||||
DefaultSearchProviderNewTabURL = "https://kagi.com";
|
||||
SearchSuggestEnabled = true;
|
||||
DefaultSearchProviderSuggestURL = "https://kagi.com/api/autosuggest?q={searchTerms}";
|
||||
|
||||
# Prevents webpage elements that aren't from the domain
|
||||
# that's in the browser's address bar from setting cookies.
|
||||
BlockThirdPartyCookies = true;
|
||||
DnsOverHttpsMode = "automatic";
|
||||
MetricsReportingEnabled = false;
|
||||
SafeBrowsingExtendedReportingEnabled = false;
|
||||
# Setting the policy to Enabled means URL-keyed anonymized data collection,
|
||||
# which sends URLs of pages the user visits to Google to make searches and
|
||||
# browsing better, is always active.
|
||||
# Setting the policy to Disabled results in no URL-keyed anonymized data collection.
|
||||
UrlKeyedAnonymizedDataCollectionEnabled = false;
|
||||
|
||||
# Google Chrome in-product surveys collect user feedback for the browser.
|
||||
# Survey responses are not associated with user accounts. When this policy
|
||||
# is Enabled or not set, in-product surveys may be shown to users.
|
||||
# When this policy is Disabled, in-product surveys are not shown to users.
|
||||
FeedbackSurveysEnabled = false;
|
||||
|
||||
PasswordManagerEnabled = false;
|
||||
# Disable sharing user credentials with other users
|
||||
PasswordSharingEnabled = false;
|
||||
# Disable leak detection for entered credentials
|
||||
PasswordLeakDetectionEnabled = false;
|
||||
|
||||
AutofillAddressEnabled = false;
|
||||
AutofillCreditCardEnabled = false;
|
||||
ParcelTrackingEnabled = false;
|
||||
|
||||
# Setting the policy to 2 denies sites tracking the users' physical locationing.
|
||||
DefaultGeolocationSetting = 2;
|
||||
DefaultNotificationsSetting = 2;
|
||||
# Setting the policy to BlockLocalFonts (value 2) automatically denies the local fonts
|
||||
# permission to sites by default. This will limit the ability of sites to see
|
||||
# information about local fonts.
|
||||
DefaultLocalFontsSetting = 2;
|
||||
|
||||
# Setting the policy to 1 lets websites access and use sensors such as motion and light.
|
||||
# Setting the policy to 2 denies access to sensors.
|
||||
DefaultSensorsSetting = 2;
|
||||
# Setting the policy to 3 lets websites ask for access to serial ports.
|
||||
# Setting the policy to 2 denies access to serial ports.
|
||||
DefaultSerialGuardSetting = 2;
|
||||
# This policy allows to control the Related Website Sets feature enablement.
|
||||
# This policy overrides the FirstPartySetsEnabled policy.
|
||||
# When this policy is set to False, the Related Website Sets feature is disabled.
|
||||
RelatedWebsiteSetsEnabled = false;
|
||||
|
||||
# This policy controls the sign-in behavior of the browser.
|
||||
# It allows you to specify if the user can sign in to Google Chrome with
|
||||
# their account and use account related services like Google Chrome Sync.
|
||||
BrowserSignin = 0;
|
||||
|
||||
QuicAllowed = true;
|
||||
|
||||
# Setting the policy to Enabled turns the internal PDF viewer off in Google Chrome,
|
||||
# treats PDF files as a download, and lets users open PDFs with the default application.
|
||||
AlwaysOpenPdfExternally = true;
|
||||
|
||||
SpellcheckEnabled = false;
|
||||
EnableDoNotTrack = true;
|
||||
|
||||
# If this policy is set to Disabled, Google Chrome will not allow guest profiles to be started.
|
||||
# Guest logins are Google Chrome profiles where all windows are in incognito mode.
|
||||
BrowserGuestModeEnabled = false;
|
||||
|
||||
# This policy controls which software stack is used to communicate with the DNS server:
|
||||
# the Operating System DNS client, or Google Chrome's built-in DNS client. This policy
|
||||
# does not affect which DNS servers are used: if, for example, the operating system is
|
||||
# configured to use an enterprise DNS server, that same server would be used by the
|
||||
# built-in DNS client. It also does not control if DNS-over-HTTPS is used; Google Chrome
|
||||
# will always use the built-in resolver for DNS-over-HTTPS requests.
|
||||
# If this policy is set to Disabled, the built-in DNS client will only be used when DNS-over-HTTPS is in use.
|
||||
BuiltinDnsClientEnabled = false;
|
||||
|
||||
# Control if Manifest v2 extensions can be used by browser.
|
||||
ExtensionManifestV2Availability = 2;
|
||||
|
||||
# Setting the policy to True means Google Chrome uses alternate error
|
||||
# pages built into (such as "page not found"). Setting the policy to
|
||||
# False means Google Chrome never uses alternate error pages.
|
||||
AlternateErrorPagesEnabled = false;
|
||||
|
||||
"3rdparty" = {
|
||||
extensions = {
|
||||
# Ublock Origin
|
||||
cjpalhdlnbpafiamejdnhcphjbkeiagm = {
|
||||
toOverwrite = {
|
||||
filterLists = [
|
||||
# Default UBlock Origin filter lists
|
||||
"user-filters"
|
||||
"ublock-filters"
|
||||
"ublock-badware"
|
||||
"ublock-privacy"
|
||||
"ublock-abuse"
|
||||
"ublock-unbreak"
|
||||
"easylist"
|
||||
"easyprivacy"
|
||||
"urlhaus-1"
|
||||
"plowe-0"
|
||||
|
||||
"https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/privacy_essentials.txt"
|
||||
"https://raw.githubusercontent.com/hagezi/dns-blocklists/refs/heads/main/adblock/pro.plus.mini.txt"
|
||||
"https://raw.githubusercontent.com/DandelionSprout/adfilt/refs/heads/master/LegitimateURLShortener.txt"
|
||||
"https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/annoyance_list.txt"
|
||||
"https://raw.githubusercontent.com/DandelionSprout/adfilt/refs/heads/master/BrowseWebsitesWithoutLoggingIn.txt"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
extensions = [
|
||||
# NoScript
|
||||
"doojmbjmlfjjnbmnoijecmcbfeoakpjm"
|
||||
# KeePassXC-Browser
|
||||
# "oboonakemofpalcgghocfoadofidjkkk"
|
||||
# Bitwarden Password Manager
|
||||
"nngceckbapebfimnlniiiahkandclblb"
|
||||
# Catppuccin Mocha
|
||||
"bkkmolkhemgaeaeggcmfbghljjjoofoh"
|
||||
# Dark Reader
|
||||
"eimadpbcbfnmbkopoojfekhnkhdbieeh"
|
||||
# UBlock Origin
|
||||
"cjpalhdlnbpafiamejdnhcphjbkeiagm"
|
||||
# I still don't care about cookies
|
||||
"edibdbjcniadpccecjdfdjjppcpchdlm"
|
||||
# Sponsorblock
|
||||
"mnjggcdmjocbbbhaepdhchncahnbgone"
|
||||
# Decentraleyes
|
||||
"ldpochfccmkkmhdbclfhpagapcfdljkj"
|
||||
# Humble new tab page
|
||||
"mfgdmpfihlmdekaclngibpjhdebndhdj"
|
||||
];
|
||||
};
|
||||
|
||||
networking.extraHosts =
|
||||
concatStringsSep "\n"
|
||||
<| map (addr: "localhost ${addr}") [
|
||||
"rewards.brave.com"
|
||||
"api.rewards.brave.com"
|
||||
"grant.rewards.brave.com"
|
||||
"variations.brave.com"
|
||||
"laptop-updates.brave.com"
|
||||
"static.brave.com"
|
||||
"static1.brave.com"
|
||||
"crlsets.brave.com"
|
||||
"ads.brave.com"
|
||||
"ads-admin.brave.com"
|
||||
"ads-help.brave.com"
|
||||
"referrals.brave.com"
|
||||
"analytics.brave.com"
|
||||
"search.anonymous.ads.brave.com"
|
||||
"p3a.brave.com"
|
||||
"variations.brave.com"
|
||||
"star-randsrv.bsg.brave.com"
|
||||
"usage-ping.brave.com"
|
||||
];
|
||||
}
|
|
@ -16,7 +16,7 @@ in
|
|||
wayland = mkEnableOption "wayland";
|
||||
};
|
||||
|
||||
config = mkIf true {
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.prismlauncher ];
|
||||
};
|
||||
}
|
19
modules/services/mako.mod.nix
Normal file
19
modules/services/mako.mod.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
mako-wrapped = pkgs.symlinkJoin {
|
||||
name = "mako-wrapped";
|
||||
paths = [ pkgs.mako ];
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/mako --add-flags "\
|
||||
--font 'Lexend 11' \
|
||||
--border-radius 8 \
|
||||
--padding 8 \
|
||||
--border-size 5 \
|
||||
--default-timeout 4000"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [ mako-wrapped ];
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
|
||||
import qs.config
|
||||
|
||||
WlrLayershell {
|
||||
id: root
|
||||
required property ShellScreen screen
|
||||
|
||||
property var overviewZoom: 0.6
|
||||
layer: WlrLayer.Background
|
||||
namespace: "shell:overview"
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
property int bottomMargin: (screen.height - screen.height * overviewZoom) / 2
|
||||
implicitHeight: 65
|
||||
implicitWidth: screen.width * overviewZoom
|
||||
anchors {
|
||||
bottom: true
|
||||
}
|
||||
margins {
|
||||
bottom: root.bottomMargin - root.implicitHeight
|
||||
}
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
opacity: 0.6
|
||||
color: Colors.base
|
||||
}
|
||||
Text {
|
||||
color: "white"
|
||||
font.pixelSize: 20
|
||||
text: "TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST "
|
||||
}
|
||||
color: "transparent"
|
||||
}
|
|
@ -6,4 +6,27 @@ import QtQuick
|
|||
Singleton {
|
||||
id: root
|
||||
|
||||
readonly property QtObject bar: QtObject {
|
||||
readonly property int width: 50
|
||||
readonly property var colors: QtObject {
|
||||
readonly property color bar: "#1e1e2e"
|
||||
readonly property color barOutline: "#50ffffff"
|
||||
readonly property color widget: "#25ceffff"
|
||||
readonly property color widgetActive: "#80ceffff"
|
||||
readonly property color widgetOutline: "#40ffffff"
|
||||
readonly property color widgetOutlineSeparate: "#20ffffff"
|
||||
readonly property color separator: "#60ffffff"
|
||||
}
|
||||
}
|
||||
|
||||
readonly property QtObject border: QtObject {
|
||||
readonly property int thickness: 0
|
||||
readonly property color color: "#1e1e2e"
|
||||
readonly property int rounding: 0
|
||||
}
|
||||
|
||||
readonly property QtObject volumeslider: QtObject {
|
||||
readonly property int width: 50
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ PanelWindow {
|
|||
|
||||
property string basePath: "file:///home/cr/Documents/Backgrounds/"
|
||||
property var absPath: folderModel.get(Math.floor(Math.random() * folderModel.count), "filePath")
|
||||
property var finalPath: basePath + "/whole_foods.png"
|
||||
property var finalPath: absPath
|
||||
|
||||
// property bool _: log()
|
||||
// function log() {
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
|
||||
import qs.config
|
||||
|
||||
WlrLayershell {
|
||||
id: root
|
||||
property ShellScreen screen
|
||||
|
||||
property var overviewZoom: 0.6
|
||||
property int bottomMargin: (screen.height - screen.height * overviewZoom) / 2
|
||||
layer: WlrLayer.Background
|
||||
namespace: "shell:overview"
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
|
||||
implicitHeight: screen.height * 0.1 * overviewZoom
|
||||
implicitWidth: screen.width * overviewZoom
|
||||
anchors {
|
||||
bottom: true
|
||||
}
|
||||
margins {
|
||||
bottom: root.bottomMargin - root.implicitHeight
|
||||
}
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
opacity: 0.6
|
||||
color: Colors.base
|
||||
}
|
||||
Text {
|
||||
color: "white"
|
||||
font.pixelSize: 20
|
||||
text: "TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST "
|
||||
}
|
||||
color: "transparent"
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
import Quickshell
|
||||
import QtQuick
|
||||
import QtQuick.Shapes
|
||||
import QtQuick.Layouts
|
||||
|
||||
import qs.config
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
implicitWidth: shape.implicitWidth
|
||||
implicitHeight: shape.implicitHeight
|
||||
color: "transparent"
|
||||
height: 50
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
// Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
antialiasing: true
|
||||
|
||||
property int rounding: root.height / 3
|
||||
|
||||
Shape {
|
||||
id: shape
|
||||
anchors.centerIn: parent
|
||||
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
implicitWidth: 300
|
||||
implicitHeight: root.height
|
||||
|
||||
|
||||
ShapePath {
|
||||
fillColor: Colors.base
|
||||
strokeWidth: -1
|
||||
strokeColor: Colors.mantle
|
||||
startY: root.implicitHeight
|
||||
|
||||
PathArc {
|
||||
relativeY: -root.rounding * 2
|
||||
relativeX: root.rounding * 2
|
||||
radiusX: root.rounding * 2
|
||||
radiusY: root.rounding * 2
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
PathArc {
|
||||
relativeY: -root.rounding
|
||||
relativeX: root.rounding
|
||||
radiusX: root.rounding
|
||||
radiusY: root.rounding
|
||||
}
|
||||
PathLine { relativeX: root.width / 2; relativeY: 0 }
|
||||
PathArc {
|
||||
relativeY: root.rounding
|
||||
relativeX: root.rounding
|
||||
radiusX: root.rounding
|
||||
radiusY: root.rounding
|
||||
}
|
||||
PathArc {
|
||||
relativeY: root.rounding * 2
|
||||
relativeX: root.rounding * 2
|
||||
radiusX: root.rounding * 2
|
||||
radiusY: root.rounding * 2
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
anchors.centerIn: parent
|
||||
|
||||
SystemClock {
|
||||
id: clock
|
||||
precision: SystemClock.Seconds
|
||||
}
|
||||
|
||||
Text {
|
||||
id: text
|
||||
anchors.centerIn: parent
|
||||
property var date: Date()
|
||||
|
||||
text: Qt.formatDateTime(clock.date, "hh mm")
|
||||
|
||||
font.family: "ComicShannsMono Nerd Font Mono"
|
||||
font.weight: Font.ExtraBold
|
||||
font.pointSize: 12
|
||||
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Widgets
|
||||
|
||||
import QtQuick.Shapes
|
||||
import QtQuick
|
||||
|
||||
import qs.config
|
||||
|
||||
WlrLayershell {
|
||||
id: root
|
||||
required property ShellScreen screen
|
||||
|
||||
color: "transparent"
|
||||
property int rounding: implicitHeight / 3
|
||||
|
||||
implicitWidth: clock.implicitWidth
|
||||
implicitHeight: clock.implicitHeight
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
right: true
|
||||
}
|
||||
|
||||
layer: WlrLayer.Top
|
||||
namespace: "shell:overview"
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
|
||||
Rectangle {
|
||||
id: clock
|
||||
visible: handler.hovered
|
||||
implicitHeight: 60
|
||||
implicitWidth: shape.implicitWidth
|
||||
color: "transparent"
|
||||
|
||||
Behavior on implicitHeight {
|
||||
NumberAnimation {
|
||||
duration: 400
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
Shape {
|
||||
id: shape
|
||||
height: clock.visible ? parent.height : 0
|
||||
width: parent.width
|
||||
|
||||
ShapePath {
|
||||
id: path
|
||||
fillColor: Colors.base
|
||||
strokeWidth: -1
|
||||
|
||||
PathArc {
|
||||
relativeX: root.rounding * 2
|
||||
relativeY: root.rounding * 2
|
||||
radiusX: root.rounding * 2
|
||||
radiusY: root.rounding * 2
|
||||
}
|
||||
PathArc {
|
||||
relativeX: root.rounding
|
||||
relativeY: root.rounding
|
||||
radiusX: root.rounding
|
||||
radiusY: root.rounding
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
PathLine {
|
||||
relativeX: 200
|
||||
relativeY: 0
|
||||
}
|
||||
PathArc {
|
||||
relativeX: root.rounding
|
||||
relativeY: -root.rounding
|
||||
radiusX: root.rounding
|
||||
radiusY: root.rounding
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
PathArc {
|
||||
relativeX: root.rounding * 2
|
||||
relativeY: -root.rounding * 2
|
||||
radiusX: root.rounding * 2
|
||||
radiusY: root.rounding * 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: handler
|
||||
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
|
||||
import qs.modules
|
||||
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
||||
delegate: Component {
|
||||
Scope {
|
||||
id: scope
|
||||
required property ShellScreen modelData
|
||||
|
||||
BackgroundImage {
|
||||
id: backgroundimage
|
||||
screen: scope.modelData
|
||||
}
|
||||
BackgroundImage {
|
||||
id: background_overview
|
||||
screen: scope.modelData
|
||||
|
||||
WlrLayershell.namespace: "shell:background-overview"
|
||||
}
|
||||
|
||||
// ClockPopup {
|
||||
// screen: scope.modelData
|
||||
// }
|
||||
// Rectangle {
|
||||
// implicitHeight: 72
|
||||
// Clock {}
|
||||
// }
|
||||
|
||||
TopBar {
|
||||
id: topBar
|
||||
screen: scope.modelData
|
||||
}
|
||||
// BottomBar {
|
||||
// id: bottomBar
|
||||
// screen: scope.modelData
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
import qs.config
|
||||
|
||||
WlrLayershell {
|
||||
id: root
|
||||
property ShellScreen screen
|
||||
|
||||
property var overviewZoom: 0.6
|
||||
property int bottomMargin: (screen.height - screen.height * overviewZoom) / 2
|
||||
property int barHeight: screen.height * 0.1 * overviewZoom
|
||||
|
||||
layer: WlrLayer.Background
|
||||
namespace: "shell:overview"
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
|
||||
implicitWidth: screen.width * overviewZoom
|
||||
implicitHeight: screen.height * 0.1 * overviewZoom
|
||||
|
||||
color: "transparent"
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
}
|
||||
margins {
|
||||
top: root.bottomMargin - root.implicitHeight
|
||||
}
|
||||
// Rectangle {
|
||||
// anchors.fill: parent
|
||||
// color: "transparent"
|
||||
// border.width: 1
|
||||
// }
|
||||
RowLayout {
|
||||
id: layout
|
||||
Layout.fillHeight: parent
|
||||
Layout.fillWidth: parent
|
||||
|
||||
// Clock {
|
||||
// Layout.preferredHeight: root.barHeight
|
||||
// }
|
||||
}
|
||||
}
|
100
modules/style/quickshell/shell/modules/drawers/Drawers.qml
Normal file
100
modules/style/quickshell/shell/modules/drawers/Drawers.qml
Normal file
|
@ -0,0 +1,100 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
import QtQuick.Effects
|
||||
|
||||
import qs.modules.bar
|
||||
|
||||
import qs.config
|
||||
import qs.modules
|
||||
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
||||
Scope {
|
||||
id: scope
|
||||
required property ShellScreen modelData
|
||||
|
||||
Exclusions {
|
||||
screen: scope.modelData
|
||||
bar: bar
|
||||
}
|
||||
|
||||
PanelWindow {
|
||||
id: win
|
||||
|
||||
screen: scope.modelData
|
||||
color: "transparent"
|
||||
|
||||
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.None
|
||||
|
||||
// Clickthrough mask.
|
||||
// Clickable areas of the window are determined by the provided region.
|
||||
mask: Region {
|
||||
// Start at the bottom left; right of the bar and on top of the border
|
||||
x: bar.implicitWidth
|
||||
y: Config.border.thickness
|
||||
|
||||
// Width is the window width - the bar's width - the border thickness
|
||||
width: win.width - bar.implicitWidth - Config.border.thickness
|
||||
|
||||
// Height is window width - the border thickness x2 —top border and bottom border.
|
||||
height: win.height - Config.border.thickness * 2
|
||||
|
||||
// Setting the intersection mode to Xor will invert the mask and make everything in the mask region not clickable and pass through clicks inside it through the window.
|
||||
intersection: Intersection.Xor
|
||||
// Region {
|
||||
// item: volume
|
||||
// intersection: Intersection.Subtract
|
||||
// }
|
||||
}
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
bottom: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
Item {
|
||||
id: background
|
||||
|
||||
anchors.fill: parent
|
||||
visible: false
|
||||
|
||||
Border {
|
||||
bar: bar
|
||||
}
|
||||
|
||||
Backgrounds {
|
||||
bar: bar
|
||||
}
|
||||
}
|
||||
|
||||
MultiEffect {
|
||||
anchors.fill: source
|
||||
source: background
|
||||
shadowEnabled: true
|
||||
blurMax: 15
|
||||
}
|
||||
|
||||
Bar {
|
||||
id: bar
|
||||
screen: scope.modelData
|
||||
}
|
||||
}
|
||||
BackgroundImage {
|
||||
id: backgroundimage
|
||||
screen: scope.modelData
|
||||
}
|
||||
BackgroundImage {
|
||||
id: background_overview
|
||||
screen: scope.modelData
|
||||
|
||||
WlrLayershell.namespace: "shell:background-overview"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,8 +3,7 @@
|
|||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
// import qs.modules.drawers
|
||||
import qs.modules
|
||||
import qs.modules.drawers
|
||||
import qs
|
||||
|
||||
ShellRoot {
|
||||
|
@ -12,5 +11,5 @@ ShellRoot {
|
|||
|
||||
Component.onCompleted: [Launcher.init(), AudioPopup.init()]
|
||||
|
||||
Main {}
|
||||
Drawers {}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ in
|
|||
directories = [
|
||||
"/etc/nixos"
|
||||
"/etc/nix"
|
||||
"/etc/ssh"
|
||||
"/etc/NetworkManager/system-connections"
|
||||
"/var/db/sudo"
|
||||
"/var/log"
|
||||
|
|
|
@ -8,6 +8,7 @@ let
|
|||
in
|
||||
{
|
||||
security = {
|
||||
sudo-rs.enable = mkForce false;
|
||||
sudo = {
|
||||
enable = true;
|
||||
# We use the default sudo package, but with insults if we
|
||||
|
|
|
@ -4,15 +4,11 @@
|
|||
"age": [
|
||||
{
|
||||
"recipient": "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArSy9XdnBQbld5Ly9ET3ZR\nb0U3aW16LytkOUdxNmNVUU40V3NZTWNnNEJjClA2WE5XS0xjdUN3TENoRWlaR2Vn\nQ0MzTnBzME42TVY0cFRQNk4xcng1dkEKLS0tIFJOSC9OT01TNTZTWERjRXFCZFVq\nbEpFRHpVYXI0YXJYcjVxN3hkWEpZM0kKynHKxZwBUWiCdUx/fqYsWWHmIJLrYGTC\naXQXbjR2fprPsyZb7tTZ4L8DtxdjKgmxsbgi+8QYumy/S/ivH4Gipw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQRE5xR1RISy9rM3FkOGpu\ncGRCL2ZYOU5PeXNhaUtXSWxRWXN5bWNkSmlnCjB1Q0VlNDhmNmVCME5IMTU5SzVV\nSUt3RVFGRFJMc21TTXFGTzJSYkpjRTgKLS0tIHVZZnh4cG1FendxSENNRmhVY1gv\ndG55UVdhN2Nka2hJS0NwbTBud1V0L28KxHGZdIQUQ3/fG5q4rFiBrXpISdqgXsIc\n05vEYEkO0PSOeFSAkOZiSgPPVmcCQMMHj4RyeHc/BdzUDZbGA/rGtw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiYVU3V2xkNm9qRGd5enBB\nK3YyRjN1YjhDbjRsbEdteVRFa3Q2QkNPZDNNCkI4Qk1kcU9XUlo2eXpDdnl0WFdN\nSnZweHFIZmQ0UjBoRmxzekxoRDhNRVEKLS0tIGE2d1o2czVMbXFzODl4NjZib2Nv\nNnVZMVJScGc0cTRlYzVocHpPdmlsekUKlsFnd1aNCDBBlCto+vBdchtaRBJ/7LJT\nrW4h5YE9RbbMF1TEJOJf+Pkeikgkv3EPOHdH3eJPJ5yckNA4tc67ag==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age16p3h2xu69lpy3f2msfs69q4uhu2hytkqk2p80ss9hxqcwky4cc6ss38x85",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBneUFoZ1FtYmJuRnppRHMx\nQWZQK2xGWmNFMXQvNldNSFVLMUVka1p2MmpNCkFWSHozVGQxeVRiZFVwRnU3RkEv\ncDYxRE1ESVNrcW45c0IxQWwwSlJ2aEUKLS0tIG0veVU3YXJuZURCS2JkOXptV09J\nQzlpNVBqSC9sQVh5dDJpb3c2M3dlOTQKu3PufhYt42QwB1ncc2QjBSdTbJ5EYu2z\nRFrAz2nq0rRDIjL4EFHdlSFWgI2amQwpbgZxy/+YeEpWO/Zd7uGX3w==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWeVFxRGhvSm1lTW5VeDlX\nbXlIS0JOZGpjTmd0U3NWMFY3aFdra3ZiazFRCjdpT0k2d0dyUXQwUjhEaWsvd2lp\nU1FvNFc3cVNKdXdGWFdjUGd4a2hrQzQKLS0tIFhtMkhCUFdoVzVIOFFEelNJMG1Q\nMk0wNXg0ekxNU0RzREJicHFvUzFkajgKe+2lC/eUPYfzdNNDEuOheXO7EioBg6HM\nJ25diaPvFSUypux76SdFHAXqd75gMcWbhpeFcOlhXMMQ01UPeXNlYA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-09-03T16:39:42Z",
|
||||
|
|
|
@ -9,19 +9,15 @@
|
|||
"age": [
|
||||
{
|
||||
"recipient": "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5WUlpSkI5dElCVmpzNEw5\nc2pTaFBxWWNoOVJsb0NBWkw4VFQ4aDN4WFU0CjBSKy9oc2pJVzl0M0Z3bUpvNzB4\neU1RT2JWMndHUUFITE03aDBDU1BoUVEKLS0tIC9DNE9ZUnJMb0V0dlpkSUFYNk1K\nTnhRMTl0eENpRmhhYlhKTVg4MGlSS3MKMWY+ezH2HjRd5p/KqUBCFU8sn+FmYd/f\nrHQZhPo481+U6zMyiiu35lcujNRcEtJfcIAL2tobiTDNLQs94re5fg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyVXBWbnJxWW80VEROOXFx\nVzJseVl3OXNkNWd6bFJOQkVBVENIc2xJTFdFCkFOOHFZMHBaUExsRlV2UmdTK0Ju\nWXlQeXF3RW9acnpWL0RzRnpqN3ZTL2MKLS0tIGlKaU40L2JFbExGbEpUSUNsaEFu\nOWZrR1FsMWMwN3ZSUHR0OXZxZ3Vacm8KlwLxvJoU3QJ6LdM+t0Xey9G4500FCVLy\nSsF7lYGT6WyNeD1G9qqirUysg4x3Kf3tIBlbgOtKovmabiE5kMLbBw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqYVZ4THhxVlkzRi9ETTht\nOWtINWUxU0R1SGZhK3FqbHdSWmlhaGc1WGpZCklqL2Jpb2F0bzJqYXZHZVZHS25L\nZVc0dnRBOG9lVTZYQkpkQTVKY04zTjQKLS0tIGdVK1Y2VFFMbTVmVWo2eFpKbFY1\nYU5LaW90eWxDNUlhMmRnTTEvRTA1ZkEKFnX/HzVMIK9XT+cO80cCzVJxIj3dicjG\nbvxz/o7/dVmmx0bUusWIiR/SA5JXPkbi0C8F+llkPoYV3idWUOvnKA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkVVgrdHRiMENMZHVKYXMx\nQ3BoRURCSVdIdEE1NFZ5TllOaUNYOCtzSndBCmszZ3FkQ25sdDF4YjhZcFlEbDY1\nWWF2ckhtdGNaTE1iRC9LdmE1ZkFtdEUKLS0tIGpaelYrWnVHY2M1MmhwL1F2OGhO\naHVyc0tDcU5iM3hiNHpvWTI4UzRtekUKC72surldBztOc6PGaoR+2Z8LlWkFRFRk\nISPQvqo7l0TCK1sbHv7aqOjb4R2mQNgYV9AiHRUhP5azdU4FfbLVVg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age18ga6m08fjs2azav73sl8y4xudhld9ger3zwpnc5euy2j3cjam35sstud9w",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwbFBXZFdFQjREeVpaelhQ\nWGVBOWNnNERYT0JGSDNsWDYzcFA1Q1R0ZlVRCjJ4V3R5UU1zT0FJTU5taEgrRmht\nY3J5OG1qREV1a3FTSy9hMmZubXVDMFEKLS0tIFplOHpkTmZkWDBYSUxQVkxjZ215\naS83dUdUMFVhVkZaWW55akxiM2dPaU0KTVp2Bwt9/UD42HJ9UJRYwWQrmbxxXdKF\ngjKHvWNiASiPczj/DDuGDR0tjbYvtS2DTqDLECr3EQYqRIiPW8Lq9g==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age16p3h2xu69lpy3f2msfs69q4uhu2hytkqk2p80ss9hxqcwky4cc6ss38x85",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3SStPblpVVFRpbk9FWGxl\nY25yUXpkUFlxV1lkSjlpZUZlY212L0prN21vCmtlVDJQcWV4TjlYNnFUSmI2Tkxp\nMHYrTi9aMmNlY25penJKR1NQN1VJWW8KLS0tIDNvVUcyUXdCR2xPTkZjWTRqenhm\nMk5oU0tOUHVmbmhUSklHQ2s5dVlLbVkKoRvSoy2BsJaOdCuOW1lD1vGpu8czakmA\nWztrXYqwo57E6z2dPjb0Fo/RJlo4OWQ2/bYOYYpq8aS1HvuRV5096w==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpOUpORGlEdXFWZVFyNTNw\nYVVBOGErOTYyTEkrRWUrbnhnUUNkUlQ5UEQwCjE4SkFqQUlJTHl5dE9iTkE0Vk9B\nc0RUa28va0R1TzFxd0N5WUZNYVUyTEUKLS0tIGNjRkorRzF5a1RmN0VMcFEycy9B\nS0hmOGthMFZlSWNWZnNFM3Y1TWhFZWsKF+JReUAwAFY7J5P5kFBeq/8vnK6idNVx\n0mc0IoeCFXLFONUKs4D7na5YRTnih5s1X74wrLSCLFpNd26Kbw9lsQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-09-01T21:25:00Z",
|
||||
|
|
|
@ -1,22 +1,17 @@
|
|||
{
|
||||
"factorio_token": "ENC[AES256_GCM,data:l6o2LzFRcY43lieDBaFOk5ACqmp408AZNinfF2c7,iv:AiXRw30CZ9dJYP2jBvK89LiwG+d8sbQmyWVMDDUpxYU=,tag:/oHfsW6NFmr2bnH0WXMQWw==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwNmlKZkpZMC80SXU4TUdt\nSC94eVFEMXk4c2pVcGx6UmZhaVVKc2VtOFZjClhZSzI4MGdyc1FaZ255dnhiQkI4\nUnBsNGFsOXVtZ1NBSkcvKzZiRG41UEEKLS0tIFdhSXc2bUErUmJydnJqUERLaVB6\nQko2RkdOeE80VEc2cmQwbkpLMTBFa1kKQ1SjECLkGyI48s6ky9JReFtlpB8l11dd\nvXTCtvt8hMoMckvpPXXLUiLCE0O33mLJhON7qqVaRXPyAV4XPjY3vQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRT1VLNEVwZ09TODBYd0ZR\nQ2FUOXYzZGxQWkNmSUt5N0JhYlk5Wm9kWnc0Cm5XbUQyU1lBWUFBNVdLSk50aHI0\naTk0by9KOWw4VkJ2a0tHdjUyRzB1bU0KLS0tIDVEekdTNnNBamV5WWhmcmJMV3Vh\nKzZaVHBVT1F6U2FoQUZrenNyQnZJZUkKwQc4NaU0xk1TWqSHGYnbnKZGtC22j2MD\nUmlg9qmuGOy371Djx6dgdnXQy1367PTpoT+MWFWsMEPNbTbimHmJxA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByRWRDemoxSFI1c1FIMDYy\neUxWMjlhNTBsMlRoZkVUM2tFVDQwQytuV0JzCm8xRFNwM1lnY1doMGRxZ0ExWk1Z\nQVhQdkFOMTF6RVlGK2xZTGFlcXJKU2cKLS0tIHVUalhRbVlvZVQxVVlsZm1LbGhP\nZmd4dEp0V2V4aTNsWms1eU1XTVBDWHcKIn2OHML1JX/Nji446wnw8qJFn1Bo0Bv+\ncq2tcEZeZMEq4/F/u4OWmAfGqVNrMrn7Chr4CjniMEP3gK6tAr4qSg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age16p3h2xu69lpy3f2msfs69q4uhu2hytkqk2p80ss9hxqcwky4cc6ss38x85",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUM1JCSkNQVW1iWUhSc285\nMFRienl6MUc1b29iMGs5QTcrOXRRYzFBL0g0Ck1UdVNxOHpEeWJuUWZxOWdJa29m\ncGxFZ2tUNzZLNEJtRjFiUkp6RzFiNmsKLS0tIC9XdGxmWUIyTVM3bitDU1lXcEFR\neFBacnVDeHNoNXVjUkl4OVk4TGVCa1kKjfIvM9SNYY+usnRr09db+4obAhByE3/h\noVJufP5RqqHtm0gWyJKXFpUcIhZUVUaRX4pqPmnhuz1pNC+4NXOXuA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2QkJqblYxNjBPNitUeW5j\nZloxL2VwV0dTOTErSTd1ajNqTlRqTWdOMmhzCnlsT1ZiYVdCVVVQOXlCY0hKeVJz\nbDgyeXhUaWFGY0lNM0JyNHAvR2dSRE0KLS0tIGVBdlB6ZU1PNStkbloyeHhPdG1L\nUnhzYm9qQldOVVhjV2o3R3cvNFRoYzgK+D7d7VuBTm3SZJ5ErURJmBzC4mh6hH/0\nP81s+n3No8QEIzt9FVj/WuKo0T9wm9X7l4ItzD27Y3xOCmAtpM7Fwg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-09-04T19:38:09Z",
|
||||
"mac": "ENC[AES256_GCM,data:2QT0gRTp1eiu+ugKJXeLWcw1O+9RElL5R8zl0vUu8gBpR381xW7anQIwpZ1A/3rKnaosD4g/yvsoXioMv6ueeZ66A4HX8gXhQbGt2o4In2rY2/LpXMIG4xS3u380kvaCfU83Aib+rkOKfOyeNaOtN8nNiyIWwZeHzj7AObng+6o=,iv:wZVGSFiFU5ddjw5HMZwYc2khKyTYHVYQD6WOWGcoFxM=,tag:ZDkJsTKQzzb8PyaVOr+TrA==,type:str]",
|
||||
"lastmodified": "2025-09-01T22:22:52Z",
|
||||
"mac": "ENC[AES256_GCM,data:FJo1PM2DqR3ImZoo7zl3IZRVKHdkTD1f5UIf/qSIVNA5UiSZuGX22XCZQRaGFc0XhI6oFLlnqXHGFUjcm5W487oVa9L/DiLE8iqCnMFcg2TmDb2n0BBzTkFusRaG1xBk4DvXGwXyRqY6kkn3vL1MoOmKJK13UkpTcgKa0bVWwBM=,iv:Qc0S5CBkgBAyKpEeBaqhZZsnDXkr5pHvTFVR99uGcNw=,tag:KBGcvx2j/BEPcd9bpLuY7A==,type:str]",
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.10.2"
|
||||
}
|
||||
|
|
|
@ -24,13 +24,15 @@ let
|
|||
# nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'.
|
||||
# sops_master_key
|
||||
master_key = "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc";
|
||||
# tempeance /persist/etc/ssh/ssh_host_ed25519_key
|
||||
temperance_host_key = "age16p3h2xu69lpy3f2msfs69q4uhu2hytkqk2p80ss9hxqcwky4cc6ss38x85";
|
||||
# hermit /etc/ssh/ssh_host_ed25519_key
|
||||
hermit_host_key = "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff";
|
||||
|
||||
# tower /etc/ssh/ssh_host_ed25519_key
|
||||
tower_host_key = "age18ga6m08fjs2azav73sl8y4xudhld9ger3zwpnc5euy2j3cjam35sstud9w";
|
||||
keys = concatStringsSep "," [
|
||||
master_key
|
||||
hermit_host_key
|
||||
];
|
||||
|
||||
sops = pkgs.symlinkJoin {
|
||||
name = "sops-wrapped";
|
||||
|
@ -55,7 +57,6 @@ let
|
|||
key_groups = mkRecipients [
|
||||
master_key
|
||||
hermit_host_key
|
||||
temperance_host_key
|
||||
];
|
||||
}
|
||||
{
|
||||
|
@ -64,7 +65,6 @@ let
|
|||
master_key
|
||||
hermit_host_key
|
||||
tower_host_key
|
||||
temperance_host_key
|
||||
];
|
||||
}
|
||||
{
|
||||
|
@ -72,7 +72,6 @@ let
|
|||
key_groups = mkRecipients [
|
||||
master_key
|
||||
tower_host_key
|
||||
temperance_host_key
|
||||
];
|
||||
}
|
||||
{
|
||||
|
@ -80,7 +79,6 @@ let
|
|||
key_groups = mkRecipients [
|
||||
master_key
|
||||
hermit_host_key
|
||||
temperance_host_key
|
||||
];
|
||||
}
|
||||
{
|
||||
|
@ -88,7 +86,6 @@ let
|
|||
key_groups = mkRecipients [
|
||||
master_key
|
||||
hermit_host_key
|
||||
temperance_host_key
|
||||
];
|
||||
}
|
||||
];
|
||||
|
@ -97,10 +94,8 @@ let
|
|||
secretFiles = filter (file: hasSuffix "json" file) <| attrNames <| readDir ./.;
|
||||
|
||||
secretNames = file: remove "sops" <| attrNames <| fromJSON <| readFile <| ./. + "/${file}";
|
||||
fileModes = {
|
||||
"personal_info.json" = "0444";
|
||||
"factorio_token" = "0444";
|
||||
};
|
||||
|
||||
fileModes."personal_info.json" = "0444";
|
||||
|
||||
generateSecrets =
|
||||
file:
|
||||
|
|
|
@ -4,15 +4,11 @@
|
|||
"age": [
|
||||
{
|
||||
"recipient": "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlLzZCMVNkcmRMQTIvdk5N\nUVZ6TUVBT2s3RTYxMVlJZHU4RzFjVUdIckVZCks2MDRJSDdYVkpHN3llUXNnZDc5\nV29zMm12TmN6K0t3VmY2MmFBVVdZd1EKLS0tIFNXREFUOUoyZTNuWFdNdXBYY3FT\naTBickFBOUhBUTFvZXhMVHNGRmR0T3MKdSUtmD9xB5qypB+hj62/U57VyOzj5yt7\nhOoNvkOyVJuRWwtwEo8SBMKvFs+mzULqHJh7slFamM6VjEokhDE+zw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzYTJaa1RETEFOdENzQXl6\nakg0bk1icTllRHdkb0Q1WGFxMWE5RXdGTVhzCmhsRkVVUC80Um5CcUtrY2NQVmJv\nYzZCVUllSi9hamdKemduME9BdGJjM0UKLS0tIC8zS3RaUUpBSm4xK1ozeXFHQzdz\nYmd2Z3V3ODkvQjcvdnliVVNPdmY2azAKA/2YkNAjwbTWdoQLV8qM012EzAx8yM8l\nH1cSLyfXfulUA3DGTeSck8MJmd/c5kTSkH6TqGs2XxnGSI8W92c/Uw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsaXRGOXp5ZEVFcGN5V1JL\nM1NIcEhMUEFOZUJxRi9iYXJSRXhEZHVWZUdBCmxtN00yRXV2U0RlOUhiVU5PS2xz\nUWRYdHltTnlaQmR3SnJpY2VTbThKOGMKLS0tIEZiQlJLRDhvL2pMaEx5ZEpoS2xi\nQmdxcG9lTHVVYUlnY3JyOW1ybnEwc2sKqi80VUMu5lgXPbkQDGp4C7JuWSwESSqy\nVbm4TdvAXEn69t03O4+Vff+Bx5HsAzcWerA1+ZvlLBdkAYcGC2YKIw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age16p3h2xu69lpy3f2msfs69q4uhu2hytkqk2p80ss9hxqcwky4cc6ss38x85",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkMjJBb3RROUFkWURZejlv\nYXVXK0pkK2ZPTHpSZEJoaTlFY2hYMm1xREQ4Clh1VFFWVkRqTnJoT01EZkg3VytX\nakZ4UUJ4MSt4WVg3R2ZRRXJraUtxWFEKLS0tIHRWNjJYU1QydFZUZ0UzWmoyeU9t\nZ0gyMzRkOEt6TVZQMTZmdGpaUU9rTVkKct5ZlfiPrEJWC3hZsESbEr5ewUWgFL7r\n5WESkGmeA1coph5XzbO+asEfPcs2kRCZcOzRSsU55SNTwloDyCtuWg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiQk9ZU3JXYXFNZm5pdCtz\nQis4TFlqanRlY3lHdVA3S1FyQTFsTmI2MzBnCk80K041NDZmMnBUUURrZFcyMzR2\nSitjY2xLeE40V1pTckdpNHZQNjBPOEUKLS0tIGpQVnB3MUd5b0FZOUlqNzlvWFZt\nb2RMZGJVbk1ZOHpqV0dOZ0ZudXNQNWcKg5v6dzKUPR5W1B8FM5hnsLA+HjcAObES\nc+Ff371ERAFfA8S9z4kxUmjRpdp+5AORakyf4PrtlUeEx7Ah9uARug==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-09-03T16:39:27Z",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
plain,
|
||||
leaf,
|
||||
flag,
|
||||
tagctl,
|
||||
zen-browser,
|
||||
}:
|
||||
let
|
||||
|
@ -58,6 +59,7 @@ in
|
|||
})
|
||||
])
|
||||
|
||||
(flag "prefer-no-csd")
|
||||
(leaf "screenshot-path" "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png")
|
||||
|
||||
(plain "layout" [
|
||||
|
@ -65,13 +67,12 @@ in
|
|||
(leaf "center-focused-column" "on-overflow")
|
||||
|
||||
(plain "focus-ring" [
|
||||
(flag "off")
|
||||
(leaf "width" 2)
|
||||
# (leaf "active-color" "#f9e2af")
|
||||
(leaf "active-color" "#f9e2af")
|
||||
(leaf "inactive-color" "transparent")
|
||||
(leaf "active-gradient" {
|
||||
from = "#32552b";
|
||||
to = "#788dc9";
|
||||
from = "#E5989B";
|
||||
to = "#FFB4A2";
|
||||
angle = 45;
|
||||
relative-to = "workspace-view";
|
||||
"in" = "oklch longer hue";
|
||||
|
@ -112,13 +113,12 @@ in
|
|||
(leaf "background-color" "transparent")
|
||||
])
|
||||
(plain "environment" [
|
||||
# (leaf "DISPLAY" ":0")
|
||||
(leaf "DISPLAY" ":0")
|
||||
])
|
||||
(plain "layer-rule" [
|
||||
(leaf "match" { namespace = "overview$"; })
|
||||
(leaf "place-within-backdrop" true)
|
||||
])
|
||||
(flag "prefer-no-csd")
|
||||
(plain "switch-events" [
|
||||
(plain "lid-close" [
|
||||
(leaf "spawn" <| getExe pkgs.swaylock)
|
||||
|
@ -192,19 +192,19 @@ in
|
|||
])
|
||||
(plain "XF86AudioPlay" [
|
||||
(leaf "spawn" [
|
||||
(getExe pkgs.playerctl)
|
||||
(getExe' pkgs.avizo "playerctl")
|
||||
"play-pause"
|
||||
])
|
||||
])
|
||||
(plain "XF86AudioNext" [
|
||||
(leaf "spawn" [
|
||||
(getExe pkgs.playerctl)
|
||||
(getExe' pkgs.avizo "playerctl")
|
||||
"next"
|
||||
])
|
||||
])
|
||||
(plain "XF86AudioPrev" [
|
||||
(leaf "spawn" [
|
||||
(getExe pkgs.playerctl)
|
||||
(getExe' pkgs.avizo "playerctl")
|
||||
"previous"
|
||||
])
|
||||
])
|
||||
|
@ -228,27 +228,240 @@ in
|
|||
])
|
||||
])
|
||||
|
||||
(plain "Mod+0" [ (leaf "focus-workspace" 0) ])
|
||||
(plain "Mod+1" [ (leaf "focus-workspace" 1) ])
|
||||
(plain "Mod+2" [ (leaf "focus-workspace" 2) ])
|
||||
(plain "Mod+3" [ (leaf "focus-workspace" 3) ])
|
||||
(plain "Mod+4" [ (leaf "focus-workspace" 4) ])
|
||||
(plain "Mod+5" [ (leaf "focus-workspace" 5) ])
|
||||
(plain "Mod+6" [ (leaf "focus-workspace" 6) ])
|
||||
(plain "Mod+7" [ (leaf "focus-workspace" 7) ])
|
||||
(plain "Mod+8" [ (leaf "focus-workspace" 8) ])
|
||||
(plain "Mod+9" [ (leaf "focus-workspace" 9) ])
|
||||
(plain "Mod+0" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"0"
|
||||
])
|
||||
])
|
||||
(plain "Mod+1" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"1"
|
||||
])
|
||||
])
|
||||
(plain "Mod+2" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"2"
|
||||
])
|
||||
])
|
||||
(plain "Mod+3" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"3"
|
||||
])
|
||||
])
|
||||
(plain "Mod+4" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"4"
|
||||
])
|
||||
])
|
||||
(plain "Mod+5" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"5"
|
||||
])
|
||||
])
|
||||
(plain "Mod+6" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"6"
|
||||
])
|
||||
])
|
||||
(plain "Mod+7" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"7"
|
||||
])
|
||||
])
|
||||
(plain "Mod+8" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"8"
|
||||
])
|
||||
])
|
||||
(plain "Mod+9" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle-tag"
|
||||
"9"
|
||||
])
|
||||
])
|
||||
|
||||
(plain "Mod+Shift+0" [ (leaf "move-column-to-workspace" 0) ])
|
||||
(plain "Mod+Shift+1" [ (leaf "move-column-to-workspace" 1) ])
|
||||
(plain "Mod+Shift+2" [ (leaf "move-column-to-workspace" 2) ])
|
||||
(plain "Mod+Shift+3" [ (leaf "move-column-to-workspace" 3) ])
|
||||
(plain "Mod+Shift+4" [ (leaf "move-column-to-workspace" 4) ])
|
||||
(plain "Mod+Shift+5" [ (leaf "move-column-to-workspace" 5) ])
|
||||
(plain "Mod+Shift+6" [ (leaf "move-column-to-workspace" 6) ])
|
||||
(plain "Mod+Shift+7" [ (leaf "move-column-to-workspace" 7) ])
|
||||
(plain "Mod+Shift+8" [ (leaf "move-column-to-workspace" 8) ])
|
||||
(plain "Mod+Shift+9" [ (leaf "move-column-to-workspace" 9) ])
|
||||
# (plain "Mod+0" [ (leaf "focus-workspace" 0) ])
|
||||
# (plain "Mod+1" [ (leaf "focus-workspace" 1) ])
|
||||
# (plain "Mod+2" [ (leaf "focus-workspace" 2) ])
|
||||
# (plain "Mod+3" [ (leaf "focus-workspace" 3) ])
|
||||
# (plain "Mod+4" [ (leaf "focus-workspace" 4) ])
|
||||
# (plain "Mod+5" [ (leaf "focus-workspace" 5) ])
|
||||
# (plain "Mod+6" [ (leaf "focus-workspace" 6) ])
|
||||
# (plain "Mod+7" [ (leaf "focus-workspace" 7) ])
|
||||
# (plain "Mod+8" [ (leaf "focus-workspace" 8) ])
|
||||
# (plain "Mod+9" [ (leaf "focus-workspace" 9) ])
|
||||
#
|
||||
(plain "Mod+Shift+0" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"0"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+1" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"1"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+2" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"2"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+3" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"3"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+4" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"4"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+5" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"5"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+6" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"6"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+7" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"7"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+8" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"8"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Shift+9" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"toggle"
|
||||
"9"
|
||||
])
|
||||
])
|
||||
|
||||
# (plain "Mod+Shift+0" [ (leaf "move-column-to-workspace" 0) ])
|
||||
# (plain "Mod+Shift+1" [ (leaf "move-column-to-workspace" 1) ])
|
||||
# (plain "Mod+Shift+2" [ (leaf "move-column-to-workspace" 2) ])
|
||||
# (plain "Mod+Shift+3" [ (leaf "move-column-to-workspace" 3) ])
|
||||
# (plain "Mod+Shift+4" [ (leaf "move-column-to-workspace" 4) ])
|
||||
# (plain "Mod+Shift+5" [ (leaf "move-column-to-workspace" 5) ])
|
||||
# (plain "Mod+Shift+6" [ (leaf "move-column-to-workspace" 6) ])
|
||||
# (plain "Mod+Shift+7" [ (leaf "move-column-to-workspace" 7) ])
|
||||
# (plain "Mod+Shift+8" [ (leaf "move-column-to-workspace" 8) ])
|
||||
# (plain "Mod+Shift+9" [ (leaf "move-column-to-workspace" 9) ])
|
||||
|
||||
(plain "Mod+Ctrl+0" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"0"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+1" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"1"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+2" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"2"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+3" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"3"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+4" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"4"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+5" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"5"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+6" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"6"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+7" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"7"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+8" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"8"
|
||||
])
|
||||
])
|
||||
(plain "Mod+Ctrl+9" [
|
||||
(leaf "spawn" [
|
||||
tagctl
|
||||
"exclusive-tag"
|
||||
"9"
|
||||
])
|
||||
])
|
||||
|
||||
(plain "Ctrl+Print" [ (flag "screenshot-screen") ])
|
||||
(plain "Mod+Alt+L" [ (leaf "spawn" <| getExe pkgs.swaylock) ])
|
||||
|
@ -265,8 +478,7 @@ in
|
|||
(plain "Mod+Ctrl+K" [ (flag "focus-monitor-up") ])
|
||||
(plain "Mod+Ctrl+L" [ (flag "focus-monitor-right") ])
|
||||
(plain "Mod+Ctrl+R" [ (flag "reset-window-height") ])
|
||||
(plain "Mod+D" [ (leaf "spawn" <| getExe' pkgs.xfce.xfce4-appfinder "xfce4-appfinder") ])
|
||||
(plain "Mod+Shift+D" [ (leaf "spawn" <| getExe pkgs.fuzzel) ])
|
||||
(plain "Mod+D" [ (leaf "spawn" <| getExe pkgs.fuzzel) ])
|
||||
(plain "Mod+End" [ (flag "focus-column-last") ])
|
||||
(plain "Mod+Equal" [ (leaf "set-column-width" [ "+10%" ]) ])
|
||||
(plain "Mod+F" [ (flag "maximize-column") ])
|
||||
|
@ -334,6 +546,5 @@ in
|
|||
"unset"
|
||||
"org.gnome.Nautilus"
|
||||
"org.freedesktop.impl.portal.desktop.kde"
|
||||
"xfce4-appfinder"
|
||||
]
|
||||
)
|
||||
|
|
|
@ -8,11 +8,14 @@
|
|||
let
|
||||
inherit (lib.modules) mkForce mkIf;
|
||||
inherit (lib.options) mkEnableOption;
|
||||
inherit (lib.meta) getExe';
|
||||
inherit (config.modules.system) isGraphical;
|
||||
inherit (config.meta.mainUser) username;
|
||||
inherit (lib) getFlakePkg';
|
||||
|
||||
niri-tag = inputs.niri-tag.packages.${builtins.currentSystem}.unstable;
|
||||
zen-browser = getFlakePkg' inputs.zen-browser-flake "beta";
|
||||
tagctl = getExe' niri-tag "tagctl";
|
||||
|
||||
cfg = config.modules.desktops.niri;
|
||||
|
||||
|
@ -54,23 +57,32 @@ let
|
|||
flag
|
||||
lib
|
||||
pkgs
|
||||
tagctl
|
||||
zen-browser
|
||||
;
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.niri-tag.nixosModules.niri-tag
|
||||
inputs.niri.nixosModules.niri
|
||||
];
|
||||
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
||||
|
||||
config = mkIf (cfg.enable || isGraphical) {
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = pkgs.niri;
|
||||
# package = pkgs.niri;
|
||||
};
|
||||
services = {
|
||||
# The niri module auto enables the gnome keyring,
|
||||
# which is something I direly want to avoid.
|
||||
gnome.gnome-keyring.enable = mkForce false;
|
||||
niri-tag = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
# The niri module auto enables the gnome keyring,
|
||||
# which is something I direly want to avoid.
|
||||
services.gnome.gnome-keyring.enable = mkForce false;
|
||||
|
||||
hjem.users.${username}.files.".config/niri/config.kdl".source = niri-config;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue