diff --git a/flake.lock b/flake.lock index 05839e5..a083f51 100644 --- a/flake.lock +++ b/flake.lock @@ -57,11 +57,11 @@ ] }, "locked": { - "lastModified": 1779446167, - "narHash": "sha256-95gfnivOKw+zleITz2OptawwTeSs36Y9u+qeU0xdqT8=", + "lastModified": 1780154910, + "narHash": "sha256-aaGjVFEAJQWB69kok/AthcXpT/9yA5Ag2uYDwdbbj5c=", "owner": "catppuccin", "repo": "nix", - "rev": "229ede9cec873986144e222b2c61c2f239c16125", + "rev": "cf8ccac24e24a2a78fe6f36de9c5d5e9860299a4", "type": "github" }, "original": { @@ -159,6 +159,27 @@ "type": "github" } }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -188,11 +209,11 @@ ] }, "locked": { - "lastModified": 1779592288, - "narHash": "sha256-pVZwRFVFdHS3D3G07MiZQcSPENnv1xlYCJtfabkqd3Q=", + "lastModified": 1780099287, + "narHash": "sha256-efIPwVGtIWIjWcznhaop6XN6HxnOL8800hF6CBNvlqQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "23703a32ef3d7803a2f1bb9909a3f46fc5185e37", + "rev": "7d8127d308c3fb9664f7e643eec944be74ebb37d", "type": "github" }, "original": { @@ -299,11 +320,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1779565977, - "narHash": "sha256-OCzhgY7kXuFLczKPf7KjMFS04CPXMAdaiQ+M1kFJVT8=", + "lastModified": 1780142732, + "narHash": "sha256-7sBe6ujnxspLeX7zMSKpGpOuOXGeUmvDV/78CSsY+PQ=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "abd4abb5e654707edba6f527058292333149f90f", + "rev": "34fddc949042e45d22bed6cbe72f9a9c838914fa", "type": "github" }, "original": { @@ -654,11 +675,11 @@ "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1779498537, - "narHash": "sha256-6LQjFDS69JufrN4sVsMNsXxeSF6BbDzMSbN7sVApsaA=", + "lastModified": 1780158792, + "narHash": "sha256-tAGrRIQOi11zwl7UOLKkNsy3owVTE+/lDU1MJT9K2Qw=", "owner": "kaylorben", "repo": "nixcord", - "rev": "45a98c17b0d9e695bdee92ab00c76657eddf47e7", + "rev": "d0a08d06b3a00b1038b1780366180068af7c1489", "type": "github" }, "original": { @@ -705,11 +726,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1779560665, - "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", + "lastModified": 1779357205, + "narHash": "sha256-cCO8aTqss5x9Ky8GWkpY0Hy5fyTZEbtifSUV8QjSzic=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "rev": "f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1", "type": "github" }, "original": { @@ -752,11 +773,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1779508470, - "narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=", + "lastModified": 1779560665, + "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "29916453413845e54a65b8a1cf996842300cd299", + "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "type": "github" }, "original": { @@ -768,11 +789,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1779259093, - "narHash": "sha256-7DKWmH23hL2eYdkxCKeqj2i+yljTKuU+3Nk1UPHOnxc=", + "lastModified": 1779877693, + "narHash": "sha256-NOF9NAREhxr50bbBfVcVOq+ArCMSoe8dP79Pk2uyARk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d99b013d5d1931ad77fe3912ed218170dec5d9a4", + "rev": "4100e830e085863741bc69b156ec4ccd53ab5be0", "type": "github" }, "original": { @@ -789,11 +810,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1779601302, - "narHash": "sha256-ACtB1llc5ZOJM+lxfbIudM2i/c5dFxRJVXVvhOLpjqA=", + "lastModified": 1780161591, + "narHash": "sha256-eOiIbCMsYMP9JgZXzuT/m41djqDOEHTKjMFrm5NeVHM=", "owner": "nix-community", "repo": "nixvim", - "rev": "cb0107f6e18cdf7bf79a025fad154a4414c04383", + "rev": "57e5355a843618a717a19d43b2a726a8f27f0bd1", "type": "github" }, "original": { @@ -802,6 +823,27 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780200883, + "narHash": "sha256-Fj+H8TNlWYGsLjrCQRWjcpZDcWp97i/mny9FgPS1W3E=", + "owner": "nix-community", + "repo": "NUR", + "rev": "b8cdbdd02e4ce7a9fb7c8806fb1bc8d160c7433b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -838,6 +880,7 @@ "nixos-generators": "nixos-generators", "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", + "nur": "nur", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix" } @@ -870,11 +913,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1779607677, - "narHash": "sha256-Ang2de6zfcFF8v7LWqSDD1n6bgYj0vN1PY5hi7lOLsM=", + "lastModified": 1779824049, + "narHash": "sha256-dWHVUjP03KSVG1PaLKA6j9EdxWSxSQvipMUIcSyuA/U=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "e69b824f3c4f4db836f47193723b6d37f93e0dc0", + "rev": "1362178e5f5f7a848c49fe9dee004ef8824f100a", "type": "github" }, "original": { @@ -915,15 +958,16 @@ }, "systems_3": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1774449309, + "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", "owner": "nix-systems", "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "rev": "c29398b59d2048c4ab79345812849c9bd15e9150", "type": "github" }, "original": { "owner": "nix-systems", + "ref": "future-26.11", "repo": "default", "type": "github" } diff --git a/flake.nix b/flake.nix index 1343205..cc1023a 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + # NIX User Repositorys + nur = { + url = "github:nix-community/NUR"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # declarative Hyprland hyprland = { url = "github:hyprwm/Hyprland"; @@ -83,6 +89,7 @@ hyprland, sops-nix, nixos-generators, + nur, ... }@inputs: let diff --git a/home/catppuccin.nix b/home/catppuccin.nix index ce908bc..9c29c9f 100644 --- a/home/catppuccin.nix +++ b/home/catppuccin.nix @@ -8,7 +8,8 @@ imports = [ inputs.catppuccin.homeModules.catppuccin ]; catppuccin = { - enable = false; + enable = true; + autoEnable = false; accent = "sky"; flavor = "mocha"; eza.enable = true; diff --git a/home/default.nix b/home/default.nix index 814fe56..46fb29d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -30,12 +30,13 @@ ++ lib.optionals (!isServer) [ ./nixcord.nix ./spicetify.nix - ./floorp.nix + ./floorp ./obsidian.nix ]; home = { username = primaryUser; + enableNixpkgsReleaseCheck = false; stateVersion = "26.05"; sessionVariables = lib.mkIf (!isDarwin && !isServer) { GROQ_API_KEY = config.sops.secrets.GROQ_API_KEY.path; diff --git a/home/floorp.nix b/home/floorp.nix deleted file mode 100644 index ecf73fb..0000000 --- a/home/floorp.nix +++ /dev/null @@ -1,5 +0,0 @@ -_: { - programs.floorp = { - enable = true; - }; -} diff --git a/home/floorp/default.nix b/home/floorp/default.nix new file mode 100644 index 0000000..4acd85c --- /dev/null +++ b/home/floorp/default.nix @@ -0,0 +1,107 @@ +{ pkgs, ... }: +let + addons = pkgs.nur.repos.rycee.firefox-addons; + readJson = path: builtins.readFile path; + buildXpi = + { + name, + addonId, + version, + url, + sha256, + }: + pkgs.nur.repos.rycee.firefox-addons.buildFirefoxXpiAddon { + pname = name; + inherit + addonId + version + url + sha256 + ; + meta = { }; + }; +in +{ + programs.floorp = { + enable = true; + + profiles.default = { + isDefault = true; + settings = { + # Startup + "browser.startup.homepage" = "https://www.cyperpunk.de"; + + # UI + "browser.ctrlTab.sortByRecentlyUsed" = true; + "browser.tabs.closeWindowWithLastTab" = false; + "browser.toolbars.bookmarks.visibility" = "never"; + "browser.toolbars.bookmarks.showOtherBookmarks" = false; + "browser.download.useDownloadDir" = false; + "general.autoScroll" = true; + "intl.locale.requested" = "en"; + "browser.search.region" = "DE"; + + # New tab + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.showSponsoredCheckboxes" = false; + "browser.newtab.extensionControlled" = true; + + # Privacy + "signon.rememberSignons" = false; + "privacy.clearOnShutdown_v2.formdata" = true; + "dom.disable_open_during_load" = false; + + # Devtools + "devtools.cache.disabled" = true; + + # Media + "media.eme.enabled" = true; + + # Font + "font.name.serif.x-western" = "FiraMono Nerd Font"; + + # URL bar + "browser.urlbar.shortcuts.actions" = false; + "browser.urlbar.shortcuts.bookmarks" = false; + "browser.urlbar.shortcuts.history" = false; + "browser.urlbar.suggest.bookmark" = false; + + # Floorp specific + "floorp.browser.tabs.openNewTabPosition" = -1; + "floorp.commandPalette.enabled" = true; + "floorp.mousegesture.enabled" = false; + "floorp.panelSidebar.enabled" = true; + "floorp.workspaces.enabled" = true; + "floorp.zenmode.enabled" = false; + "floorp.design.configs" = readJson ./design.json; + "floorp.panelSidebar.config" = readJson ./panel-sidebar.json; + "floorp.panelSidebar.data" = readJson ./panel-sidebar-data.json; + "floorp.tabs.sleep.exclusion" = readJson ./tabs-sleep-exclusion.json; + }; + extensions.packages = [ + addons.bitwarden + addons.sidebery + addons.tampermonkey + addons.stylus + addons.new-tab-override + + (buildXpi { + name = "adguard-adblocker"; + addonId = "adguardadblocker@adguard.com"; + version = "5.4.3.1"; + url = "https://addons.mozilla.org/firefox/downloads/file/4805625/adguard_adblocker-5.4.3.1.xpi"; + sha256 = "1rqp8qcc0p6qgqfgpshiqnll5mrl9jyfnks4zygzim436k0k781l"; + }) + + (buildXpi { + name = "catppuccin-mocha"; + addonId = "{7aa7c68a-141f-45c9-a1c6-6e7382debbe1}"; + version = "1.0"; + url = "https://addons.mozilla.org/firefox/downloads/file/4147586/catppuccin_mocha-1.0.xpi"; + sha256 = "04lw5dirdv5636i52gfgyd5l0mkd74qjs2p23mimga3xv8hk1dzl"; + }) + ]; + }; + }; +} diff --git a/home/floorp/design.json b/home/floorp/design.json new file mode 100644 index 0000000..5965135 --- /dev/null +++ b/home/floorp/design.json @@ -0,0 +1 @@ +{"globalConfigs":{"userInterface":"fluerial","faviconColor":true,"appliedUserJs":""},"tabbar":{"tabbarStyle":"horizontal","tabbarPosition":"optimise-to-vertical-tabbar","multiRowTabBar":{"maxRowEnabled":false,"maxRow":3}},"tab":{"tabScroll":{"enabled":false,"reverse":false,"wrap":false},"tabMinHeight":30,"tabMinWidth":76,"tabPinTitle":false,"tabDubleClickToClose":false,"tabOpenPosition":-1},"uiCustomization":{"navbar":{"position":"top","searchBarTop":false},"display":{"disableFullscreenNotification":false,"deleteBrowserBorder":false},"special":{"optimizeForTreeStyleTab":false,"hideForwardBackwardButton":false,"stgLikeWorkspaces":false},"multirowTab":{"newtabInsideEnabled":false},"bookmarkBar":{"focusExpand":false,"position":"bottom"},"qrCode":{"disableButton":false},"disableFloorpStart":true}} diff --git a/home/floorp/panel-sidebar-data.json b/home/floorp/panel-sidebar-data.json new file mode 100644 index 0000000..6c093fa --- /dev/null +++ b/home/floorp/panel-sidebar-data.json @@ -0,0 +1 @@ +{"data":[{"id":"default-panel-history","url":"floorp//history","width":0,"type":"static"},{"id":"default-panel-downloads","url":"floorp//downloads","width":0,"type":"static"},{"id":"default-panel-notes","url":"floorp//notes","width":0,"type":"static"},{"type":"web","id":"18849706-ce97-41ce-b6c0-007436e81dad","width":450,"url":"https://cinny.cyperpunk.de/home/","userContextId":0,"userAgent":false}]} diff --git a/home/floorp/panel-sidebar.json b/home/floorp/panel-sidebar.json new file mode 100644 index 0000000..84c18be --- /dev/null +++ b/home/floorp/panel-sidebar.json @@ -0,0 +1 @@ +{"autoUnload":false,"position_start":true,"globalWidth":400,"displayed":true,"webExtensionRunningEnabled":false} diff --git a/home/floorp/sideberry.json b/home/floorp/sideberry.json new file mode 100644 index 0000000..c399932 --- /dev/null +++ b/home/floorp/sideberry.json @@ -0,0 +1 @@ +{"sidebarCSS":"#root.root {--nav-btn-width: 32px;}\n#root.root {--nav-btn-height: 32px;}\n#root.root {--nav-btn-margin: 4px;}\n#root.root {--nav-btn-len-margin: 0px;}\n#root.root {--nav-btn-border-radius: 5px;}\n#root.root {--toolbar-scrollbar-color: #cdd6f4;}\n#root.root {--general-margin: 4px;}\n#root.root {--general-border-radius: 5px;}","ver":"5.5.2","keybindings":{"_execute_sidebar_action":"Ctrl+E","activate":"Alt+Space","reset_selection":"Alt+R","next_panel":"Alt+Period","prev_panel":"Alt+Comma","new_tab_on_panel":"Ctrl+Space","new_tab_in_group":"Ctrl+Shift+Space","up":"Alt+Up","down":"Alt+Down","up_shift":"Alt+Shift+Up","down_shift":"Alt+Shift+Down"}} \ No newline at end of file diff --git a/home/floorp/tabs-sleep-exclusion.json b/home/floorp/tabs-sleep-exclusion.json new file mode 100644 index 0000000..1e682ca --- /dev/null +++ b/home/floorp/tabs-sleep-exclusion.json @@ -0,0 +1 @@ +{"enabled":true,"patterns":["cyperpunk.de"]} diff --git a/home/packages.nix b/home/packages.nix index 8fb3955..73c64c0 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -64,7 +64,6 @@ xonotic irssi blender - cinny-desktop ] ++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ]; }; diff --git a/nixos/catppuccin.nix b/nixos/catppuccin.nix index 205a962..fae92fa 100644 --- a/nixos/catppuccin.nix +++ b/nixos/catppuccin.nix @@ -4,6 +4,7 @@ catppuccin = { enable = true; + autoEnable = false; accent = "sky"; flavor = "mocha"; cache.enable = true; diff --git a/nixos/default.nix b/nixos/default.nix index b0ec722..b11f5d2 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -80,6 +80,7 @@ networkConfig = { Address = "10.0.2.15/24"; Gateway = "10.0.2.2"; + DNS = "8.8.8.8"; DHCP = "no"; }; @@ -95,7 +96,7 @@ }; nixpkgs = { - overlays = [ (import ./packages/overlays.nix) ]; + overlays = [ (import ./packages/overlays.nix { inherit (inputs) nur; }) ]; config.allowUnfree = true; }; diff --git a/nixos/packages/overlays.nix b/nixos/packages/overlays.nix index 929dc71..7ff3086 100644 --- a/nixos/packages/overlays.nix +++ b/nixos/packages/overlays.nix @@ -1,4 +1,7 @@ -final: prev: { +{ nur }: +final: prev: +(nur.overlays.default final prev) +// { gs1200-exporter = final.callPackage ./gs1200-exporter.nix { }; oidcwarden = final.callPackage ./oidcwarden.nix { inherit (prev) vaultwarden; diff --git a/nixos/roles/user.vaultwarden.scss.hbs b/nixos/roles/user.vaultwarden.scss.hbs new file mode 100644 index 0000000..1ac8c36 --- /dev/null +++ b/nixos/roles/user.vaultwarden.scss.hbs @@ -0,0 +1,374 @@ +/* ===== Catppuccin for Vaultwarden ===== */ +/* Light: Latte | Dark: Mocha */ + +:root { + /* ---------- Palette ---------- */ + --ctp-rosewater: #dc8a78; + --ctp-flamingo: #dd7878; + --ctp-pink: #ea76cb; + --ctp-mauve: #8839ef; + --ctp-red: #d20f39; + --ctp-maroon: #e64553; + --ctp-peach: #fe640b; + --ctp-yellow: #df8e1d; + --ctp-green: #40a02b; + --ctp-teal: #179299; + --ctp-sky: #04a5e5; + --ctp-sapphire: #209fb5; + --ctp-blue: #1e66f5; + --ctp-lavender: #7287fd; + --ctp-text: #4c4f69; + --ctp-subtext1: #5c5f77; + --ctp-subtext0: #6c6f85; + --ctp-overlay2: #7c7f93; + --ctp-overlay1: #8c8fa1; + --ctp-overlay0: #9ca0b0; + --ctp-surface2: #acb0be; + --ctp-surface1: #bcc0cc; + --ctp-surface0: #ccd0da; + --ctp-base: #eff1f5; + --ctp-mantle: #e6e9ef; + --ctp-crust: #dce0e8; + + /* ---------- Semantic mappings ---------- */ + --color-white: #ffffff; + --color-black: #000000; + --color-white-rgb: 255, 255, 255; + --color-black-rgb: 0, 0, 0; + + /* Grays (using Catppuccin surface hierarchy) */ + --color-gray-050: var(--ctp-base); + --color-gray-100: var(--ctp-mantle); + --color-gray-200: var(--ctp-crust); + --color-gray-300: var(--ctp-surface0); + --color-gray-400: var(--ctp-surface1); + --color-gray-400-rgb: 188, 192, 204; /* approx surface1 */ + --color-gray-500: var(--ctp-surface2); + --color-gray-600: var(--ctp-overlay0); + --color-gray-700: var(--ctp-overlay1); + --color-gray-800: var(--ctp-overlay2); + --color-gray-900: var(--ctp-text); + --color-gray-950: var(--ctp-subtext0); + --color-gray-950-rgb: 108, 111, 133; /* subtext0 */ + + /* Brand / Primary (using Blue) */ + --color-brand-050: #eef6ff; /* keep similar, but we’ll use surface tints? We'll just leave as is or tint */ + --color-brand-100: var(--ctp-surface0); + --color-brand-200: var(--ctp-surface1); + --color-brand-300: #8ec5ff; + --color-brand-400: #6baefa; + --color-brand-500: var(--ctp-blue); + --color-brand-600: var(--ctp-blue); + --color-brand-700: var(--ctp-blue); + --color-brand-800: #0d43af; /* keep a dark blue for contrast */ + --color-brand-900: #0c3276; + --color-brand-950: #162455; + --color-brand-950-rgb: 22, 36, 85; + + /* Red */ + --color-red-050: var(--ctp-surface0); + --color-red-100: var(--ctp-mantle); + --color-red-200: var(--ctp-crust); + --color-red-300: var(--ctp-red); + --color-red-400: var(--ctp-red); + --color-red-500: var(--ctp-red); + --color-red-600: var(--ctp-red); + --color-red-700: var(--ctp-red); + --color-red-800: var(--ctp-maroon); + --color-red-900: var(--ctp-maroon); + --color-red-950: var(--ctp-maroon); + + /* Orange / Warning */ + --color-orange-050: var(--ctp-surface0); + --color-orange-100: var(--ctp-mantle); + --color-orange-200: var(--ctp-crust); + --color-orange-300: var(--ctp-peach); + --color-orange-400: var(--ctp-peach); + --color-orange-500: var(--ctp-peach); + --color-orange-600: var(--ctp-peach); + --color-orange-700: var(--ctp-peach); + --color-orange-800: var(--ctp-yellow); + --color-orange-900: var(--ctp-yellow); + --color-orange-950: var(--ctp-yellow); + + /* Yellow */ + --color-yellow-050: var(--ctp-surface0); + --color-yellow-100: var(--ctp-mantle); + --color-yellow-200: var(--ctp-crust); + --color-yellow-300: var(--ctp-yellow); + --color-yellow-400: var(--ctp-yellow); + --color-yellow-500: var(--ctp-yellow); + --color-yellow-600: var(--ctp-yellow); + --color-yellow-700: var(--ctp-yellow); + --color-yellow-800: var(--ctp-yellow); + --color-yellow-900: var(--ctp-yellow); + --color-yellow-950: var(--ctp-yellow); + + /* Green / Success */ + --color-green-050: var(--ctp-surface0); + --color-green-100: var(--ctp-mantle); + --color-green-200: var(--ctp-crust); + --color-green-300: var(--ctp-green); + --color-green-400: var(--ctp-green); + --color-green-500: var(--ctp-green); + --color-green-600: var(--ctp-green); + --color-green-700: var(--ctp-green); + --color-green-800: var(--ctp-teal); + --color-green-900: var(--ctp-teal); + --color-green-950: var(--ctp-teal); + + /* Pink */ + --color-pink-050: var(--ctp-surface0); + --color-pink-100: var(--ctp-mantle); + --color-pink-200: var(--ctp-crust); + --color-pink-300: var(--ctp-pink); + --color-pink-400: var(--ctp-pink); + --color-pink-500: var(--ctp-pink); + --color-pink-600: var(--ctp-pink); + --color-pink-700: var(--ctp-mauve); + --color-pink-800: var(--ctp-mauve); + --color-pink-900: var(--ctp-mauve); + --color-pink-950: var(--ctp-mauve); + + /* Coral (use Peach) */ + --color-coral-050: var(--ctp-surface0); + --color-coral-100: var(--ctp-mantle); + --color-coral-200: var(--ctp-crust); + --color-coral-300: var(--ctp-peach); + --color-coral-400: var(--ctp-peach); + --color-coral-500: var(--ctp-peach); + --color-coral-600: var(--ctp-peach); + --color-coral-700: var(--ctp-peach); + --color-coral-800: var(--ctp-peach); + --color-coral-900: var(--ctp-peach); + --color-coral-950: var(--ctp-peach); + + /* Teal */ + --color-teal-050: var(--ctp-surface0); + --color-teal-100: var(--ctp-mantle); + --color-teal-200: var(--ctp-crust); + --color-teal-300: var(--ctp-teal); + --color-teal-400: var(--ctp-teal); + --color-teal-500: var(--ctp-teal); + --color-teal-600: var(--ctp-teal); + --color-teal-700: var(--ctp-teal); + --color-teal-800: var(--ctp-sky); + --color-teal-900: var(--ctp-sky); + --color-teal-950: var(--ctp-sky); + + /* Purple (use Mauve) */ + --color-purple-050: var(--ctp-surface0); + --color-purple-100: var(--ctp-mantle); + --color-purple-200: var(--ctp-crust); + --color-purple-300: var(--ctp-mauve); + --color-purple-400: var(--ctp-mauve); + --color-purple-500: var(--ctp-mauve); + --color-purple-600: var(--ctp-mauve); + --color-purple-700: var(--ctp-mauve); + --color-purple-800: var(--ctp-mauve); + --color-purple-900: var(--ctp-mauve); + --color-purple-950: var(--ctp-mauve); + + /* Semantic foreground / background aliases */ + --color-fg-heading: var(--ctp-text); + --color-fg-body: var(--ctp-text); + --color-fg-body-subtle: var(--ctp-subtext1); + --color-fg-disabled: var(--ctp-overlay0); + --color-fg-brand: var(--ctp-blue); + --color-fg-success: var(--ctp-green); + --color-fg-danger: var(--ctp-red); + --color-fg-warning: var(--ctp-peach); + --color-fg-sensitive: var(--ctp-pink); + + --color-bg-primary: var(--ctp-base); + --color-bg-secondary: var(--ctp-mantle); + --color-bg-tertiary: var(--ctp-crust); + --color-bg-quaternary: var(--ctp-surface0); + --color-bg-disabled: var(--ctp-surface0); + --color-bg-gray: var(--ctp-surface1); + --color-bg-gray-strong: var(--ctp-surface2); + --color-bg-contrast-soft: var(--ctp-overlay1); + --color-bg-contrast: var(--ctp-overlay2); + --color-bg-contrast-strong: var(--ctp-text); + + --color-border-muted: var(--ctp-mantle); + --color-border-light: var(--ctp-crust); + --color-border-base: var(--ctp-surface0); + --color-border-strong: var(--ctp-surface1); + --color-border-stronger: var(--ctp-overlay0); + + --color-bg-hover: rgba(var(--color-gray-950-rgb), 0.05); + --color-bg-hover-contrast: rgba(255, 255, 255, 0.05); + --color-bg-overlay: rgba(2, 6, 24, 0.3); /* keep dark overlay */ + + /* Navigation (primary sidebar) */ + --color-nav-fg-primary: var(--ctp-text); + --color-nav-bg-primary: var(--ctp-mantle); + --color-nav-bg-primary-strong: var(--ctp-crust); + --color-nav-bg-primary-hover: rgba(0,0,0,0.05); + --color-nav-bg-primary-hover-strong: rgba(0,0,0,0.1); + --color-nav-border-primary: var(--ctp-blue); + --color-nav-border-primary-focus: var(--ctp-text); + + /* Misc */ + --color-transparent-hover: rgb(0 0 0 / 0.02); + --color-shadow: 108 111 133; /* subtext0 */ + --color-background: 239 241 245; /* base */ + --color-background-alt: 230 233 239; /* mantle */ + --color-background-alt2: 23 92 219; /* keep as original? We'll set to blue */ + --color-background-alt3: 33 37 41; /* we map to crust rgb */ + --color-background-alt4: 16 18 21; + --color-primary-100: 219 229 246; /* we map to surface0 */ + --color-primary-300: 108 117 125; + --color-primary-600: 30 102 245; /* blue */ + --color-primary-700: 13 60 119; + --color-secondary-100: 188 192 204; + --color-secondary-300: 156 160 176; + --color-secondary-500: 124 127 147; + --color-secondary-600: 108 111 133; + --color-secondary-700: 92 95 119; + --color-info-100: 219 229 246; + --color-info-600: 30 102 245; + --color-info-700: 13 36 123; + --color-warning-100: 255 244 212; + --color-warning-600: 254 100 11; /* peach */ + --color-warning-700: 223 142 29; /* yellow */ + --color-danger-100: 255 236 239; + --color-danger-600: 210 15 57; /* red */ + --color-danger-700: 149 27 42; + --color-success-100: 213 243 216; + --color-success-600: 64 160 43; /* green */ + --color-success-700: 8 81 15; + --color-notification-100: 255 225 247; + --color-notification-600: 192 17 118; + --color-text-main: 27 32 41; /* will be overridden by CT-Text */ + --color-text-muted: 108 111 133; + --color-text-contrast: 255 255 255; + --color-text-alt2: 255 255 255; + --color-text-code: 234 118 203; /* pink */ + --color-hover-default: rgba(30 102 245 / 0.1); + --color-hover-contrast: rgba(255 255 255 / 0.15); +} + +/* ===== Dark Theme (Mocha) ===== */ +[data-theme="dark"] { + --ctp-rosewater: #f5e0dc; + --ctp-flamingo: #f2cdcd; + --ctp-pink: #f5c2e7; + --ctp-mauve: #cba6f7; + --ctp-red: #f38ba8; + --ctp-maroon: #eba0ac; + --ctp-peach: #fab387; + --ctp-yellow: #f9e2af; + --ctp-green: #a6e3a1; + --ctp-teal: #94e2d5; + --ctp-sky: #89dceb; + --ctp-sapphire: #74c7ec; + --ctp-blue: #89b4fa; + --ctp-lavender: #b4befe; + --ctp-text: #cdd6f4; + --ctp-subtext1: #bac2de; + --ctp-subtext0: #a6adc8; + --ctp-overlay2: #9399b2; + --ctp-overlay1: #7f849c; + --ctp-overlay0: #6c7086; + --ctp-surface2: #585b70; + --ctp-surface1: #45475a; + --ctp-surface0: #313244; + --ctp-base: #1e1e2e; + --ctp-mantle: #181825; + --ctp-crust: #11111b; + + /* Grays */ + --color-gray-050: var(--ctp-base); + --color-gray-100: var(--ctp-mantle); + --color-gray-200: var(--ctp-crust); + --color-gray-300: var(--ctp-surface0); + --color-gray-400: var(--ctp-surface1); + --color-gray-500: var(--ctp-surface2); + --color-gray-600: var(--ctp-overlay0); + --color-gray-700: var(--ctp-overlay1); + --color-gray-800: var(--ctp-overlay2); + --color-gray-900: var(--ctp-text); + --color-gray-950: var(--ctp-subtext0); + --color-gray-400-rgb: 69, 71, 90; /* surface1 */ + --color-gray-950-rgb: 166, 173, 200; /* subtext0 */ + + /* Adjust semantic mappings for dark */ + --color-fg-heading: var(--ctp-text); + --color-fg-body: var(--ctp-text); + --color-fg-body-subtle: var(--ctp-subtext1); + --color-fg-disabled: var(--ctp-overlay0); + --color-fg-brand: var(--ctp-blue); + --color-fg-success: var(--ctp-green); + --color-fg-danger: var(--ctp-red); + --color-fg-warning: var(--ctp-peach); + --color-fg-sensitive: var(--ctp-pink); + + --color-bg-primary: var(--ctp-base); + --color-bg-secondary: var(--ctp-mantle); + --color-bg-tertiary: var(--ctp-crust); + --color-bg-quaternary: var(--ctp-surface0); + --color-bg-disabled: var(--ctp-surface0); + --color-bg-gray: var(--ctp-surface1); + --color-bg-gray-strong: var(--ctp-surface2); + --color-bg-contrast-soft: var(--ctp-overlay1); + --color-bg-contrast: var(--ctp-overlay2); + --color-bg-contrast-strong: var(--ctp-text); + + --color-border-muted: var(--ctp-mantle); + --color-border-light: var(--ctp-crust); + --color-border-base: var(--ctp-surface0); + --color-border-strong: var(--ctp-surface1); + --color-border-stronger: var(--ctp-overlay0); + + --color-bg-hover: rgba(166, 173, 200, 0.1); + --color-bg-hover-contrast: rgba(255, 255, 255, 0.05); + --color-bg-overlay: rgba(17, 17, 27, 0.7); /* crust with opacity */ + + --color-nav-fg-primary: var(--ctp-text); + --color-nav-bg-primary: var(--ctp-mantle); + --color-nav-bg-primary-strong: var(--ctp-crust); + --color-nav-bg-primary-hover: rgba(255,255,255,0.05); + --color-nav-bg-primary-hover-strong: rgba(255,255,255,0.1); + --color-nav-border-primary: var(--ctp-blue); + --color-nav-border-primary-focus: var(--ctp-text); + + /* Misc rgb values */ + --color-shadow: 166 173 200; + --color-background: 30 30 46; /* base */ + --color-background-alt: 24 24 37; /* mantle */ + --color-background-alt2: 137 180 250; /* blue */ + --color-background-alt3: 17 17 27; /* crust */ + --color-background-alt4: 17 17 27; + --color-primary-100: 49 50 68; + --color-primary-300: 69 71 90; + --color-primary-600: 137 180 250; /* blue */ + --color-primary-700: 137 180 250; + --color-secondary-100: 69 71 90; + --color-secondary-300: 88 91 112; + --color-secondary-500: 108 112 134; + --color-secondary-600: 124 128 150; + --color-secondary-700: 147 153 178; + --color-info-100: 49 50 68; + --color-info-600: 137 180 250; + --color-info-700: 137 180 250; + --color-warning-100: 49 50 68; + --color-warning-600: 250 179 135; /* peach */ + --color-warning-700: 249 226 175; /* yellow */ + --color-danger-100: 49 50 68; + --color-danger-600: 243 139 168; /* red */ + --color-danger-700: 235 160 172; /* maroon */ + --color-success-100: 49 50 68; + --color-success-600: 166 227 161; /* green */ + --color-success-700: 148 226 213; /* teal */ + --color-notification-100: 49 50 68; + --color-notification-600: 245 194 231; /* pink */ + --color-text-main: 205 214 244; /* text */ + --color-text-muted: 166 173 200; + --color-text-contrast: 30 30 46; + --color-text-alt2: 30 30 46; + --color-text-code: 245 194 231; + --color-hover-default: rgba(137 180 250 / 0.1); + --color-hover-contrast: rgba(30 30 46 / 0.15); +} diff --git a/nixos/roles/vaultwarden.nix b/nixos/roles/vaultwarden.nix index 7359b25..7241937 100644 --- a/nixos/roles/vaultwarden.nix +++ b/nixos/roles/vaultwarden.nix @@ -5,6 +5,7 @@ }: let port = 8222; + userScss = builtins.readFile ./user.vaultwarden.scss.hbs; in { sops.secrets.vaultwarden_env = { @@ -39,6 +40,7 @@ in ExecStart = "${pkgs.findutils}/bin/find /var/lib/vaultwarden/backup -mtime +30 -delete"; }; }; + timers.vaultwarden-backup-rotate = { wantedBy = [ "timers.target" ]; timerConfig = { @@ -46,5 +48,10 @@ in Persistent = true; }; }; + + tmpfiles.rules = [ + "d /var/lib/vaultwarden/templates/scss 0750 vaultwarden vaultwarden -" + "C /var/lib/vaultwarden/templates/scss/user.vaultwarden.scss.hbs 0640 vaultwarden vaultwarden - ${pkgs.writeText "user.vaultwarden.scss.hbs" userScss}" + ]; }; }