mirror of
https://github.com/anotherhadi/nixy.git
synced 2026-05-21 13:52:34 +02:00
Compare commits
8 Commits
3a86013330
...
e620c5296f
| Author | SHA1 | Date | |
|---|---|---|---|
| e620c5296f | |||
| 80ca377585 | |||
| 3a8ac99f43 | |||
| 6724573f16 | |||
| 13ae753f3d | |||
| 805f43618c | |||
| 4489c9e0ae | |||
| 1bdf7a3af5 |
Generated
+55
-55
@@ -38,11 +38,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775854941,
|
"lastModified": 1776107237,
|
||||||
"narHash": "sha256-N0vdKbQdCsAQux+7aTYHqzIqQ89Xtjpq8CTnq0Mu+gg=",
|
"narHash": "sha256-IKX4tDRbj0yzmuGukXeh4FDcESxQ/GHwtDkz9tuktEo=",
|
||||||
"owner": "anotherhadi",
|
"owner": "anotherhadi",
|
||||||
"repo": "awesome-wallpapers",
|
"repo": "awesome-wallpapers",
|
||||||
"rev": "c96227e49b858e1ae81c5b887bccf01be4ee5b13",
|
"rev": "9cdea94e611b0a255d507dfd9781a24a3da27845",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -125,11 +125,11 @@
|
|||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775859534,
|
"lastModified": 1775921702,
|
||||||
"narHash": "sha256-kZ4QFWOaSC8FuMsrEva7jB0Ofj85t8+Fc8zYaH6rCxw=",
|
"narHash": "sha256-H/r9IydVUA+89ZIqvNxmTB1z7DMNYrNcxuG+7s0oVQ8=",
|
||||||
"owner": "anotherhadi",
|
"owner": "anotherhadi",
|
||||||
"repo": "blog",
|
"repo": "blog",
|
||||||
"rev": "9d928c62186d4f986cdedd200daf6c40a55fe9b4",
|
"rev": "163471bc2f0f18e001bcef9db18900d70b4ef637",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -243,11 +243,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775530644,
|
"lastModified": 1776578469,
|
||||||
"narHash": "sha256-3k02gALp5ZNCukVQD55GKbL8mkSybx+T6b679FkEjRo=",
|
"narHash": "sha256-e1OBCHKW7xubcV1fwkTPe4p1rsLM+QnuhwgPf4LmGVA=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "cli",
|
"repo": "cli",
|
||||||
"rev": "b4758901f9e05edcbd5341b47c4f5d941b8d1ba4",
|
"rev": "463f36544a25bc5b0a99317a32e8d3814eb2f66b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -292,11 +292,11 @@
|
|||||||
"quickshell": "quickshell"
|
"quickshell": "quickshell"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775480688,
|
"lastModified": 1775801889,
|
||||||
"narHash": "sha256-0Bs5Z39ziq/ZSF3TJIQePVhdy3CjdKvQbbq/gLTRCqw=",
|
"narHash": "sha256-q1LGwhQbNOurIAClh5YwKVU2kJ5lTCxRYZf48bAb9IM=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "shell",
|
"repo": "shell",
|
||||||
"rev": "612f828b9f84ca0dda76ce009c3ff64f75c5733e",
|
"rev": "0e07176ff149d02391531c802b51c28e73185f30",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -314,11 +314,11 @@
|
|||||||
"quickshell": "quickshell_2"
|
"quickshell": "quickshell_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775480688,
|
"lastModified": 1776610813,
|
||||||
"narHash": "sha256-0Bs5Z39ziq/ZSF3TJIQePVhdy3CjdKvQbbq/gLTRCqw=",
|
"narHash": "sha256-izquCGM5xB4rxvvtRQsgvX483TuWrd5RwkXPcVwUTl0=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "shell",
|
"repo": "shell",
|
||||||
"rev": "612f828b9f84ca0dda76ce009c3ff64f75c5733e",
|
"rev": "f77ba920ead8b8e82753c1f66ad417cc734631a3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -570,11 +570,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775586818,
|
"lastModified": 1776562531,
|
||||||
"narHash": "sha256-jOpm2R7I7HJN0weBWhHmO7qDEtedDKRPJt69S13QujM=",
|
"narHash": "sha256-Lh5Ns9DI67E+lSMOCGK0S+mFPy0mz0yOGiJTUXiR9JI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "b0cf7b520c7dfad888ba9c61c563028fccc8afe8",
|
"rev": "5b56ad02dc643808b8af6d5f3ff179e2ce9593f4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -658,11 +658,11 @@
|
|||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775578056,
|
"lastModified": 1776514109,
|
||||||
"narHash": "sha256-ZydI9m07VKSgr4wb0msJDK50VIleacRQQr/bQCenKEE=",
|
"narHash": "sha256-WkUvIWPUrZxR4oSCiExhuMFCjFMQ0cRnZk9e0+ZqhC0=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "75dc67e63f1873f1e97f73daf0ce284f75afa97c",
|
"rev": "889ee4f26d77ff0c36f5c4767ef0629371fd2c18",
|
||||||
"revCount": 7138,
|
"revCount": 7163,
|
||||||
"submodules": true,
|
"submodules": true,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/hyprwm/Hyprland"
|
"url": "https://github.com/hyprwm/Hyprland"
|
||||||
@@ -911,11 +911,11 @@
|
|||||||
"nur-osint": "nur-osint"
|
"nur-osint": "nur-osint"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775857107,
|
"lastModified": 1776101657,
|
||||||
"narHash": "sha256-kdXDHdwKrpol9c2Z7l/s47a8P9hGrToWQlKGNKfe3Qo=",
|
"narHash": "sha256-N0VpyeJxr5tZ/DNgggebtTJelklSp5AJYwqh7l5tCvw=",
|
||||||
"owner": "anotherhadi",
|
"owner": "anotherhadi",
|
||||||
"repo": "iknowyou",
|
"repo": "iknowyou",
|
||||||
"rev": "f30c386fbf37013150588678c0ec13f02c354f8d",
|
"rev": "ea5c3484d9aed81219184e70e32f0e4f76b12c2c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1028,11 +1028,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775365369,
|
"lastModified": 1776575850,
|
||||||
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=",
|
"narHash": "sha256-28Gqz0GDpGsBv8GtAn2dywEQRr+CtTDsD5J7VD6icBE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3",
|
"rev": "3b9653a107c736222b5ae0d4036dd3b885219065",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1155,11 +1155,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776221942,
|
"lastModified": 1776434932,
|
||||||
"narHash": "sha256-FbQAeVNi7G4v3QCSThrSAAvzQTmrmyDLiHNPvTF2qFM=",
|
"narHash": "sha256-gyqXNMgk3sh+ogY5svd2eNLJ6oEwzbAeaoBrrxD0lKk=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1766437c5509f444c1b15331e82b8b6a9b967000",
|
"rev": "c7f47036d3df2add644c46d712d14262b7d86c0c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1171,11 +1171,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_10": {
|
"nixpkgs_10": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775126147,
|
"lastModified": 1775888245,
|
||||||
"narHash": "sha256-J0dZU4atgcfo4QvM9D92uQ0Oe1eLTxBVXjJzdEMQpD0=",
|
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8d8c1fa5b412c223ffa47410867813290cdedfef",
|
"rev": "13043924aaa7375ce482ebe2494338e058282925",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1267,11 +1267,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775036866,
|
"lastModified": 1775710090,
|
||||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1299,11 +1299,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775423009,
|
"lastModified": 1776169885,
|
||||||
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
|
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
|
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1362,11 +1362,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774035694,
|
"lastModified": 1775935554,
|
||||||
"narHash": "sha256-PtORnAJ/SKeOwrPAjZ0LR00Pu8aDIzXO8H8v9CoM7zk=",
|
"narHash": "sha256-7StMiQf3HSBruAxZ2/ZYJhhNEp1KbglGVijQBrurqiM=",
|
||||||
"owner": "anotherhadi",
|
"owner": "anotherhadi",
|
||||||
"repo": "nur-osint",
|
"repo": "nur-osint",
|
||||||
"rev": "813351d47721d411441bb6221faf2c6163846946",
|
"rev": "460e377522a43d3d968be20bec2cf40a72013904",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1385,11 +1385,11 @@
|
|||||||
"systems": "systems_6"
|
"systems": "systems_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775567832,
|
"lastModified": 1776614090,
|
||||||
"narHash": "sha256-jAnxLY0qPW+qR4f5GTLp2qbtku8b4E2XuJ8mavSIPfY=",
|
"narHash": "sha256-zLlv5QgRgsfxoETBNIb9BhUFMtsYkLDZAIdmchG77Xo=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "d6746a7510ba15e9a3577322a2e5387ab983f970",
|
"rev": "c7c90abadb6f714df24b16120e9c57817b62a0cb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1491,11 +1491,11 @@
|
|||||||
"nixpkgs": "nixpkgs_10"
|
"nixpkgs": "nixpkgs_10"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775365543,
|
"lastModified": 1776119890,
|
||||||
"narHash": "sha256-f50qrK0WwZ9z5EdaMGWOTtALgSF7yb7XwuE7LjCuDmw=",
|
"narHash": "sha256-Zm6bxLNnEOYuS/SzrAGsYuXSwk3cbkRQZY0fJnk8a5M=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "a4ee2de76efb759fe8d4868c33dec9937897916f",
|
"rev": "d4971dd58c6627bfee52a1ad4237637c0a2fb0cd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1512,11 +1512,11 @@
|
|||||||
"systems": "systems_7"
|
"systems": "systems_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775421933,
|
"lastModified": 1776578704,
|
||||||
"narHash": "sha256-JkEbzFDFTsUlVtHEzA8Y4r3O9LInhb96eOCbtGjGnbM=",
|
"narHash": "sha256-4+JHYCweZ/SSrMcu2nJ5gc7gop2scBk0JIIfaUKuTaQ=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "spicetify-nix",
|
"repo": "spicetify-nix",
|
||||||
"rev": "ec8d73085fdf807d55765335dc8126e14e7b2096",
|
"rev": "73f6d24b4f5bdacc3b41ddcf9965bef2781f97dd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1543,11 +1543,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775429060,
|
"lastModified": 1776170745,
|
||||||
"narHash": "sha256-wbFF5cRxQOCzL/wHOKYm21t5AHPH2Lfp0mVPCOAvEoc=",
|
"narHash": "sha256-Tl1aZVP5EIlT+k0+iAKH018GLHJpLz3hhJ0LNQOWxCc=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "d27951a6539951d87f75cf0a7cda8a3a24016019",
|
"rev": "e3861617645a43c9bbefde1aa6ac54dd0a44bfa9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -47,6 +47,11 @@
|
|||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
presets = {
|
||||||
|
tailwindcss-language-server = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
trouble.enable = true;
|
trouble.enable = true;
|
||||||
lspSignature.enable = true;
|
lspSignature.enable = true;
|
||||||
lspconfig.enable = true;
|
lspconfig.enable = true;
|
||||||
@@ -106,7 +111,7 @@
|
|||||||
};
|
};
|
||||||
extraDiagnostics.enable = true;
|
extraDiagnostics.enable = true;
|
||||||
};
|
};
|
||||||
ts = {
|
typescript = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extensions.ts-error-translator.enable = true;
|
extensions.ts-error-translator.enable = true;
|
||||||
};
|
};
|
||||||
@@ -115,7 +120,6 @@
|
|||||||
html.enable = true;
|
html.enable = true;
|
||||||
bash.enable = true;
|
bash.enable = true;
|
||||||
nix.enable = true;
|
nix.enable = true;
|
||||||
tailwind.enable = true;
|
|
||||||
};
|
};
|
||||||
formatter = {
|
formatter = {
|
||||||
conform-nvim = {
|
conform-nvim = {
|
||||||
|
|||||||
@@ -15,5 +15,21 @@
|
|||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
|
"Proton Calendar" = {
|
||||||
|
name = "Proton Calendar";
|
||||||
|
exec = "${pkgs.qutebrowser}/bin/qutebrowser \"https://calendar.proton.me\"";
|
||||||
|
icon = "proton-calendar";
|
||||||
|
type = "Application";
|
||||||
|
categories = ["Utility"];
|
||||||
|
terminal = false;
|
||||||
|
};
|
||||||
|
"Proton Mail" = {
|
||||||
|
name = "Proton Mail";
|
||||||
|
exec = "${pkgs.qutebrowser}/bin/qutebrowser \"https://mail.proton.me/\"";
|
||||||
|
icon = "proton-mail";
|
||||||
|
type = "Application";
|
||||||
|
categories = ["Utility"];
|
||||||
|
terminal = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+215
-197
@@ -4,178 +4,32 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
bookmarkList = [
|
bookmarkList =
|
||||||
{
|
(import ./general.nix)
|
||||||
name = "Proton Mail";
|
++ (import ./tools.nix)
|
||||||
url = "https://mail.proton.me";
|
++ (import ./social.nix)
|
||||||
}
|
++ (import ./infosec.nix)
|
||||||
{
|
++ (import ./other.nix)
|
||||||
name = "Proton Drive";
|
++ (import ./jack.nix);
|
||||||
url = "https://drive.proton.me";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Proton Lumo";
|
|
||||||
url = "https://lumo.proton.me";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Proton Calendar";
|
|
||||||
url = "https://calendar.proton.me";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Tools";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "tldr";
|
|
||||||
url = "https://tldr.inbrowser.app/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Excalidraw";
|
|
||||||
url = "https://excalidraw.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cobalt (downloader)";
|
|
||||||
url = "https://cobalt.meowing.de";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Mazanoke (image)";
|
|
||||||
url = "https://mazanoke.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Stirling PDF";
|
|
||||||
url = "https://pdf.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Vert";
|
|
||||||
url = "https://vert.sh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Markdown to PDF";
|
|
||||||
url = "https://md2file.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Image to Vector";
|
|
||||||
url = "https://www.vectorcascade.com/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "PrivateBin";
|
|
||||||
url = "https://privatebin.net";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Social";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Bluesky";
|
|
||||||
url = "https://bsky.app";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Reddit";
|
|
||||||
url = "https://reddit.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Youtube";
|
|
||||||
url = "https://youtube.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Instagram";
|
|
||||||
url = "https://instagram.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Github";
|
|
||||||
url = "https://github.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Discord";
|
|
||||||
url = "https://discord.com/channels/@me/";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Other";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Startpage Config";
|
|
||||||
url = "https://www.startpage.com/do/mypage.pl?prfe=45d331deb05471d659dba933e7400df51d952bb103da6f6125c0e769a6be1d65610456a479f495ceeee7e97311cf227d7c1bb198de0ceeb193d8cddf9c455c19a409cc35c3e3f542ee27bd7cecd3";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Hyprland Wiki";
|
|
||||||
url = "https://wiki.hypr.land";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "MyNixOS";
|
|
||||||
url = "https://mynixos.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Nixpkgs";
|
|
||||||
url = "https://github.com/NixOS/nixpkgs";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Claude";
|
|
||||||
url = "https://claude.ai";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Gemini";
|
|
||||||
url = "https://gemini.google.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Medium";
|
|
||||||
url = "https://medium.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Maps";
|
|
||||||
url = "https://maps.apple.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Amazon";
|
|
||||||
url = "https://amazon.fr";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Infosec";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Nix 4 Cyber";
|
|
||||||
url = "https://n4c.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cyberchef";
|
|
||||||
url = "https://cyberchef.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "TryHackMe";
|
|
||||||
url = "https://tryhackme.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Root-Me";
|
|
||||||
url = "https://root-me.org";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Exploit-DB";
|
|
||||||
url = "https://exploit-db.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Crack Station";
|
|
||||||
url = "https://crackstation.net";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Osint Tracker";
|
|
||||||
url = "https://app.osintracker.com";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
|
|
||||||
stripProtocol = url:
|
stripProtocol = url:
|
||||||
lib.removePrefix "https://" (lib.removePrefix "http://" url);
|
lib.removePrefix "https://" (lib.removePrefix "http://" url);
|
||||||
|
|
||||||
mkCard = item: ''
|
stripDomain = url:
|
||||||
|
builtins.head (
|
||||||
|
lib.splitString "/" (stripProtocol url)
|
||||||
|
);
|
||||||
|
|
||||||
|
mkCard = item: let
|
||||||
|
domain = stripDomain item.url;
|
||||||
|
initial = builtins.substring 0 1 item.name;
|
||||||
|
in ''
|
||||||
<a href="${item.url}" class="card">
|
<a href="${item.url}" class="card">
|
||||||
<div class="favicon-wrapper">
|
<div class="favicon-wrapper">
|
||||||
<span class="favicon-fallback">${builtins.substring 0 1 item.name}</span>
|
<img class="favicon" src="https://icons.duckduckgo.com/ip3/${domain}.ico" alt="" aria-hidden="true" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'">
|
||||||
|
<span class="favicon-fallback" style="display:none">${initial}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-info">
|
<div class="card-info">
|
||||||
<span class="card-name">${item.name}</span>
|
<span class="card-name">${item.name}</span>
|
||||||
@@ -183,6 +37,54 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>'';
|
</a>'';
|
||||||
|
|
||||||
|
# Render a list of items (cards and/or sub-folders) inside a folder
|
||||||
|
mkFolderContent = items: let
|
||||||
|
step = acc: item:
|
||||||
|
if item ? url
|
||||||
|
then acc // {pending = acc.pending ++ [item];}
|
||||||
|
else {
|
||||||
|
chunks =
|
||||||
|
acc.chunks
|
||||||
|
++ lib.optional (acc.pending != []) {
|
||||||
|
isCards = true;
|
||||||
|
items = acc.pending;
|
||||||
|
}
|
||||||
|
++ [{isCards = false; folder = item;}];
|
||||||
|
pending = [];
|
||||||
|
};
|
||||||
|
result = lib.foldl' step {chunks = []; pending = [];} items;
|
||||||
|
chunks =
|
||||||
|
result.chunks
|
||||||
|
++ lib.optional (result.pending != []) {
|
||||||
|
isCards = true;
|
||||||
|
items = result.pending;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.concatMapStrings (chunk:
|
||||||
|
if chunk.isCards
|
||||||
|
then ''
|
||||||
|
<div class="cards">
|
||||||
|
${lib.concatMapStrings mkCard chunk.items}
|
||||||
|
</div>''
|
||||||
|
else mkFolder chunk.folder)
|
||||||
|
chunks;
|
||||||
|
|
||||||
|
mkFolder = folder: let
|
||||||
|
iconHtml =
|
||||||
|
if folder ? icon
|
||||||
|
then ''<span class="material-symbols-outlined folder-icon" aria-hidden="true">${folder.icon}</span>''
|
||||||
|
else "";
|
||||||
|
in ''
|
||||||
|
<details class="folder-section" open>
|
||||||
|
<summary class="folder-title">
|
||||||
|
${iconHtml}<span class="folder-name">${folder.name}</span>
|
||||||
|
<svg class="chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
|
||||||
|
</summary>
|
||||||
|
<div class="folder-content">
|
||||||
|
${mkFolderContent folder.bookmarks}
|
||||||
|
</div>
|
||||||
|
</details>'';
|
||||||
|
|
||||||
# Group consecutive root items so they share the same .cards grid
|
# Group consecutive root items so they share the same .cards grid
|
||||||
grouped = let
|
grouped = let
|
||||||
step = acc: item:
|
step = acc: item:
|
||||||
@@ -195,12 +97,7 @@
|
|||||||
isRoot = true;
|
isRoot = true;
|
||||||
items = acc.pending;
|
items = acc.pending;
|
||||||
}
|
}
|
||||||
++ [
|
++ [{isRoot = false; inherit item;}];
|
||||||
{
|
|
||||||
isRoot = false;
|
|
||||||
inherit item;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
pending = [];
|
pending = [];
|
||||||
};
|
};
|
||||||
result =
|
result =
|
||||||
@@ -219,30 +116,24 @@
|
|||||||
mkSection = group:
|
mkSection = group:
|
||||||
if group.isRoot
|
if group.isRoot
|
||||||
then ''
|
then ''
|
||||||
<div class="folder-section">
|
<div class="root-section">
|
||||||
<div class="cards">
|
<div class="cards">
|
||||||
${lib.concatMapStrings mkCard group.items}
|
${lib.concatMapStrings mkCard group.items}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>''
|
||||||
''
|
else mkFolder group.item;
|
||||||
else ''
|
|
||||||
<div class="folder-section">
|
# Recursively collect all leaf bookmarks with their full folder path
|
||||||
<h2 class="folder-title">${group.item.name}</h2>
|
collectBookmarks = prefix: items:
|
||||||
<div class="cards">
|
lib.concatMapStrings (item:
|
||||||
${lib.concatMapStrings mkCard group.item.bookmarks}
|
if item ? url
|
||||||
</div>
|
then "${item.url} ${prefix}${item.name}\n"
|
||||||
</div>
|
else collectBookmarks "${prefix}${item.name}/" item.bookmarks
|
||||||
'';
|
) items;
|
||||||
|
|
||||||
publicBookmarks =
|
publicBookmarks =
|
||||||
pkgs.writeText "qutebrowser-public-bookmarks"
|
pkgs.writeText "qutebrowser-public-bookmarks"
|
||||||
(lib.concatMapStrings (
|
(collectBookmarks "" bookmarkList);
|
||||||
item:
|
|
||||||
if item ? url
|
|
||||||
then "${item.url} ${item.name}\n"
|
|
||||||
else lib.concatMapStrings (b: "${b.url} ${item.name}/${b.name}\n") item.bookmarks
|
|
||||||
)
|
|
||||||
bookmarkList);
|
|
||||||
|
|
||||||
inherit (config.qutebrowser) privateBookmarksPath;
|
inherit (config.qutebrowser) privateBookmarksPath;
|
||||||
in {
|
in {
|
||||||
@@ -253,7 +144,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# Fully static HTML — order is preserved, no dependency on qutebrowser's Jinja rendering
|
|
||||||
xdg.dataFile."qutebrowser/bookmarks.html".text = ''
|
xdg.dataFile."qutebrowser/bookmarks.html".text = ''
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
@@ -261,6 +151,7 @@ in {
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Bookmarks</title>
|
<title>Bookmarks</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20,300,0,0">
|
||||||
<style>
|
<style>
|
||||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
|
||||||
@@ -305,22 +196,116 @@ in {
|
|||||||
.search-bar::placeholder { color: #${c.base03}; }
|
.search-bar::placeholder { color: #${c.base03}; }
|
||||||
.search-bar:focus { border-color: #${c.base0D}; }
|
.search-bar:focus { border-color: #${c.base0D}; }
|
||||||
|
|
||||||
|
.collapse-btn {
|
||||||
|
flex-shrink: 0;
|
||||||
|
background: none;
|
||||||
|
border: 1px solid #${c.base02};
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #${c.base03};
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0.47rem;
|
||||||
|
transition: color 0.15s ease, border-color 0.15s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapse-btn:hover {
|
||||||
|
color: #${c.base0D};
|
||||||
|
border-color: #${c.base0D};
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapse-btn svg {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.bookmarks-container {
|
.bookmarks-container {
|
||||||
max-width: 1100px;
|
max-width: 1100px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 1.75rem;
|
gap: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.folder-title {
|
.root-section {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
details.folder-section {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
details.folder-section > summary {
|
||||||
|
list-style: none;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
padding: 0.45rem 0.5rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
user-select: none;
|
||||||
|
transition: background-color 0.12s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
details.folder-section > summary::-webkit-details-marker { display: none; }
|
||||||
|
|
||||||
|
details.folder-section > summary:hover {
|
||||||
|
background-color: #${c.base01};
|
||||||
|
color: #${c.base0D};
|
||||||
|
}
|
||||||
|
|
||||||
|
details.folder-section > summary:hover .folder-name {
|
||||||
|
color: #${c.base0D};
|
||||||
|
}
|
||||||
|
|
||||||
|
details.folder-section > summary:hover .folder-icon {
|
||||||
|
color: #${c.base0D};
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-icon {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1;
|
||||||
|
flex-shrink: 0;
|
||||||
|
color: #${c.base04};
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-name {
|
||||||
font-size: 0.72rem;
|
font-size: 0.72rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 0.12em;
|
letter-spacing: 0.12em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
color: #${c.base03};
|
color: #${c.base03};
|
||||||
margin-bottom: 0.6rem;
|
flex: 1;
|
||||||
padding-left: 0.2rem;
|
}
|
||||||
|
|
||||||
|
.chevron {
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
color: #${c.base03};
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open] > summary > .chevron {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-content {
|
||||||
|
padding: 0.4rem 0 0.5rem 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Nested folder indent */
|
||||||
|
.folder-content > details.folder-section > summary {
|
||||||
|
padding-left: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-content > details.folder-section > .folder-content {
|
||||||
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cards {
|
.cards {
|
||||||
@@ -344,11 +329,20 @@ in {
|
|||||||
|
|
||||||
.card:hover {
|
.card:hover {
|
||||||
background-color: #${c.base02};
|
background-color: #${c.base02};
|
||||||
border-color: #${c.base03};
|
border-color: #${c.base0D};
|
||||||
}
|
}
|
||||||
|
|
||||||
.favicon-wrapper { position: relative; width: 18px; height: 18px; flex-shrink: 0; }
|
.favicon-wrapper { position: relative; width: 18px; height: 18px; flex-shrink: 0; }
|
||||||
|
|
||||||
|
.favicon {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
.favicon-fallback {
|
.favicon-fallback {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
@@ -382,7 +376,7 @@ in {
|
|||||||
transition: color 0.12s ease;
|
transition: color 0.12s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card:hover .card-name { color: #${c.base0A}; }
|
.card:hover .card-name { color: #${c.base0D}; }
|
||||||
|
|
||||||
.card-url {
|
.card-url {
|
||||||
color: #${c.base03};
|
color: #${c.base03};
|
||||||
@@ -405,6 +399,11 @@ in {
|
|||||||
<div class="header">
|
<div class="header">
|
||||||
<h1 class="page-title">Bookmarks</h1>
|
<h1 class="page-title">Bookmarks</h1>
|
||||||
<input id="search" class="search-bar" type="text" placeholder="Search…" autocomplete="off" spellcheck="false">
|
<input id="search" class="search-bar" type="text" placeholder="Search…" autocomplete="off" spellcheck="false">
|
||||||
|
<button id="collapse-btn" class="collapse-btn" title="Collapse all folders" aria-label="Collapse all folders">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<polyline points="4 14 10 14 10 20"/><polyline points="20 10 14 10 14 4"/><line x1="10" y1="14" x2="3" y2="21"/><line x1="21" y1="3" x2="14" y2="10"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="bookmarks-container">
|
<div class="bookmarks-container">
|
||||||
<p id="no-results" class="no-results">No results</p>
|
<p id="no-results" class="no-results">No results</p>
|
||||||
@@ -414,14 +413,27 @@ in {
|
|||||||
window.addEventListener('DOMContentLoaded', function () {
|
window.addEventListener('DOMContentLoaded', function () {
|
||||||
const input = document.getElementById('search');
|
const input = document.getElementById('search');
|
||||||
const noResults = document.getElementById('no-results');
|
const noResults = document.getElementById('no-results');
|
||||||
|
const collapseBtn = document.getElementById('collapse-btn');
|
||||||
|
|
||||||
input.focus();
|
input.focus();
|
||||||
|
|
||||||
|
collapseBtn.addEventListener('click', function () {
|
||||||
|
document.querySelectorAll('details.folder-section').forEach(function (d) {
|
||||||
|
d.open = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
input.addEventListener('input', function () {
|
input.addEventListener('input', function () {
|
||||||
const query = this.value.toLowerCase().trim();
|
const query = this.value.toLowerCase().trim();
|
||||||
let anyVisible = false;
|
let anyVisible = false;
|
||||||
|
|
||||||
document.querySelectorAll('.folder-section').forEach(function (section) {
|
if (query) {
|
||||||
|
document.querySelectorAll('details.folder-section').forEach(function (d) {
|
||||||
|
d.open = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.folder-section, .root-section').forEach(function (section) {
|
||||||
let sectionVisible = false;
|
let sectionVisible = false;
|
||||||
section.querySelectorAll('.card').forEach(function (card) {
|
section.querySelectorAll('.card').forEach(function (card) {
|
||||||
const name = card.querySelector('.card-name').textContent.toLowerCase();
|
const name = card.querySelector('.card-name').textContent.toLowerCase();
|
||||||
@@ -438,14 +450,20 @@ in {
|
|||||||
|
|
||||||
input.addEventListener('keydown', function (e) {
|
input.addEventListener('keydown', function (e) {
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
|
const val = this.value.trim();
|
||||||
|
const isUrl = /^https?:\/\//i.test(val) || /^[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})(\/.*)?$/.test(val);
|
||||||
|
if (isUrl) {
|
||||||
|
location.href = /^https?:\/\//i.test(val) ? val : 'https://' + val;
|
||||||
|
} else {
|
||||||
const first = document.querySelector('.card:not([style*="none"])');
|
const first = document.querySelector('.card:not([style*="none"])');
|
||||||
if (first) {
|
if (first) {
|
||||||
location.href = first.href;
|
location.href = first.href;
|
||||||
} else {
|
} else {
|
||||||
const q = encodeURIComponent(this.value.trim());
|
const q = encodeURIComponent(val);
|
||||||
if (q) location.href = 'https://www.startpage.com/sp/search?q=' + q;
|
if (q) location.href = 'https://www.startpage.com/sp/search?q=' + q;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (e.key === 'Escape') {
|
if (e.key === 'Escape') {
|
||||||
this.value = ''';
|
this.value = ''';
|
||||||
this.dispatchEvent(new Event('input'));
|
this.dispatchEvent(new Event('input'));
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Proton Mail";
|
||||||
|
url = "https://mail.proton.me";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Proton Drive";
|
||||||
|
url = "https://drive.proton.me";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Proton Lumo";
|
||||||
|
url = "https://lumo.proton.me";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Proton Calendar";
|
||||||
|
url = "https://calendar.proton.me";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Github";
|
||||||
|
url = "https://github.com";
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Infosec";
|
||||||
|
icon = "terminal";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Nix 4 Cyber";
|
||||||
|
url = "https://n4c.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Cyberchef";
|
||||||
|
url = "https://cyberchef.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "TryHackMe";
|
||||||
|
url = "https://tryhackme.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Root-Me";
|
||||||
|
url = "https://root-me.org";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Hack The Box";
|
||||||
|
url = "https://hackthebox.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Iknowyou";
|
||||||
|
url = "https://iknowyou-prod.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Exploit-DB";
|
||||||
|
url = "https://exploit-db.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Crack Station";
|
||||||
|
url = "https://crackstation.net";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Osint Tracker";
|
||||||
|
url = "https://app.osintracker.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Jack";
|
||||||
|
icon = "dns";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Glance";
|
||||||
|
url = "https://home.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Blog";
|
||||||
|
url = "https://hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Gitea";
|
||||||
|
url = "https://git.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Mealie";
|
||||||
|
url = "https://mealie.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Wallpapers";
|
||||||
|
url = "https://wallpapers.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Default Creds";
|
||||||
|
url = "https://default-creds.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Media";
|
||||||
|
icon = "subscriptions";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Radarr";
|
||||||
|
url = "https://radarr.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Sonarr";
|
||||||
|
url = "https://sonarr.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Bazarr";
|
||||||
|
url = "https://bazarr.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Prowlarr";
|
||||||
|
url = "https://prowlarr.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Transmission";
|
||||||
|
url = "https://transmission.hadi.icu";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Infrastructure";
|
||||||
|
icon = "construction";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "AdGuard";
|
||||||
|
url = "https://adguard.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Umami";
|
||||||
|
url = "https://umami.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Cloudflare";
|
||||||
|
url = "https://dash.cloudflare.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Cloudflare Zero Trust";
|
||||||
|
url = "https://one.dash.cloudflare.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Other";
|
||||||
|
icon = "category";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Documentation";
|
||||||
|
icon = "menu_book";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Hyprland Wiki";
|
||||||
|
url = "https://wiki.hypr.land";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Stylix Wiki";
|
||||||
|
url = "https://nix-community.github.io/stylix/";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Nixpkgs";
|
||||||
|
url = "https://github.com/NixOS/nixpkgs";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tldr";
|
||||||
|
url = "https://tldr.inbrowser.app/";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Startpage Config";
|
||||||
|
url = "https://www.startpage.com/do/mypage.pl?prfe=45d331deb05471d659dba933e7400df51d952bb103da6f6125c0e769a6be1d65610456a479f495ceeee7e97311cf227d7c1bb198de0ceeb193d8cddf9c455c19a409cc35c3e3f542ee27bd7cecd3";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "MyNixOS";
|
||||||
|
url = "https://mynixos.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Amazon";
|
||||||
|
url = "https://amazon.fr";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Entertainment";
|
||||||
|
icon = "movie";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Youtube";
|
||||||
|
url = "https://youtube.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Jellyfin";
|
||||||
|
url = "https://media.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Seerr";
|
||||||
|
url = "https://demandemedia.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Social Media";
|
||||||
|
icon = "group";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Medium";
|
||||||
|
url = "https://medium.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Bluesky";
|
||||||
|
url = "https://bsky.app";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Reddit";
|
||||||
|
url = "https://reddit.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Instagram";
|
||||||
|
url = "https://instagram.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Discord";
|
||||||
|
url = "https://discord.com/channels/@me/";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Gitlab";
|
||||||
|
url = "https://gitlab.com/";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
name = "Tools";
|
||||||
|
icon = "handyman";
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Maps";
|
||||||
|
url = "https://maps.apple.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Excalidraw";
|
||||||
|
url = "https://excalidraw.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Cobalt (downloader)";
|
||||||
|
url = "https://cobalt.meowing.de";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Mazanoke (image)";
|
||||||
|
url = "https://mazanoke.hadi.icu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Vert";
|
||||||
|
url = "https://vert.sh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Markdown to PDF";
|
||||||
|
url = "https://md2file.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Image to Vector";
|
||||||
|
url = "https://www.vectorcascade.com/";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "PrivateBin";
|
||||||
|
url = "https://privatebin.net";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Claude";
|
||||||
|
url = "https://claude.ai";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Gemini";
|
||||||
|
url = "https://gemini.google.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./bookmarks.nix
|
./bookmarks
|
||||||
./search.nix
|
./search.nix
|
||||||
./keybindings.nix
|
./keybindings.nix
|
||||||
./settings.nix
|
./settings.nix
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
"editor.command" = ["ghostty" "-e" "nvim" "{}"];
|
"editor.command" = ["ghostty" "-e" "nvim" "{}"];
|
||||||
|
|
||||||
# Tabs
|
# Tabs
|
||||||
"tabs.show" = "switching";
|
# "tabs.show" = "switching";
|
||||||
"tabs.show_switching_delay" = 3000;
|
# "tabs.show_switching_delay" = 3000;
|
||||||
|
|
||||||
# Scrollbar
|
# Scrollbar
|
||||||
"scrolling.bar" = "never";
|
"scrolling.bar" = "never";
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
c.statusbar.padding = {'top': 6, 'bottom': 6, 'left': 8, 'right': 8}
|
c.statusbar.padding = {'top': 6, 'bottom': 6, 'left': 8, 'right': 8}
|
||||||
c.tabs.padding = {'top': 6, 'bottom': 6, 'left': 8, 'right': 8}
|
c.tabs.padding = {'top': 6, 'bottom': 6, 'left': 8, 'right': 8}
|
||||||
|
config.set('content.local_content_can_access_remote_urls', True, 'file://*')
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,16 @@ in {
|
|||||||
desc = "Proton VPN";
|
desc = "Proton VPN";
|
||||||
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app";
|
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
key = "c";
|
||||||
|
desc = "Proton Calendar";
|
||||||
|
cmd = "${pkgs.qutebrowser}/bin/qutebrowser 'https://calendar.proton.me/'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "m";
|
||||||
|
desc = "Proton Mail";
|
||||||
|
cmd = "${pkgs.qutebrowser}/bin/qutebrowser 'https://mail.proton.me/'";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
key = "o";
|
key = "o";
|
||||||
desc = "Obsidian";
|
desc = "Obsidian";
|
||||||
|
|||||||
Reference in New Issue
Block a user