complete rework v3
4
.gitignore
vendored
|
|
@ -1,2 +1,6 @@
|
||||||
result/
|
result/
|
||||||
secrets/yubikey-identity.txt
|
secrets/yubikey-identity.txt
|
||||||
|
|
||||||
|
# Avoid leaking ssh keys
|
||||||
|
**/id_ed25519
|
||||||
|
**/id_rsa
|
||||||
|
|
|
||||||
9
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
".vscode": true,
|
||||||
|
"**/result": true
|
||||||
|
},
|
||||||
|
"search.exclude": {
|
||||||
|
"result": true
|
||||||
|
}
|
||||||
|
}
|
||||||
185
flake.lock
generated
|
|
@ -34,11 +34,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737808592,
|
"lastModified": 1738758381,
|
||||||
"narHash": "sha256-zSr8rSnaDlsifQhKW6kLKr+zZj0h9jbx/DQ8V7PENhM=",
|
"narHash": "sha256-cNEfY2a6amDIMHNcgiBDqwUHg+vA2C9evIeLHb+AVDI=",
|
||||||
"owner": "oddlama",
|
"owner": "oddlama",
|
||||||
"repo": "agenix-rekey",
|
"repo": "agenix-rekey",
|
||||||
"rev": "a1dcdd27ff12a24f0d3ac1fe016ed08e1a89291f",
|
"rev": "2df379f6fec3ecc4190e1778b29a3eceef86d546",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -96,11 +96,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738063137,
|
"lastModified": 1739380580,
|
||||||
"narHash": "sha256-lPuk+JaqFx7DFWAhf+PYcY4NF2Ebr5YRGLO/3299hHI=",
|
"narHash": "sha256-wGtGEfdooudj74wn59Vu5Z2DLsrX9cxdGTFc9sJrP9M=",
|
||||||
"owner": "aylur",
|
"owner": "aylur",
|
||||||
"repo": "astal",
|
"repo": "astal",
|
||||||
"rev": "cb1578a7917339a9df9fa87773a739a0249501e2",
|
"rev": "956b74fd9ff8c607b6683b404860c4e6b30ffe2b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -114,7 +114,9 @@
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nix-github-actions": "nix-github-actions",
|
"nix-github-actions": "nix-github-actions",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
"stable": "stable"
|
"stable": "stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -153,26 +155,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deploy-rs": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_3",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"utils": "utils"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727447169,
|
|
||||||
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
|
|
||||||
"owner": "serokell",
|
|
||||||
"repo": "deploy-rs",
|
|
||||||
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "serokell",
|
|
||||||
"repo": "deploy-rs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devshell": {
|
"devshell": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -201,11 +183,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738148035,
|
"lastModified": 1739529569,
|
||||||
"narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=",
|
"narHash": "sha256-sQzLVCRPfAV/TJXru/jhCyecMXinG/sW8KLoYg0nOpk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54",
|
"rev": "e51159153b5fbe5c41caab41a7212df93c42d34b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -290,11 +272,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736143030,
|
"lastModified": 1738453229,
|
||||||
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
|
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
|
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -318,6 +300,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -368,11 +368,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736373539,
|
"lastModified": 1739570999,
|
||||||
"narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=",
|
"narHash": "sha256-eCc0/Q4bPpe4/AS+uzIrHLJcR6BxPQ69q2kD0/Qe6rU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "bd65bc3cde04c16755955630b344bc9e35272c56",
|
"rev": "254d47082e23dbf72fdeca1da6fe1da420f478d8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -403,6 +403,26 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-vscode-extensions": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739670916,
|
||||||
|
"narHash": "sha256-Tdzu06QlI8DsYdXNe96c9eu0clj9Wkd1cKo6em/0xPU=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-vscode-extensions",
|
||||||
|
"rev": "370af219cf4ad7660e3ad4577849fb0478edb33c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-vscode-extensions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736643958,
|
"lastModified": 1736643958,
|
||||||
|
|
@ -420,11 +440,11 @@
|
||||||
},
|
},
|
||||||
"nixos-facter-modules": {
|
"nixos-facter-modules": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736931726,
|
"lastModified": 1738752252,
|
||||||
"narHash": "sha256-aY55yiifyo1XPPpbpH0kWlV1g2dNGBlx6622b7OK8ks=",
|
"narHash": "sha256-/nA3tDdp/2g0FBy8966ppC2WDoyXtUWaHkZWL+N3ZKc=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "nixos-facter-modules",
|
"repo": "nixos-facter-modules",
|
||||||
"rev": "fa11d87b61b2163efbb9aed7b7a5ae0299e5ab9c",
|
"rev": "60f8b8f3f99667de6a493a44375e5506bf0c48b1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -456,27 +476,27 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734119587,
|
"lastModified": 1713805509,
|
||||||
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
|
"narHash": "sha256-YgSEan4CcrjivCNO5ZNzhg7/8ViLkZ4CB/GrGBVSudo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
|
"rev": "1e1dc66fe68972a76679644a5577828b6a7e8be4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724224976,
|
"lastModified": 1739446958,
|
||||||
"narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
|
"narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
|
"rev": "2ff53fe64443980e139eaa286017f53f88336dd0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -488,32 +508,32 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1702272962,
|
"lastModified": 1739357830,
|
||||||
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
|
"narHash": "sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
|
"rev": "0ff09db9d034a04acd4e8908820ba0b410d7a33a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-24.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738023785,
|
"lastModified": 1739482815,
|
||||||
"narHash": "sha256-BPHmb3fUwdHkonHyHi1+x89eXB3kA1jffIpwPVJIVys=",
|
"narHash": "sha256-/5Lwtmp/8j+ro32gXzitucSdyjJ6QehfJCL58WNA7N0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2b4230bf03deb33103947e2528cac2ed516c5c89",
|
"rev": "ba0939c506a03c60a765cd7f7c43794816540eec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.11",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -548,15 +568,16 @@
|
||||||
"ags": "ags",
|
"ags": "ags",
|
||||||
"astal": "astal_2",
|
"astal": "astal_2",
|
||||||
"colmena": "colmena",
|
"colmena": "colmena",
|
||||||
"deploy-rs": "deploy-rs",
|
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
|
"nix-vscode-extensions": "nix-vscode-extensions",
|
||||||
"nixos-facter-modules": "nixos-facter-modules",
|
"nixos-facter-modules": "nixos-facter-modules",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"treefmt-nix": "treefmt-nix_2"
|
"treefmt-nix": "treefmt-nix_2",
|
||||||
|
"walker": "walker"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stable": {
|
"stable": {
|
||||||
|
|
@ -605,6 +626,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -628,16 +664,14 @@
|
||||||
},
|
},
|
||||||
"treefmt-nix_2": {
|
"treefmt-nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_3"
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738070913,
|
"lastModified": 1738953846,
|
||||||
"narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=",
|
"narHash": "sha256-yrK3Hjcr8F7qS/j2F+r7C7o010eVWWlm4T1PrbKBOxQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "bebf27d00f7d10ba75332a0541ac43676985dea3",
|
"rev": "4f09b473c936d41582dd744e19f34ec27592c5fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -646,21 +680,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"walker": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_2"
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1739196332,
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
"narHash": "sha256-THwDbGY325LdIQQiBq1xE/LDgPCOtmaowh4LfzkIuu8=",
|
||||||
"owner": "numtide",
|
"owner": "abenz1267",
|
||||||
"repo": "flake-utils",
|
"repo": "walker",
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
"rev": "a3c1cb1ff5a83c0b8d94933b75702d550f2cc8a3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "abenz1267",
|
||||||
"repo": "flake-utils",
|
"repo": "walker",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
122
flake.nix
|
|
@ -1,67 +1,89 @@
|
||||||
{
|
{
|
||||||
description = "Your new nix config";
|
description = "Your new nix config";
|
||||||
|
|
||||||
|
nixConfig = {
|
||||||
|
extra-substituters = [
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
"https://walker.cachix.org"
|
||||||
|
];
|
||||||
|
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
"walker.cachix.org-1:fG8q+uAaMqhsMxWjwvk0IMb4mFPFLqHjuvfwQxE4oJM="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
colmena.url = "github:zhaofengli/colmena";
|
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixos-generators = {
|
|
||||||
url = "github:nix-community/nixos-generators";
|
nixos-generators.url = "github:nix-community/nixos-generators";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
|
||||||
home-manager = {
|
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
||||||
url = "github:nix-community/home-manager/release-24.11";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.url = "github:nix-community/home-manager/release-24.11";
|
||||||
};
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
disko.url = "github:nix-community/disko";
|
disko.url = "github:nix-community/disko";
|
||||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
|
||||||
astal = {
|
astal.url = "github:aylur/astal";
|
||||||
url = "github:aylur/astal";
|
astal.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
ags.url = "github:aylur/ags";
|
||||||
};
|
ags.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
ags = {
|
|
||||||
url = "github:aylur/ags";
|
walker.url = "github:abenz1267/walker";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
walker.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
|
||||||
treefmt-nix = {
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
url = "github:numtide/treefmt-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
};
|
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||||
flake-parts = {
|
|
||||||
url = "github:hercules-ci/flake-parts";
|
|
||||||
inputs.nixpkgs-lib.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
agenix-rekey.url = "github:oddlama/agenix-rekey";
|
agenix-rekey.url = "github:oddlama/agenix-rekey";
|
||||||
agenix-rekey.inputs.nixpkgs.follows = "nixpkgs";
|
agenix-rekey.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
colmena.url = "github:zhaofengli/colmena";
|
||||||
|
colmena.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {flake-parts, ...} @ inputs:
|
outputs = {
|
||||||
flake-parts.lib.mkFlake {inherit inputs;} (
|
flake-parts,
|
||||||
{
|
nixpkgs,
|
||||||
withSystem,
|
...
|
||||||
lib,
|
} @ inputs:
|
||||||
inputs,
|
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||||
|
imports = [
|
||||||
|
inputs.agenix-rekey.flakeModule
|
||||||
|
./parts/devshell.nix
|
||||||
|
./parts/vm.nix
|
||||||
|
./parts/formatter.nix
|
||||||
|
./parts/hosts
|
||||||
|
];
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
|
||||||
|
perSystem = {
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
systems = [
|
# This sets `pkgs` to a nixpkgs with allowUnfree option set.
|
||||||
"x86_64-linux"
|
_module.args.pkgs = import nixpkgs {
|
||||||
"aarch64-linux"
|
inherit system;
|
||||||
];
|
config.allowUnfree = true;
|
||||||
imports = [
|
};
|
||||||
inputs.agenix-rekey.flakeModule
|
_module.args.pkgsUnstable = import inputs.nixpkgs-unstable {
|
||||||
# ./parts/hosts/laptop
|
inherit system;
|
||||||
# ./parts/hosts/desktop
|
config.allowUnfree = true;
|
||||||
# ./parts/hosts/qemu
|
};
|
||||||
./parts/hosts
|
};
|
||||||
# ./parts/vm.nix
|
};
|
||||||
./parts/formatter.nix
|
|
||||||
./parts/devshell.nix
|
|
||||||
];
|
|
||||||
_module.args.mylib = import ./lib {inherit lib withSystem inputs;};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
59
justfile
|
|
@ -1,3 +1,5 @@
|
||||||
|
# export NIXPKGS_ALLOW_UNFREE := "1"
|
||||||
|
|
||||||
[group('vm')]
|
[group('vm')]
|
||||||
vm-build:
|
vm-build:
|
||||||
git add .
|
git add .
|
||||||
|
|
@ -45,12 +47,18 @@ repl:
|
||||||
nix repl --show-trace ".#" nixpkgs
|
nix repl --show-trace ".#" nixpkgs
|
||||||
|
|
||||||
[group('deploy')]
|
[group('deploy')]
|
||||||
deploy-gen-hw hostname target:
|
deploy-factor hostname target='':
|
||||||
nix run github:nix-community/nixos-anywhere -- \
|
#!/usr/bin/env -S bash -e
|
||||||
--flake .#{{ hostname }} \
|
target="{{ target }}"
|
||||||
--target-host {{ target }} \
|
if [ -z "$target" ]; then
|
||||||
--generate-hardware-config nixos-generate-config \
|
sudo nix run nixpkgs#nixos-facter -- -o parts/hosts/{{ hostname }}/facter.json
|
||||||
./parts/hosts/{{ hostname }}/hardware-configuration.nix
|
else
|
||||||
|
nix run github:nix-community/nixos-anywhere -- \
|
||||||
|
--flake .#{{ hostname }} \
|
||||||
|
--target-host {{ target }} \
|
||||||
|
--generate-hardware-config nixos-facter \
|
||||||
|
./parts/hosts/{{ hostname }}/facter.json
|
||||||
|
fi
|
||||||
|
|
||||||
tmp_dir := "/tmp/secrets/" + uuid()
|
tmp_dir := "/tmp/secrets/" + uuid()
|
||||||
|
|
||||||
|
|
@ -58,49 +66,35 @@ tmp_dir := "/tmp/secrets/" + uuid()
|
||||||
deploy hostname target:
|
deploy hostname target:
|
||||||
#!/usr/bin/env -S bash -e
|
#!/usr/bin/env -S bash -e
|
||||||
git add .
|
git add .
|
||||||
# username=$(nix eval --raw .#nixosConfigurations.{{hostname}}.config.user.username)
|
|
||||||
|
|
||||||
|
trap "rm -rf {{ tmp_dir }}" EXIT
|
||||||
|
|
||||||
# Unencrypt boot secrets
|
# Copy ssh key to decrypt agenix secrets
|
||||||
install -d -m755 {{ tmp_dir }}/etc/ssh/
|
install -d -m755 {{ tmp_dir }}/etc/ssh
|
||||||
install -d -m755 {{ tmp_dir }}/run/agenix/
|
|
||||||
just secret-echo ./secrets/hashed-user-password > {{ tmp_dir }}/run/agenix/hashed-user-password
|
|
||||||
just secret-echo ./secrets/luks-password > {{ tmp_dir }}/luks-password
|
|
||||||
just secret-echo ./secrets/hosts/{{ hostname }}/id_ed25519 > {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key
|
just secret-echo ./secrets/hosts/{{ hostname }}/id_ed25519 > {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key
|
||||||
|
chmod 600 {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key
|
||||||
cp ./secrets/hosts/{{ hostname }}/id_ed25519.pub {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key.pub
|
cp ./secrets/hosts/{{ hostname }}/id_ed25519.pub {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key.pub
|
||||||
echo "Unencrypted files:"
|
|
||||||
find {{ tmp_dir }} -type f
|
|
||||||
read -n 1 -p "Did age decrypt the secrets correctly? [y/n]" yn
|
|
||||||
if [ "$yn" != "y" ]; then
|
|
||||||
rm -rf {{ tmp_dir }}
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
find {{ tmp_dir }} -type f -exec chmod 600 {} \;
|
|
||||||
|
|
||||||
|
|
||||||
# Deploy
|
# Deploy
|
||||||
nix run github:nix-community/nixos-anywhere -- \
|
nix run github:nix-community/nixos-anywhere -- \
|
||||||
--flake .#{{ hostname }} \
|
--flake .#{{ hostname }} \
|
||||||
--disk-encryption-keys /luks-password {{ tmp_dir }}/luks-password \
|
--disk-encryption-keys /luks-password <(just secret-echo ./secrets/luks-password) \
|
||||||
--extra-files {{ tmp_dir }} \
|
--extra-files {{ tmp_dir }} \
|
||||||
--target-host {{ target }}
|
--target-host {{ target }}
|
||||||
|
|
||||||
# Clean up
|
|
||||||
echo "Cleaning secrets..."
|
|
||||||
rm -rf {{ tmp_dir }}
|
|
||||||
|
|
||||||
[group('deploy')]
|
[group('deploy')]
|
||||||
deploy-switch hostname target:
|
deploy-switch hostname target *ARGS:
|
||||||
nix run nixpkgs#nixos-rebuild -- \
|
nix run nixpkgs#nixos-rebuild -- \
|
||||||
--flake .#{{ hostname }} \
|
--flake .#{{ hostname }} \
|
||||||
--target-host {{ target }} \
|
--target-host {{ target }} \
|
||||||
--use-remote-sudo \
|
--use-remote-sudo \
|
||||||
--verbose \
|
{{ ARGS }} switch
|
||||||
switch
|
|
||||||
|
|
||||||
identifier := "./secrets/yubikey-identity.age"
|
[group('deploy')]
|
||||||
_get_user host:
|
deploy-iso hostname:
|
||||||
user := nix eval --raw .#nixosConfigurations.{{host}}.config.user.username
|
nix build .#nixosConfigurations.{{ hostname }}.config.formats.install-iso
|
||||||
|
|
||||||
|
identifier := "./secrets/yubikey-identity.pub"
|
||||||
|
|
||||||
[group("secret")]
|
[group("secret")]
|
||||||
secret-import path:
|
secret-import path:
|
||||||
|
|
@ -124,6 +118,7 @@ secret-edit name=default:
|
||||||
secret-rekey:
|
secret-rekey:
|
||||||
nix develop --quiet --command bash -c \
|
nix develop --quiet --command bash -c \
|
||||||
"agenix rekey"
|
"agenix rekey"
|
||||||
|
git add .
|
||||||
|
|
||||||
[group('secret')]
|
[group('secret')]
|
||||||
secret-new-ssh-key hostname $USER:
|
secret-new-ssh-key hostname $USER:
|
||||||
|
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
args @ {
|
|
||||||
lib,
|
|
||||||
withSystem,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
inherit (import ./. args) recursiveMerge;
|
|
||||||
mkBase = {system ? "x86_64-linux", ...}:
|
|
||||||
withSystem system (
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = {inherit inputs pkgs;};
|
|
||||||
modules = [
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
mkNixos = args:
|
|
||||||
inputs.nixpkgs.lib.nixosSystem (recursiveMerge [
|
|
||||||
(mkBase args)
|
|
||||||
args
|
|
||||||
]);
|
|
||||||
in {
|
|
||||||
mkHosts = root: let
|
|
||||||
hosts = attrNames (filterAttrs (_: type: type == "directory") (builtins.readDir root));
|
|
||||||
|
|
||||||
hostDirs = builtins.listToAttrs (
|
|
||||||
lib.map (hostName: lib.nameValuePair hostName (lib.path.append root hostName)) hosts
|
|
||||||
);
|
|
||||||
|
|
||||||
hostResolved =
|
|
||||||
lib.mapAttrs (
|
|
||||||
_: hostDir: (lib.map (fileName: lib.path.append hostDir fileName) (attrNames (builtins.readDir hostDir)))
|
|
||||||
)
|
|
||||||
hostDirs;
|
|
||||||
|
|
||||||
hostsConfig = mapAttrs (_: configs: mkNixos {modules = configs;}) hostResolved;
|
|
||||||
in
|
|
||||||
hostsConfig;
|
|
||||||
|
|
||||||
mkVm = configs:
|
|
||||||
inputs.nixos-generators.nixosGenerate {
|
|
||||||
modules = configs;
|
|
||||||
format = "qcow";
|
|
||||||
system = "x86_64-linux";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
args: {
|
|
||||||
inherit (import ./util.nix args) recursiveMerge;
|
|
||||||
inherit (import ./builder.nix args) mkNixos mkHosts mkVm;
|
|
||||||
}
|
|
||||||
17
lib/util.nix
|
|
@ -1,17 +0,0 @@
|
||||||
{lib, ...}:
|
|
||||||
with lib; {
|
|
||||||
recursiveMerge = attrList: let
|
|
||||||
f = attrPath:
|
|
||||||
zipAttrsWith (
|
|
||||||
n: values:
|
|
||||||
if tail values == []
|
|
||||||
then head values
|
|
||||||
else if all isList values
|
|
||||||
then unique (concatLists values)
|
|
||||||
else if all isAttrs values
|
|
||||||
then f (attrPath ++ [n]) values
|
|
||||||
else last values
|
|
||||||
);
|
|
||||||
in
|
|
||||||
f [] attrList;
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +1,29 @@
|
||||||
{
|
{inputs, ...}: {
|
||||||
inputs,
|
imports = [inputs.agenix-rekey.flakeModule];
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
hostname,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
perSystem = {
|
perSystem = {
|
||||||
pkgs,
|
|
||||||
config,
|
config,
|
||||||
config',
|
system,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
agenix-rekey.nixosConfigurations = inputs.self.nixosConfigurations;
|
# agenix-rekey.nixosConfigurations = self.nodes;
|
||||||
devShells.default = pkgs.mkShellNoCC {
|
devShells.default = pkgs.mkShell {
|
||||||
|
inherit system;
|
||||||
|
|
||||||
packages = [
|
packages = [
|
||||||
pkgs.nix
|
pkgs.nix
|
||||||
pkgs.nixos-rebuild
|
pkgs.nixos-rebuild
|
||||||
pkgs.nixos-rebuild
|
pkgs.nixos-rebuild
|
||||||
pkgs.nh
|
pkgs.nh
|
||||||
pkgs.just
|
pkgs.age
|
||||||
|
pkgs.rage
|
||||||
|
pkgs.age-plugin-yubikey
|
||||||
config.agenix-rekey.package
|
config.agenix-rekey.package
|
||||||
config.agenix-rekey.agePackage
|
|
||||||
];
|
];
|
||||||
AGENIX_REKEY_ADD_TO_GIT = "true";
|
env.AGENIX_REKEY_ADD_TO_GIT = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix-rekey.nixosConfigurations = inputs.self.nixosConfigurations; # (not technically needed, as it is already the default)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,89 +5,74 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
|
mkSystemImports = hostname: let
|
||||||
|
hostDirectory = ./. + ("/" + hostname);
|
||||||
|
nixFiles = filter (file: hasSuffix ".nix" file) (attrNames (builtins.readDir hostDirectory));
|
||||||
|
imports = map (file: ./. + ("/" + hostname + "/" + file)) nixFiles;
|
||||||
|
in {
|
||||||
|
inherit imports;
|
||||||
|
};
|
||||||
|
|
||||||
mkSystem = {
|
mkSystem = {
|
||||||
hostname,
|
hostname,
|
||||||
username,
|
username,
|
||||||
modules ? [],
|
modules ? [],
|
||||||
|
system ? "x86_64-linux",
|
||||||
}:
|
}:
|
||||||
withSystem "x86_64-linux" (
|
withSystem system (
|
||||||
{
|
{system, ...}: let
|
||||||
pkgs,
|
pkgs = import inputs.nixpkgs {
|
||||||
system,
|
inherit system;
|
||||||
...
|
config.allowUnfree = true;
|
||||||
}:
|
};
|
||||||
|
|
||||||
|
pkgsUnstable = import inputs.nixpkgs-unstable {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
inputs.nixpkgs.lib.nixosSystem {
|
inputs.nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
inherit system;
|
||||||
specialArgs = {inherit inputs pkgs hostname username;};
|
specialArgs = {inherit inputs hostname username pkgs pkgsUnstable;};
|
||||||
modules =
|
modules =
|
||||||
[
|
[
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
|
inputs.nixos-generators.nixosModules.all-formats
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
]
|
|
||||||
++ [
|
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.agenix-rekey.nixosModules.default
|
inputs.agenix-rekey.nixosModules.default
|
||||||
{
|
inputs.nixos-facter-modules.nixosModules.facter
|
||||||
environment.variables = {
|
../modules/base/user.nix
|
||||||
AGENIX_REKEY_PRIMARY_IDENTITY = builtins.readFile ../../secrets/hosts/${hostname}/id_ed25519.pub;
|
(mkSystemImports hostname)
|
||||||
AGENIX_REKEY_PRIMARY_IDENTITY_ONLY = "true";
|
|
||||||
};
|
|
||||||
environment.etc."ssh/ssh_host_ed25519_key.pub".source = ../../secrets/hosts/${hostname}/id_ed25519.pub;
|
|
||||||
age = rec {
|
|
||||||
rekey = {
|
|
||||||
storageMode = "local";
|
|
||||||
hostPubkey = builtins.readFile ../../secrets/hosts/${hostname}/id_ed25519.pub;
|
|
||||||
masterIdentities = [
|
|
||||||
{ identity=secrets.id_ed25519.path; pubkey="builtins.readFile ../../secrets/hosts/${hostname}/id_ed25519.pub"; }
|
|
||||||
{ identity=../../secrets/yubikey-identity.age; pubkey="age1yubikey1q25a8ax2t0ujv7q5wvpmlpa52h599n6682jprxuftlw4zpxy2xu9s6lhrel"; }
|
|
||||||
];
|
|
||||||
localStorageDir = lib.path.append ../../secrets/rekeyed hostname;
|
|
||||||
generatedSecretsDir = lib.path.append ../../secrets hostname;
|
|
||||||
};
|
|
||||||
secrets.hashed-user-password.rekeyFile = ../../secrets/hashed-user-password.age;
|
|
||||||
secrets.id_ed25519={
|
|
||||||
rekeyFile = ../../secrets/hosts/${hostname}/id_ed25519.age;
|
|
||||||
path = "/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
};
|
|
||||||
secrets.luks-password.rekeyFile = ../../secrets/luks-password.age;
|
|
||||||
secrets.luks-password.path = "/luks-password";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
++ modules;
|
++ modules
|
||||||
|
++ (
|
||||||
|
lib.optional (builtins.pathExists ./${hostname}/facter.json)
|
||||||
|
{config.facter.reportPath = ./${hostname}/facter.json;}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
# TODO:
|
|
||||||
# mkHosts = root: let
|
|
||||||
# hosts = attrNames (filterAttrs (_: type: type == "directory") (builtins.readDir root));
|
|
||||||
# hostDirs = builtins.listToAttrs (
|
|
||||||
# lib.map (hostName: lib.nameValuePair hostName (lib.path.append root hostName)) hosts
|
|
||||||
# );
|
|
||||||
# hostResolved =
|
|
||||||
# lib.mapAttrs (
|
|
||||||
# _: hostDir: (lib.map (fileName: lib.path.append hostDir fileName) (attrNames (builtins.readDir hostDir)))
|
|
||||||
# )
|
|
||||||
# hostDirs;
|
|
||||||
# hostsConfig = mapAttrs (host: modules: mkSystem host modules ) hostResolved;
|
|
||||||
# in
|
|
||||||
# hostsConfig;
|
|
||||||
in {
|
in {
|
||||||
flake.nixosConfigurations = {
|
config.flake.nixosConfigurations = {
|
||||||
laptop = mkSystem {
|
laptop = mkSystem {
|
||||||
hostname = "laptop";
|
hostname = "laptop";
|
||||||
modules = [
|
|
||||||
./laptop/configuration.nix
|
|
||||||
./laptop/disk-configuration.nix
|
|
||||||
./laptop/hardware-configuration.nix
|
|
||||||
];
|
|
||||||
username = "nickolaj";
|
username = "nickolaj";
|
||||||
|
modules = [
|
||||||
|
../modules/required.nix
|
||||||
|
../modules/shell.nix
|
||||||
|
../modules/graphical.nix
|
||||||
|
../modules/devenv.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
desktop = mkSystem {
|
desktop = mkSystem {
|
||||||
hostname = "desktop";
|
hostname = "desktop";
|
||||||
modules = [
|
|
||||||
./desktop/configuration.nix
|
|
||||||
];
|
|
||||||
username = "nickolaj";
|
username = "nickolaj";
|
||||||
|
modules = [
|
||||||
|
../modules/required.nix
|
||||||
|
../modules/shell.nix
|
||||||
|
../modules/graphical.nix
|
||||||
|
../modules/devenv.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{hostname, ...}: {
|
|
||||||
imports = [
|
|
||||||
../../modules/base.nix
|
|
||||||
../../modules/shell.nix
|
|
||||||
../../modules/graphical.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
user.username = "nickolaj";
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
62
parts/hosts/desktop/disk-configuration.disabled
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
_: {
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
device = "/dev/disk/by-id/ata-SanDisk_SDSSDXPS240G_153251401377";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
name = "boot";
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = ["defaults"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
# Copied by deploy script, otherwise it will prompt for password
|
||||||
|
passwordFile = "/luks-password";
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
bypassWorkqueues = true;
|
||||||
|
};
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = ["-f"];
|
||||||
|
subvolumes = {
|
||||||
|
"@" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
"@nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
"@home" = {
|
||||||
|
mountpoint = "/home";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8470
parts/hosts/desktop/facter.json
Normal file
29
parts/hosts/desktop/monitors.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
_: {
|
||||||
|
# monitor=DP-1,1920x1080@60,2880x0,auto
|
||||||
|
monitors = [
|
||||||
|
{
|
||||||
|
name = "DP-2";
|
||||||
|
resolution = "2560x1440";
|
||||||
|
refreshRate = 144;
|
||||||
|
position = "2560x1080";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "HDMI-A-1";
|
||||||
|
resolution = "2560x1440";
|
||||||
|
refreshRate = 60;
|
||||||
|
position = "0x1080";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "DP-3";
|
||||||
|
resolution = "2560x1440";
|
||||||
|
refreshRate = 144;
|
||||||
|
position = "5120x1080";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "DP-1";
|
||||||
|
resolution = "1920x1080";
|
||||||
|
refreshRate = 60;
|
||||||
|
position = "2880x0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
12
parts/hosts/desktop/nvidia.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
_: {
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
hardware.nvidia = {
|
||||||
|
open = true;
|
||||||
|
modesetting.enable = true;
|
||||||
|
powerManagement.enable = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,13 +1,32 @@
|
||||||
{...}: {
|
{
|
||||||
imports = [
|
pkgs,
|
||||||
../../modules/base.nix
|
...
|
||||||
../../modules/shell.nix
|
}: {
|
||||||
../../modules/graphical.nix
|
# Enable OpenGL
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.glxinfo
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
hardware.nvidia = {
|
||||||
user.username = "nickolaj";
|
open = true;
|
||||||
networking.hostName = "laptop";
|
modesetting.enable = true;
|
||||||
system.stateVersion = "24.11";
|
powerManagement.enable = true;
|
||||||
|
powerManagement.finegrained = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
prime = {
|
||||||
|
offload = {
|
||||||
|
enable = true;
|
||||||
|
enableOffloadCmd = true;
|
||||||
|
};
|
||||||
|
intelBusId = "PCI:0:2:0";
|
||||||
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
{config, ...}: {
|
_: {
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
disk = {
|
disk = {
|
||||||
vdb = {
|
main = {
|
||||||
device = "/dev/nvme0n1";
|
device = "/dev/disk/by-id/nvme-SAMSUNG_MZVLB512HBJQ-000L2_S4DYNF0M893481";
|
||||||
type = "disk";
|
type = "disk";
|
||||||
content = {
|
content = {
|
||||||
type = "gpt";
|
type = "gpt";
|
||||||
|
|
@ -28,8 +28,8 @@
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "crypted";
|
name = "crypted";
|
||||||
# passwordFile = "/luks-password";
|
# Copied by deploy script, otherwise it will prompt for password
|
||||||
passwordFile = config.age.secrets.luks-password.path;
|
passwordFile = "/luks-password";
|
||||||
settings = {
|
settings = {
|
||||||
allowDiscards = true;
|
allowDiscards = true;
|
||||||
bypassWorkqueues = true;
|
bypassWorkqueues = true;
|
||||||
|
|
|
||||||
4394
parts/hosts/laptop/facter.json
Normal file
|
|
@ -1,33 +0,0 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp7s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
{pkgs, ...}: {
|
_: {
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
defaults.browser = pkgs.firefox;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,52 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
defaults.terminal = lib.getExe pkgs.ghostty;
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
ghostty
|
ghostty
|
||||||
];
|
];
|
||||||
user.home-manager = {
|
fireproof.home-manager = {
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = config.programs.fish.enable;
|
enableFishIntegration = config.programs.fish.enable;
|
||||||
|
settings = {
|
||||||
|
window-decoration = false;
|
||||||
|
theme = "fireproof";
|
||||||
|
font-size = 11;
|
||||||
|
font-family = "Hack Nerd Font";
|
||||||
|
window-inherit-font-size = false;
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
fireproof = {
|
||||||
|
background = "1C1B1A";
|
||||||
|
cursor-color = "DAD8CE";
|
||||||
|
foreground = "DAD8CE";
|
||||||
|
palette = [
|
||||||
|
"0=#100F0F"
|
||||||
|
"1=#AF3029"
|
||||||
|
"2=#66800B"
|
||||||
|
"3=#AD8301"
|
||||||
|
"4=#205EA6"
|
||||||
|
"5=#A02F6F"
|
||||||
|
"6=#24837B"
|
||||||
|
"7=#DAD8CE"
|
||||||
|
"8=#878580"
|
||||||
|
"9=#D14D41"
|
||||||
|
"10=#879A39"
|
||||||
|
"11=#D0A215"
|
||||||
|
"12=#4385BE"
|
||||||
|
"13=#CE5D97"
|
||||||
|
"14=#3AA99F"
|
||||||
|
"15=#F2F0E5"
|
||||||
|
];
|
||||||
|
selection-background = "403E3C";
|
||||||
|
selection-foreground = "DAD8CE";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
fireproof.default-apps = {
|
||||||
|
terminal = "ghostty";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
parts/modules/apps/pycharm.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{pkgsUnstable, ...}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgsUnstable.jetbrains.pycharm-professional
|
||||||
|
];
|
||||||
|
}
|
||||||
81
parts/modules/apps/vscode.nix
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
pkgsUnstable,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# stable = inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace-release;
|
||||||
|
vscode-extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system};
|
||||||
|
vscodePackage = pkgsUnstable.vscode;
|
||||||
|
vscodeMarketplace = (vscode-extensions.forVSCodeVersion vscodePackage.version).vscode-marketplace;
|
||||||
|
vscodeMarketplaceRelease = (vscode-extensions.forVSCodeVersion vscodePackage.version).vscode-marketplace-release;
|
||||||
|
vscodePkgs = vscodeMarketplace // vscodeMarketplaceRelease; # Prefer release over pre-release
|
||||||
|
|
||||||
|
mkFormatter = formatter: languages: {
|
||||||
|
"[${lib.concatStringsSep "][" languages}]" = {
|
||||||
|
editor.defaultFormatter = formatter;
|
||||||
|
editor.formatOnSave = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
fireproof.home-manager = {
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = vscodePackage;
|
||||||
|
enableUpdateCheck = true;
|
||||||
|
enableExtensionUpdateCheck = true;
|
||||||
|
userSettings = lib.mkMerge [
|
||||||
|
{
|
||||||
|
# General
|
||||||
|
extensions.ignoreRecommendations = true;
|
||||||
|
|
||||||
|
# Remote
|
||||||
|
remote.SSH.useLocalServer = false;
|
||||||
|
|
||||||
|
# AI
|
||||||
|
github.copilot.editor.enableAutoCompletions = true;
|
||||||
|
github.copilot.enable."*" = true;
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
workbench.colorTheme = "Darcula Theme from IntelliJ";
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
workbench.commandPalette.experimental.suggestCommands = true; # Emulates IntelliJ's "Search Everywhere"
|
||||||
|
}
|
||||||
|
(mkFormatter "esbenp.prettier-vscode" ["json" "jsonc" "markdown" "css" "scss" "typescript" "typescriptreact" "html" "yaml"])
|
||||||
|
(mkFormatter "charliermarsh.ruff" ["python"])
|
||||||
|
];
|
||||||
|
extensions = with vscodePkgs; [
|
||||||
|
# Remote
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
|
||||||
|
# AI
|
||||||
|
github.copilot
|
||||||
|
github.copilot-chat
|
||||||
|
|
||||||
|
# Python
|
||||||
|
ms-pyright.pyright
|
||||||
|
ms-python.python
|
||||||
|
charliermarsh.ruff
|
||||||
|
|
||||||
|
# JavaScript
|
||||||
|
dbaeumer.vscode-eslint
|
||||||
|
esbenp.prettier-vscode
|
||||||
|
|
||||||
|
# Nix
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
|
||||||
|
# Other languages
|
||||||
|
nefrob.vscode-just-syntax
|
||||||
|
redhat.vscode-yaml
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
trinm1709.dracula-theme-from-intellij
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
k--kato.intellij-idea-keybindings
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
parts/modules/base/default-apps.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{lib, ...}: {
|
||||||
|
options.fireproof.default-apps = {
|
||||||
|
terminal = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "The terminal to use";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
in {
|
|
||||||
options.defaults = {
|
|
||||||
terminal = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
};
|
|
||||||
|
|
||||||
fileManager = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
};
|
|
||||||
|
|
||||||
browser = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
};
|
|
||||||
|
|
||||||
editor = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
22
parts/modules/base/networking.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
age.secrets.hosts-private = {
|
||||||
|
# Contains IP addresses that i have no business sharing
|
||||||
|
rekeyFile = ../../../secrets/hosts-private.age;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Inject the private hosts file, because setting networking.hostFiles doesn't work
|
||||||
|
system.activationScripts.hosts-private = ''
|
||||||
|
cat /etc/hosts > /etc/hosts.bak
|
||||||
|
rm /etc/hosts
|
||||||
|
cat /etc/hosts.bak "${config.age.secrets.hosts-private.path}" >> /etc/hosts
|
||||||
|
rm /etc/hosts.bak
|
||||||
|
'';
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = hostname;
|
||||||
|
};
|
||||||
|
}
|
||||||
20
parts/modules/base/secrets.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{hostname, ...}: let
|
||||||
|
hostSecrets = ../../../secrets/hosts + ("/" + hostname);
|
||||||
|
publicKey = builtins.readFile (hostSecrets + "/id_ed25519.pub");
|
||||||
|
in {
|
||||||
|
age.rekey = {
|
||||||
|
storageMode = "local";
|
||||||
|
hostPubkey = publicKey;
|
||||||
|
masterIdentities = [
|
||||||
|
{
|
||||||
|
identity = ../../../secrets/yubikey-identity.pub;
|
||||||
|
# pubkey = "age1yubikey1q25a8ax2t0ujv7q5wvpmlpa52h599n6682jprxuftlw4zpxy2xu9s6lhrel";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraEncryptionPubkeys = [
|
||||||
|
"age1pzrfw28f8qvsk9g8p2stundf4ph466jut0g6q47sse76zljtqy9q2w32zr" # Backup key (bitwarden)
|
||||||
|
];
|
||||||
|
localStorageDir = hostSecrets + /.rekey;
|
||||||
|
generatedSecretsDir = hostSecrets;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
{config, ...}: {
|
{username, ...}: {
|
||||||
security.sudo.wheelNeedsPassword = false;
|
security.sudo.wheelNeedsPassword = false;
|
||||||
nix.settings.trusted-users = [
|
nix.settings.trusted-users = [
|
||||||
"root"
|
"root"
|
||||||
config.user.username
|
"@wheel"
|
||||||
|
username
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,53 @@
|
||||||
{config, ...}: {
|
{
|
||||||
|
config,
|
||||||
|
username,
|
||||||
|
hostname,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# Load all public keys from ../../../secrets/hosts/*/id_ed25519.pub
|
||||||
|
allHosts = lib.attrNames (lib.filterAttrs (_: type: type == "directory") (builtins.readDir ../../../secrets/hosts));
|
||||||
|
publicKeys = map (x: builtins.readFile (../../../secrets/hosts + ("/" + x) + "/id_ed25519.pub")) allHosts;
|
||||||
|
in {
|
||||||
|
age.secrets.ssh-key = {
|
||||||
|
rekeyFile = ../../../secrets/hosts + ("/" + hostname) + /id_ed25519.age;
|
||||||
|
mode = "0600";
|
||||||
|
owner = username;
|
||||||
|
};
|
||||||
|
age.secrets.ssh-key-ao = {
|
||||||
|
rekeyFile = ../../../secrets/ssh-key-ao.age;
|
||||||
|
mode = "0600";
|
||||||
|
owner = username;
|
||||||
|
};
|
||||||
|
fireproof.home-manager = {
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
forwardAgent = true;
|
||||||
|
matchBlocks = {
|
||||||
|
"*" = {
|
||||||
|
identityFile = "${config.age.secrets.ssh-key.path}";
|
||||||
|
};
|
||||||
|
# Work hostnames definded in ./networking.nix
|
||||||
|
"*.ao" = {
|
||||||
|
user = "nij";
|
||||||
|
identityFile = "${config.age.secrets.ssh-key-ao.path}";
|
||||||
|
};
|
||||||
|
"dev.ao,scw.ao".proxyJump = "bastion.ao";
|
||||||
|
"clickhouse.ao".user = "ubuntu";
|
||||||
|
"flex.ao" = {
|
||||||
|
hostname = "192.168.2.5";
|
||||||
|
proxyJump = "bastion.ao";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.ssh.startAgent = true;
|
programs.ssh.startAgent = true;
|
||||||
services.openssh.hostKeys = [
|
|
||||||
{
|
|
||||||
type = "ed25519";
|
|
||||||
inherit (config.age.secrets.id_ed25519) path;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.PasswordAuthentication = false;
|
settings.PasswordAuthentication = false;
|
||||||
settings.KbdInteractiveAuthentication = false;
|
settings.KbdInteractiveAuthentication = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.${config.user.username}.openssh.authorizedKeys.keys = [
|
users.users.${username}.openssh.authorizedKeys.keys = publicKeys;
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/oT15GWYcRvWCTchReh5rnkXTC9Ukm6Zfufei9bq1fWB0EjpvosCMupADw+jvqiP/ttyBKewHwZQxiw9oeRPSphUtKB0UlQXFPASNf1VxrFlsbkDOSEa+FB+PBS3eeP0TTyNJh18oYszt/OFDzCvr1n53iGXTX9xm76bkBxVfAvhm/5vadjmXKGOpdM/OWNF8rCqSgwkME6PXdT1UAFVj+FBdLrNCqYh1pe1ZdRxYlYL5b4uHwQmuz57AkvWwRNKipzdtxMCkT3LNiCQzuOhv3QaqxQ6fgJ+ktkbcTLZtY7HdT+CRUuC+APr266jeLAz1yUxFH693QifbBdn8v7wWD++UnbP23QqNwdXEMnCjEPRFgnK4ERnhIq6jVR328f5DTRJHZZ9spEx7pWsiT2iQC8MxK0gk9xul4fduJsPETWXe84YaHe6wLK92SQKQMdLh6p+TBvhMhPW2PrH5C6iH2w1oXVGlhc4wvoB1leiKNVHf4m9CWRFgznSmVbxFHFk= nickolaj@arch-desktop"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFtjpdHPRXg75YBonNshQdeuNZ3W3k/RzdYY+8QuQ3Pc nickolaj1177@gmail.com"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMdBiNbNPcMdI/hp4zgBS3ShqYuVVRvUAA1ffrdiBQ0k nickolaj@fireproof.website"
|
|
||||||
];
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/oT15GWYcRvWCTchReh5rnkXTC9Ukm6Zfufei9bq1fWB0EjpvosCMupADw+jvqiP/ttyBKewHwZQxiw9oeRPSphUtKB0UlQXFPASNf1VxrFlsbkDOSEa+FB+PBS3eeP0TTyNJh18oYszt/OFDzCvr1n53iGXTX9xm76bkBxVfAvhm/5vadjmXKGOpdM/OWNF8rCqSgwkME6PXdT1UAFVj+FBdLrNCqYh1pe1ZdRxYlYL5b4uHwQmuz57AkvWwRNKipzdtxMCkT3LNiCQzuOhv3QaqxQ6fgJ+ktkbcTLZtY7HdT+CRUuC+APr266jeLAz1yUxFH693QifbBdn8v7wWD++UnbP23QqNwdXEMnCjEPRFgnK4ERnhIq6jVR328f5DTRJHZZ9spEx7pWsiT2iQC8MxK0gk9xul4fduJsPETWXe84YaHe6wLK92SQKQMdLh6p+TBvhMhPW2PrH5C6iH2w1oXVGlhc4wvoB1leiKNVHf4m9CWRFgznSmVbxFHFk= nickolaj@arch-desktop"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFtjpdHPRXg75YBonNshQdeuNZ3W3k/RzdYY+8QuQ3Pc nickolaj1177@gmail.com"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMdBiNbNPcMdI/hp4zgBS3ShqYuVVRvUAA1ffrdiBQ0k nickolaj@fireproof.website"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,46 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
options,
|
options,
|
||||||
|
username,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.user;
|
inherit (config.age) secrets;
|
||||||
in {
|
in {
|
||||||
options.user = {
|
options.fireproof = {
|
||||||
username = mkOption {
|
username = lib.mkOption {
|
||||||
type = types.str;
|
type = lib.types.str;
|
||||||
|
default = "nickolaj";
|
||||||
description = "The username of the user";
|
description = "The username of the user";
|
||||||
};
|
};
|
||||||
home-manager = mkOption {
|
group = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "users";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = lib.mkOption {
|
||||||
type = options.home-manager.users.type.functor.wrapped;
|
type = options.home-manager.users.type.functor.wrapped;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
users.users.${cfg.username} = {
|
age.secrets.hashed-user-password.rekeyFile = ../../../secrets/hashed-user-password.age;
|
||||||
|
|
||||||
|
users.users.${username} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = ["wheel"];
|
extraGroups = ["wheel"];
|
||||||
hashedPasswordFile = config.age.secrets.hashed-user-password.path;
|
# initialPassword = "password";
|
||||||
|
hashedPasswordFile = secrets.hashed-user-password.path;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
};
|
};
|
||||||
home-manager.users.${cfg.username} = mkAliasDefinitions options.user.home-manager;
|
home-manager.users.${username} = mkAliasDefinitions options.fireproof.home-manager;
|
||||||
user.home-manager.home.stateVersion = config.system.stateVersion;
|
|
||||||
|
# set the same version of home-manager as the system
|
||||||
|
fireproof.home-manager.home.stateVersion = "24.11";
|
||||||
|
system.stateVersion = "24.11";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,15 @@
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
packageName = "astal";
|
packageName = "fireproof-shell";
|
||||||
|
cfg = config.modules.astral;
|
||||||
package = inputs.ags.lib.bundle {
|
package = inputs.ags.lib.bundle {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
src = ./src;
|
src = ./.;
|
||||||
name = packageName;
|
name = packageName;
|
||||||
gtk4 = true;
|
gtk4 = true;
|
||||||
entry = "app.ts";
|
entry = "app.ts";
|
||||||
|
|
@ -23,7 +25,28 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
user.home-manager = {
|
options = {
|
||||||
|
modules.astral.primaryMonitor = lib.mkOption {
|
||||||
|
type = lib.types.string;
|
||||||
|
default = "";
|
||||||
|
example = "M27Q";
|
||||||
|
};
|
||||||
|
modules.astral.notificationIgnores = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = ["/^Spotify/"];
|
||||||
|
example = ["/^Spotify/"];
|
||||||
|
};
|
||||||
|
modules.astral.trayIgnore = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = ["/spotify/"];
|
||||||
|
example = ["/spotify/"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
environment.systemPackages = [package inputs.ags.packages.${pkgs.system}.agsFull];
|
||||||
|
|
||||||
|
fireproof.home-manager = {
|
||||||
systemd.user.services.astal = {
|
systemd.user.services.astal = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Astal";
|
Description = "Astal";
|
||||||
|
|
@ -36,6 +59,11 @@ in {
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
KillMode = "mixed";
|
KillMode = "mixed";
|
||||||
Slice = "app-graphical.slice";
|
Slice = "app-graphical.slice";
|
||||||
|
DefaultEnvironment = ''
|
||||||
|
ASTRAL_PRIMARY_MONITOR=${cfg.primaryMonitor}
|
||||||
|
ASTRAL_NOTIFICATION_IGNORE=${lib.concatStringsSep "," cfg.notificationIgnores}
|
||||||
|
ASTRAL_TRAY_IGNORE=${lib.concatStringsSep "," cfg.trayIgnore}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
|
|
@ -43,4 +71,5 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 316 B |
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 784 B After Width: | Height: | Size: 784 B |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 382 B |
|
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 999 B |
1
parts/modules/desktop/astal/node_modules/.bin/biome
generated
vendored
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../@biomejs/biome/bin/biome
|
||||||
60
parts/modules/desktop/astal/node_modules/.package-lock.json
generated
vendored
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"name": "astal-shell",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"../../../../usr/share/astal/gjs": {
|
||||||
|
"name": "astal",
|
||||||
|
"license": "LGPL-2.1"
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/biome": {
|
||||||
|
"version": "1.9.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz",
|
||||||
|
"integrity": "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"biome": "bin/biome"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/biome"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@biomejs/cli-darwin-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-darwin-x64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-arm64-musl": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-x64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-x64-musl": "1.9.4",
|
||||||
|
"@biomejs/cli-win32-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-win32-x64": "1.9.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-linux-x64": {
|
||||||
|
"version": "1.9.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz",
|
||||||
|
"integrity": "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/astal": {
|
||||||
|
"resolved": "../../../../usr/share/astal/gjs",
|
||||||
|
"link": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
201
parts/modules/desktop/astal/node_modules/@biomejs/biome/LICENSE-APACHE
generated
vendored
Normal file
|
|
@ -0,0 +1,201 @@
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright (c) 2023 Biome Developers and Contributors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
21
parts/modules/desktop/astal/node_modules/@biomejs/biome/LICENSE-MIT
generated
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Biome Developers and Contributors.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
207
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.hi.md
generated
vendored
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Shows the banner of Biome, with its logo and the phrase 'Biome - Toolchain of the web'." src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
हिन्दी | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-br.md) | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
**Biome** वेब[^1] परियोजना[^2]ओं के लिए एक प्रदर्शनकारी उपकरण-श्रृंखला[^3] है, इसका उद्देश्य उक्त परियोजना[^2]ओं के स्वास्थ्य को बनाए रखने के लिए डेवलपर[^4] उपकरण प्रदान करना है।
|
||||||
|
|
||||||
|
**Biome** *JavaScript*, *TypeScript*, *JSX* और *JSON* के लिए **एक [तेज़ स्वरूपक](./benchmark#formatting)[^5]** है जो **[*Prettier* के साथ ९७% अनुकूलता](https://console.algora.io/challenges/prettier)[^6]** स्कोर[^7] करता है।
|
||||||
|
|
||||||
|
**Biome *JavaScript*, *TypeScript* और *JSX* के लिए एक [प्रदर्शनकारी लिंटर](https://github.com/biomejs/biome/tree/main/benchmark#linting)[^8]** है जिसमें ESLint, typescript-eslint और [अन्य स्रोतों](https://github.com/biomejs/biome/discussions/3) से **[२७० से अधिक नियम](https://biomejs.dev/linter/rules/)** शामिल हैं। यह **विस्तृत[^9] और संदर्भिकृत[^10] निदान[^11]** आउटपुट[^12] करता है जो आपको अपना कोड[^13] बेहतर बनाने और एक बेहतर प्रोग्रामर[^14] बनने में मदद करता है!
|
||||||
|
|
||||||
|
**Biome** को शुरू से ही [संपादक](https://biomejs.dev/guides/integrate-in-editor/)[^15] [के भीतर अंतरक्रियात्मक](https://biomejs.dev/guides/integrate-in-editor/)[^16] [रूप से](https://biomejs.dev/guides/integrate-in-editor/) उपयोग करने के लिए डिज़ाइन[^17] किया गया है। यह आपके द्वारा लिखे जा रहे विकृत[^18] कोड[^13] को स्वरूप[^5] और लिंट[^8] कर सकता है।
|
||||||
|
|
||||||
|
### स्थापना[^19]
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### प्रयोग[^20]
|
||||||
|
|
||||||
|
* फ़ाइलें[^21] स्वरूप[^5] करें
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
* फ़ाइलें[^21] लिंट[^8] करें
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npx @biomejs/biome lint ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
* स्वरूप, लिंट आदि चलाएँ और सुरक्षित सुझाव लागू करें
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
* CI वातावरण में सभी फ़ाइलों को स्वरूप, लिंट आदि के विरुद्ध जाँचें
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
यदि आप Biome को स्थापित[^19] किए बिना चलाना चाहते हैं, तो WebAssembly में संकलित[^22] [ऑनलाइन](https://biomejs.dev/playground/)[^23] [प्रयोगशाला](https://biomejs.dev/playground/)[^24] का उपयोग करें।
|
||||||
|
|
||||||
|
## दस्तावेज़ीकरण[^25]
|
||||||
|
|
||||||
|
Biome के बारे में अधिक जानने के लिए हमारे [मुखपृष्ठ][biomejs] पर जाएँ, या Biome का उपयोग शुरू करने के लिए सीधे [आरंभ करने की मार्गदर्शिका][आरंभ-करें][^26] पर जाएँ।
|
||||||
|
|
||||||
|
## Biome के बारे में और
|
||||||
|
|
||||||
|
**Biome** में उचित पूर्व-निर्धारन[^27] हैं और इसके लिए कॉन्फ़िगरेशन[^28] की आवश्यकता नहीं है।
|
||||||
|
|
||||||
|
**Biome** का लक्ष्य आधुनिक वेब[^1] विकास की [सभी मुख्य भाषाओं][भाषा-समर्थन] का समर्थन करना है।
|
||||||
|
|
||||||
|
**Biome** को कार्य करने के लिए [Node.js की आवश्यकता नहीं है।](https://biomejs.dev/guides/manual-installation/)
|
||||||
|
|
||||||
|
**Biome** में प्रथम-श्रेणी का LSP समर्थन है, जिसमें एक परिष्कृत[^29] पार्सर[^30] है जो स्रोत पाठ[^31] को पूर्ण निष्ठा और शीर्ष-स्तरीय त्रुटि[^32] पुनर्प्राप्ति[^33] में प्रस्तुत करता है।
|
||||||
|
|
||||||
|
**Biome** उन कार्यक्षमता[^34]ओं को एकीकृत करता है जो पहले अलग-अलग उपकरण थे। साझा आधार पर निर्माण करने से हमें कोड[^13] प्रोसेसिंग, त्रुटि[^32]यों को प्रदर्शित करने, समानांतर कार्य, कैशिंग[^35] और कॉन्फ़िगरेशन[^28] के लिए एक सुसंगत अनुभव प्रदान करने की अनुमति मिलती है।
|
||||||
|
|
||||||
|
हमारे [परियोजना दर्शनशास्र][biome-दर्शनशास्र] के बारे में और पढ़ें।
|
||||||
|
|
||||||
|
**Biome** [MIT लाइसेंस प्राप्त](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) या [Apache 2.0 लाइसेंस प्राप्त](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE) है और [योगदानकर्ता अनुबंध आचार संहिता](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md) के तहत संचालित है।
|
||||||
|
|
||||||
|
## वित्तपोषण[^36]
|
||||||
|
|
||||||
|
आप परियोजना[^2] को विभिन्न तरीकों से वित्तपोषित[^36] कर सकते हैं।
|
||||||
|
|
||||||
|
### परियोजना[^2] प्रायोजन[^37] और वित्तपोषण[^36]
|
||||||
|
|
||||||
|
आप [Open Collective](https://opencollective.com/biome) या [GitHub Sponsors](https://github.com/sponsors/biomejs) के माध्यम से परियोजना[^2] को प्रायोजित[^37] या वित्तपोषित[^36] कर सकते हैं।
|
||||||
|
|
||||||
|
Biome एक सरल प्रायोजन[^37] कार्यक्रम प्रदान करता है जो कंपनियों को विभिन्न डेवलपरों[^4] के बीच दृश्यता[^38] और मान्यता प्राप्त करने की अनुमति देता है।
|
||||||
|
|
||||||
|
### वित्तपोषण[^36] जारी करना
|
||||||
|
|
||||||
|
हम [Polar.sh](https://polar.sh/biomejs) का उपयोग उन विशिष्ट[^39] सुविधाओं के पक्ष में वोट[^40] करने और बढ़ावा देने के लिए करते हैं जिन्हें आप देखना और लागू करना चाहते हैं। हमारे बकाया कार्य[^41] की जाँच करें और हमारी मदद करें:
|
||||||
|
|
||||||
|
[](https://polar.sh/biomejs/)
|
||||||
|
|
||||||
|
## प्रायोजक[^37]
|
||||||
|
|
||||||
|
### स्वर्ण प्रायोजक[^42]
|
||||||
|
|
||||||
|
### रजत प्रायोजक[^43]
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://l2beat.com/" target="_blank"><img src="https://images.opencollective.com/l2beat/c2b2a27/logo/256.png" height="100"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### कांस्य प्रायोजक[^44]
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://vital.io/" target="_blank"><img src="https://avatars.githubusercontent.com/u/25357309?s=200" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://coderabbit.ai/" target="_blank"><img src="https://avatars.githubusercontent.com/u/132028505?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/
|
||||||
|
[biome-दर्शनशास्र]: https://biomejs.dev/internals/philosophy/
|
||||||
|
[भाषा-समर्थन]: https://biomejs.dev/internals/language-support/
|
||||||
|
[आरंभ-करें]: https://biomejs.dev/guides/getting-started/
|
||||||
|
|
||||||
|
## शब्द सूची
|
||||||
|
|
||||||
|
नीचे दिए गए तिरछे शब्द आगत शब्द हैं।
|
||||||
|
|
||||||
|
[^1]: *वेब* - web: the internet
|
||||||
|
[^2]: परियोजना - project
|
||||||
|
[^3]: उपकरण-श्रृंखला - toolchain
|
||||||
|
[^4]: *डेव/डेवलपर* - dev/developer
|
||||||
|
[^5]: स्वरूप/स्वरूपक - format/foramtter
|
||||||
|
[^6]: अनुकूल/अनुकूलता - compatible/compatibility
|
||||||
|
[^7]: *स्कोर* - score
|
||||||
|
[^8]: *लिंट/लिंटर* - lint/linter
|
||||||
|
[^9]: विस्तार/विस्तृत - detail/detailed
|
||||||
|
[^10]: संदर्भ/संदर्भिकृत - context/contextualized
|
||||||
|
[^11]: निदान - diagnosis
|
||||||
|
[^12]: *आउटपुट* - output
|
||||||
|
[^13]: *कोड* - code
|
||||||
|
[^14]: *प्रोग्रामर* - programmer
|
||||||
|
[^15]: संपादक - editor, the text editor: vscode, zed, etc.
|
||||||
|
[^16]: अंतरक्रिया/अंतरक्रियात्मक - interact/interactive
|
||||||
|
[^17]: *डिज़ाइन* - design
|
||||||
|
[^18]: विकृत - malformed
|
||||||
|
[^19]: स्थापित_करना/स्थापना - install/installation
|
||||||
|
[^20]: प्रयोग - usage
|
||||||
|
[^21]: *फ़ाइल* - file
|
||||||
|
[^22]: संकलित_करना/संकलित/संकलनकर्ता - compile/compiled/compiler
|
||||||
|
[^23]: *ऑनलाइन* - online
|
||||||
|
[^24]: प्रयोगशाला - laboratory
|
||||||
|
[^25]: दस्तावेज़/दस्तावेज़ीकरण - document/documentation
|
||||||
|
[^26]: मार्गदर्शिका - guide
|
||||||
|
[^27]: पूर्व-निर्धारित - default
|
||||||
|
[^28]: *कॉन्फ़िग/कॉन्फ़िगर/कॉन्फ़िगरेशन* - config/configure/configuration
|
||||||
|
[^29]: परिष्कृत - sophisticated
|
||||||
|
[^30]: *पार्सर* - parser
|
||||||
|
[^31]: पाठ - text
|
||||||
|
[^32]: त्रुटि - error
|
||||||
|
[^33]: पुनर्प्राप्ति - recovery
|
||||||
|
[^34]: कार्यक्षमता - functionality
|
||||||
|
[^35]: *कैश/कैशिंग* - cache/caching, ~~cash/cashing~~
|
||||||
|
[^36]: वित्तपोषित_करना/वित्तपोषण - fund/funding
|
||||||
|
[^37]: प्रायोजित/प्रायोजन - sponsor/sponsorship
|
||||||
|
[^38]: दृश्यता - visibility
|
||||||
|
[^39]: विशिष्ट - specific
|
||||||
|
[^40]: *वोट* - vote
|
||||||
|
[^41]: बकाया_कार्य - backlog
|
||||||
|
[^42]: स्वर्ण_प्रायोजक - Gold Sponsor
|
||||||
|
[^43]: रजत_प्रायोजक - Silver Sponsor
|
||||||
|
[^44]: कांस्य_प्रायोजक - Bronze Sponsor
|
||||||
115
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.ja.md
generated
vendored
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Biome - Toolchain of the web" src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | 日本語 | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-br.md) | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
**Biome** はWebプロジェクトのための高性能なツールチェーンであり、プロジェクトの健全性を維持するための開発者ツールの提供を目的としています。
|
||||||
|
|
||||||
|
**Biome は _JavaScript_, _TypeScript_, _JSX_ そして _JSON_ 向けの[高速なFormatter](./benchmark#formatting)**であり、**[_Prettier_ との互換性は97%](https://console.algora.io/challenges/prettier)** を達成しています。
|
||||||
|
|
||||||
|
**Biome は _JavaScript_, _TypeScript_, _JSX_ のための[高性能なLinter](https://github.com/biomejs/biome/tree/main/benchmark#linting)** であり、ESLint, typescript-eslint, [その他のソース](https://github.com/biomejs/biome/discussions/3)から **[270以上のルール](https://biomejs.dev/linter/rules/)**を提供しています。Biome は**詳細で文脈に沿った結果を出力**するため、コードを改善し、より良いプログラマになるための手助けをします!
|
||||||
|
|
||||||
|
**Biome** は最初から[**エディタ内で対話的に**](https://biomejs.dev/ja/guides/integrate-in-editor/)使用できるように設計されています。
|
||||||
|
あなたがコードを書いているときに、形の崩れたコードを format と lint することができます。
|
||||||
|
|
||||||
|
### インストール
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使い方
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# ファイルをformatする
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# ファイルをlintする
|
||||||
|
npx @biomejs/biome lint ./src
|
||||||
|
|
||||||
|
# format、lintなどを実行し、安全な提案を適用する
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# CI環境では、すべてのファイルを対象にformatやlintをチェックする
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
Biome をインストールせずに試したい場合は、WebAssembly にコンパイルされた[オンラインのプレイグラウンド](https://biomejs.dev/playground/)を利用してください。
|
||||||
|
|
||||||
|
## ドキュメント
|
||||||
|
|
||||||
|
Biome についてもっと知るために[ホームページ][biomejs]をチェックするか、Biome を使い始めるために[はじめる][getting-started]に進んでください。
|
||||||
|
|
||||||
|
## Biome をもっと詳しく
|
||||||
|
|
||||||
|
**Biome** は理にかなったデフォルト設定を持ち、設定を必要としません。
|
||||||
|
|
||||||
|
**Biome** はモダンなウェブ開発における[全ての主要な言語][language-support]をサポートすることを目指しています。
|
||||||
|
|
||||||
|
**Biome** は動作するために Node.js を必要としません。
|
||||||
|
|
||||||
|
**Biome** はソーステキストの完全な表現力とエラー回復能力を持つ洗練されたParserによって、優れたLSPサポートを提供します。
|
||||||
|
|
||||||
|
**Biome** は以前は別々のツールで提供されていた機能を統合します。共通基盤を構築することで、コードの処理、エラーの表示、並列処理、キャッシュ、設定について統一的な体験を提供します。
|
||||||
|
|
||||||
|
興味のある方は、[プロジェクトの理念][biome-philosophy]もご覧ください。
|
||||||
|
|
||||||
|
**Biome** は [MIT ライセンス](https://github.com/biomejs/biome/tree/main/LICENSE-MIT)または [Apache 2.0 ライセンス](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE)であり、[コントリビューター行動規範](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md)の下で管理されています。
|
||||||
|
|
||||||
|
## スポンサー
|
||||||
|
|
||||||
|
### ゴールドスポンサー
|
||||||
|
|
||||||
|
### ブロンズスポンサー
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/ja/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/ja/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/ja/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/ja/guides/getting-started/
|
||||||
158
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.kr.md
generated
vendored
Normal file
|
|
@ -0,0 +1,158 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Biome - Toolchain of the web" src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-br.md) | 한글
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
**Biome** 은 웹 프로젝트를 위한 고성능 툴체인으로, 프로젝트를 건전하게 유지하기 위한 개발자 툴을 제공하는 것을 목표로 하고 있습니다.
|
||||||
|
|
||||||
|
**Biome** 은 _JavaScript_, _TypeScript_, _JSX_ 그리고 _JSON_ 을 위한 **[고속 Formatter](./benchmark#formatting)** 로, **[_Prettier_ 와의 호환성 97%](https://console.algora.io/challenges/prettier)** 을 달성하고 있습니다.
|
||||||
|
|
||||||
|
**Biome** 은 _JavaScript_, _TypeScript_, _JSX_을 위한 **[고성능 Linter](https://github.com/biomejs/biome/tree/main/benchmark#linting)** 로、ESLint, typescript-eslint, [등의 리소스](https://github.com/biomejs/biome/discussions/3)에서 **[270개 이상의 룰](https://biomejs.dev/linter/rules/)** 을 제공하고 있습니다. Biome 은 **상세하며 문맥에 맞는 결과를 출력**하기 위해, 코드를 개선하고, 더 좋은 프로그래머가 되기 위한 도움을 드립니다!
|
||||||
|
|
||||||
|
**Biome** 은 처음부터 [**에디터 내에서 인터렉티브하게**](https://biomejs.dev/ja/guides/integrate-in-editor/) 사용하도록 설계되어 있습니다.
|
||||||
|
여러분이 코드를 작성할 때, 형식이 잘못된 코드에 format, lint 를 적용합니다.
|
||||||
|
|
||||||
|
### 설치
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### 사용법
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 파일의 format을 체크
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# 파일의 lint를 체크
|
||||||
|
npx @biomejs/biome lint ./src
|
||||||
|
|
||||||
|
# format、lint 등을 실행하고, Biome으로부터의 제안을 적용
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# CI 환경에서는 모든 파일을 대상으로 format과 lint를 체크
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
Biome 을 설치하지 않고 사용해보고 싶다면, WebAssembly 에 컴파일된 [온라인 플레이그라운드](https://biomejs.dev/playground/)을 이용해주세요.
|
||||||
|
|
||||||
|
## 문서
|
||||||
|
|
||||||
|
Biome 에 대해 알아보기 위해 [홈페이지][biomejs]를 체크하거나, Biome 을 사용하기 위해 [시작하기][getting-started]을 확인하세요!
|
||||||
|
|
||||||
|
## Biome 를 자세히 알아보기
|
||||||
|
|
||||||
|
**Biome** 은 이성적인 디폴트 세팅을 가지고 있어, 설정을 필요로 하지 않습니다.
|
||||||
|
|
||||||
|
**Biome** 은 모던한 웹개발에 대한 [모든 주요 언어][language-support]를 지원하는 것을 목표로 합니다.
|
||||||
|
|
||||||
|
**Biome** 이 동작하는 데에 Node.js 는 필요하지 않습니다.
|
||||||
|
|
||||||
|
**Biome** 은 소스 코드의 완전한 표현력과 에러 회피 능력을 가진, 세련된 Parser 에 의해 우수한 LSP 지원을 제공합니다.
|
||||||
|
|
||||||
|
**Biome** 은 지금까지 서로 다른 툴로 제공하던 기능들을 통합합니다. 공통된 기반을 구축하는 것으로 코드 처리, 에러 표시, 병렬 처리, 캐시, 설정에 대해 일관된 경험을 제공합니다.
|
||||||
|
|
||||||
|
관심이 있는 분은 [프로젝트 철학][biome-philosophy] 을 확인해주세요.
|
||||||
|
|
||||||
|
**Biome** 은 [MIT 라이센스](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) 혹은 [Apache 2.0 라이센스](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE)로, [기여자 행동 규범](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md)에 따라 관리되고 있습니다.
|
||||||
|
|
||||||
|
## 펀딩
|
||||||
|
|
||||||
|
다양한 방법으로 프로젝트를 지원할 수 있습니다.
|
||||||
|
|
||||||
|
### 프로젝트 스폰서와 펀딩
|
||||||
|
|
||||||
|
[Open collective](https://opencollective.com/biome) 혹은 [GitHub sponsors](https://github.com/sponsors/biomejs)를 통해 스폰서과 되거나 프로젝트에 지원을 할 수 있습니다.
|
||||||
|
|
||||||
|
Biome 은 간단하게 다양한 개발자들 사이에서의 인지도를 얻을 수 있는 스폰서쉽 프로그램을 제공합니다.
|
||||||
|
|
||||||
|
### 이슈 펀딩
|
||||||
|
|
||||||
|
우리는 투표와 여러분들이 원하는 신기능 추진을 위해 [Polar.sh](https://polar.sh/biomejs)을 사용하고 있습니다. 백로그를 체크하고 지원해주세요!
|
||||||
|
|
||||||
|
<a href="https://polar.sh/biomejs"><img src="https://polar.sh/embed/fund-our-backlog.svg?org=biomejs" /></a>
|
||||||
|
|
||||||
|
## 후원
|
||||||
|
|
||||||
|
### 골드 스폰서
|
||||||
|
|
||||||
|
### 실버 스폰서
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://l2beat.com/" target="_blank"><img src="https://images.opencollective.com/l2beat/c2b2a27/logo/256.png" height="100"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.phoenixlabs.dev/" target="_blank"><img src="https://images.opencollective.com/phoenix-labs/2824ed4/logo/100.png?height=100" height="100"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### 브론즈 스폰서
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://vital.io/" target="_blank"><img src="https://avatars.githubusercontent.com/u/25357309?s=200" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://coderabbit.ai/" target="_blank"><img src="https://avatars.githubusercontent.com/u/132028505?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://forge42.dev/" target="_blank"><img src="https://avatars.githubusercontent.com/u/161314831?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://transloadit.com/" target="_blank"><img src="https://avatars.githubusercontent.com/u/125754?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/ja/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/ja/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/ja/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/ja/guides/getting-started/
|
||||||
159
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Shows the banner of Biome, with its logo and the phrase 'Biome - Toolchain of the web'." src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
[![Polar bounties][polar-badge]][polar-url]
|
||||||
|
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=60a5fa
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=60a5fa&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=60a5fa
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=60a5fa
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
[polar-badge]: https://polar.sh/embed/seeks-funding-shield.svg?org=biomejs
|
||||||
|
[polar-url]: https://polar.sh/biomejs
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | English | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-BR.md) | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**Biome** is a performant toolchain for web projects, it aims to provide developer tools to maintain the health of said projects.
|
||||||
|
|
||||||
|
**Biome is a [fast formatter](./benchmark#formatting)** for _JavaScript_, _TypeScript_, _JSX_, _JSON_, _CSS_ and _GraphQL_ that scores **[97% compatibility with _Prettier_](https://console.algora.io/challenges/prettier)**.
|
||||||
|
|
||||||
|
**Biome is a [performant linter](https://github.com/biomejs/biome/tree/main/benchmark#linting)** for _JavaScript_, _TypeScript_, _JSX_, _CSS_ and _GraphQL_ that features **[more than 270 rules](https://biomejs.dev/linter/rules/)** from ESLint, typescript-eslint, and [other sources](https://github.com/biomejs/biome/discussions/3).
|
||||||
|
It **outputs detailed and contextualized diagnostics** that help you to improve your code and become a better programmer!
|
||||||
|
|
||||||
|
**Biome** is designed from the start to be used [interactively within an editor](https://biomejs.dev/guides/integrate-in-editor/).
|
||||||
|
It can format and lint malformed code as you are writing it.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# format files
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# lint files and apply the safe fixes
|
||||||
|
npx @biomejs/biome lint --write ./src
|
||||||
|
|
||||||
|
# run format, lint, etc. and apply the safe fixes
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# check all files against format, lint, etc. in CI environments
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to give Biome a run without installing it, use the [online playground](https://biomejs.dev/playground/), compiled to WebAssembly.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Check out our [homepage][biomejs] to learn more about Biome,
|
||||||
|
or directly head to the [Getting Started guide][getting-started] to start using Biome.
|
||||||
|
|
||||||
|
## More about Biome
|
||||||
|
|
||||||
|
**Biome** has sane defaults and it doesn't require configuration.
|
||||||
|
|
||||||
|
**Biome** aims to support [all main languages][language-support] of modern web development.
|
||||||
|
|
||||||
|
**Biome** [doesn't require Node.js](https://biomejs.dev/guides/manual-installation/) to function.
|
||||||
|
|
||||||
|
**Biome** has first-class LSP support, with a sophisticated parser that represents the source text in full fidelity and top-notch error recovery.
|
||||||
|
|
||||||
|
**Biome** unifies functionality that has previously been separate tools. Building upon a shared base allows us to provide a cohesive experience for processing code, displaying errors, parallelize work, caching, and configuration.
|
||||||
|
|
||||||
|
Read more about our [project philosophy][biome-philosophy].
|
||||||
|
|
||||||
|
**Biome** is [MIT licensed](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) or [Apache 2.0 licensed](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE) and moderated under the [Contributor Covenant Code of Conduct](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
|
## Funding
|
||||||
|
|
||||||
|
You can fund the project in different ways
|
||||||
|
|
||||||
|
### Project sponsorship and funding
|
||||||
|
|
||||||
|
You can sponsor or fund the project via [Open collective](https://opencollective.com/biome) or [GitHub sponsors](https://github.com/sponsors/biomejs)
|
||||||
|
|
||||||
|
Biome offers a simple sponsorship program that allows companies to get visibility and recognition among various developers.
|
||||||
|
|
||||||
|
### Issue funding
|
||||||
|
|
||||||
|
We use [Polar.sh](https://polar.sh/biomejs) to up-vote and promote specific features that you would like to see and implement. Check our backlog and help us:
|
||||||
|
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
### Silver Sponsors
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://l2beat.com/" target="_blank"><img src="https://images.opencollective.com/l2beat/c2b2a27/logo/256.png" height="100"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.phoenixlabs.dev/" target="_blank"><img src="https://images.opencollective.com/phoenix-labs/2824ed4/logo/100.png?height=100" height="100"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### Bronze Sponsors
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://vital.io/" target="_blank"><img src="https://avatars.githubusercontent.com/u/25357309?s=200" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://coderabbit.ai/" target="_blank"><img src="https://avatars.githubusercontent.com/u/132028505?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://forge42.dev/" target="_blank"><img src="https://avatars.githubusercontent.com/u/161314831?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://transloadit.com/" target="_blank"><img src="https://avatars.githubusercontent.com/u/125754?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/guides/getting-started/
|
||||||
118
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.pt-BR.md
generated
vendored
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Biome - Conjunto de ferramentas da web" src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Chat no Discord][discord-badge]][discord-url]
|
||||||
|
[![CI na `main`][ci-badge]][ci-url]
|
||||||
|
[![versão npm][npm-badge]][npm-url]
|
||||||
|
[![versão VSCode][vscode-badge]][vscode-url]
|
||||||
|
[![versão Open VSX][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | Português do Brasil | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**Biome** é um conjunto de ferramentas de alto desempenho para projetos web, visando fornecer recursos de desenvolvimento para manter a saúde desses projetos.
|
||||||
|
|
||||||
|
**Biome é um [formatador rápido](./benchmark#formatting)** para _JavaScript_, _TypeScript_, _JSX_, e _JSON_ que atinge **[97% de compatibilidade com o _Prettier_](https://console.algora.io/challenges/prettier)**.
|
||||||
|
|
||||||
|
**Biome é um [linter eficiente](https://github.com/biomejs/biome/tree/main/benchmark#linting)** para _JavaScript_, _TypeScript_, e _JSX_ que possui **[mais de 270 regras](https://biomejs.dev/linter/rules/)** do ESLint, typescript-eslint, e de [outras fontes](https://github.com/biomejs/biome/discussions/3).
|
||||||
|
Ele **fornece diagnósticos detalhados e contextualizados** que ajudam você a melhorar seu código e se tornar um programador melhor!
|
||||||
|
|
||||||
|
**Biome** é projetado desde o início para ser usado [interativamente dentro de um editor](https://biomejs.dev/guides/integrate-in-editor/).
|
||||||
|
Isso permite formatar e lintar códigos malformados enquanto você programa.
|
||||||
|
|
||||||
|
### Instalação
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### Uso
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# formatar arquivos
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# lintar arquivos
|
||||||
|
npx @biomejs/biome lint ./src
|
||||||
|
|
||||||
|
# executar formatação, lint, etc. e aplicar as sugestões seguras
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# verificar todos os arquivos contra formatação, lint, etc. em ambientes CI
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
Se você quiser experimentar o Biome sem instalá-lo, use o [playground online](https://biomejs.dev/playground/), compilado para WebAssembly.
|
||||||
|
|
||||||
|
## Documentação
|
||||||
|
|
||||||
|
Confira nossa [página inicial][biomejs] para saber mais sobre o Biome,
|
||||||
|
ou vá ao [Guia de Introdução][getting-started] para começar a usar o Biome.
|
||||||
|
|
||||||
|
## Mais sobre o Biome
|
||||||
|
|
||||||
|
**Biome** tem padrões robustos e não requer configuração.
|
||||||
|
|
||||||
|
**Biome** visa suportar [todas as principais linguagens][language-support] do desenvolvimento web moderno.
|
||||||
|
|
||||||
|
**Biome** [não requer Node.js](https://biomejs.dev/guides/manual-installation/) para funcionar.
|
||||||
|
|
||||||
|
**Biome** tem suporte de primeira linha para LSP, com um
|
||||||
|
|
||||||
|
parser sofisticado que representa o texto-fonte em sua total fidelidade e recuperação de erro de ponta.
|
||||||
|
|
||||||
|
**Biome** unifica funcionalidades que anteriormente eram ferramentas separadas. Construindo sobre uma base compartilhada, podemos fornecer uma experiência coesa para processar código, exibir erros, paralelizar trabalho, cache e configuração.
|
||||||
|
|
||||||
|
Leia mais sobre nossa [filosofia de projeto][biome-philosophy].
|
||||||
|
|
||||||
|
**Biome** é licenciado sob [MIT](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) ou [Apache 2.0](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE) e moderado sob o [Código de Conduta do Contribuidor](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
|
## Patrocinadores
|
||||||
|
|
||||||
|
### Patrocinadores Ouro
|
||||||
|
|
||||||
|
### Patrocinadores Bronze
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/pt-br/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/pt-br/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/pt-br/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/pt-br/guides/getting-started/
|
||||||
110
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.zh-CN.md
generated
vendored
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Biome - Toolchain of the web" src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | [繁體中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md) | 简体中文 | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-br.md) | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**Biome** 是一个用于 Web 项目的高性能工具链,旨在为开发者提供维护项目的工具。
|
||||||
|
|
||||||
|
**Biome 是一个[快速的格式化工具](./benchmark#formatting)**,适用于 _JavaScript_、_TypeScript_、_JSX_、_JSON_ 等,与 _Prettier_ 的兼容性达到了 **[97%](https://console.algora.io/challenges/prettier)**。
|
||||||
|
|
||||||
|
**Biome 是一个[高性能的 Linter](https://github.com/biomejs/biome/tree/main/benchmark#linting)**,适用于 _JavaScript_、_TypeScript_、_JSX_ 等,包含了来自 ESLint、typescript-eslint 和[其他来源](https://github.com/biomejs/biome/discussions/3)的 **[270 余项规则](https://biomejs.dev/zh-cn/linter/rules/)**。它**输出详细且有上下文诊断信息**,能帮助你优化代码,成为一名更好的程序员!
|
||||||
|
|
||||||
|
**Biome** 从一开始就设计为[在编辑器中交互式使用](https://biomejs.dev/zh-cn/guides/integrate-in-editor/)。它可以在你编写代码时格式化并检查出不规范的代码。
|
||||||
|
|
||||||
|
### 安装
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使用
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 格式化文件
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# Lint 文件
|
||||||
|
npx @biomejs/biome lint ./src
|
||||||
|
|
||||||
|
# 运行格式化,Lint 等,并应用安全的建议
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# 在 CI 环境中检查所有文件是否符合格式,Lint 等
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
如果你想在不安装的情况下试用 Biome,可以使用[在线 playground](https://biomejs.dev/playground/),它被编译为 WebAssembly。
|
||||||
|
|
||||||
|
## 文档
|
||||||
|
|
||||||
|
查看我们的[主页][biomejs]以了解更多关于 Biome 的信息,或者直接前往[入门指南][getting-started]开始使用 Biome。
|
||||||
|
|
||||||
|
## 更多信息
|
||||||
|
|
||||||
|
**Biome** 有合理的默认设置,不需要配置。
|
||||||
|
|
||||||
|
**Biome** 旨在支持[所有主要的现代网络开发语言][language-support]。
|
||||||
|
|
||||||
|
**Biome** [不需要 Node.js](https://biomejs.dev/zh-cn/guides/manual-installation/) 就可以运行。
|
||||||
|
|
||||||
|
**Biome** 有一流的 LSP 支持,具有精密的解析器,可以完全保真地表示源文本,并具有顶级的错误恢复能力。
|
||||||
|
|
||||||
|
**Biome** 统一了以前分散的功能。基于共享的基础,我们可以提供一个处理代码、显示错误、并行工作、缓存和配置的一致体验。
|
||||||
|
|
||||||
|
阅读更多关于我们的[项目理念][biome-philosophy]。
|
||||||
|
|
||||||
|
**Biome** 采用 [MIT 许可](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) 或 [Apache 2.0 许可](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE),并在 [贡献者公约行为准则](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md) 下进行管理。
|
||||||
|
|
||||||
|
## 赞助商
|
||||||
|
|
||||||
|
### 金牌赞助商
|
||||||
|
|
||||||
|
### 铜牌赞助商
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/zh-cn/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/zh-cn/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/zh-cn/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/zh-cn/guides/getting-started/
|
||||||
169
parts/modules/desktop/astal/node_modules/@biomejs/biome/README.zh-TW.md
generated
vendored
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
<p align="center">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-dark-transparent.svg">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg">
|
||||||
|
<img alt="Shows the banner of Biome, with its logo and the phrase 'Biome - Toolchain of the web'." src="https://raw.githubusercontent.com/biomejs/resources/main/svg/slogan-light-transparent.svg" width="700">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Discord chat][discord-badge]][discord-url]
|
||||||
|
[![CI on main][ci-badge]][ci-url]
|
||||||
|
[![npm version][npm-badge]][npm-url]
|
||||||
|
[![VSCode version][vscode-badge]][vscode-url]
|
||||||
|
[![Open VSX version][open-vsx-badge]][open-vsx-url]
|
||||||
|
|
||||||
|
[discord-badge]: https://badgen.net/discord/online-members/BypW39g6Yc?icon=discord&label=discord&color=green
|
||||||
|
[discord-url]: https://biomejs.dev/chat
|
||||||
|
[ci-badge]: https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg
|
||||||
|
[ci-url]: https://github.com/biomejs/biome/actions/workflows/main.yml
|
||||||
|
[npm-badge]: https://badgen.net/npm/v/@biomejs/biome?icon=npm&color=green&label=%40biomejs%2Fbiome
|
||||||
|
[npm-url]: https://www.npmjs.com/package/@biomejs/biome/v/latest
|
||||||
|
[vscode-badge]: https://badgen.net/vs-marketplace/v/biomejs.biome?label=vscode&icon=visualstudio&color=green
|
||||||
|
[vscode-url]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome
|
||||||
|
[open-vsx-badge]: https://badgen.net/open-vsx/version/biomejs/biome?label=open-vsx&color=green
|
||||||
|
[open-vsx-url]: https://open-vsx.org/extension/biomejs/biome
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Insert new entries lexicographically by language code.
|
||||||
|
For example given below is the same order as these files appear on page:
|
||||||
|
https://github.com/biomejs/biome/tree/main/packages/%40biomejs/biome -->
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[हिन्दी](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md) | [English](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.md) | 繁體中文 | [简体中文](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md) | [日本語](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md) | [Português do Brasil](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-BR.md) | [한글](https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**Biome** 是一個高效能的 Web 專案工具鏈,旨在提供開發工具以維持這些專案的健康。
|
||||||
|
|
||||||
|
**Biome 是一個 [快速格式化工具](./benchmark#formatting)**,支持 _JavaScript_、_TypeScript_、_JSX_、_JSON_、_CSS_ 和 _GraphQL_,其 **與 _Prettier_ 的相容性達到 [97%](https://console.algora.io/challenges/prettier)**。
|
||||||
|
|
||||||
|
**Biome 是一個 [高效能的語法檢查工具](https://github.com/biomejs/biome/tree/main/benchmark#linting)**,支持 _JavaScript_、_TypeScript_、_JSX_、_CSS_ 和 _GraphQL_,擁有來自 ESLint、typescript-eslint 和 [其他來源](https://github.com/biomejs/biome/discussions/3)的 **超過 270 條規則**。
|
||||||
|
它 **輸出詳細且具上下文的診斷資訊**,幫助你改進程式碼並成為更好的程式設計師!
|
||||||
|
|
||||||
|
**Biome** 從一開始就設計為可在 [編輯器中互動使用](https://biomejs.dev/guides/integrate-in-editor/)。
|
||||||
|
它可以在你編寫程式碼時格式化和檢查錯誤的程式碼。
|
||||||
|
|
||||||
|
### 安裝
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install --save-dev --save-exact @biomejs/biome
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使用
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 格式化文件
|
||||||
|
npx @biomejs/biome format --write ./src
|
||||||
|
|
||||||
|
# 檢查文件並應用安全的修正
|
||||||
|
npx @biomejs/biome lint --write ./src
|
||||||
|
|
||||||
|
# 執行格式化、檢查等並應用安全的修正
|
||||||
|
npx @biomejs/biome check --write ./src
|
||||||
|
|
||||||
|
# 在 CI 環境中檢查所有文件的格式、檢查等
|
||||||
|
npx @biomejs/biome ci ./src
|
||||||
|
```
|
||||||
|
|
||||||
|
如果你想在不安裝 Biome 的情況下運行它,請使用 [線上 Playground](https://biomejs.dev/playground/),他被編譯為 WebAssembly。
|
||||||
|
|
||||||
|
## 文件
|
||||||
|
|
||||||
|
訪問我們的[首頁][biomejs]以了解更多關於 Biome 的資訊,
|
||||||
|
或直接前往[入門指南][getting-started]開始使用 Biome。
|
||||||
|
|
||||||
|
## 關於 Biome 的更多資訊
|
||||||
|
|
||||||
|
**Biome** 擁有合理的預設設定,無需配置。
|
||||||
|
|
||||||
|
**Biome** 旨在支持現代 Web 開發的 [所有主要開發語言][language-support]。
|
||||||
|
|
||||||
|
**Biome** [不需要 Node.js](https://biomejs.dev/guides/manual-installation/) 即可運行。
|
||||||
|
|
||||||
|
**Biome** 擁有一流的 LSP 支持,配備了能完整保留原文的先進解析器和頂級的錯誤修復能力。
|
||||||
|
|
||||||
|
**Biome** 整合了以前分離的工具功能。基於共享基礎構建,讓我們能夠為程式碼處理、錯誤顯示、並行工作、快取記憶體和配置提供一致的體驗。
|
||||||
|
|
||||||
|
閱讀更多關於我們的[專案理念][biome-philosophy]。
|
||||||
|
|
||||||
|
**Biome** 採用 [MIT 授權](https://github.com/biomejs/biome/tree/main/LICENSE-MIT) 或 [Apache 2.0 授權](https://github.com/biomejs/biome/tree/main/LICENSE-APACHE),並根據 [貢獻者公約行為準則](https://github.com/biomejs/biome/tree/main/CODE_OF_CONDUCT.md) 進行管理。
|
||||||
|
|
||||||
|
## 資金支持
|
||||||
|
|
||||||
|
你可以通過不同的方式支持這個專案
|
||||||
|
|
||||||
|
### 專案贊助和資金支持
|
||||||
|
|
||||||
|
你可以通過 [Open Collective](https://opencollective.com/biome) 或 [GitHub Sponsors](https://github.com/sponsors/biomejs) 贊助或資助這個專案。
|
||||||
|
|
||||||
|
Biome 提供了一個簡單的贊助計劃,允許公司在各種開發者中獲得可見性和認可。
|
||||||
|
|
||||||
|
### 問題資金支持
|
||||||
|
|
||||||
|
我們使用 [Polar.sh](https://polar.sh/biomejs) 來提升和推廣你希望看到和實現的特定功能。查看我們的待辦事項並幫助我們:
|
||||||
|
|
||||||
|
<a href="https://polar.sh/biomejs"><img src="https://polar.sh/embed/fund-our-backlog.svg?org=biomejs" /></a>
|
||||||
|
|
||||||
|
## 贊助商
|
||||||
|
|
||||||
|
### 金牌贊助商
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://shiguredo.jp/" target="_blank"><img src="https://shiguredo.jp/official_shiguredo_logo.svg" height="120"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### 銀牌贊助商
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://l2beat.com/" target="_blank"><img src="https://images.opencollective.com/l2beat/c2b2a27/logo/256.png" height="100"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.phoenixlabs.dev/" target="_blank"><img src="https://images.opencollective.com/phoenix-labs/2824ed4/logo/100.png?height=100" height="100"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### 銅牌贊助商
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://www.kanamekey.com" target="_blank"><img src="https://images.opencollective.com/kaname/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://nanabit.dev/" target="_blank"><img src="https://images.opencollective.com/nanabit/d15fd98/logo/256.png?height=80" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://vital.io/" target="_blank"><img src="https://avatars.githubusercontent.com/u/25357309?s=200" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://coderabbit.ai/" target="_blank"><img src="https://avatars.githubusercontent.com/u/132028505?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://forge42.dev/" target="_blank"><img src="https://avatars.githubusercontent.com/u/161314831?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<a href="https://transloadit.com/" target="_blank"><img src="https://avatars.githubusercontent.com/u/125754?s=200&v=4" width="80"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
[biomejs]: https://biomejs.dev/
|
||||||
|
[biome-philosophy]: https://biomejs.dev/internals/philosophy/
|
||||||
|
[language-support]: https://biomejs.dev/internals/language-support/
|
||||||
|
[getting-started]: https://biomejs.dev/guides/getting-started/
|
||||||
21
parts/modules/desktop/astal/node_modules/@biomejs/biome/ROME-LICENSE-MIT
generated
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020-2023 Rome Tools is Rome Tools, Inc. and its affiliates.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
98
parts/modules/desktop/astal/node_modules/@biomejs/biome/bin/biome
generated
vendored
Executable file
|
|
@ -0,0 +1,98 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
const { platform, arch, env, version, release } = process;
|
||||||
|
const { execSync } = require("child_process");
|
||||||
|
|
||||||
|
function isMusl() {
|
||||||
|
let stderr;
|
||||||
|
try {
|
||||||
|
stderr = execSync("ldd --version", {
|
||||||
|
stdio: ['pipe', 'pipe', 'pipe']
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
stderr = err.stderr;
|
||||||
|
}
|
||||||
|
if (stderr.indexOf("musl") > -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const PLATFORMS = {
|
||||||
|
win32: {
|
||||||
|
x64: "@biomejs/cli-win32-x64/biome.exe",
|
||||||
|
arm64: "@biomejs/cli-win32-arm64/biome.exe",
|
||||||
|
},
|
||||||
|
darwin: {
|
||||||
|
x64: "@biomejs/cli-darwin-x64/biome",
|
||||||
|
arm64: "@biomejs/cli-darwin-arm64/biome",
|
||||||
|
},
|
||||||
|
linux: {
|
||||||
|
x64: "@biomejs/cli-linux-x64/biome",
|
||||||
|
arm64: "@biomejs/cli-linux-arm64/biome",
|
||||||
|
},
|
||||||
|
"linux-musl": {
|
||||||
|
x64: "@biomejs/cli-linux-x64-musl/biome",
|
||||||
|
arm64: "@biomejs/cli-linux-arm64-musl/biome",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if (env.ROME_BINARY) {
|
||||||
|
console.warn(`[WARN] The environment variable "ROME_BINARY" is deprecated. Use "BIOME_BINARY" instead.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const binPath = env.BIOME_BINARY || env.ROME_BINARY ||
|
||||||
|
(platform === "linux" && isMusl()
|
||||||
|
? PLATFORMS?.["linux-musl"]?.[arch]
|
||||||
|
: PLATFORMS?.[platform]?.[arch]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (binPath) {
|
||||||
|
const packageManager = detectPackageManager();
|
||||||
|
const result = require("child_process").spawnSync(
|
||||||
|
require.resolve(binPath),
|
||||||
|
process.argv.slice(2),
|
||||||
|
{
|
||||||
|
shell: false,
|
||||||
|
stdio: "inherit",
|
||||||
|
env: {
|
||||||
|
...env,
|
||||||
|
JS_RUNTIME_VERSION: version,
|
||||||
|
JS_RUNTIME_NAME: release.name,
|
||||||
|
...(packageManager != null
|
||||||
|
? { NODE_PACKAGE_MANAGER: packageManager }
|
||||||
|
: {}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result.error) {
|
||||||
|
throw result.error;
|
||||||
|
}
|
||||||
|
|
||||||
|
process.exitCode = result.status;
|
||||||
|
} else {
|
||||||
|
console.error(
|
||||||
|
"The Biome CLI package doesn't ship with prebuilt binaries for your platform yet. " +
|
||||||
|
"You can still use the CLI by cloning the biome/tools repo from GitHub, " +
|
||||||
|
"and follow the instructions there to build the CLI for your platform.",
|
||||||
|
);
|
||||||
|
process.exitCode = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NPM, Yarn, and other package manager set the `npm_config_user_agent`. It has the following format:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* "npm/8.3.0 node/v16.13.2 win32 x64 workspaces/false
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @returns The package manager string (`npm/8.3.0`) or null if the user agent string isn't set.
|
||||||
|
*/
|
||||||
|
function detectPackageManager() {
|
||||||
|
const userAgent = env.npm_config_user_agent;
|
||||||
|
|
||||||
|
if (userAgent == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return userAgent.split(" ")[0];
|
||||||
|
}
|
||||||
4267
parts/modules/desktop/astal/node_modules/@biomejs/biome/configuration_schema.json
generated
vendored
Normal file
62
parts/modules/desktop/astal/node_modules/@biomejs/biome/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
"name": "@biomejs/biome",
|
||||||
|
"version": "1.9.4",
|
||||||
|
"bin": {
|
||||||
|
"biome": "bin/biome"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"postinstall": "node scripts/postinstall.js"
|
||||||
|
},
|
||||||
|
"homepage": "https://biomejs.dev",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/biomejs/biome.git",
|
||||||
|
"directory": "packages/@biomejs/biome"
|
||||||
|
},
|
||||||
|
"author": "Emanuele Stoppa",
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"bugs": "https://github.com/biomejs/biome/issues",
|
||||||
|
"description": "Biome is a toolchain for the web: formatter, linter and more",
|
||||||
|
"files": [
|
||||||
|
"bin/biome",
|
||||||
|
"scripts/postinstall.js",
|
||||||
|
"configuration_schema.json",
|
||||||
|
"README.md",
|
||||||
|
"LICENSE-APACHE",
|
||||||
|
"LICENSE-MIT",
|
||||||
|
"ROME-LICENSE-MIT"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"format",
|
||||||
|
"lint",
|
||||||
|
"toolchain",
|
||||||
|
"JavaScript",
|
||||||
|
"TypeScript",
|
||||||
|
"JSON",
|
||||||
|
"JSONC",
|
||||||
|
"JSX",
|
||||||
|
"TSX",
|
||||||
|
"CSS",
|
||||||
|
"GraphQL"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/biome"
|
||||||
|
},
|
||||||
|
"publishConfig": {
|
||||||
|
"provenance": true
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@biomejs/cli-win32-x64": "1.9.4",
|
||||||
|
"@biomejs/cli-win32-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-darwin-x64": "1.9.4",
|
||||||
|
"@biomejs/cli-darwin-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-x64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-arm64": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-x64-musl": "1.9.4",
|
||||||
|
"@biomejs/cli-linux-arm64-musl": "1.9.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
parts/modules/desktop/astal/node_modules/@biomejs/cli-linux-x64/biome
generated
vendored
Executable file
23
parts/modules/desktop/astal/node_modules/@biomejs/cli-linux-x64/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"name": "@biomejs/cli-linux-x64",
|
||||||
|
"version": "1.9.4",
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/biomejs/biome.git",
|
||||||
|
"directory": "packages/@biomejs/biome"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
},
|
||||||
|
"homepage": "https://biomejs.dev",
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"libc": [
|
||||||
|
"glibc"
|
||||||
|
]
|
||||||
|
}
|
||||||
1
parts/modules/desktop/astal/node_modules/astal
generated
vendored
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/share/astal/gjs
|
||||||
3
parts/modules/desktop/astal/src/.gitignore
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
node_modules/
|
|
||||||
@girs/
|
|
||||||
.idea/
|
|
||||||
|
|
@ -14,7 +14,7 @@ import { Workspaces } from "./sections/Workspace";
|
||||||
function SysTray() {
|
function SysTray() {
|
||||||
const tray = Tray.get_default();
|
const tray = Tray.get_default();
|
||||||
const item = bind(tray, "items").as((items) =>
|
const item = bind(tray, "items").as((items) =>
|
||||||
items.filter((item) => config.tray.ignore.every((re) => !re.test(item.id))),
|
items.filter((item) => config.tray.ignore.every((test) => !test(item.id))),
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
42
parts/modules/desktop/astal/src/config.ts
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
import GLib from "gi://GLib"
|
||||||
|
|
||||||
|
type ignoreFn = (test: string) => boolean;
|
||||||
|
|
||||||
|
interface Config {
|
||||||
|
monitor: {
|
||||||
|
main: string;
|
||||||
|
};
|
||||||
|
notification: {
|
||||||
|
ignore: ignoreFn[];
|
||||||
|
};
|
||||||
|
tray: {
|
||||||
|
ignore: ignoreFn[];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const envArray = (name: string): string[] => {
|
||||||
|
const value = GLib.getenv(name);
|
||||||
|
if (!value) return [];
|
||||||
|
return value.split(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
const envIgnoreArray = (name: string): ignoreFn[] => {
|
||||||
|
return envArray(name).map((r: string) => {
|
||||||
|
if (r.startsWith("/")) {
|
||||||
|
return new RegExp(r.slice(1, -1)).test;
|
||||||
|
}
|
||||||
|
return (test: string) => test === r;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
monitor: {
|
||||||
|
main: GLib.getenv("ASTRAL_PRIMARY_MONITOR") || "",
|
||||||
|
},
|
||||||
|
notification: {
|
||||||
|
ignore: envIgnoreArray("ASTRAL_NOTIFICATION_IGNORE"),
|
||||||
|
},
|
||||||
|
tray: {
|
||||||
|
ignore: envIgnoreArray("ASTRAL_TRAY_IGNORE"),
|
||||||
|
},
|
||||||
|
} as Config;
|
||||||
|
|
@ -23,8 +23,8 @@ class NotificationMap extends VarMap<number, Gtk.Widget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore notifications based on the app name
|
// Ignore notifications based on the app name
|
||||||
for (const re of config.notification.ignore) {
|
for (const test of config.notification.ignore) {
|
||||||
if (re.test(notification.app_name)) {
|
if (test(notification.app_name)) {
|
||||||
notification.dismiss();
|
notification.dismiss();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
export default {
|
|
||||||
monitor: {
|
|
||||||
main: "M27Q",
|
|
||||||
},
|
|
||||||
notification: {
|
|
||||||
ignore: [/^Spotify/],
|
|
||||||
},
|
|
||||||
tray: {
|
|
||||||
ignore: [/spotify/],
|
|
||||||
},
|
|
||||||
} as const;
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
import { Gdk, Gtk } from "astal/gtk4";
|
import { Gdk, Gtk } from "astal/gtk4";
|
||||||
|
|
||||||
import { Gio } from "astal";
|
|
||||||
|
|
||||||
export const hasIcon = (name: string): boolean => {
|
export const hasIcon = (name: string): boolean => {
|
||||||
if (!name) {
|
if (!name) {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
defaults.terminal = lib.getExe pkgs.ghostty;
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
ghostty
|
|
||||||
];
|
|
||||||
user.home-manager = {
|
|
||||||
programs.ghostty = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = config.programs.fish.enable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -3,18 +3,20 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; {
|
with lib; let
|
||||||
imports = [
|
cfg = config.fireproof;
|
||||||
./hyprpolkitagent.nix
|
mkKeyboard = name: {
|
||||||
];
|
inherit name;
|
||||||
|
kb_layout = "eu";
|
||||||
|
};
|
||||||
|
in {
|
||||||
config = {
|
config = {
|
||||||
assertions = [
|
# assertions = [
|
||||||
{
|
# {
|
||||||
message = "The terminal must be set to enable Hyprland";
|
# message = "The terminal must be set to enable Hyprland";
|
||||||
assertion = config.defaults.terminal != null;
|
# assertion = config.defaults.terminal != null;
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
|
|
||||||
programs.uwsm.enable = true;
|
programs.uwsm.enable = true;
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
|
|
@ -35,33 +37,56 @@ with lib; {
|
||||||
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
user.home-manager = {
|
fireproof.home-manager = {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
systemd.enable = false; # Conficts with UWSM
|
systemd.enable = false; # Conficts with UWSM
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
monitor = map (
|
monitor =
|
||||||
m: let
|
map (
|
||||||
name =
|
m: let
|
||||||
if m.name != null
|
name =
|
||||||
then m.name
|
if m.name != null
|
||||||
else "";
|
then m.name
|
||||||
resolution =
|
else "";
|
||||||
if m.resolution != null
|
resolution =
|
||||||
then m.resolution
|
if m.resolution != null
|
||||||
else "preferred";
|
then m.resolution
|
||||||
refreshRate =
|
else "preferred";
|
||||||
if m.refreshRate != null
|
refreshRate =
|
||||||
then "@${m.refreshRate}"
|
if m.refreshRate != null
|
||||||
else "";
|
then "@${builtins.toString m.refreshRate}"
|
||||||
position =
|
else "";
|
||||||
if m.position != null
|
position =
|
||||||
then m.position
|
if m.position != null
|
||||||
else "auto";
|
then m.position
|
||||||
in "${name}, ${resolution}${refreshRate}, ${position}, 1"
|
else "auto";
|
||||||
) [config.monitor.primary];
|
in "${name}, ${resolution}${refreshRate}, ${position}, 1"
|
||||||
|
)
|
||||||
|
config.monitors;
|
||||||
|
|
||||||
|
input = {
|
||||||
|
# Most unknown keyboards will be of the DK layout, we set known keyboards to eu in `devices`
|
||||||
|
kb_layout = "dk";
|
||||||
|
kb_options = "caps:backspace";
|
||||||
|
|
||||||
|
# Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window.
|
||||||
|
follow_mouse = 2;
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Names can be found with:
|
||||||
|
# $ hyprctl devices -j | jq '.["keyboards"].[].name' -r | grep -vE "(system|consumer)-control"
|
||||||
|
device = map mkKeyboard [
|
||||||
|
"splitkb-kyria-rev1"
|
||||||
|
"zsa-technology-labs-inc-ergodox-ez-shine"
|
||||||
|
"zsa-technology-labs-inc-ergodox-ez-shine-keyboard"
|
||||||
|
];
|
||||||
|
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 5;
|
||||||
|
|
@ -109,9 +134,9 @@ with lib; {
|
||||||
use_active_for_splits = true;
|
use_active_for_splits = true;
|
||||||
};
|
};
|
||||||
bind = [
|
bind = [
|
||||||
"SUPER, RETURN, exec, ${getExe config.programs.uwsm.package} app -- ${config.defaults.terminal}"
|
"SUPER, RETURN, exec, ${getExe config.programs.uwsm.package} app -- ${cfg.default-apps.terminal}"
|
||||||
"SUPER, BACKSPACE, killactive"
|
"SUPER, BACKSPACE, killactive"
|
||||||
# "SUPER, SPACE, exec, uwsm app -- walker"
|
"SUPER, SPACE, exec, ${getExe config.programs.uwsm.package} app -- walker"
|
||||||
# "SUPER SHIFT, SPACE, exec, uwsm app -- walker --modules applications"
|
# "SUPER SHIFT, SPACE, exec, uwsm app -- walker --modules applications"
|
||||||
"SUPER, p, exec, ${getExe config.programs.uwsm.package} app -- loginctl lock-session"
|
"SUPER, p, exec, ${getExe config.programs.uwsm.package} app -- loginctl lock-session"
|
||||||
"SUPER, S, togglefloating"
|
"SUPER, S, togglefloating"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
config = {
|
config = {
|
||||||
user.home-manager.systemd.user.services.hyprpolkitagent = {
|
fireproof.home-manager.systemd.user.services.hyprpolkitagent = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Hyprland Polkit Authentication Agent";
|
Description = "Hyprland Polkit Authentication Agent";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
23
parts/modules/desktop/walker/default.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
inputs.walker.packages.${pkgs.system}.walker
|
||||||
|
];
|
||||||
|
fireproof.home-manager = {
|
||||||
|
imports = [inputs.walker.homeManagerModules.default];
|
||||||
|
programs.walker = {
|
||||||
|
enable = true;
|
||||||
|
runAsService = true;
|
||||||
|
theme = import ./theme.nix;
|
||||||
|
|
||||||
|
config = {
|
||||||
|
app_launch_prefix = "${lib.getExe config.programs.uwsm.package} app -- ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
433
parts/modules/desktop/walker/theme.nix
Normal file
|
|
@ -0,0 +1,433 @@
|
||||||
|
{
|
||||||
|
style = ''
|
||||||
|
@define-color fg #DAD8CE;
|
||||||
|
@define-color fg-alt #B7B5AC;
|
||||||
|
@define-color bg #1C1B1A;
|
||||||
|
@define-color bg-alt #282726;
|
||||||
|
@define-color accent #CF6A4C;
|
||||||
|
@define-color muted #878580;
|
||||||
|
@define-color error #D14D41;
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#box,
|
||||||
|
#aiScroll,
|
||||||
|
#aiList,
|
||||||
|
#search,
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#prompt,
|
||||||
|
#clear,
|
||||||
|
#typeahead,
|
||||||
|
#list,
|
||||||
|
child,
|
||||||
|
scrollbar,
|
||||||
|
slider,
|
||||||
|
#item,
|
||||||
|
#text,
|
||||||
|
#label,
|
||||||
|
#bar,
|
||||||
|
#sub,
|
||||||
|
#activationlabel {
|
||||||
|
all: unset;
|
||||||
|
font-family: Hack;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cfgerr {
|
||||||
|
background: rgba(255, 0, 0, 0.4);
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Hack Nerd Font";
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
border-radius: 8px;
|
||||||
|
background: @bg;
|
||||||
|
padding: 8px;
|
||||||
|
border: 2px solid @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#search {
|
||||||
|
background: @bg-alt;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prompt {
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-right: 12px;
|
||||||
|
color: @fg;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clear {
|
||||||
|
color: @fg;
|
||||||
|
@define-color fg #DAD8CE;
|
||||||
|
@define-color fg-alt #B7B5AC;
|
||||||
|
@define-color bg #1C1B1A;
|
||||||
|
@define-color bg-alt #282726;
|
||||||
|
@define-color accent #CF6A4C;
|
||||||
|
@define-color muted #878580;
|
||||||
|
@define-color error #D14D41;
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#box,
|
||||||
|
#aiScroll,
|
||||||
|
#aiList,
|
||||||
|
#search,
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#prompt,
|
||||||
|
#clear,
|
||||||
|
#typeahead,
|
||||||
|
#list,
|
||||||
|
child,
|
||||||
|
scrollbar,
|
||||||
|
slider,
|
||||||
|
#item,
|
||||||
|
#text,
|
||||||
|
#label,
|
||||||
|
#bar,
|
||||||
|
#sub,
|
||||||
|
#activationlabel {
|
||||||
|
all: unset;
|
||||||
|
font-family: Hack;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cfgerr {
|
||||||
|
background: rgba(255, 0, 0, 0.4);
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Hack Nerd Font";
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
border-radius: 8px;
|
||||||
|
background: @bg;
|
||||||
|
padding: 8px;
|
||||||
|
border: 2px solid @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#search {
|
||||||
|
background: @bg-alt;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prompt {
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-right: 12px;
|
||||||
|
color: @fg;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clear {
|
||||||
|
color: @fg;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password {
|
||||||
|
}
|
||||||
|
|
||||||
|
#spinner {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typeahead {
|
||||||
|
color: @fg;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#list {
|
||||||
|
}
|
||||||
|
|
||||||
|
child {
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected,
|
||||||
|
child:hover {
|
||||||
|
background: alpha(@accent, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#item {
|
||||||
|
}
|
||||||
|
|
||||||
|
#icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
}
|
||||||
|
|
||||||
|
#label {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sub {
|
||||||
|
opacity: 0.5;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
#bar {
|
||||||
|
}
|
||||||
|
|
||||||
|
.barentry {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #text,
|
||||||
|
.activation #icon,
|
||||||
|
.activation #search {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem {
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: @fg;
|
||||||
|
background: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.user {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.assistant {
|
||||||
|
background: @bg-alt;
|
||||||
|
}
|
||||||
|
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password {
|
||||||
|
}
|
||||||
|
|
||||||
|
#spinner {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typeahead {
|
||||||
|
color: @fg;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#list {
|
||||||
|
}
|
||||||
|
|
||||||
|
child {
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected,
|
||||||
|
child:hover {
|
||||||
|
background: alpha(@accent, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#item {
|
||||||
|
}
|
||||||
|
|
||||||
|
#icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
}
|
||||||
|
|
||||||
|
#label {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sub {
|
||||||
|
opacity: 0.5;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
#bar {
|
||||||
|
}
|
||||||
|
|
||||||
|
.barentry {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #text,
|
||||||
|
.activation #icon,
|
||||||
|
.activation #search {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem {
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: @fg;
|
||||||
|
background: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.user {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.assistant {
|
||||||
|
background: @bg-alt;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
layout = {
|
||||||
|
ui = {
|
||||||
|
anchors = {
|
||||||
|
bottom = true;
|
||||||
|
left = true;
|
||||||
|
right = true;
|
||||||
|
top = true;
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
h_align = "fill";
|
||||||
|
v_align = "fill";
|
||||||
|
box = {
|
||||||
|
h_align = "center";
|
||||||
|
v_align = "center";
|
||||||
|
width = 800;
|
||||||
|
height = 600;
|
||||||
|
bar = {
|
||||||
|
orientation = "horizontal";
|
||||||
|
position = "end";
|
||||||
|
entry = {
|
||||||
|
h_align = "fill";
|
||||||
|
h_expand = true;
|
||||||
|
icon = {
|
||||||
|
h_align = "center";
|
||||||
|
h_expand = true;
|
||||||
|
pixel_size = 24;
|
||||||
|
theme = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ai_scroll = {
|
||||||
|
name = "aiScroll";
|
||||||
|
h_align = "fill";
|
||||||
|
v_align = "fill";
|
||||||
|
margins = {
|
||||||
|
top = 8;
|
||||||
|
};
|
||||||
|
list = {
|
||||||
|
name = "aiList";
|
||||||
|
orientation = "vertical";
|
||||||
|
width = 400;
|
||||||
|
spacing = 10;
|
||||||
|
item = {
|
||||||
|
name = "aiItem";
|
||||||
|
h_align = "fill";
|
||||||
|
v_align = "fill";
|
||||||
|
x_align = 0;
|
||||||
|
y_align = 0;
|
||||||
|
wrap = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
scroll = {
|
||||||
|
v_expand = true;
|
||||||
|
v_align = "fill";
|
||||||
|
list = {
|
||||||
|
v_expand = true;
|
||||||
|
h_expand = true;
|
||||||
|
h_align = "fill";
|
||||||
|
v_align = "fill";
|
||||||
|
item = {
|
||||||
|
activation_label = {
|
||||||
|
h_align = "fill";
|
||||||
|
v_align = "fill";
|
||||||
|
width = 20;
|
||||||
|
x_align = 0;
|
||||||
|
y_align = 0;
|
||||||
|
};
|
||||||
|
icon = {
|
||||||
|
pixel_size = 26;
|
||||||
|
theme = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
margins = {
|
||||||
|
top = 8;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
search = {
|
||||||
|
h_expand = false;
|
||||||
|
v_expand = false;
|
||||||
|
prompt = {
|
||||||
|
name = "prompt";
|
||||||
|
icon = "edit-find";
|
||||||
|
theme = "";
|
||||||
|
pixel_size = 18;
|
||||||
|
h_align = "center";
|
||||||
|
v_align = "center";
|
||||||
|
};
|
||||||
|
clear = {
|
||||||
|
name = "clear";
|
||||||
|
icon = "edit-clear";
|
||||||
|
theme = "";
|
||||||
|
pixel_size = 18;
|
||||||
|
h_align = "center";
|
||||||
|
v_align = "center";
|
||||||
|
};
|
||||||
|
input = {
|
||||||
|
h_align = "fill";
|
||||||
|
h_expand = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
spinner = {
|
||||||
|
hide = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
parts/modules/dev/just.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{pkgsUnstable, ...}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgsUnstable.just
|
||||||
|
];
|
||||||
|
}
|
||||||