Compare commits
25 Commits
4fdaae79a0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
d27f63a0f7
|
|||
|
90f6102481
|
|||
|
e44acd9b06
|
|||
|
177ce475a9
|
|||
|
1411f6c47e
|
|||
|
d1bee6c14d
|
|||
|
5514d347c7
|
|||
|
06519d555b
|
|||
|
ce94f09dd4
|
|||
|
171d635b72
|
|||
|
3bc4e3dd15
|
|||
|
4b7a64c8ac
|
|||
|
9024d2c744
|
|||
|
d13d81c60a
|
|||
|
88cf103332
|
|||
|
9431a71539
|
|||
|
6fa865644a
|
|||
|
154d0e4ddb
|
|||
|
cae0357dbe
|
|||
|
477a0b7372
|
|||
|
5b12250fd5
|
|||
|
b8c88cae25
|
|||
|
63bd1471d8
|
|||
|
647432314d
|
|||
|
bfaaee0f36
|
6
.envrc
6
.envrc
@@ -1,11 +1,7 @@
|
|||||||
# -*- mode: sh; -*-
|
# -*- mode: sh; -*-
|
||||||
if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
|
|
||||||
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
|
|
||||||
fi
|
|
||||||
|
|
||||||
watch_file flake.nix
|
watch_file flake.nix
|
||||||
watch_file flake.lock
|
watch_file flake.lock
|
||||||
if ! use flake . --no-pure-eval
|
if ! use flake . --no-pure-eval
|
||||||
then
|
then
|
||||||
echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
|
echo "dev shell could not be built. The environment was not loaded. Make the necessary changes to flake.nix and hit enter to try again." >&2
|
||||||
fi
|
fi
|
||||||
|
|||||||
351
flake.lock
generated
351
flake.lock
generated
@@ -1,29 +1,57 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"alejandra": {
|
||||||
|
"inputs": {
|
||||||
|
"fenix": "fenix",
|
||||||
|
"flakeCompat": "flakeCompat",
|
||||||
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744324181,
|
||||||
|
"narHash": "sha256-Oi1n2ncF4/AWeY6X55o2FddIRICokbciqFYK64XorYk=",
|
||||||
|
"owner": "kamadorueda",
|
||||||
|
"repo": "alejandra",
|
||||||
|
"rev": "3e2a85506627062313e131bf8a85315f3387c8e0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kamadorueda",
|
||||||
|
"ref": "4.0.0",
|
||||||
|
"repo": "alejandra",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cachix": {
|
"cachix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devenv": [
|
"devenv": [
|
||||||
|
"jj-cz",
|
||||||
"devenv"
|
"devenv"
|
||||||
],
|
],
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"git-hooks": [
|
"git-hooks": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"git-hooks"
|
"git-hooks"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767714506,
|
"lastModified": 1760971495,
|
||||||
"narHash": "sha256-WaTs0t1CxhgxbIuvQ97OFhDTVUGd1HA+KzLZUZBhe0s=",
|
"narHash": "sha256-IwnNtbNVrlZIHh7h4Wz6VP0Furxg9Hh0ycighvL5cZc=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "cachix",
|
"repo": "cachix",
|
||||||
"rev": "894c649f0daaa38bbcfb21de64be47dfa7cd0ec9",
|
"rev": "c5bfd933d1033672f51a863c47303fc0e093c2d2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -44,11 +72,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771987897,
|
"lastModified": 1772764582,
|
||||||
"narHash": "sha256-5pNQFGxG3fxS9pGnNBJjT76veotKIKq2XpAVFGAhCdI=",
|
"narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "cli",
|
"repo": "cli",
|
||||||
"rev": "b0d68f0a1c48fa138d6fde94dcbecea801a86a01",
|
"rev": "4bcd42f482d038b98145b0b03388244b68b7d35d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -66,11 +94,11 @@
|
|||||||
"quickshell": "quickshell"
|
"quickshell": "quickshell"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772330657,
|
"lastModified": 1775660122,
|
||||||
"narHash": "sha256-cWblprYsDUeAWA57xAqxIjNxXvDI/rqYn6TFp2OPi/k=",
|
"narHash": "sha256-qMKB06TE0MY1anDQKBrzZEpktNPyvMxQQzTEEwWAA6I=",
|
||||||
"owner": "caelestia-dots",
|
"owner": "caelestia-dots",
|
||||||
"repo": "shell",
|
"repo": "shell",
|
||||||
"rev": "278fd4a4ed1bfb42c3fe197ff38b587539c012aa",
|
"rev": "aa2b08dd45963dc9558de94dbff5e1615e347d02",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -87,11 +115,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772839279,
|
"lastModified": 1775334496,
|
||||||
"narHash": "sha256-pAI7T/9Gl6SUTKmNZhtxYjBGnYPNzBLMgfqILfYa1Us=",
|
"narHash": "sha256-dUopEMj5KhH1vnv43o29kMsayp0Ki+9EfIn4UAE9sAU=",
|
||||||
"owner": "9001",
|
"owner": "9001",
|
||||||
"repo": "copyparty",
|
"repo": "copyparty",
|
||||||
"rev": "31b23843f2d51049da00c821f2418d0c44389cd7",
|
"rev": "ede692925edfc6fca7a52f483414d543e9303237",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -109,15 +137,16 @@
|
|||||||
"nix": "nix",
|
"nix": "nix",
|
||||||
"nixd": "nixd",
|
"nixd": "nixd",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772819008,
|
"lastModified": 1770304289,
|
||||||
"narHash": "sha256-1DpF5F7zgOZ7QrRjz23315pUoF532dHnsU/V4UQithk=",
|
"narHash": "sha256-+g+XMyB1zi50h2N38GE32l7ZONX4oW7Nw6QSXzfNiwk=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "devenv",
|
"repo": "devenv",
|
||||||
"rev": "9e5c17caf0ead1bb29d430d4c0a26a77bc5d374b",
|
"rev": "fd777e39027d393346e4df672d51ad2bf44b2a12",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -126,14 +155,37 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fenix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
|
"alejandra",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1730615655,
|
||||||
|
"narHash": "sha256-2HBR3zLn57LXKNRtxBb+O+uDqHM4n0pz51rPayMl4cg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"rev": "efeb50e2535b17ffd4a135e6e3e5fd60a525180c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1761588595,
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -145,16 +197,17 @@
|
|||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772408722,
|
"lastModified": 1760948891,
|
||||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
"narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
"rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -211,24 +264,78 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flakeCompat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772665116,
|
"lastModified": 1760663237,
|
||||||
"narHash": "sha256-XmjUDG/J8Z8lY5DVNVUf5aoZGc400FxcjsNCqHKiKtc=",
|
"narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "39f53203a8458c330f61cc0759fe243f0ac0d198",
|
"rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -240,6 +347,7 @@
|
|||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"git-hooks",
|
"git-hooks",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
@@ -266,11 +374,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772807318,
|
"lastModified": 1775683737,
|
||||||
"narHash": "sha256-Qjw6ILt8cb2HQQpCmWNLMZZ63wEo1KjTQt+1BcQBr7k=",
|
"narHash": "sha256-oBYyowo6yfgb95Z78s3uTnAd9KkpJpwzjJbfnpLaM2Y=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "daa2c221320809f5514edde74d0ad0193ad54ed8",
|
"rev": "7ba4ee4228ed36123c7cb75d50524b43514ef992",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -279,37 +387,68 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jj-cz": {
|
||||||
|
"inputs": {
|
||||||
|
"alejandra": "alejandra",
|
||||||
|
"devenv": "devenv",
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776813492,
|
||||||
|
"narHash": "sha256-gydjnWdoZm++hK0B1vpXerwKJQdCeUcxrbBr9iEUTTA=",
|
||||||
|
"ref": "develop",
|
||||||
|
"rev": "9a6b94276b68263ad5b2ffebb64354b3bb4cc92a",
|
||||||
|
"revCount": 38,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://labs.phundrak.com/phundrak/jj-cz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "develop",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://labs.phundrak.com/phundrak/jj-cz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix": {
|
"nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"flake-parts"
|
"flake-parts"
|
||||||
],
|
],
|
||||||
"git-hooks-nix": [
|
"git-hooks-nix": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"git-hooks"
|
"git-hooks"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-23-11": [
|
"nixpkgs-23-11": [
|
||||||
|
"jj-cz",
|
||||||
"devenv"
|
"devenv"
|
||||||
],
|
],
|
||||||
"nixpkgs-regression": [
|
"nixpkgs-regression": [
|
||||||
|
"jj-cz",
|
||||||
"devenv"
|
"devenv"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772748357,
|
"lastModified": 1769708679,
|
||||||
"narHash": "sha256-vtf03lfgQKNkPH9FdXdboBDS5DtFkXB8xRw5EBpuDas=",
|
"narHash": "sha256-uFKkp2/SjIqbu5HtINg/hwHN6qaqcxLIbL/om7dT3kI=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "nix",
|
"repo": "nix",
|
||||||
"rev": "41eee9d3b1f611b1b90d51caa858b6d83834c44a",
|
"rev": "72bec37fabbfe378d677868ec42eeb83acf07a4c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -326,11 +465,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772341813,
|
"lastModified": 1775365369,
|
||||||
"narHash": "sha256-/PQ0ubBCMj/MVCWEI/XMStn55a8dIKsvztj4ZVLvUrQ=",
|
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "a2051ff239ce2e8a0148fa7a152903d9a78e854f",
|
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -342,22 +481,24 @@
|
|||||||
"nixd": {
|
"nixd": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"flake-parts"
|
"flake-parts"
|
||||||
],
|
],
|
||||||
"flake-root": "flake-root",
|
"flake-root": "flake-root",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772441848,
|
"lastModified": 1763964548,
|
||||||
"narHash": "sha256-H3W5PSJQTh8Yp51PGU3GUoGCcrD+y7nCsxYHQr+Orvw=",
|
"narHash": "sha256-JTRoaEWvPsVIMFJWeS4G2isPo15wqXY/otsiHPN0zww=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixd",
|
"repo": "nixd",
|
||||||
"rev": "c896f916addae5b133ee0f4f01f9cd93906f62ea",
|
"rev": "d4bf15e56540422e2acc7bc26b20b0a0934e3f5e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -368,11 +509,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772624091,
|
"lastModified": 1775423009,
|
||||||
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
|
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
|
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -382,13 +523,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"opencode": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1775336060,
|
||||||
|
"narHash": "sha256-KkjMN2xA8jGBnj96UtzffvOeYJJZM05/5T36nSdpZkE=",
|
||||||
|
"owner": "anomalyco",
|
||||||
|
"repo": "opencode",
|
||||||
|
"rev": "930e94a3ea098b9d56fcb6d08b545256d2546a82",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "anomalyco",
|
||||||
|
"ref": "v1.3.15",
|
||||||
|
"repo": "opencode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"pumo-system-info": {
|
"pumo-system-info": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748984111,
|
"lastModified": 1748984111,
|
||||||
@@ -412,11 +574,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771926182,
|
"lastModified": 1772925576,
|
||||||
"narHash": "sha256-QbXuSLhiSxOq6ydBL3+KGe1aiYWBW+e3J6qjJZaRMq0=",
|
"narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "cddb4f061bab495f4473ca5f2c571b6c710efef7",
|
"rev": "15a84097653593dd15fad59a56befc2b7bdc270d",
|
||||||
"revCount": 744,
|
"revCount": 750,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||||
},
|
},
|
||||||
@@ -429,10 +591,12 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"caelestia-shell": "caelestia-shell",
|
"caelestia-shell": "caelestia-shell",
|
||||||
"copyparty": "copyparty",
|
"copyparty": "copyparty",
|
||||||
"devenv": "devenv",
|
"flake-utils": "flake-utils_2",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"jj-cz": "jj-cz",
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"opencode": "opencode",
|
||||||
"pumo-system-info": "pumo-system-info",
|
"pumo-system-info": "pumo-system-info",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"spicetify": "spicetify",
|
"spicetify": "spicetify",
|
||||||
@@ -440,7 +604,45 @@
|
|||||||
"zen-browser": "zen-browser"
|
"zen-browser": "zen-browser"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-analyzer-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1730555913,
|
||||||
|
"narHash": "sha256-KNHZUlqsEibg3YtfUyOFQSofP8hp1HKoY+laoesBxRM=",
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"rev": "f17a5bbfd0969ba2e63a74505a80e55ecb174ed9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770260791,
|
||||||
|
"narHash": "sha256-ADTBfENFjRVDQMcCycyX/pAy6NFI/Ct6Mrar3gsmXI0=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "42ec85352e419e601775c57256a52f6d48a39906",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"pumo-system-info",
|
"pumo-system-info",
|
||||||
@@ -468,11 +670,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772495394,
|
"lastModified": 1775682595,
|
||||||
"narHash": "sha256-hmIvE/slLKEFKNEJz27IZ8BKlAaZDcjIHmkZ7GCEjfw=",
|
"narHash": "sha256-0E9PohY/VuESLq0LR4doaH7hTag513sDDW5n5qmHd1Q=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "1d9b98a29a45abe9c4d3174bd36de9f28755e3ff",
|
"rev": "d2e8438d5886e92bc5e7c40c035ab6cae0c41f76",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -486,14 +688,14 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_2"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772494187,
|
"lastModified": 1775421933,
|
||||||
"narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=",
|
"narHash": "sha256-JkEbzFDFTsUlVtHEzA8Y4r3O9LInhb96eOCbtGjGnbM=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "spicetify-nix",
|
"repo": "spicetify-nix",
|
||||||
"rev": "915ab06b046d05613041780c575c62a32fe67cea",
|
"rev": "ec8d73085fdf807d55765335dc8126e14e7b2096",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -509,11 +711,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772799438,
|
"lastModified": 1775701952,
|
||||||
"narHash": "sha256-81/Ow6L5azplWp9p8gtl/Q1m5s2gCX4iuKNF5ujwxBA=",
|
"narHash": "sha256-xj9u8fz2hTTTELMorqox0hPWrmAvGRnQUEnlj+vCjFo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "srvos",
|
"repo": "srvos",
|
||||||
"rev": "e6ec80588a07aea2cdb67c2865759e02d85b94b2",
|
"rev": "f56f1053ae9f878501d3a8ae1961c73d1d7abce3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -552,9 +754,40 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jj-cz",
|
||||||
"devenv",
|
"devenv",
|
||||||
"nixd",
|
"nixd",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
@@ -581,11 +814,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772685307,
|
"lastModified": 1775710180,
|
||||||
"narHash": "sha256-5xthZHeqwBeXNhnRIlxnCuaZLky0SZ6vQsxtd+eqhTU=",
|
"narHash": "sha256-sCokvdNvl8zIzsnjgG0TN5h3RUI7GJyWW9ErfmEj0rM=",
|
||||||
"owner": "youwen5",
|
"owner": "youwen5",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "dc92d88524ee83308795bc90f6a9f1d965265aaa",
|
"rev": "2c138beb648d1cbbfae76695a8230ee04e4db25a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
239
flake.nix
239
flake.nix
@@ -3,11 +3,7 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
devenv = {
|
|
||||||
url = "github:cachix/devenv";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
@@ -29,6 +25,16 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
jj-cz = {
|
||||||
|
url = "git+https://labs.phundrak.com/phundrak/jj-cz?ref=develop";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
opencode = {
|
||||||
|
url = "github:anomalyco/opencode/v1.3.15";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
pumo-system-info = {
|
pumo-system-info = {
|
||||||
url = "git+https://labs.phundrak.com/phundrak/pumo-system-info";
|
url = "git+https://labs.phundrak.com/phundrak/pumo-system-info";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -56,126 +62,127 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
|
extra-trusted-public-keys = [
|
||||||
extra-substituters = "https://devenv.cachix.org";
|
"marpa-local:XoO+dFN4PeauF52pYuy3Vh4Sdtl2qIdxu5aUasWKv6Q="
|
||||||
|
"phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
];
|
||||||
|
extra-substituters = [
|
||||||
|
"http://marpa:5000?priority=5"
|
||||||
|
"https://phundrak.cachix.org?priority=10"
|
||||||
|
"https://nix-community.cachix.org?priority=20"
|
||||||
|
"https://cache.nixos.org?priority=40"
|
||||||
|
];
|
||||||
|
extra-experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
http-connections = 128;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
home-manager,
|
home-manager,
|
||||||
devenv,
|
|
||||||
srvos,
|
srvos,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs:
|
||||||
inherit (self) outputs;
|
flake-utils.lib.eachDefaultSystem (
|
||||||
system = "x86_64-linux";
|
system: let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
inherit (self) outputs;
|
||||||
in {
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
formatter.${system} = pkgs.alejandra;
|
in {
|
||||||
|
formatter = pkgs.alejandra;
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.nh
|
||||||
|
pkgs.jujutsu
|
||||||
|
pkgs.git
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
packages.${system} = {
|
packages = {
|
||||||
devenv-up = self.devShells.${system}.default.config.procfileScript;
|
homeConfigurations = let
|
||||||
devenv-test = self.devShells.${system}.default.config.test;
|
extraSpecialArgs = {inherit inputs outputs system;};
|
||||||
};
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
defaultUserModules = [
|
||||||
devShells.${system}.default = devenv.lib.mkShell {
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inherit inputs pkgs;
|
inputs.spicetify.homeManagerModules.default
|
||||||
modules = [
|
inputs.caelestia-shell.homeManagerModules.default
|
||||||
(
|
];
|
||||||
{pkgs, ...}: {
|
withUserModules = modules: nixpkgs.lib.lists.flatten (defaultUserModules ++ [modules]);
|
||||||
packages = [pkgs.nh];
|
in {
|
||||||
git-hooks.hooks = {
|
"phundrak@alys" = home-manager.lib.homeManagerConfiguration {
|
||||||
alejandra.enable = true;
|
inherit extraSpecialArgs pkgs;
|
||||||
commitizen.enable = true;
|
modules = withUserModules ./users/phundrak/host/alys.nix;
|
||||||
detect-private-keys.enable = true;
|
|
||||||
end-of-file-fixer.enable = true;
|
|
||||||
deadnix.enable = true;
|
|
||||||
ripsecrets.enable = true;
|
|
||||||
statix.enable = true;
|
|
||||||
};
|
};
|
||||||
}
|
"creug@elcafe" = home-manager.lib.homeManagerConfiguration {
|
||||||
)
|
inherit extraSpecialArgs pkgs;
|
||||||
];
|
modules = withUserModules ./users/creug/host/elcafe.nix;
|
||||||
};
|
};
|
||||||
|
"phundrak@elcafe" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit extraSpecialArgs pkgs;
|
||||||
|
modules = withUserModules ./users/phundrak/host/elcafe.nix;
|
||||||
|
};
|
||||||
|
"phundrak@gampo" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit extraSpecialArgs pkgs;
|
||||||
|
modules = withUserModules ./users/phundrak/host/gampo.nix;
|
||||||
|
};
|
||||||
|
"phundrak@marpa" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit extraSpecialArgs pkgs;
|
||||||
|
modules = withUserModules ./users/phundrak/host/marpa.nix;
|
||||||
|
};
|
||||||
|
"phundrak@NaroMk3" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit extraSpecialArgs pkgs;
|
||||||
|
modules = withUserModules ./users/phundrak/host/naromk3.nix;
|
||||||
|
};
|
||||||
|
"phundrak@tilo" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit extraSpecialArgs pkgs;
|
||||||
|
modules = withUserModules ./users/phundrak/host/tilo.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
homeConfigurations = let
|
nixosConfigurations = let
|
||||||
extraSpecialArgs = {inherit inputs outputs system;};
|
specialArgs = {inherit inputs outputs;};
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
defaultSystemModules = [
|
||||||
defaultUserModules = [
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.copyparty.nixosModules.default
|
||||||
inputs.spicetify.homeManagerModules.default
|
];
|
||||||
inputs.caelestia-shell.homeManagerModules.default
|
withSystemModules = modules: nixpkgs.lib.lists.flatten (defaultSystemModules ++ [modules]);
|
||||||
];
|
in {
|
||||||
withUserModules = modules: nixpkgs.lib.lists.flatten (defaultUserModules ++ [modules]);
|
alys = nixpkgs.lib.nixosSystem {
|
||||||
in {
|
inherit specialArgs;
|
||||||
"phundrak@alys" = home-manager.lib.homeManagerConfiguration {
|
modules = withSystemModules ./hosts/alys/configuration.nix;
|
||||||
inherit extraSpecialArgs pkgs;
|
};
|
||||||
modules = withUserModules ./users/phundrak/host/alys.nix;
|
elcafe = nixpkgs.lib.nixosSystem {
|
||||||
};
|
inherit specialArgs;
|
||||||
"creug@elcafe" = home-manager.lib.homeManagerConfiguration {
|
modules = withSystemModules ./hosts/elcafe/configuration.nix;
|
||||||
inherit extraSpecialArgs pkgs;
|
};
|
||||||
modules = withUserModules ./users/creug/host/elcafe.nix;
|
gampo = nixpkgs.lib.nixosSystem {
|
||||||
};
|
inherit specialArgs;
|
||||||
"phundrak@elcafe" = home-manager.lib.homeManagerConfiguration {
|
modules = withSystemModules ./hosts/gampo/configuration.nix;
|
||||||
inherit extraSpecialArgs pkgs;
|
};
|
||||||
modules = withUserModules ./users/phundrak/host/elcafe.nix;
|
marpa = nixpkgs.lib.nixosSystem {
|
||||||
};
|
inherit specialArgs;
|
||||||
"phundrak@gampo" = home-manager.lib.homeManagerConfiguration {
|
modules = withSystemModules ./hosts/marpa;
|
||||||
inherit extraSpecialArgs pkgs;
|
};
|
||||||
modules = withUserModules ./users/phundrak/host/marpa.nix;
|
NaroMk3 = nixpkgs.lib.nixosSystem {
|
||||||
};
|
inherit specialArgs;
|
||||||
"phundrak@marpa" = home-manager.lib.homeManagerConfiguration {
|
modules = withSystemModules [
|
||||||
inherit extraSpecialArgs pkgs;
|
srvos.nixosModules.server
|
||||||
modules = withUserModules ./users/phundrak/host/marpa.nix;
|
srvos.nixosModules.hardware-hetzner-cloud
|
||||||
};
|
srvos.nixosModules.mixins-terminfo
|
||||||
"phundrak@NaroMk3" = home-manager.lib.homeManagerConfiguration {
|
./hosts/naromk3/configuration.nix
|
||||||
inherit extraSpecialArgs pkgs;
|
];
|
||||||
modules = withUserModules ./users/phundrak/host/naromk3.nix;
|
};
|
||||||
};
|
tilo = nixpkgs.lib.nixosSystem {
|
||||||
"phundrak@tilo" = home-manager.lib.homeManagerConfiguration {
|
inherit specialArgs;
|
||||||
inherit extraSpecialArgs pkgs;
|
modules = withSystemModules ./hosts/tilo/configuration.nix;
|
||||||
modules = withUserModules ./users/phundrak/host/tilo.nix;
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
}
|
||||||
nixosConfigurations = let
|
);
|
||||||
specialArgs = {inherit inputs outputs;};
|
|
||||||
defaultSystemModules = [
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.copyparty.nixosModules.default
|
|
||||||
];
|
|
||||||
withSystemModules = modules: nixpkgs.lib.lists.flatten (defaultSystemModules ++ [modules]);
|
|
||||||
in {
|
|
||||||
alys = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules ./hosts/alys/configuration.nix;
|
|
||||||
};
|
|
||||||
elcafe = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules ./hosts/elcafe/configuration.nix;
|
|
||||||
};
|
|
||||||
gampo = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules ./hosts/gampo/configuration.nix;
|
|
||||||
};
|
|
||||||
marpa = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules ./hosts/marpa/configuration.nix;
|
|
||||||
};
|
|
||||||
NaroMk3 = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules [
|
|
||||||
srvos.nixosModules.server
|
|
||||||
srvos.nixosModules.hardware-hetzner-cloud
|
|
||||||
srvos.nixosModules.mixins-terminfo
|
|
||||||
./hosts/naromk3/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
tilo = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = withSystemModules ./hosts/tilo/configuration.nix;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,14 +12,14 @@
|
|||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"elcafe/traefik/env".restartUnits = ["traefik.service"];
|
"elcafe/traefik/env".restartUnits = ["traefik.service"];
|
||||||
"elcafe/traefik/dynamic".restartUnits = ["traefik.service"];
|
"elcafe/traefik/dynamic".restartUnits = ["traefik.service"];
|
||||||
"elcafe/copyparty/passwords/creug" = {
|
# "elcafe/copyparty/passwords/creug" = {
|
||||||
restartUnits = ["copyparty.service"];
|
# restartUnits = ["copyparty.service"];
|
||||||
owner = "creug";
|
# owner = "creug";
|
||||||
};
|
# };
|
||||||
"elcafe/copyparty/passwords/phundrak" = {
|
# "elcafe/copyparty/passwords/phundrak" = {
|
||||||
restartUnits = ["copyparty.service"];
|
# restartUnits = ["copyparty.service"];
|
||||||
owner = "phundrak";
|
# owner = "phundrak";
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
mySystem = {
|
mySystem = {
|
||||||
@@ -73,12 +73,12 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.copyparty = import ./copyparty.nix {
|
# services.copyparty = import ./copyparty.nix {
|
||||||
passwordFiles = {
|
# passwordFiles = {
|
||||||
creug = config.sops.secrets."elcafe/copyparty/passwords/creug".path;
|
# creug = config.sops.secrets."elcafe/copyparty/passwords/creug".path;
|
||||||
phundrak = config.sops.secrets."elcafe/copyparty/passwords/phundrak".path;
|
# phundrak = config.sops.secrets."elcafe/copyparty/passwords/phundrak".path;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
};
|
};
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
};
|
};
|
||||||
|
i18n.input.enable = true;
|
||||||
misc.keymap = "fr-bepo";
|
misc.keymap = "fr-bepo";
|
||||||
networking = {
|
networking = {
|
||||||
hostname = "gampo";
|
hostname = "gampo";
|
||||||
|
|||||||
@@ -86,6 +86,7 @@
|
|||||||
scarlett.enable = true;
|
scarlett.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
i18n.input.enable = true;
|
||||||
misc.keymap = "fr-bepo";
|
misc.keymap = "fr-bepo";
|
||||||
networking = {
|
networking = {
|
||||||
hostname = "marpa";
|
hostname = "marpa";
|
||||||
@@ -106,6 +107,10 @@
|
|||||||
programs.steam.enable = true;
|
programs.steam.enable = true;
|
||||||
services = {
|
services = {
|
||||||
fwupd.enable = true;
|
fwupd.enable = true;
|
||||||
|
harmonia = {
|
||||||
|
enable = true;
|
||||||
|
signKeyPaths = [config.sops.secrets."marpa/nix-cache-priv-key".path];
|
||||||
|
};
|
||||||
languagetool.enable = true;
|
languagetool.enable = true;
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
ssh.enable = true;
|
ssh.enable = true;
|
||||||
@@ -123,10 +128,13 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.extraHosts = {
|
sops.secrets = {
|
||||||
inherit (config.users.users.root) group;
|
"marpa/nix-cache-priv-key" = {};
|
||||||
owner = config.users.users.phundrak.name;
|
extraHosts = {
|
||||||
mode = "0440";
|
inherit (config.users.users.root) group;
|
||||||
|
owner = config.users.users.phundrak.name;
|
||||||
|
mode = "0440";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.udev.extraHwdb = ''
|
services.udev.extraHwdb = ''
|
||||||
@@ -6,10 +6,10 @@
|
|||||||
}: let
|
}: let
|
||||||
name = "Handy";
|
name = "Handy";
|
||||||
pname = lib.strings.toLower name;
|
pname = lib.strings.toLower name;
|
||||||
version = "0.7.7";
|
version = "0.8.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/cjpais/${name}/releases/download/v${version}/${name}_${version}_amd64.AppImage";
|
url = "https://github.com/cjpais/${name}/releases/download/v${version}/${name}_${version}_amd64.AppImage";
|
||||||
hash = "sha256-76Hno39I3+46blnVW6XWwg944vF5n7IdMYXGMlYMNb0=";
|
hash = "sha256-PLcssfd6iMx51mglAJ7D4+67HFazwfhJMImgU9WiNDk=";
|
||||||
};
|
};
|
||||||
appimageContent = appimageTools.extractType2 {inherit pname version src;};
|
appimageContent = appimageTools.extractType2 {inherit pname version src;};
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ elcafe:
|
|||||||
traefik:
|
traefik:
|
||||||
env: ENC[AES256_GCM,data:HUdWGYoEPp2v8dnDuVsl7YmPxuBfHmXzGrvKWeiqPlmAwMqVZrZ1j8on/7QKvYDJoTJ40XY2qNynSA==,iv:Vgc/fZERnNp7hSMeRd9EgB3IenKAFTAhwC0bk8CX4DE=,tag:SdfhOST/o29Lt1zRdXXRyQ==,type:str]
|
env: ENC[AES256_GCM,data:HUdWGYoEPp2v8dnDuVsl7YmPxuBfHmXzGrvKWeiqPlmAwMqVZrZ1j8on/7QKvYDJoTJ40XY2qNynSA==,iv:Vgc/fZERnNp7hSMeRd9EgB3IenKAFTAhwC0bk8CX4DE=,tag:SdfhOST/o29Lt1zRdXXRyQ==,type:str]
|
||||||
dynamic: ENC[AES256_GCM,data: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,iv:3G3geSZRziwGiKcUMVNZ7j5s/4YA6Uk7wCSb4aFNSMo=,tag:FxARskR9+wdV7/xCKP8UdA==,type:str]
|
dynamic: ENC[AES256_GCM,data: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,iv:3G3geSZRziwGiKcUMVNZ7j5s/4YA6Uk7wCSb4aFNSMo=,tag:FxARskR9+wdV7/xCKP8UdA==,type:str]
|
||||||
|
marpa:
|
||||||
|
nix-cache-priv-key: ENC[AES256_GCM,data:H5VsN0nOogvgxWHXHF66BbzJe17zelZCG6mU4vmVJqBoi7a5cQxzU7WnV4k1EOpMJPDj6floVmrsG4DM86FthxcTwixCNDINmaemwAXQnUkgWXFKYY7Ovzten81UVKrtkN4n1S8=,iv:pxnHD5YqyTeNZnxyEJeXAUixZEz8Uq9b2HFZZBsMOzk=,tag:xI+4tFG+Q4Z5IVxlATayJA==,type:str]
|
||||||
extraHosts: ENC[AES256_GCM,data:4lp7w0snYle7vGVLJq3zlTxoC8eVpaSreW3P8Aq+O6oRJoWo3IASpwi7zSx6nxmLo5LGPeupVXfy3xOkG9d5QFNU2uU6vXKvOnnm6wrpS+UcYp/4U/z+R3rFnFsI5PsCgmlL1bSUFCFkXlrLDIyoW50Q/DLXDS8QaUYAtto1DcRUXc9j8RnunYF38HFlAOD/Xa4DY048pvZu8TMsmLQjM5txZnZBq4+P8aBjY3SF+K9cqZ+SgQkU+gdGo0/S/N5OUZJ3ATJ6mglPl/Nplw/Dh9HvC7jEMJZKrVzWiYquTOn0/IytqOCS2SkhsmVMRqf06hpvhlz6sFXzkDfxKMIRTULEkjZDkZ7QioSbLeqmQePSg7xs28SvToiVKSpg0PxeH5LvJE73hgX3ATUXA2BmRvqQuqBwLaDU6TPm8xkYe7qbabaN5oFtXCI/XydZTao5Glqw/BZQRTise/qGgn3Bfl/ieMYQOqCMEdHzR0Beipur6spliGFC4YnwL3Nh4CO6qOB/j61a7rqY6nLyo54jWtjvHX42pTuGWhvhGH1z4NRZqcKks+KCMB4PcCXgul1hrb04wLXYVu7R/7QqOACp4SZBUFZCj+izcsnB1sKdKliL87VBUkwOSF+1JUCY,iv:5A3jCWLkooCkuOMiybbeQ9+TRA7CoiW3qbzmJLVarSc=,tag:qLsGhrFHs65Vesj4Ot4I/g==,type:str]
|
extraHosts: ENC[AES256_GCM,data:4lp7w0snYle7vGVLJq3zlTxoC8eVpaSreW3P8Aq+O6oRJoWo3IASpwi7zSx6nxmLo5LGPeupVXfy3xOkG9d5QFNU2uU6vXKvOnnm6wrpS+UcYp/4U/z+R3rFnFsI5PsCgmlL1bSUFCFkXlrLDIyoW50Q/DLXDS8QaUYAtto1DcRUXc9j8RnunYF38HFlAOD/Xa4DY048pvZu8TMsmLQjM5txZnZBq4+P8aBjY3SF+K9cqZ+SgQkU+gdGo0/S/N5OUZJ3ATJ6mglPl/Nplw/Dh9HvC7jEMJZKrVzWiYquTOn0/IytqOCS2SkhsmVMRqf06hpvhlz6sFXzkDfxKMIRTULEkjZDkZ7QioSbLeqmQePSg7xs28SvToiVKSpg0PxeH5LvJE73hgX3ATUXA2BmRvqQuqBwLaDU6TPm8xkYe7qbabaN5oFtXCI/XydZTao5Glqw/BZQRTise/qGgn3Bfl/ieMYQOqCMEdHzR0Beipur6spliGFC4YnwL3Nh4CO6qOB/j61a7rqY6nLyo54jWtjvHX42pTuGWhvhGH1z4NRZqcKks+KCMB4PcCXgul1hrb04wLXYVu7R/7QqOACp4SZBUFZCj+izcsnB1sKdKliL87VBUkwOSF+1JUCY,iv:5A3jCWLkooCkuOMiybbeQ9+TRA7CoiW3qbzmJLVarSc=,tag:qLsGhrFHs65Vesj4Ot4I/g==,type:str]
|
||||||
mopidy:
|
mopidy:
|
||||||
spotify: ENC[AES256_GCM,data:6i9BzQmlndnROuT1H2zgN/3I6hBiFf14BlcS+XL2PbTiiEQZe2yE3tnZo3KXU9S5CjS3MwxsVdytKOFMQt2s1bVjcibBhJzoKEQByaapdzn1mK3kQLdJfhPf4Hf9YZV9Dlc60ngS7ESLZakdFVlj4rlbV5XReLhK,iv:fYd78r4U0kTyq1TZjBVXkjdNiOQ29gLJ53kwTXsi8W0=,tag:oWaeOuzdHWS4joZAdeA2pg==,type:str]
|
spotify: ENC[AES256_GCM,data:6i9BzQmlndnROuT1H2zgN/3I6hBiFf14BlcS+XL2PbTiiEQZe2yE3tnZo3KXU9S5CjS3MwxsVdytKOFMQt2s1bVjcibBhJzoKEQByaapdzn1mK3kQLdJfhPf4Hf9YZV9Dlc60ngS7ESLZakdFVlj4rlbV5XReLhK,iv:fYd78r4U0kTyq1TZjBVXkjdNiOQ29gLJ53kwTXsi8W0=,tag:oWaeOuzdHWS4joZAdeA2pg==,type:str]
|
||||||
@@ -105,7 +107,7 @@ sops:
|
|||||||
dUpXZis2N2VyN0ZFbjlPRXdwRFQ1aHMKm1Mk6MPKxFmwdATCYUANRSY5rHKgmQer
|
dUpXZis2N2VyN0ZFbjlPRXdwRFQ1aHMKm1Mk6MPKxFmwdATCYUANRSY5rHKgmQer
|
||||||
LBlqqWKt1JiIUAYtazQeQ6KYxmjVlQPY7AZw2t+EhBEPrqbTL3vOiw==
|
LBlqqWKt1JiIUAYtazQeQ6KYxmjVlQPY7AZw2t+EhBEPrqbTL3vOiw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-03-07T17:19:05Z"
|
lastmodified: "2026-05-01T13:20:34Z"
|
||||||
mac: ENC[AES256_GCM,data:hT4mPKLcIuAFmllJBYFXL5sGyMn95mYEv+eGVA+KQYm629YKSncgvn5g8elau/8HXR1O/bwQlkGmGr8VPeR/0KRb6TPCA4MrCwox38fy3ZLx2e0movVi/xIgKXIo5wYUq4Qm/pSo715limxGChxUxKtdEK/lmMkSnxyGmlkQtwM=,iv:XoOfhdK/CK6shUXhH4h14gtyqZqcqmTV6/R2jkynFr8=,tag:q3V0xcWQxjFi2drk5fLJoQ==,type:str]
|
mac: ENC[AES256_GCM,data:OueL0eHYmFKWfSyCZxburRJ2FS1xkowx7ha/Zv7r++26D85GSHDeIL9HdfByI5a1OhH90rH3WLxZrJgT3FiwBw27HhhHtS7Fs6MBFvTuPmSA7ZtMeGMWBRVjwbGAWN17BZAhJzMlZHq2nPX0xXIKT0HuTLVRPLuVCSlvDzMXsTE=,iv:+JN4Vzs8o8PJAam/uKBbUXt3ArxC88D6xR7rMeeGglg=,tag:S+OtbxLhVKFnqBZtyKDGyA==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.12.2
|
||||||
|
|||||||
@@ -73,10 +73,7 @@ in {
|
|||||||
};
|
};
|
||||||
supportedFilesystems = mkIf cfg.zfs.enable ["zfs"];
|
supportedFilesystems = mkIf cfg.zfs.enable ["zfs"];
|
||||||
zfs.extraPools = mkIf cfg.zfs.enable cfg.zfs.pools;
|
zfs.extraPools = mkIf cfg.zfs.enable cfg.zfs.pools;
|
||||||
kernelPackages =
|
kernelPackages = cfg.kernel.package;
|
||||||
if cfg.kernel.hardened
|
|
||||||
then pkgs.linuxPackages_hardened
|
|
||||||
else cfg.kernel.package;
|
|
||||||
kernelModules =
|
kernelModules =
|
||||||
cfg.kernel.modules
|
cfg.kernel.modules
|
||||||
++ ["kvm-${cfg.kernel.cpuVendor}"]
|
++ ["kvm-${cfg.kernel.cpuVendor}"]
|
||||||
|
|||||||
@@ -36,10 +36,33 @@ in {
|
|||||||
boot.tmp.cleanOnBoot = true;
|
boot.tmp.cleanOnBoot = true;
|
||||||
console.keyMap = cfg.keymap;
|
console.keyMap = cfg.keymap;
|
||||||
time.timeZone = cfg.timezone;
|
time.timeZone = cfg.timezone;
|
||||||
environment.pathsToLink = ["/share/bash-completion" "/share/zsh"];
|
environment.pathsToLink = [
|
||||||
|
"/share/bash-completion"
|
||||||
|
"/share/zsh"
|
||||||
|
];
|
||||||
services = {
|
services = {
|
||||||
orca.enable = false;
|
orca.enable = false;
|
||||||
envfs.enable = true;
|
envfs.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
substituters = [
|
||||||
|
"http://marpa:5000?priority=5"
|
||||||
|
"https://phundrak.cachix.org?priority=10"
|
||||||
|
"https://nix-community.cachix.org?priority=20"
|
||||||
|
"https://cache.nixos.org?priority=40"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"marpa-local:XoO+dFN4PeauF52pYuy3Vh4Sdtl2qIdxu5aUasWKv6Q="
|
||||||
|
"phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
];
|
||||||
|
http-connections = 128;
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ with lib; let
|
|||||||
in {
|
in {
|
||||||
options.mySystem.desktop.waydroid.enable = mkEnableOption "Enables Waydroid";
|
options.mySystem.desktop.waydroid.enable = mkEnableOption "Enables Waydroid";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
virtualisation.waydroid.enable = cfg.enable;
|
virtualisation.waydroid = {
|
||||||
|
enable = cfg.enable;
|
||||||
|
package = pkgs.waydroid-nftables;
|
||||||
|
};
|
||||||
environment.systemPackages = [pkgs.waydroid-helper];
|
environment.systemPackages = [pkgs.waydroid-helper];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./input.nix
|
||||||
./locale.nix
|
./locale.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
25
system/i18n/input.nix
Normal file
25
system/i18n/input.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.mySystem.i18n.input;
|
||||||
|
in {
|
||||||
|
options.mySystem.i18n.input.enable = mkEnableOption "Enable i18n input with fcitx5";
|
||||||
|
|
||||||
|
config.i18n.inputMethod = mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
type = "fcitx5";
|
||||||
|
fcitx5.addons = with pkgs; [
|
||||||
|
fcitx5-gtk
|
||||||
|
fcitx5-mozc-ut # Japanese input support
|
||||||
|
fcitx5-nord
|
||||||
|
fcitx5-table-other # X-SAMPA to IPA support
|
||||||
|
qt6Packages.fcitx5-chinese-addons # allow to load table addons
|
||||||
|
qt6Packages.fcitx5-configtool
|
||||||
|
qt6Packages.fcitx5-with-addons
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
./calibre.nix
|
./calibre.nix
|
||||||
./endlessh.nix
|
./endlessh.nix
|
||||||
./fwupd.nix
|
./fwupd.nix
|
||||||
|
./harmonia.nix
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./languagetool.nix
|
./languagetool.nix
|
||||||
./plex.nix
|
./plex.nix
|
||||||
|
|||||||
36
system/services/harmonia.nix
Normal file
36
system/services/harmonia.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.mySystem.services.harmonia;
|
||||||
|
in {
|
||||||
|
options.mySystem.services.harmonia = {
|
||||||
|
enable = mkEnableOption "Harmonia Nix binary cache server";
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 5000;
|
||||||
|
description = "Port to listen on";
|
||||||
|
};
|
||||||
|
priority = mkOption {
|
||||||
|
type = types.ints.between 0 100;
|
||||||
|
default = 50;
|
||||||
|
description = "Cache priority (lower = higher priority, 0-100)";
|
||||||
|
};
|
||||||
|
signKeyPaths = mkOption {
|
||||||
|
type = types.listOf types.path;
|
||||||
|
description = "Paths to the signing keys to use for signing the cache.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.harmonia.cache = {
|
||||||
|
enable = true;
|
||||||
|
inherit (cfg) signKeyPaths;
|
||||||
|
settings = {
|
||||||
|
inherit (cfg) priority;
|
||||||
|
bind = "[::]:${toString cfg.port}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -34,7 +34,16 @@ in {
|
|||||||
creug.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
|
creug.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
|
||||||
|
|
||||||
dev.vcs = {
|
dev.vcs = {
|
||||||
jj.enable = false;
|
name = "Creug";
|
||||||
|
email = "gregory.foulachon@gmail.com";
|
||||||
|
editor = "${pkgs.nano}/bin/nano";
|
||||||
|
jj = {
|
||||||
|
enable = true;
|
||||||
|
cz = {
|
||||||
|
enable = true;
|
||||||
|
alias = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
publicKey = cfg.sshKey;
|
publicKey = cfg.sshKey;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ in {
|
|||||||
explorer = ["${pkgs.nemo-with-extensions}/bin/nemo"];
|
explorer = ["${pkgs.nemo-with-extensions}/bin/nemo"];
|
||||||
};
|
};
|
||||||
idle = {
|
idle = {
|
||||||
|
inhibitWhenAudio = true;
|
||||||
timeouts = [
|
timeouts = [
|
||||||
{
|
{
|
||||||
timeout = 300;
|
timeout = 3600;
|
||||||
idleAction = "lock";
|
idleAction = "lock";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ in {
|
|||||||
imports = [
|
imports = [
|
||||||
./caelestia.nix
|
./caelestia.nix
|
||||||
./eww.nix
|
./eww.nix
|
||||||
|
./firefox.nix
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
./kdeconnect.nix
|
./kdeconnect.nix
|
||||||
./kitty.nix
|
./kitty.nix
|
||||||
@@ -18,6 +19,7 @@ in {
|
|||||||
./swaync.nix
|
./swaync.nix
|
||||||
./theme.nix
|
./theme.nix
|
||||||
./waybar.nix
|
./waybar.nix
|
||||||
|
./wl-kbptr.nix
|
||||||
./wlr-which-key.nix
|
./wlr-which-key.nix
|
||||||
./wlsunset.nix
|
./wlsunset.nix
|
||||||
];
|
];
|
||||||
@@ -25,6 +27,7 @@ in {
|
|||||||
options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
|
options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
|
||||||
config.home.desktop = {
|
config.home.desktop = {
|
||||||
eww.enable = mkDefault cfg.fullDesktop;
|
eww.enable = mkDefault cfg.fullDesktop;
|
||||||
|
firefox.enable = mkDefault cfg.fullDesktop;
|
||||||
hyprland.enable = mkDefault cfg.fullDesktop;
|
hyprland.enable = mkDefault cfg.fullDesktop;
|
||||||
kdeconnect.enable = mkDefault cfg.fullDesktop;
|
kdeconnect.enable = mkDefault cfg.fullDesktop;
|
||||||
kitty.enable = mkDefault cfg.fullDesktop;
|
kitty.enable = mkDefault cfg.fullDesktop;
|
||||||
|
|||||||
70
users/modules/desktop/firefox.nix
Normal file
70
users/modules/desktop/firefox.nix
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.home.desktop.firefox;
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||||||
|
zen = inputs.zen-browser.packages.${system}.default;
|
||||||
|
settingsToLines = settings:
|
||||||
|
concatStringsSep "\n" (mapAttrsToList (name: value: "set ${name} ${toString value}") settings);
|
||||||
|
in {
|
||||||
|
options.home.desktop.firefox = {
|
||||||
|
enable = mkEnableOption "enable Firefox";
|
||||||
|
useZen = mkEnableOption "use Zen instead of Firefox";
|
||||||
|
tridactyl = {
|
||||||
|
enable = mkEnableOption "enable Tridactyl";
|
||||||
|
preConfig = mkOption {
|
||||||
|
description = "Lines to add to the beginning of tridactylrc";
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
config = mkOption {
|
||||||
|
type = with types;
|
||||||
|
attrsOf (oneOf [
|
||||||
|
int
|
||||||
|
str
|
||||||
|
bool
|
||||||
|
]);
|
||||||
|
description = "Tridactyl settings (converted to 'set key value' lines)";
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
smoothscroll = true;
|
||||||
|
history = 1000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = mkOption {
|
||||||
|
description = "Extra lines to add to tridactylrc (for bindings, autocmds, etc)";
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.firefox = {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
package =
|
||||||
|
if cfg.useZen
|
||||||
|
then zen
|
||||||
|
else pkgs.firefox;
|
||||||
|
nativeMessagingHosts = lists.optional cfg.tridactyl.enable pkgs.tridactyl-native;
|
||||||
|
};
|
||||||
|
xdg.configFile."tridactyl/tridactylrc" = mkIf cfg.tridactyl.enable {
|
||||||
|
text = concatStringsSep "\n" (filter (s: s != "") [
|
||||||
|
cfg.tridactyl.preConfig
|
||||||
|
(settingsToLines (cfg.tridactyl.config
|
||||||
|
// {
|
||||||
|
browser =
|
||||||
|
if cfg.useZen
|
||||||
|
then "zen"
|
||||||
|
else "firefox";
|
||||||
|
}))
|
||||||
|
cfg.tridactyl.extraConfig
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -50,10 +50,13 @@ in {
|
|||||||
systemd.enable = false;
|
systemd.enable = false;
|
||||||
importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"];
|
importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"];
|
||||||
settings = {
|
settings = {
|
||||||
|
env = [
|
||||||
|
"XMODIFIERS,@im=fcitx"
|
||||||
|
"XCURSOR_SIZE,12"
|
||||||
|
];
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "fr,us";
|
kb_layout = "fr,us";
|
||||||
kb_variant = "bepo_afnor,";
|
kb_variant = "bepo_afnor,";
|
||||||
# kb_options = "caps:ctrl_modifier";
|
|
||||||
numlock_by_default = true;
|
numlock_by_default = true;
|
||||||
follow_mouse = 1;
|
follow_mouse = 1;
|
||||||
touchpad.natural_scroll = false;
|
touchpad.natural_scroll = false;
|
||||||
@@ -106,6 +109,8 @@ in {
|
|||||||
"pactl load-module module-switch-on-connect"
|
"pactl load-module module-switch-on-connect"
|
||||||
"${pkgs.mpc}/bin/mpc stop"
|
"${pkgs.mpc}/bin/mpc stop"
|
||||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||||
|
"${pkgs.mozc}/lib/mozc/mozc_server"
|
||||||
|
"${pkgs.fcitx5}/bin/fcitx5 -d"
|
||||||
]
|
]
|
||||||
++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
||||||
};
|
};
|
||||||
@@ -170,8 +175,6 @@ in {
|
|||||||
bind = SUPER_SHIFT, minus, movetoworkspace, 8
|
bind = SUPER_SHIFT, minus, movetoworkspace, 8
|
||||||
bind = SUPER_SHIFT, slash, movetoworkspace, 9
|
bind = SUPER_SHIFT, slash, movetoworkspace, 9
|
||||||
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
||||||
|
|
||||||
env = XCURSOR_SIZE,12
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ in {
|
|||||||
package = pkgs.nordic;
|
package = pkgs.nordic;
|
||||||
name = "Nordic";
|
name = "Nordic";
|
||||||
};
|
};
|
||||||
|
gtk4.theme = config.gtk.theme;
|
||||||
};
|
};
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
37
users/modules/desktop/wl-kbptr.nix
Normal file
37
users/modules/desktop/wl-kbptr.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
configDir = config.xdg.configHome;
|
||||||
|
cfg = config.home.desktop.wl-kbptr;
|
||||||
|
iniFormat = pkgs.formats.ini {};
|
||||||
|
in {
|
||||||
|
options.home.desktop.wl-kbptr = {
|
||||||
|
enable = mkEnableOption "enable wl-kbptr";
|
||||||
|
config = mkOption {
|
||||||
|
inherit (iniFormat) type;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Options to add to the {file}`config` file. See
|
||||||
|
<https://github.com/moverest/wl-kbptr/blob/main/config.example>
|
||||||
|
for options.
|
||||||
|
'';
|
||||||
|
example = {
|
||||||
|
general = {
|
||||||
|
home_row_keys = "abcd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home = {
|
||||||
|
packages = [pkgs.wl-kbptr];
|
||||||
|
file."${configDir}/wl-kbptr/config" = mkIf (cfg.config != {}) {
|
||||||
|
source = iniFormat.generate "wl-kbptr-config" cfg.config;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,16 +6,23 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.home.dev.ai.claude;
|
cfg = config.home.dev.ai.claude;
|
||||||
|
jsonFormat = pkgs.formats.json {};
|
||||||
in {
|
in {
|
||||||
options.home.dev.ai.claude.enable = mkEnableOption "Enables Claude-related packages";
|
options.home.dev.ai.claude = {
|
||||||
|
enable = mkEnableOption "Enables Claude-related packages";
|
||||||
|
mcpServers = mkOption {
|
||||||
|
inherit (jsonFormat) type;
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = let
|
home.packages = let
|
||||||
claude-jj = pkgs.writeShellScriptBin "claude-jj" ''
|
claude-jj = pkgs.writeShellScriptBin "claude-jj" ''
|
||||||
${pkgs.claude-code}/bin/claude --append-system-prompt 'CRITICAL: This repository uses Jujutsu (jj), NOT git. Never use git commands. Use jj equivalents. See CLAUDE.md.' "$@"
|
${pkgs.claude-code}/bin/claude --append-system-prompt 'CRITICAL: This repository uses Jujutsu (jj), NOT git. Never use git commands. Use jj equivalents.' "$@"
|
||||||
'';
|
'';
|
||||||
in [claude-jj];
|
in [claude-jj pkgs.sox];
|
||||||
programs.claude-code = {
|
programs.claude-code = {
|
||||||
inherit (cfg) enable;
|
inherit (cfg) enable mcpServers;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,22 +2,42 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.home.dev.ai;
|
cfg = config.home.dev.ai;
|
||||||
|
jsonFormat = pkgs.formats.json {};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./claude.nix
|
./claude.nix
|
||||||
./ollama.nix
|
./ollama.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options.home.dev.ai.enable = mkEnableOption "Enables AI features";
|
options.home.dev.ai = {
|
||||||
config.home = mkIf cfg.enable {
|
enable = mkEnableOption "Enables AI features";
|
||||||
dev.ai = {
|
mcpServers = mkOption {
|
||||||
claude.enable = mkDefault cfg.enable;
|
inherit (jsonFormat) type;
|
||||||
ollama.enable = mkDefault cfg.enable;
|
default = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
home = mkIf cfg.enable {
|
||||||
|
dev.ai = {
|
||||||
|
claude = {
|
||||||
|
enable = mkDefault cfg.enable;
|
||||||
|
mcpServers = mkDefault cfg.mcpServers;
|
||||||
|
};
|
||||||
|
ollama.enable = mkDefault cfg.enable;
|
||||||
|
};
|
||||||
|
packages = let
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||||||
|
inherit (inputs.opencode.packages.${system}) opencode;
|
||||||
|
in [pkgs.lmstudio opencode];
|
||||||
|
};
|
||||||
|
programs.mcp = mkIf (cfg.mcpServers != {}) {
|
||||||
|
enable = true;
|
||||||
|
servers = cfg.mcpServers;
|
||||||
};
|
};
|
||||||
packages = [pkgs.lmstudio];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ in {
|
|||||||
enable = mkDefault true;
|
enable = mkDefault true;
|
||||||
inherit (cfg) name email editor;
|
inherit (cfg) name email editor;
|
||||||
signing.sshKey = mkDefault (cfg.publicKey.file or cfg.publicKey.content);
|
signing.sshKey = mkDefault (cfg.publicKey.file or cfg.publicKey.content);
|
||||||
|
cz = {
|
||||||
|
enable = mkDefault true;
|
||||||
|
alias = mkDefault true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,6 +127,14 @@ in {
|
|||||||
|
|
||||||
"dist/"
|
"dist/"
|
||||||
];
|
];
|
||||||
|
signing = {
|
||||||
|
format =
|
||||||
|
if cfg.publicKeyFile != null
|
||||||
|
then "ssh"
|
||||||
|
else "openpgp";
|
||||||
|
key = cfg.publicKeyFile;
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
user = {
|
user = {
|
||||||
inherit (cfg) name email;
|
inherit (cfg) name email;
|
||||||
@@ -151,8 +159,6 @@ in {
|
|||||||
renames = "copy";
|
renames = "copy";
|
||||||
interHunkContext = 10;
|
interHunkContext = 10;
|
||||||
};
|
};
|
||||||
commit.gpgsign = cfg.publicKeyFile != null;
|
|
||||||
gpg.format = "ssh";
|
|
||||||
gpg.ssh.allowedSignersFile = "${config.home.homeDirectory}/.ssh/allowed_signers";
|
gpg.ssh.allowedSignersFile = "${config.home.homeDirectory}/.ssh/allowed_signers";
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
pull.rebase = true;
|
pull.rebase = true;
|
||||||
@@ -168,7 +174,6 @@ in {
|
|||||||
updateRefs = true;
|
updateRefs = true;
|
||||||
};
|
};
|
||||||
help.autocorrect = "prompt";
|
help.autocorrect = "prompt";
|
||||||
user.signingkey = mkIf (cfg.publicKeyFile != null) cfg.publicKeyFile;
|
|
||||||
web.browser = mkIf (cfg.browser != null) cfg.browser;
|
web.browser = mkIf (cfg.browser != null) cfg.browser;
|
||||||
sendemail = mkIf cfg.sendmail.enable {
|
sendemail = mkIf cfg.sendmail.enable {
|
||||||
smtpserver = cfg.sendmail.server;
|
smtpserver = cfg.sendmail.server;
|
||||||
|
|||||||
@@ -2,10 +2,13 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||||||
cfg = config.home.dev.vcs.jj;
|
cfg = config.home.dev.vcs.jj;
|
||||||
|
jj-cz = inputs.jj-cz.packages.${system}.default;
|
||||||
in {
|
in {
|
||||||
options.home.dev.vcs.jj = {
|
options.home.dev.vcs.jj = {
|
||||||
enable = mkEnableOption "enables jj";
|
enable = mkEnableOption "enables jj";
|
||||||
@@ -33,83 +36,91 @@ in {
|
|||||||
description = "Path to the private SSH key for signing.";
|
description = "Path to the private SSH key for signing.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
cz = {
|
||||||
|
enable = mkEnableOption "Enables jj-cz";
|
||||||
|
alias = mkEnableOption "Enable `jj cz` as an alias to `jj-cz`";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.jujutsu = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
enable = true;
|
home.packages = mkIf cfg.cz.enable [jj-cz];
|
||||||
settings = {
|
programs.jujutsu = {
|
||||||
user = {
|
enable = true;
|
||||||
inherit (cfg) name email;
|
settings = {
|
||||||
};
|
user = {
|
||||||
ui = {
|
inherit (cfg) name email;
|
||||||
default-command = "st";
|
};
|
||||||
pager = ":builtin";
|
ui = {
|
||||||
show-cryptographic-signatures = true;
|
default-command = "st";
|
||||||
diff-editor = ":builtin";
|
pager = ":builtin";
|
||||||
merge-editort = ":builtin";
|
show-cryptographic-signatures = true;
|
||||||
inherit (cfg) editor;
|
diff-editor = ":builtin";
|
||||||
};
|
merge-editort = ":builtin";
|
||||||
signing = mkIf cfg.signing.enable {
|
inherit (cfg) editor;
|
||||||
behavior = "own";
|
};
|
||||||
backend = "ssh";
|
signing = mkIf cfg.signing.enable {
|
||||||
key = cfg.signing.sshKey;
|
behavior = "own";
|
||||||
backends.ssh.allowed-signers = "${config.home.homeDirectory}/.ssh/allowed_signers";
|
backend = "ssh";
|
||||||
backends.ssh.program = "${pkgs.openssh}/bin/ssh-keygen";
|
key = cfg.signing.sshKey;
|
||||||
};
|
backends.ssh.allowed-signers = "${config.home.homeDirectory}/.ssh/allowed_signers";
|
||||||
aliases = {
|
backends.ssh.program = "${pkgs.openssh}/bin/ssh-keygen";
|
||||||
blame = ["file" "annotate"];
|
};
|
||||||
consume = ["squash" "--into" "@" "--from"];
|
aliases = {
|
||||||
eject = ["squash" "--from" "@" "--into"];
|
blame = ["file" "annotate"];
|
||||||
d = ["diff"];
|
consume = ["squash" "--into" "@" "--from"];
|
||||||
dm = ["desc" "-m"];
|
cz = mkIf cfg.cz.alias ["util" "exec" "--" "${jj-cz}/bin/jj-cz"];
|
||||||
gc = ["git" "clone"];
|
eject = ["squash" "--from" "@" "--into"];
|
||||||
gcc = ["git" "clone" "--colocate"];
|
d = ["diff"];
|
||||||
l = ["log"];
|
dm = ["desc" "-m"];
|
||||||
la = ["log" "-r" "::"];
|
gc = ["git" "clone"];
|
||||||
lc = ["log" "-r" "(remote_bookmarks()..@)::"];
|
gcc = ["git" "clone" "--colocate"];
|
||||||
ll = ["log" "-T" "builtin_log_detailed"];
|
l = ["log"];
|
||||||
open = ["log" "-r" "open()"];
|
la = ["log" "-r" "::"];
|
||||||
n = ["new"];
|
lc = ["log" "-r" "(remote_bookmarks()..@)::"];
|
||||||
nd = ["new" "dev()"];
|
ll = ["log" "-T" "builtin_log_detailed"];
|
||||||
nt = ["new" "trunk()"];
|
open = ["log" "-r" "open()"];
|
||||||
revlog = ["evolog"];
|
n = ["new"];
|
||||||
s = ["show"];
|
nd = ["new" "dev()"];
|
||||||
tug = ["bookmark" "move" "--from" "heads(::@- & bookmarks())" "--to" "@-"];
|
nt = ["new" "trunk()"];
|
||||||
};
|
revlog = ["evolog"];
|
||||||
colors.working_copy.underline = true;
|
s = ["show"];
|
||||||
git = {
|
tug = ["bookmark" "move" "--from" "heads(::@- & bookmarks())" "--to" "@-"];
|
||||||
private-commits = "blacklist()";
|
};
|
||||||
colocate = true;
|
colors.working_copy.underline = true;
|
||||||
subprocess = true;
|
git = {
|
||||||
};
|
private-commits = "blacklist()";
|
||||||
revset-aliases = {
|
colocate = true;
|
||||||
"immutable_heads()" = "present(trunk()) | tags()";
|
subprocess = true;
|
||||||
# Resolves by default to latest main/master remote bookmarks
|
};
|
||||||
"trunk()" = "latest((present(main) | present(master)) & remote_bookmarks())";
|
revset-aliases = {
|
||||||
# Same as trunk() but for `dev` or `develop` bookmarks
|
"immutable_heads()" = "present(trunk()) | tags()";
|
||||||
"dev()" = "latest((present(dev) | present(develop)) & remote_bookmarks())";
|
# Resolves by default to latest main/master remote bookmarks
|
||||||
|
"trunk()" = "latest((present(main) | present(master)) & remote_bookmarks())";
|
||||||
|
# Same as trunk() but for `dev` or `develop` bookmarks
|
||||||
|
"dev()" = "latest((present(dev) | present(develop)) & remote_bookmarks())";
|
||||||
|
|
||||||
"user(x)" = "author(x) | committer(x)";
|
"user(x)" = "author(x) | committer(x)";
|
||||||
"gh_pages()" = "ancestors(remote_bookmarks(exact:\"gh-pages\"))";
|
"gh_pages()" = "ancestors(remote_bookmarks(exact:\"gh-pages\"))";
|
||||||
|
|
||||||
#Private and WIP commits that should never be pushed
|
#Private and WIP commits that should never be pushed
|
||||||
"wip()" = "description(glob:\"wip:*\")";
|
"wip()" = "description(glob:\"wip:*\")";
|
||||||
"private()" = "description(glob:\"private:*\")";
|
"private()" = "description(glob:\"private:*\")";
|
||||||
"blacklist()" = "wip() | private()";
|
"blacklist()" = "wip() | private()";
|
||||||
|
|
||||||
# stack(x, n) is the set of mutable commits reachable from
|
# stack(x, n) is the set of mutable commits reachable from
|
||||||
# 'x', with 'n' parents. 'n' is often useful to customize the
|
# 'x', with 'n' parents. 'n' is often useful to customize the
|
||||||
# display and return set for certain operations. 'x' can be
|
# display and return set for certain operations. 'x' can be
|
||||||
# used to target the set of 'roots' to traverse, e.g. @ is the
|
# used to target the set of 'roots' to traverse, e.g. @ is the
|
||||||
# current stack.
|
# current stack.
|
||||||
"stack()" = "ancestors(reachable(@, mutable()), 2)";
|
"stack()" = "ancestors(reachable(@, mutable()), 2)";
|
||||||
"stack(x)" = "ancestors(reachable(x, mutable()), 2)";
|
"stack(x)" = "ancestors(reachable(x, mutable()), 2)";
|
||||||
"stack(x, n)" = "ancestors(reachable(x, mutable()), n)";
|
"stack(x, n)" = "ancestors(reachable(x, mutable()), n)";
|
||||||
|
|
||||||
"open()" = "stack(dev().. & mine(), 1)";
|
"open()" = "stack(dev().. & mine(), 1)";
|
||||||
"ready()" = "open() ~ blacklist()::";
|
"ready()" = "open() ~ blacklist()::";
|
||||||
|
};
|
||||||
|
remotes.origin.auto-track-bookmarks = "*";
|
||||||
};
|
};
|
||||||
remotes.origin.auto-track-bookmarks = "*";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ in {
|
|||||||
./fish.nix
|
./fish.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
|
./zellij.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
./zoxide.nix
|
./zoxide.nix
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -6,8 +6,42 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.home.shell.tmux;
|
cfg = config.home.shell.tmux;
|
||||||
|
keyType = types.submodule {
|
||||||
|
options = {
|
||||||
|
key = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "C-b";
|
||||||
|
};
|
||||||
|
action = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "resize-pane -Z";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.home.shell.tmux.enable = mkEnableOption "Enable tmux";
|
options.home.shell.tmux = with types; {
|
||||||
|
enable = mkEnableOption "Enable tmux";
|
||||||
|
bind = mkOption {
|
||||||
|
type = attrsOf (listOf keyType);
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
"prefix" = [
|
||||||
|
{
|
||||||
|
key = "C-r";
|
||||||
|
action = "resize-pane -R";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
unbind = mkOption {
|
||||||
|
type = listOf (either str (attrsOf (listOf str)));
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
config.programs.tmux = mkIf cfg.enable {
|
config.programs.tmux = mkIf cfg.enable {
|
||||||
inherit (cfg) enable;
|
inherit (cfg) enable;
|
||||||
baseIndex = 1;
|
baseIndex = 1;
|
||||||
@@ -25,71 +59,23 @@ in {
|
|||||||
sensible
|
sensible
|
||||||
yank
|
yank
|
||||||
];
|
];
|
||||||
extraConfig = ''
|
extraConfig = let
|
||||||
set-option -sa terminal-overrides ",xterm*:Tc"
|
generateBinds = concatLines (
|
||||||
|
mapAttrsToList (table: keys: concatMapStrings (key: "bind -T ${table} ${key.key} ${key.action}\n") keys) cfg.bind
|
||||||
|
);
|
||||||
|
generateUnbind =
|
||||||
|
concatMapStrings (
|
||||||
|
entry:
|
||||||
|
if builtins.isString entry
|
||||||
|
then "unbind ${entry}\n"
|
||||||
|
else concatStrings (mapAttrsToList (table: keys: concatMapStrings (key: "unbind -T ${table} ${key}\n") keys) entry)
|
||||||
|
)
|
||||||
|
cfg.unbind;
|
||||||
|
in ''
|
||||||
|
${cfg.extraConfig}
|
||||||
|
|
||||||
unbind C-b
|
${generateUnbind}
|
||||||
|
${generateBinds}
|
||||||
bind-key -T prefix « select-window -p
|
|
||||||
bind-key -T prefix » select-window -n
|
|
||||||
bind-key -T prefix Tab switch-client -T windows
|
|
||||||
bind-key -T prefix w switch-client -T pane
|
|
||||||
bind-key -T prefix y switch-client -T copy-mode
|
|
||||||
|
|
||||||
bind-key -T pane / split-window -h -c "#{pane-current_path}"
|
|
||||||
bind-key -T pane - split-window -v -c "#{pane-current_path}"
|
|
||||||
bind-key -T pane c select-pane -L
|
|
||||||
bind-key -T pane t select-pane -D
|
|
||||||
bind-key -T pane s select-pane -U
|
|
||||||
bind-key -T pane r select-pane -R
|
|
||||||
bind-key -T pane f resize-pane -Z
|
|
||||||
bind-key -T pane . switch-client -T pane-resize
|
|
||||||
|
|
||||||
bind-key -T pane-resize c resize-pane -L 5\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize t resize-pane -D 5\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize s resize-pane -U 5\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize r resize-pane -R 5\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize C resize-pane -L\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize T resize-pane -D\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize S resize-pane -U\; switch-client -T pane-resize
|
|
||||||
bind-key -T pane-resize R resize-pane -R\; switch-client -T pane-resize
|
|
||||||
|
|
||||||
bind-key -T windows c new-window
|
|
||||||
bind-key -T windows n next-window
|
|
||||||
bind-key -T windows p previous-window
|
|
||||||
|
|
||||||
bind-key -T windows \" select-window -t :=1
|
|
||||||
bind-key -T windows « select-window -t :=2
|
|
||||||
bind-key -T windows » select-window -t :=3
|
|
||||||
bind-key -T windows ( select-window -t :=4
|
|
||||||
bind-key -T windows ) select-window -t :=5
|
|
||||||
bind-key -T windows @ select-window -t :=6
|
|
||||||
bind-key -T windows + select-window -t :=7
|
|
||||||
bind-key -T windows - select-window -t :=8
|
|
||||||
bind-key -T windows / select-window -t :=9
|
|
||||||
bind-key -T windows * select-window -t :=10
|
|
||||||
|
|
||||||
unbind -T copy-mode-vi H
|
|
||||||
unbind -T copy-mode-vi J
|
|
||||||
unbind -T copy-mode-vi K
|
|
||||||
unbind -T copy-mode-vi L
|
|
||||||
unbind -T copy-mode-vi h
|
|
||||||
unbind -T copy-mode-vi j
|
|
||||||
unbind -T copy-mode-vi k
|
|
||||||
unbind -T copy-mode-vi l
|
|
||||||
|
|
||||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
|
||||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
|
||||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
|
||||||
bind-key -T copy-mode-vi C send-keys -X top-line
|
|
||||||
bind-key -T copy-mode-vi J send-keys -X jump-to-backward
|
|
||||||
bind-key -T copy-mode-vi S send-keys -X scroll-up
|
|
||||||
bind-key -T copy-mode-vi R send-keys -X bottom-line
|
|
||||||
bind-key -T copy-mode-vi T send-keys -X scroll-down
|
|
||||||
bind-key -T copy-mode-vi c send-keys -X cursor-left
|
|
||||||
bind-key -T copy-mode-vi t send-keys -X cursor-down
|
|
||||||
bind-key -T copy-mode-vi s send-keys -X cursor-up
|
|
||||||
bind-key -T copy-mode-vi r send-keys -X cursor-right
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
173
users/modules/shell/zellij.nix
Normal file
173
users/modules/shell/zellij.nix
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.home.shell.zellij;
|
||||||
|
isEmpty = list: list == [];
|
||||||
|
keybind = {
|
||||||
|
options = {
|
||||||
|
bind = mkOption {
|
||||||
|
type = types.either types.str (types.listOf types.str);
|
||||||
|
example = "Alt j";
|
||||||
|
description = "Value used as a string after `bind` in zellij config";
|
||||||
|
};
|
||||||
|
actions = mkOption {
|
||||||
|
type = with types; let
|
||||||
|
allowed = oneOf [int str];
|
||||||
|
in
|
||||||
|
attrsOf (either (listOf allowed) allowed);
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
SwitchToMode = ["normal"];
|
||||||
|
SwitchFocus = [];
|
||||||
|
PaneNameInput = [0];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
useUnlockFirst = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Go back to locked mode after the actions are done.
|
||||||
|
|
||||||
|
Only works when `config.home.shell.zellij.useUnlockFirst` is true.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
convertBind = item: {
|
||||||
|
bind = let
|
||||||
|
useUnlockFirst = cfg.useUnlockFirst && item.useUnlockFirst;
|
||||||
|
children =
|
||||||
|
mapAttrsToList (action: args: let
|
||||||
|
actualArgs =
|
||||||
|
if isEmpty args
|
||||||
|
then {}
|
||||||
|
else {_args = lists.toList args;};
|
||||||
|
in {"${action}" = actualArgs;})
|
||||||
|
(item.actions
|
||||||
|
// (
|
||||||
|
if useUnlockFirst
|
||||||
|
then {SwitchToMode = ["locked"];}
|
||||||
|
else {}
|
||||||
|
));
|
||||||
|
in {
|
||||||
|
_args = lists.toList item.bind;
|
||||||
|
_children = children;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keybindsModule = {
|
||||||
|
options = mergeAttrsList (forEach [
|
||||||
|
"normal"
|
||||||
|
"locked"
|
||||||
|
"resize"
|
||||||
|
"pane"
|
||||||
|
"move"
|
||||||
|
"tab"
|
||||||
|
"scroll"
|
||||||
|
"search"
|
||||||
|
"entersearch"
|
||||||
|
"renametab"
|
||||||
|
"renamepane"
|
||||||
|
"session"
|
||||||
|
"tmux"
|
||||||
|
]
|
||||||
|
(x: {
|
||||||
|
"${x}" = mkOption {
|
||||||
|
type = types.listOf (types.submodule keybind);
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
makeKeybinds = keybinds: let
|
||||||
|
values =
|
||||||
|
attrsets.concatMapAttrs (
|
||||||
|
mode: binds:
|
||||||
|
if (isEmpty binds)
|
||||||
|
then {}
|
||||||
|
else {
|
||||||
|
"${mode}"._children = lists.forEach binds convertBind;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
keybinds;
|
||||||
|
in
|
||||||
|
if values == {}
|
||||||
|
then {}
|
||||||
|
else {
|
||||||
|
keybinds = values;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options.home.shell.zellij = let
|
||||||
|
jsonFormat = pkgs.formats.yaml {};
|
||||||
|
in {
|
||||||
|
enable = mkEnableOption "Enable Zellij";
|
||||||
|
clearDefaultKeybinds = mkEnableOption "Clear default keybinds";
|
||||||
|
settings = mkOption {
|
||||||
|
inherit (jsonFormat) type;
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
layouts = mkOption {
|
||||||
|
inherit (jsonFormat) type;
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
extraSettings = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Extra configuration lines to add to `$XDG_CONFIG_HOME/zellij/config.kdl`
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
useUnlockFirst = mkEnableOption "Use Unlock-First (non-colliding) behaviour by default";
|
||||||
|
plugins = mkOption {
|
||||||
|
type = types.listOf (types.submodule plugin);
|
||||||
|
default = {};
|
||||||
|
example = [
|
||||||
|
{name = "about";}
|
||||||
|
{
|
||||||
|
name = "filepicker";
|
||||||
|
location = "zellij:strider";
|
||||||
|
options = {
|
||||||
|
cwd = "/";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
keybinds = mkOption {
|
||||||
|
type = types.submodule keybindsModule;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
pane = [
|
||||||
|
{
|
||||||
|
bind = "c";
|
||||||
|
actions = [
|
||||||
|
{
|
||||||
|
action = "SwitchToMode";
|
||||||
|
args = ["renamepane"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "PaneNameInput";
|
||||||
|
args = [0];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.programs.zellij = mkIf cfg.enable {
|
||||||
|
inherit (cfg) enable layouts;
|
||||||
|
extraConfig = cfg.extraSettings;
|
||||||
|
settings = let
|
||||||
|
resetKeybinds =
|
||||||
|
if cfg.clearDefaultKeybinds
|
||||||
|
then {
|
||||||
|
keybinds._props.clear-defaults = true;
|
||||||
|
}
|
||||||
|
else {};
|
||||||
|
keybinds = makeKeybinds cfg.keybinds;
|
||||||
|
in
|
||||||
|
cfg.settings // resetKeybinds // keybinds;
|
||||||
|
};
|
||||||
|
}
|
||||||
1673
users/phundrak/XCompose
Normal file
1673
users/phundrak/XCompose
Normal file
File diff suppressed because it is too large
Load Diff
77
users/phundrak/firefox.nix
Normal file
77
users/phundrak/firefox.nix
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
config.home.desktop.firefox = {
|
||||||
|
enable = true;
|
||||||
|
useZen = true;
|
||||||
|
tridactyl = {
|
||||||
|
enable = true;
|
||||||
|
preConfig = "sanitise tridactyllocal tridactylsync";
|
||||||
|
config = {
|
||||||
|
editorcmd = "emacsclient -c";
|
||||||
|
keyboardlayoutbase = "bepo";
|
||||||
|
keyboardlayoutforce = "true";
|
||||||
|
hintchars = "auiectsr";
|
||||||
|
smothscroll = "true";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
unbind h
|
||||||
|
unbind j
|
||||||
|
unbind k
|
||||||
|
unbind l
|
||||||
|
unbind c
|
||||||
|
unbind t
|
||||||
|
unbind s
|
||||||
|
unbind r
|
||||||
|
unbind H
|
||||||
|
unbind J
|
||||||
|
unbind K
|
||||||
|
unbind L
|
||||||
|
unbind C
|
||||||
|
unbind T
|
||||||
|
unbind S
|
||||||
|
unbind R
|
||||||
|
|
||||||
|
" === Bépo layout — scrolling (ctsr = hjkl) ===
|
||||||
|
bind c scrollpx -300 0
|
||||||
|
bind t scrollline 5
|
||||||
|
bind s scrollline -5
|
||||||
|
bind r scrollpx 300 0
|
||||||
|
|
||||||
|
" Half/full page scroll (replacing C-f/C-b/C-d/C-u)
|
||||||
|
bind <C-t> scrollpage 0.5
|
||||||
|
bind <C-s> scrollpage -0.5
|
||||||
|
|
||||||
|
" === History navigation (C/R = H/L) ===
|
||||||
|
bind C back
|
||||||
|
bind R forward
|
||||||
|
|
||||||
|
" === Tab navigation ===
|
||||||
|
bind T tabnext
|
||||||
|
bind S tabprev
|
||||||
|
|
||||||
|
" === Displaced commands ===
|
||||||
|
" reload was on r → move to h (bépo's 'replace' position)
|
||||||
|
bind h reload
|
||||||
|
bind H reloadhard
|
||||||
|
|
||||||
|
" tabopen was on t → move to j (bépo's 'find char to' position)
|
||||||
|
bind j fillcmdline tabopen
|
||||||
|
|
||||||
|
unbind ^http(s?)://youtube\.com f
|
||||||
|
unbind ^http(s?)://youtube\.com t
|
||||||
|
unbind ^http(s?)://youtube\.com l
|
||||||
|
unbind ^http(s?)://youtube\.com j
|
||||||
|
unbind ^http(s?)://twitch\.tv f
|
||||||
|
|
||||||
|
bind n findnext
|
||||||
|
bind N findnext -f
|
||||||
|
bind p findnext --reverse
|
||||||
|
bind P findnext -f --reverse
|
||||||
|
|
||||||
|
bind < urlincrement -1
|
||||||
|
bind > urlincrement 1
|
||||||
|
bind ypv js tri.native.run(`mpv --ytdl-format="[height >=? 480]" --ontop --fs "''${document.location.href}"`)
|
||||||
|
bind ypm hint -JF e => tri.native.run(`mpv --ytdl-format="[height >=? 480]" --ontop --fs "''${e.href}"`)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,6 +8,8 @@
|
|||||||
./light-home.nix
|
./light-home.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./email.nix
|
./email.nix
|
||||||
|
./firefox.nix
|
||||||
|
./tmux.nix
|
||||||
./wlr-which-key
|
./wlr-which-key
|
||||||
../modules
|
../modules
|
||||||
];
|
];
|
||||||
@@ -69,6 +71,17 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
spicetify.enable = true;
|
spicetify.enable = true;
|
||||||
};
|
};
|
||||||
|
wl-kbptr = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
general = {
|
||||||
|
# first eight chars to select areas, last three chars
|
||||||
|
# for left, right, middle click
|
||||||
|
home_row_keys = "auiectsrtsr";
|
||||||
|
modes = "tile,bisect";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
dev = {
|
dev = {
|
||||||
ai.claude.enable = true;
|
ai.claude.enable = true;
|
||||||
@@ -76,16 +89,19 @@
|
|||||||
vcs.jj.signing.enable = true;
|
vcs.jj.signing.enable = true;
|
||||||
};
|
};
|
||||||
fullDesktop = true;
|
fullDesktop = true;
|
||||||
file."${config.home.homeDirectory}/.ssh/allowed_signers" = {
|
file = {
|
||||||
enable = true;
|
".XCompose".source = ./XCompose;
|
||||||
text = lib.strings.join "\n" (
|
"${config.home.homeDirectory}/.ssh/allowed_signers" = {
|
||||||
map (file: let
|
enable = true;
|
||||||
content = lib.strings.trim (builtins.readFile file);
|
text = lib.strings.join "\n" (
|
||||||
parts = lib.strings.splitString " " content;
|
map (file: let
|
||||||
email = lib.lists.last parts;
|
content = lib.strings.trim (builtins.readFile file);
|
||||||
in "${email} namespaces=\"git\" ${content}")
|
parts = lib.strings.splitString " " content;
|
||||||
(lib.filesystem.listFilesRecursive ./keys)
|
email = lib.lists.last parts;
|
||||||
);
|
in "${email} namespaces=\"git\" ${content}")
|
||||||
|
(lib.filesystem.listFilesRecursive ./keys)
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.home.phundrak;
|
cfg = config.home.phundrak;
|
||||||
in {
|
in {
|
||||||
imports = [../modules];
|
imports = [../modules ./zellij.nix];
|
||||||
|
|
||||||
options.home.phundrak = {
|
options.home.phundrak = {
|
||||||
sshKey = {
|
sshKey = {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ with lib; let
|
|||||||
handy = pkgs.callPackage ../../packages/handy.nix {};
|
handy = pkgs.callPackage ../../packages/handy.nix {};
|
||||||
inkdrop = pkgs.callPackage ../../packages/inkdrop.nix {};
|
inkdrop = pkgs.callPackage ../../packages/inkdrop.nix {};
|
||||||
pumo-system-info = inputs.pumo-system-info.packages.${system}.default;
|
pumo-system-info = inputs.pumo-system-info.packages.${system}.default;
|
||||||
zen = inputs.zen-browser.packages.${system}.default;
|
|
||||||
in {
|
in {
|
||||||
programs.bun.enable = true;
|
programs.bun.enable = true;
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@@ -33,17 +32,16 @@ in {
|
|||||||
audacity
|
audacity
|
||||||
plexamp
|
plexamp
|
||||||
plex-desktop
|
plex-desktop
|
||||||
spicetify-cli
|
|
||||||
pavucontrol # Volume control
|
pavucontrol # Volume control
|
||||||
|
|
||||||
# Social
|
# Social
|
||||||
vesktop # Discord alternative that works well with wayland
|
vesktop # Discord alternative that works well with wayland
|
||||||
element-desktop
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
bitwarden-desktop
|
|
||||||
# gplates
|
# gplates
|
||||||
|
kicad-small
|
||||||
|
qgis
|
||||||
handy
|
handy
|
||||||
libnotify
|
libnotify
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
@@ -52,7 +50,6 @@ in {
|
|||||||
scrcpy
|
scrcpy
|
||||||
syncthing
|
syncthing
|
||||||
watchmate
|
watchmate
|
||||||
zen
|
|
||||||
|
|
||||||
# Games
|
# Games
|
||||||
atlauncher
|
atlauncher
|
||||||
|
|||||||
210
users/phundrak/tmux.nix
Normal file
210
users/phundrak/tmux.nix
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
{
|
||||||
|
home.shell.tmux = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = "set-option -sa terminal-overrides \",xterm*:Tc\"";
|
||||||
|
unbind = [
|
||||||
|
"C-b"
|
||||||
|
{"copy-mode-vi" = ["H" "J" "K" "L" "h" "j" "k" "l"];}
|
||||||
|
];
|
||||||
|
bind = {
|
||||||
|
prefix = [
|
||||||
|
{
|
||||||
|
key = "«";
|
||||||
|
action = "select-window -p";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "»";
|
||||||
|
action = "select-window -n";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "Tab";
|
||||||
|
action = "switch-client -T windows";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "w";
|
||||||
|
action = "switch-client -T pane";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "y";
|
||||||
|
action = "switch-client -T copy-mode";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
pane = [
|
||||||
|
{
|
||||||
|
key = "/";
|
||||||
|
action = "split-window -h -c \"#{pane-current_path}\"";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "-";
|
||||||
|
action = "split-window -v -c \"#{pane-current_path}\"";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "c";
|
||||||
|
action = "select-pane -L";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "t";
|
||||||
|
action = "select-pane -D";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "s";
|
||||||
|
action = "select-pane -U";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "r";
|
||||||
|
action = "select-pane -R";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "f";
|
||||||
|
action = "resize-pane -Z";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = ".";
|
||||||
|
action = "switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"pane-resize" = [
|
||||||
|
{
|
||||||
|
key = "c";
|
||||||
|
action = "resize-pane -L 5\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "t";
|
||||||
|
action = "resize-pane -D 5\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "s";
|
||||||
|
action = "resize-pane -U 5\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "r";
|
||||||
|
action = "resize-pane -R 5\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "C";
|
||||||
|
action = "resize-pane -L\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "T";
|
||||||
|
action = "resize-pane -D\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "S";
|
||||||
|
action = "resize-pane -U\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "R";
|
||||||
|
action = "resize-pane -R\\; switch-client -T pane-resize";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
windows = [
|
||||||
|
{
|
||||||
|
key = "c";
|
||||||
|
action = "new-window";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "n";
|
||||||
|
action = "next-window";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "p";
|
||||||
|
action = "previous-window";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "r";
|
||||||
|
action = "command-prompt \"rename-window '%%'\"";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "\\\"";
|
||||||
|
action = "select-window -t :=1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "«";
|
||||||
|
action = "select-window -t :=2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "»";
|
||||||
|
action = "select-window -t :=3";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "(";
|
||||||
|
action = "select-window -t :=4";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = ")";
|
||||||
|
action = "select-window -t :=5";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "@";
|
||||||
|
action = "select-window -t :=6";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "+";
|
||||||
|
action = "select-window -t :=7";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "-";
|
||||||
|
action = "select-window -t :=8";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "/";
|
||||||
|
action = "select-window -t :=9";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "*";
|
||||||
|
action = "select-window -t :=10";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"copy-mode-vi" = [
|
||||||
|
{
|
||||||
|
key = "v";
|
||||||
|
action = "send-keys -X begin-selection";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "C-v";
|
||||||
|
action = "send-keys -X rectangle-toggle";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "y";
|
||||||
|
action = "send-keys -X copy-selection-and-cancel";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "C";
|
||||||
|
action = "send-keys -X top-line";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "J";
|
||||||
|
action = "send-keys -X jump-to-backward";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "S";
|
||||||
|
action = "send-keys -X scroll-up";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "R";
|
||||||
|
action = "send-keys -X bottom-line";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "T";
|
||||||
|
action = "send-keys -X scroll-down";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "c";
|
||||||
|
action = "send-keys -X cursor-left";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "t";
|
||||||
|
action = "send-keys -X cursor-down";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "s";
|
||||||
|
action = "send-keys -X cursor-up";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "r";
|
||||||
|
action = "send-keys -X cursor-right";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
config.home.desktop.wlr-which-key.settings = {
|
config.home.desktop.wlr-which-key.settings = {
|
||||||
@@ -27,217 +28,223 @@
|
|||||||
logout = import ./logout.nix {inherit pkgs;};
|
logout = import ./logout.nix {inherit pkgs;};
|
||||||
ytplay = import ../../modules/cli/scripts/ytplay.nix {inherit pkgs;};
|
ytplay = import ../../modules/cli/scripts/ytplay.nix {inherit pkgs;};
|
||||||
plock = import ../../modules/cli/scripts/plock.nix {inherit pkgs;};
|
plock = import ../../modules/cli/scripts/plock.nix {inherit pkgs;};
|
||||||
in [
|
in
|
||||||
{
|
[
|
||||||
key = "a";
|
{
|
||||||
desc = "Apps";
|
key = "a";
|
||||||
submenu = [
|
desc = "Apps";
|
||||||
{
|
submenu = [
|
||||||
key = "b";
|
{
|
||||||
desc = "Browser";
|
key = "b";
|
||||||
cmd = "zen";
|
desc = "Browser";
|
||||||
}
|
cmd = "zen";
|
||||||
{
|
}
|
||||||
key = "B";
|
{
|
||||||
desc = "Qutebrowser";
|
key = "B";
|
||||||
cmd = "${pkgs.qutebrowser}/bin/qutebrowser";
|
desc = "Qutebrowser";
|
||||||
}
|
cmd = "${pkgs.qutebrowser}/bin/qutebrowser";
|
||||||
{
|
}
|
||||||
key = "d";
|
{
|
||||||
desc = "Discord";
|
key = "d";
|
||||||
cmd = "${pkgs.vesktop}/bin/vesktop";
|
desc = "Discord";
|
||||||
}
|
cmd = "${pkgs.vesktop}/bin/vesktop";
|
||||||
{
|
}
|
||||||
key = "e";
|
{
|
||||||
desc = "Emacs";
|
key = "e";
|
||||||
cmd = "${config.home.dev.editors.emacs.package}/bin/emacsclient -c -n";
|
desc = "Emacs";
|
||||||
}
|
cmd = "${config.home.dev.editors.emacs.package}/bin/emacsclient -c -n";
|
||||||
{
|
}
|
||||||
key = "g";
|
{
|
||||||
desc = "Gimp";
|
key = "g";
|
||||||
cmd = "${pkgs.gimp}/bin/gimp";
|
desc = "Gimp";
|
||||||
}
|
cmd = "${pkgs.gimp}/bin/gimp";
|
||||||
{
|
}
|
||||||
key = "h";
|
{
|
||||||
desc = "Handy";
|
key = "h";
|
||||||
cmd = "pkill -USR2 -n handy";
|
desc = "Handy";
|
||||||
}
|
cmd = "pkill -USR2 -n handy";
|
||||||
{
|
}
|
||||||
key = "n";
|
{
|
||||||
desc = "Nemo";
|
key = "n";
|
||||||
cmd = "${pkgs.nemo-with-extensions}/bin/nemo";
|
desc = "Nemo";
|
||||||
}
|
cmd = "${pkgs.nemo-with-extensions}/bin/nemo";
|
||||||
{
|
}
|
||||||
key = "N";
|
{
|
||||||
desc = "Nextcloud";
|
key = "N";
|
||||||
cmd = "${pkgs.nextcloud-client}/bin/nextcloud";
|
desc = "Nextcloud";
|
||||||
}
|
cmd = "${pkgs.nextcloud-client}/bin/nextcloud";
|
||||||
{
|
}
|
||||||
key = "r";
|
{
|
||||||
desc = "Rofi";
|
key = "r";
|
||||||
submenu = [
|
desc = "Rofi";
|
||||||
{
|
submenu = [
|
||||||
key = "b";
|
{
|
||||||
desc = "Bluetooth";
|
key = "b";
|
||||||
cmd = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
|
desc = "Bluetooth";
|
||||||
}
|
cmd = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
|
||||||
{
|
}
|
||||||
key = "c";
|
{
|
||||||
desc = "calc";
|
key = "c";
|
||||||
cmd = "rofi -show calc";
|
desc = "calc";
|
||||||
}
|
cmd = "rofi -show calc";
|
||||||
{
|
}
|
||||||
key = "e";
|
{
|
||||||
desc = "Emoji";
|
key = "e";
|
||||||
cmd = "rofi -show emoji";
|
desc = "Emoji";
|
||||||
}
|
cmd = "rofi -show emoji";
|
||||||
{
|
}
|
||||||
key = "r";
|
{
|
||||||
desc = "App Menu";
|
key = "r";
|
||||||
cmd = "rofi -show drun";
|
desc = "App Menu";
|
||||||
}
|
cmd = "rofi -show drun";
|
||||||
{
|
}
|
||||||
key = "s";
|
{
|
||||||
desc = "SSH";
|
key = "s";
|
||||||
cmd = "rofi -show ssh";
|
desc = "SSH";
|
||||||
}
|
cmd = "rofi -show ssh";
|
||||||
{
|
}
|
||||||
key = "y";
|
{
|
||||||
desc = "YouTube";
|
key = "y";
|
||||||
cmd = "${ytplay}/bin/ytplay";
|
desc = "YouTube";
|
||||||
}
|
cmd = "${ytplay}/bin/ytplay";
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
{
|
}
|
||||||
key = "b";
|
{
|
||||||
desc = "Buffers";
|
key = "b";
|
||||||
submenu = [
|
desc = "Buffers";
|
||||||
{
|
submenu = [
|
||||||
key = "c";
|
{
|
||||||
desc = "Center";
|
key = "c";
|
||||||
cmd = "${center-window}/bin/center-window";
|
desc = "Center";
|
||||||
}
|
cmd = "${center-window}/bin/center-window";
|
||||||
{
|
}
|
||||||
key = "d";
|
{
|
||||||
desc = "Close";
|
key = "d";
|
||||||
cmd = "${close-window}/bin/close-window";
|
desc = "Close";
|
||||||
}
|
cmd = "${close-window}/bin/close-window";
|
||||||
{
|
}
|
||||||
key = "f";
|
{
|
||||||
desc = "Fullscreen";
|
key = "f";
|
||||||
cmd = "${fullscreen}/bin/fullscreen";
|
desc = "Fullscreen";
|
||||||
}
|
cmd = "${fullscreen}/bin/fullscreen";
|
||||||
{
|
}
|
||||||
key = "F";
|
{
|
||||||
desc = "Float";
|
key = "F";
|
||||||
cmd = "${float-window}/bin/float-window";
|
desc = "Float";
|
||||||
}
|
cmd = "${float-window}/bin/float-window";
|
||||||
{
|
}
|
||||||
key = "u";
|
{
|
||||||
desc = "Urgent";
|
key = "u";
|
||||||
cmd = "${focus-urgent}/bin/focus-urgent";
|
desc = "Urgent";
|
||||||
}
|
cmd = "${focus-urgent}/bin/focus-urgent";
|
||||||
{
|
}
|
||||||
key = ".";
|
{
|
||||||
desc = "Resize";
|
key = ".";
|
||||||
submenu = [
|
desc = "Resize";
|
||||||
{
|
submenu = [
|
||||||
key = left;
|
{
|
||||||
desc = "Decrease Width";
|
key = left;
|
||||||
cmd = "echo decrease width";
|
desc = "Decrease Width";
|
||||||
keep-open = true;
|
cmd = "echo decrease width";
|
||||||
}
|
keep-open = true;
|
||||||
{
|
}
|
||||||
key = down;
|
{
|
||||||
desc = "Increase Height";
|
key = down;
|
||||||
cmd = "echo decrease height";
|
desc = "Increase Height";
|
||||||
keep-open = true;
|
cmd = "echo decrease height";
|
||||||
}
|
keep-open = true;
|
||||||
{
|
}
|
||||||
key = up;
|
{
|
||||||
desc = "Decrease Height";
|
key = up;
|
||||||
cmd = "echo decrease height";
|
desc = "Decrease Height";
|
||||||
keep-open = true;
|
cmd = "echo decrease height";
|
||||||
}
|
keep-open = true;
|
||||||
{
|
}
|
||||||
key = right;
|
{
|
||||||
desc = "Increase Width";
|
key = right;
|
||||||
cmd = "echo increase width";
|
desc = "Increase Width";
|
||||||
keep-open = true;
|
cmd = "echo increase width";
|
||||||
}
|
keep-open = true;
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
{
|
}
|
||||||
key = "l";
|
{
|
||||||
desc = "Lock session";
|
key = "l";
|
||||||
cmd = "${plock}/bin/plock";
|
desc = "Lock session";
|
||||||
}
|
cmd = "${plock}/bin/plock";
|
||||||
{
|
}
|
||||||
key = "p";
|
{
|
||||||
desc = "Power";
|
key = "p";
|
||||||
submenu = [
|
desc = "Power";
|
||||||
{
|
submenu = [
|
||||||
key = "l";
|
{
|
||||||
desc = "Logout";
|
key = "l";
|
||||||
cmd = "${logout}/bin/logout";
|
desc = "Logout";
|
||||||
}
|
cmd = "${logout}/bin/logout";
|
||||||
{
|
}
|
||||||
key = "s";
|
{
|
||||||
desc = "Suspend";
|
key = "s";
|
||||||
cmd = "systemctl suspend";
|
desc = "Suspend";
|
||||||
}
|
cmd = "systemctl suspend";
|
||||||
{
|
}
|
||||||
key = "r";
|
{
|
||||||
desc = "Reboot";
|
key = "r";
|
||||||
cmd = "systemctl reboot";
|
desc = "Reboot";
|
||||||
}
|
cmd = "systemctl reboot";
|
||||||
{
|
}
|
||||||
key = "o";
|
{
|
||||||
desc = "Poweroff";
|
key = "o";
|
||||||
cmd = "systemctl poweroff";
|
desc = "Poweroff";
|
||||||
}
|
cmd = "systemctl poweroff";
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
{
|
}
|
||||||
key = "s";
|
{
|
||||||
desc = "Screenshots";
|
key = "s";
|
||||||
submenu = [
|
desc = "Screenshots";
|
||||||
{
|
submenu = [
|
||||||
key = "Print";
|
{
|
||||||
desc = "Screenshot";
|
key = "Print";
|
||||||
cmd = "screenshot";
|
desc = "Screenshot";
|
||||||
}
|
cmd = "screenshot";
|
||||||
{
|
}
|
||||||
key = "d";
|
{
|
||||||
desc = "Delayed";
|
key = "d";
|
||||||
cmd = "screenshot -d 3";
|
desc = "Delayed";
|
||||||
}
|
cmd = "screenshot -d 3";
|
||||||
{
|
}
|
||||||
key = "D";
|
{
|
||||||
desc = "Select, Delay, Edit, and Copy";
|
key = "D";
|
||||||
cmd = "screenshot -secd 3";
|
desc = "Select, Delay, Edit, and Copy";
|
||||||
}
|
cmd = "screenshot -secd 3";
|
||||||
{
|
}
|
||||||
key = "e";
|
{
|
||||||
desc = "Select, Edit, and Copy";
|
key = "e";
|
||||||
cmd = "screenshot -sec";
|
desc = "Select, Edit, and Copy";
|
||||||
}
|
cmd = "screenshot -sec";
|
||||||
{
|
}
|
||||||
key = "g";
|
{
|
||||||
desc = "Select, Gimp, and Copy";
|
key = "g";
|
||||||
cmd = "screenshot -sgc";
|
desc = "Select, Gimp, and Copy";
|
||||||
}
|
cmd = "screenshot -sgc";
|
||||||
{
|
}
|
||||||
key = "s";
|
{
|
||||||
desc = "Select and Copy";
|
key = "s";
|
||||||
cmd = "screenshot -sc";
|
desc = "Select and Copy";
|
||||||
}
|
cmd = "screenshot -sc";
|
||||||
];
|
}
|
||||||
}
|
];
|
||||||
];
|
}
|
||||||
|
]
|
||||||
|
++ lib.lists.optional config.home.desktop.wl-kbptr.enable {
|
||||||
|
key = "m";
|
||||||
|
desc = "Mouse Warp";
|
||||||
|
cmd = "wl-kbptr";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
264
users/phundrak/zellij.nix
Normal file
264
users/phundrak/zellij.nix
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
{lib, ...}: {
|
||||||
|
home.shell.zellij = with lib; {
|
||||||
|
enable = true;
|
||||||
|
clearDefaultKeybinds = true;
|
||||||
|
useUnlockFirst = true;
|
||||||
|
settings.copy_on_select = true;
|
||||||
|
extraSettings = ''
|
||||||
|
plugins {
|
||||||
|
about location="zellij:about"
|
||||||
|
compact-bar location="zellij:compact-bar"
|
||||||
|
configuration location="zellij:configuration"
|
||||||
|
filepicker location="zellij:strider" {
|
||||||
|
cwd "/"
|
||||||
|
}
|
||||||
|
plugin-manager location="zellij:plugin-manager"
|
||||||
|
session-manager location="zellij:session-manager"
|
||||||
|
status-bar location="zellij:status-bar"
|
||||||
|
strider location="zellij:strider"
|
||||||
|
tab-bar location="zellij:tab-bar"
|
||||||
|
welcome-screen location="zellij:session-manager" {
|
||||||
|
welcome_screen true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
keybinds = let
|
||||||
|
# bépo layout
|
||||||
|
left = ["c" "Left"];
|
||||||
|
down = ["t" "Down"];
|
||||||
|
up = ["s" "Up"];
|
||||||
|
right = ["r" "Right"];
|
||||||
|
numRow = ["\"" "«" "»" "(" ")" "@" "+" "-" "/" "*"];
|
||||||
|
in {
|
||||||
|
locked = [
|
||||||
|
{
|
||||||
|
bind = "Ctrl Alt g";
|
||||||
|
actions = {SwitchToMode = "normal";};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
pane = [
|
||||||
|
{
|
||||||
|
bind = left;
|
||||||
|
actions = {MoveFocus = "Left";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = down;
|
||||||
|
actions = {MoveFocus = "Down";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = up;
|
||||||
|
actions = {MoveFocus = "Up";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = right;
|
||||||
|
actions = {MoveFocus = "Right";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "n";
|
||||||
|
actions = {NewPane = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "T";
|
||||||
|
actions = {NewPane = "Down";};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "R";
|
||||||
|
actions = {NewPane = "Right";};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "S";
|
||||||
|
actions = {NewPane = "stacked";};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "N";
|
||||||
|
actions = {SwitchToMode = "normal";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "e";
|
||||||
|
actions = {TogglePaneEmbedOrFloating = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "i";
|
||||||
|
actions = {TogglePanePinned = [];};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "f";
|
||||||
|
actions = {ToggleFocusFullscreen = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "F";
|
||||||
|
actions = {ToggleFloatingPanes = [];};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "q";
|
||||||
|
actions = {CloseFocus = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "p";
|
||||||
|
actions = {SwitchToMode = "normal";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "P";
|
||||||
|
actions = {
|
||||||
|
SwitchToMode = "renamepane";
|
||||||
|
PaneNameInput = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "z";
|
||||||
|
actions = {TogglePaneFrames = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "tab";
|
||||||
|
actions = {SwitchFocus = [];};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
resize = [
|
||||||
|
{
|
||||||
|
bind = "n";
|
||||||
|
actions = {SwitchToMode = "locked";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = left;
|
||||||
|
actions = {Resize = "Increase Left";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = down;
|
||||||
|
actions = {Resize = "Increase Down";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = up;
|
||||||
|
actions = {Resize = "Increase Up";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = right;
|
||||||
|
actions = {Resize = "Increase Right";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "C";
|
||||||
|
actions = {Resize = "Decrease Left";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "T";
|
||||||
|
actions = {Resize = "Decrease Down";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "S";
|
||||||
|
actions = {Resize = "Decrease Up";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "R";
|
||||||
|
actions = {Resize = "Decrease Right";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "+";
|
||||||
|
actions = {Resize = "Increase";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "-";
|
||||||
|
actions = {Resize = "Decrease";};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
move = [
|
||||||
|
{
|
||||||
|
bind = left;
|
||||||
|
actions = {MovePane = "left";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = down;
|
||||||
|
actions = {MovePane = "down";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = up;
|
||||||
|
actions = {MovePane = "up";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = right;
|
||||||
|
actions = {MovePane = "right";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "m";
|
||||||
|
actions = {SwitchToMode = "normal";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = ["n" "tab"];
|
||||||
|
actions = {MovePane = [];};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "p";
|
||||||
|
actions = {MovePaneBackwards = [];};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
tab =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
bind = left ++ up;
|
||||||
|
actions = {GoToPreviousTab = [];};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = down ++ right;
|
||||||
|
actions = {GoToNextTab = [];};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "[";
|
||||||
|
actions = {BreakPaneLeft = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "]";
|
||||||
|
actions = {BreakPaneRight = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "b";
|
||||||
|
actions = {BreakPane = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "n";
|
||||||
|
actions = {NewTab = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "R";
|
||||||
|
actions = {
|
||||||
|
SwitchToMode = "renametab";
|
||||||
|
TabNameInput = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "s";
|
||||||
|
actions = {ToggleActiveSyncTab = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "T";
|
||||||
|
actions = {SwitchToMode = "normal";};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "x";
|
||||||
|
actions = {CloseTab = [];};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
bind = "tab";
|
||||||
|
actions = {ToggleTab = [];};
|
||||||
|
}
|
||||||
|
]
|
||||||
|
++ (lists.imap1 (i: key: {
|
||||||
|
bind = key;
|
||||||
|
actions = {GoToTab = i;};
|
||||||
|
useUnlockFirst = true;
|
||||||
|
})
|
||||||
|
numRow);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user