Compare commits
56 Commits
demo
...
d86a8b884e
| Author | SHA1 | Date | |
|---|---|---|---|
| d86a8b884e | |||
| 569e131ac6 | |||
| 35fd66ce80 | |||
| 71d2a9c177 | |||
| a2034dc4f2 | |||
| 388af355bb | |||
| f4b3ac54ef | |||
| 61f29392cf | |||
| 8e4ceadfb1 | |||
| 51deed6aa6 | |||
| 38a6c622f7 | |||
| 7da6384e89 | |||
| 4c5b7a966d | |||
| 96ad8e6994 | |||
| 9dd76a18a1 | |||
| b8abe6f711 | |||
| 70fd1d8fae | |||
| ab088fcba5 | |||
| b57e8202d8 | |||
| 96fdf27a60 | |||
| 1f1bd53be9 | |||
| 72c811c67e | |||
| 97ef9a7a9e | |||
| d55077e045 | |||
| 1dddfebbb8 | |||
| 15317047e3 | |||
| 99f64a3145 | |||
| 6c79eff909 | |||
| e35f7923ae | |||
| 55f2b15896 | |||
| 00a1828a0d | |||
| 2f6bed228d | |||
| dee0c41a05 | |||
| a97d49f8a7 | |||
| 636c8d4d0d | |||
| 58276cc8e0 | |||
| dd4274f036 | |||
| 626ede8955 | |||
| 9fdfd2efa0 | |||
| c2380696ef | |||
| df478c93e4 | |||
| a4588c49aa | |||
| c3eb30b199 | |||
| 6d5efdf451 | |||
| dbab6f8d32 | |||
| a21abe2f8f | |||
| 038cc8ce3b | |||
| 20e3ffdd48 | |||
| 94d28215a6 | |||
| 7182bc8e8e | |||
| aea83699b8 | |||
| 6febc0906b | |||
| 7929e07296 | |||
| bafe695b96 | |||
| 4bd523906c | |||
| 9154c8f6f8 |
BIN
assets/profile-picture.jpg
Normal file
|
After Width: | Height: | Size: 622 KiB |
BIN
assets/wallpapers/gruvbox-mountain-village.png
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
|
Before Width: | Height: | Size: 7.5 MiB After Width: | Height: | Size: 7.5 MiB |
BIN
assets/wallpapers/mountains.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/wallpapers/sunset_bay.jpg
Executable file
|
After Width: | Height: | Size: 826 KiB |
BIN
assets/wallpapers/twilight-village.png
Normal file
|
After Width: | Height: | Size: 6.0 MiB |
697
flake.lock
generated
@@ -10,11 +10,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754433428,
|
"lastModified": 1762618334,
|
||||||
"narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=",
|
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d",
|
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -23,6 +23,98 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"agenix-rekey": {
|
||||||
|
"inputs": {
|
||||||
|
"devshell": "devshell",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759699908,
|
||||||
|
"narHash": "sha256-kYVGY8sAfqwpNch706Fy2+/b+xbtfidhXSnzvthAhIQ=",
|
||||||
|
"owner": "oddlama",
|
||||||
|
"repo": "agenix-rekey",
|
||||||
|
"rev": "42362b12f59978aabf3ec3334834ce2f3662013d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oddlama",
|
||||||
|
"repo": "agenix-rekey",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755819240,
|
||||||
|
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765809053,
|
||||||
|
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1760703920,
|
||||||
|
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732806396,
|
||||||
|
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -45,7 +137,60 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"devshell": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix-rekey",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728330715,
|
||||||
|
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"firefox-gnome-theme": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764873433,
|
||||||
|
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
|
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751685974,
|
"lastModified": 1751685974,
|
||||||
@@ -64,7 +209,7 @@
|
|||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nur",
|
"agenix-rekey",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -85,16 +230,16 @@
|
|||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nvf",
|
"nur",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756770412,
|
"lastModified": 1733312601,
|
||||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -103,6 +248,105 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nvf",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768135262,
|
||||||
|
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767609335,
|
||||||
|
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731966426,
|
||||||
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix-rekey",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gnome-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"host": "gitlab.gnome.org",
|
||||||
|
"lastModified": 1767737596,
|
||||||
|
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"host": "gitlab.gnome.org",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"ref": "gnome-49",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -131,11 +375,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757698511,
|
"lastModified": 1771683283,
|
||||||
"narHash": "sha256-UqHHGydF/q3jfYXCpvYLA0TWtvByOp1NwOKCUjhYmPs=",
|
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "a3fcc92180c7462082cd849498369591dfb20855",
|
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -146,11 +390,11 @@
|
|||||||
},
|
},
|
||||||
"mnw": {
|
"mnw": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756659871,
|
"lastModified": 1768701608,
|
||||||
"narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=",
|
"narHash": "sha256-kSvWF3Xt2HW9hmV5V7i8PqeWJIBUKmuKoHhOgj3Znzs=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "mnw",
|
"repo": "mnw",
|
||||||
"rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16",
|
"rev": "20d63a8a1ae400557c770052a46a9840e768926b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -159,13 +403,108 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ndg": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nvf",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768214250,
|
||||||
|
"narHash": "sha256-hnBZDQWUxJV3KbtvyGW5BKLO/fAwydrxm5WHCWMQTbw=",
|
||||||
|
"owner": "feel-co",
|
||||||
|
"repo": "ndg",
|
||||||
|
"rev": "a6bd3c1ce2668d096e4fdaaa03ad7f03ba1fbca8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "feel-co",
|
||||||
|
"ref": "refs/tags/v2.6.0",
|
||||||
|
"repo": "ndg",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770739738,
|
||||||
|
"narHash": "sha256-sLpvik461SjSY1b23gHhNbM9aMJF9iU4h2vPepi9JoM=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "9e23010320cfe4012adc2d8810495bad0fe2d4a6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756556321,
|
||||||
|
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"ref": "v25.08",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770735554,
|
||||||
|
"narHash": "sha256-8GzUa8bCyQ688jYW2waXrOqetTr7oV8UPTO2He+5Hsg=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "41b5de87692b8262fbdbff7faab93f04ff0be453",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-jmu-cs345": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1745564874,
|
||||||
|
"narHash": "sha256-WrHuoXd3hiZ7sbrPKF8mJD6jPemwzM5swuDrDkVXlV0=",
|
||||||
|
"owner": "Eclypsed",
|
||||||
|
"repo": "nix-jmu-cs345",
|
||||||
|
"rev": "323dd2c148eb13fbbae5da48d8a0ed61f47c31ad",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Eclypsed",
|
||||||
|
"repo": "nix-jmu-cs345",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757103352,
|
"lastModified": 1769302137,
|
||||||
"narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=",
|
"narHash": "sha256-QEDtctEkOsbx8nlFh4yqPEOtr4tif6KTqWwJ37IM2ds=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "11b2a10c7be726321bb854403fdeec391e798bf0",
|
"rev": "a351494b0e35fd7c0b7a1aae82f0afddf4907aa8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -176,11 +515,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757487488,
|
"lastModified": 1771369470,
|
||||||
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=",
|
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0",
|
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -190,19 +529,80 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770617025,
|
||||||
|
"narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noctalia": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757705205,
|
"lastModified": 1771434371,
|
||||||
"narHash": "sha256-8xB4M6tCmaSaAAb72plJK3H8EH/yfOMnUWzIWKg521g=",
|
"narHash": "sha256-1ivy5+FBZMSojnduPnG6K8w5EFxyP61vthmLXzfGwco=",
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"rev": "04589a4f58c7315b035633a274d1fc820d34c31a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765129370,
|
||||||
|
"narHash": "sha256-oECOMG9TqJfAym8EbcopfvA2+UZQEAnYB/wWEV09OvE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "338f8cc3d30bb635459c5198e676eb123b1ff4fe",
|
"rev": "09e1d5968ffd4984068413c39e1803e74d436ce7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": [
|
||||||
|
"stylix",
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767810917,
|
||||||
|
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -213,20 +613,21 @@
|
|||||||
},
|
},
|
||||||
"nvf": {
|
"nvf": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_3",
|
||||||
"mnw": "mnw",
|
"mnw": "mnw",
|
||||||
|
"ndg": "ndg",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_2"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757397598,
|
"lastModified": 1769173871,
|
||||||
"narHash": "sha256-v/FANUOWyeWlWCD61HDLSNO9nHnQALAtvLf2VtE1+WU=",
|
"narHash": "sha256-vtcVJ/nlUVadTLoNsCb6HAYpwE/zOrlXljTnB5AyCsY=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "c7944a48a3c61cb3ca08ac2dc8b8de124d15dcb8",
|
"rev": "464a6f2641eecaf2a23b35a391b404b8efdcdb6a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -235,38 +636,77 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plasma-manager": {
|
"pre-commit-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": [
|
"flake-compat": "flake-compat",
|
||||||
"home-manager"
|
"gitignore": "gitignore",
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"agenix-rekey",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756632588,
|
"lastModified": 1735882644,
|
||||||
"narHash": "sha256-ydam6eggXf3ZwRutyCABwSbMAlX+5lW6w1SVZQ+kfSo=",
|
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
|
||||||
"owner": "nix-community",
|
"owner": "cachix",
|
||||||
"repo": "plasma-manager",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "d47428e5390d6a5a8f764808a4db15929347cd77",
|
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "cachix",
|
||||||
"repo": "plasma-manager",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
"agenix-rekey": "agenix-rekey",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
|
"niri": "niri",
|
||||||
|
"nix-jmu-cs345": "nix-jmu-cs345",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"noctalia": "noctalia",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"nvf": "nvf",
|
"nvf": "nvf",
|
||||||
"plasma-manager": "plasma-manager"
|
"stylix": "stylix",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
|
"flake-parts": "flake-parts_4",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nur": "nur_2",
|
||||||
|
"systems": "systems_3",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-schemes": "tinted-schemes",
|
||||||
|
"tinted-tmux": "tinted-tmux",
|
||||||
|
"tinted-zed": "tinted-zed"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769471853,
|
||||||
|
"narHash": "sha256-aqs0HkV2T/7Syf/pYLRVSwfk23PPAyGJmWT43U5ZSF4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "805fa4262a21ada28cc918fa014359b9b35caea7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -298,6 +738,179 @@
|
|||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735730497,
|
||||||
|
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-schemes": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767710407,
|
||||||
|
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767489635,
|
||||||
|
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-zed": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767488740,
|
||||||
|
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix-rekey",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735135567,
|
||||||
|
"narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755491097,
|
||||||
|
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"ref": "v0.7",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770583271,
|
||||||
|
"narHash": "sha256-Q75S8cEqJoZ92s1y4zArvk2U1ayAy2E4SaF7gbNXkYQ=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "86f5bd5d867ad6e120935dfe825f6b903ebbeddd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769491693,
|
||||||
|
"narHash": "sha256-bbqeCDML1yXI6kpy8q8BshKRV1szk3xV0StAbzw4Z+o=",
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"rev": "708e0f10aba5de7d0f55883d06fa08aa6a7cd462",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
62
flake.nix
@@ -4,6 +4,8 @@
|
|||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -14,32 +16,68 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix = {
|
||||||
|
url = "github:ryantm/agenix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
agenix-rekey = {
|
||||||
|
url = "github:oddlama/agenix-rekey";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nvf = {
|
nvf = {
|
||||||
url = "github:notashelf/nvf";
|
url = "github:notashelf/nvf";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
plasma-manager = {
|
stylix = {
|
||||||
url = "github:nix-community/plasma-manager";
|
url = "github:nix-community/stylix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.home-manager.follows = "home-manager";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
noctalia = {
|
||||||
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
niri = {
|
||||||
|
url = "github:sodiboo/niri-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
zen-browser = {
|
||||||
|
url = "github:0xc000022070/zen-browser-flake";
|
||||||
|
inputs = {
|
||||||
|
# IMPORTANT: To ensure compatibility with the latest Firefox version, use nixpkgs-unstable.
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-jmu-cs345.url = "github:Eclypsed/nix-jmu-cs345";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
{ nixpkgs, ... }@inputs:
|
|
||||||
let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
host = "demo";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
|
self,
|
||||||
inherit system;
|
nixpkgs,
|
||||||
specialArgs = { inherit inputs host; };
|
agenix-rekey,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
{
|
||||||
|
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
modules = [
|
modules = [
|
||||||
./modules/system
|
./modules/system
|
||||||
./hosts/${host}
|
./hosts/vanta
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix-rekey = agenix-rekey.configure {
|
||||||
|
userFlake = self;
|
||||||
|
nixosConfigurations = self.nixosConfigurations;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
Put host config here!
|
|
||||||
21
hosts/hosts.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.host = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Logical host name";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Host public SSH key (e.g. /etc/ssh/ssh_host_ed25519_key.pub).
|
||||||
|
# We only set the hostPubkey if one is supplied. For new hosts the pub key will not
|
||||||
|
# exist until it is generated after the first rebuild.
|
||||||
|
pubKey = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
description = "The public key of the host. Will be null until generated on first rebuild";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
17
hosts/vanta/default.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../profiles/intel.nix
|
||||||
|
../hosts.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
host = {
|
||||||
|
name = "vanta";
|
||||||
|
pubKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaDVBJdMDFL8r9NQCbaLe+DPHGhGzRv2N7+7m1/U8DP";
|
||||||
|
};
|
||||||
|
}
|
||||||
40
hosts/vanta/hardware-configuration.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# 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, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/1df00fd1-f531-49b9-9dc6-6d17ca39b67a";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/EE0E-CAE4";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/fbacd982-b161-447c-a34a-7b44bc063a08"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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.wlp166s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -1,14 +1,22 @@
|
|||||||
{
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
|
./helix.nix
|
||||||
|
./kanshi.nix
|
||||||
|
./niri.nix
|
||||||
|
./noctalia.nix
|
||||||
./nvf.nix
|
./nvf.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./plasma.nix
|
./screenshot.nix
|
||||||
./vscode.nix
|
./ssh.nix
|
||||||
./zsh.nix
|
./stylix.nix
|
||||||
|
./terminal.nix
|
||||||
|
./vesktop.nix
|
||||||
|
./vicinae.nix
|
||||||
|
./xdg.nix
|
||||||
|
./yazi.nix
|
||||||
|
./zed.nix
|
||||||
|
# ./zen-browser.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,20 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
# This gets around having to run `pywalfox install` manually, which just creates this manifest
|
||||||
|
home.file.".mozilla/native-messaging-hosts/pywalfox.json".text = builtins.toJSON {
|
||||||
|
name = "pywalfox";
|
||||||
|
description = "Automatically theme your browser using the colors generated by Pywal";
|
||||||
|
path = "${pkgs.pywalfox-native}/bin/pywalfox";
|
||||||
|
type = "stdio";
|
||||||
|
allowed_extensions = [ "pywalfox@frewacom.org" ];
|
||||||
|
};
|
||||||
|
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
languagePacks = [ "en-US" ];
|
languagePacks = [ "en-US" ];
|
||||||
nativeMessagingHosts = with pkgs; [
|
nativeMessagingHosts = with pkgs; [
|
||||||
kdePackages.plasma-browser-integration
|
pywalfox-native
|
||||||
];
|
];
|
||||||
policies = {
|
policies = {
|
||||||
DefaultDownloadDirectory = config.xdg.userDirs.download;
|
DefaultDownloadDirectory = config.xdg.userDirs.download;
|
||||||
@@ -18,6 +27,7 @@
|
|||||||
DisableProfileImport = true;
|
DisableProfileImport = true;
|
||||||
DisableProfileRefresh = true;
|
DisableProfileRefresh = true;
|
||||||
DisableTelemetry = true;
|
DisableTelemetry = true;
|
||||||
|
DisplayBookmarksToolbar = "never";
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
EnableTrackingProtection = {
|
EnableTrackingProtection = {
|
||||||
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
||||||
@@ -69,7 +79,7 @@
|
|||||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
ublock-origin
|
ublock-origin
|
||||||
bitwarden
|
bitwarden
|
||||||
plasma-integration
|
pywalfox
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
"uBlock0@raymondhill.net".settings = {
|
"uBlock0@raymondhill.net".settings = {
|
||||||
@@ -85,6 +95,7 @@
|
|||||||
};
|
};
|
||||||
search = {
|
search = {
|
||||||
default = "google";
|
default = "google";
|
||||||
|
force = true;
|
||||||
engines = {
|
engines = {
|
||||||
nix-packages = {
|
nix-packages = {
|
||||||
name = "Nix Packages";
|
name = "Nix Packages";
|
||||||
@@ -106,15 +117,21 @@
|
|||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
definedAliases = [ "@np" ];
|
definedAliases = [ "@np" ];
|
||||||
};
|
};
|
||||||
chat-gpt = {
|
home-manager = {
|
||||||
name = "ChatGPT";
|
name = "Home Manager";
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://chatgpt.com?q={searchTerms}&temporary-chat=true";
|
template = "https://home-manager-options.extranix.com";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
iconMapObj."64" = "https://chatgpt.com/favicon.ico";
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
definedAliases = [ "@gpt" ];
|
definedAliases = [ "@hm" ];
|
||||||
};
|
};
|
||||||
surugaya = {
|
surugaya = {
|
||||||
name = "Surugaya";
|
name = "Surugaya";
|
||||||
@@ -123,8 +140,7 @@
|
|||||||
template = "https://www.suruga-ya.jp/search?search_word={searchTerms}";
|
template = "https://www.suruga-ya.jp/search?search_word={searchTerms}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
iconMapObj."32" =
|
iconMapObj."16" = "https://www.suruga-ya.jp/drupal/themes/surugaya/favicon.ico";
|
||||||
"https://www.suruga-ya.jp/drupal/themes/surugaya_mobile/images/pwa/images/icons/favicon-32x32.png";
|
|
||||||
definedAliases = [ "@suru" ];
|
definedAliases = [ "@suru" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,18 +1,40 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
name = "Eclypsed";
|
||||||
|
email = "Ec1ypsed@proton.me";
|
||||||
|
signingKey = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB2h6y1Al2OVotYIpwPZMjiBLAncAI2pAPgES2+gVbJqAAAABHNzaDo= ssh:";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.git = {
|
home.packages = with pkgs; [ git-ignore ];
|
||||||
enable = true;
|
|
||||||
userName = "Eclypsed";
|
xdg.configFile."git/allowed_signers".text = ''
|
||||||
userEmail = "Ec1ypsed@proton.me";
|
${email} namespaces="git" ${signingKey}
|
||||||
extraConfig = {
|
'';
|
||||||
init = {
|
|
||||||
defaultBranch = "main";
|
programs = {
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = { inherit name email; };
|
||||||
|
init = {
|
||||||
|
defaultBranch = "main";
|
||||||
|
};
|
||||||
|
gpg.ssh.allowedSignersFile = "${config.xdg.configHome}/git/allowed_signers";
|
||||||
|
};
|
||||||
|
signing = {
|
||||||
|
format = "ssh";
|
||||||
|
key = "${config.home.homeDirectory}/.ssh/id_ed25519_sk_rk.pub";
|
||||||
|
signByDefault = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
lazygit = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "lg";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [ git-ignore ];
|
|
||||||
}
|
}
|
||||||
|
|||||||
322
modules/home/helix.nix
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
yazi-picker = pkgs.writeShellApplication {
|
||||||
|
name = "yazi-picker";
|
||||||
|
text = ''
|
||||||
|
paths=$(yazi --chooser-file=/dev/stdout)
|
||||||
|
|
||||||
|
if [[ -n "$paths" ]]; then
|
||||||
|
zellij action toggle-floating-panes
|
||||||
|
zellij action write 27 # send <Escape> key
|
||||||
|
zellij action write-chars ":$1 $paths"
|
||||||
|
zellij action write 13 # send <Enter> key
|
||||||
|
else
|
||||||
|
zellij action toggle-floating-panes
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [ yazi-picker ];
|
||||||
|
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
basedpyright # Python static type checker
|
||||||
|
ruff # Pyhton linter and formatter
|
||||||
|
nixd # Nix language server
|
||||||
|
nixfmt # Nix formatter
|
||||||
|
rust-analyzer # Rust language server
|
||||||
|
rustfmt # Rust formmater
|
||||||
|
clippy # Rust linter
|
||||||
|
lldb # Debugger for llvm languages
|
||||||
|
marksman # Markdown language server
|
||||||
|
markdown-oxide # Markdown PKM language server
|
||||||
|
rumdl # Markdown linter and formatter
|
||||||
|
libclang # C language family frontend for LLVM
|
||||||
|
typescript-language-server # Typescript language server
|
||||||
|
vscode-langservers-extracted # HTML/CSS/JSON/ESLint language servers extracted from vscode
|
||||||
|
emmet-language-server # Emmet support based on LSP
|
||||||
|
prettier # Formatter for HTML/CSS/JSON/ESLint languages
|
||||||
|
superhtml # HTML Language Server and Templating Language Library
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
editor = {
|
||||||
|
line-number = "relative";
|
||||||
|
cursorline = true;
|
||||||
|
auto-format = true;
|
||||||
|
completion-timeout = 5;
|
||||||
|
completion-trigger-len = 1;
|
||||||
|
bufferline = "always";
|
||||||
|
color-modes = true;
|
||||||
|
end-of-line-diagnostics = "hint";
|
||||||
|
lsp = {
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
|
cursor-shape = {
|
||||||
|
insert = "bar";
|
||||||
|
normal = "block";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
indent-guides = {
|
||||||
|
render = true;
|
||||||
|
skip-levels = 1;
|
||||||
|
};
|
||||||
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
max-indent-retain = 80;
|
||||||
|
};
|
||||||
|
inline-diagnostics = {
|
||||||
|
cursor-line = "warning";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keys =
|
||||||
|
let
|
||||||
|
arrow_keys = {
|
||||||
|
"up" = "jump_view_up";
|
||||||
|
"down" = "jump_view_down";
|
||||||
|
"left" = "jump_view_left";
|
||||||
|
"right" = "jump_view_right";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
normal = {
|
||||||
|
"C-y" =
|
||||||
|
":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- yazi-picker open %{buffer_name}";
|
||||||
|
}
|
||||||
|
// arrow_keys;
|
||||||
|
insert = {
|
||||||
|
"C-k" = "move_visual_line_up";
|
||||||
|
"C-j" = "move_visual_line_down";
|
||||||
|
"C-h" = "move_char_left";
|
||||||
|
"C-l" = "move_char_right";
|
||||||
|
}
|
||||||
|
// arrow_keys;
|
||||||
|
select = { } // arrow_keys;
|
||||||
|
};
|
||||||
|
theme = "catppuccin_mocha";
|
||||||
|
};
|
||||||
|
# Check https://github.com/helix-editor/helix/blob/master/languages.toml for default language configuration
|
||||||
|
# Only explictly set options you want to override / make explicit
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "python";
|
||||||
|
language-servers = [
|
||||||
|
"basedpyright"
|
||||||
|
"ruff"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "ruff";
|
||||||
|
args = [
|
||||||
|
"format"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
language-servers = [ "nixd" ];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "nixfmt";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "rust";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "rustfmt";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "markdown";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "rumdl";
|
||||||
|
args = [
|
||||||
|
"fmt"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
file-types = [
|
||||||
|
"c"
|
||||||
|
"h"
|
||||||
|
]; # "h" is currently missing from the default config
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "clang-format";
|
||||||
|
args = [
|
||||||
|
"--style=WebKit"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "typescript";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"typescript"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tsx";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"typescript"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "javascript";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"typescript"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "jsx";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"typescript"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "json";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"json"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "jsonc";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"jsonc"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "html";
|
||||||
|
language-servers = [
|
||||||
|
"vscode-html-language-server"
|
||||||
|
{
|
||||||
|
name = "superhtml";
|
||||||
|
except-features = [ "format" ];
|
||||||
|
}
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"html"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "css";
|
||||||
|
language-servers = [
|
||||||
|
"vscode-css-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"css"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "scss";
|
||||||
|
language-servers = [
|
||||||
|
"vscode-css-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "prettier";
|
||||||
|
args = [
|
||||||
|
"--parser"
|
||||||
|
"scss"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
language-server = {
|
||||||
|
basedpyright.config.python.analysis.typeCheckingMode = "strict";
|
||||||
|
rust-analyzer.config.check.command = "clippy";
|
||||||
|
emmet-language-server = {
|
||||||
|
command = "emmet-language-server";
|
||||||
|
args = [ "--stdio" ];
|
||||||
|
};
|
||||||
|
vscode-eslint-language-server = {
|
||||||
|
config = {
|
||||||
|
# Automatically fix ESLint errors
|
||||||
|
codeActionsOnSave = {
|
||||||
|
mode = "all";
|
||||||
|
"source.fixAll.eslint" = true;
|
||||||
|
};
|
||||||
|
quiet = false;
|
||||||
|
experimental = {
|
||||||
|
# Support for the modern ESLint configuration format
|
||||||
|
useFlatConfig = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
36
modules/home/kanshi.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
services.kanshi = {
|
||||||
|
enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "laptop";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
status = "enable";
|
||||||
|
scale = 1.0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "docked";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
status = "disable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "LG Electronics LG TV SSCR2 *";
|
||||||
|
mode = "3840x2160@120Hz";
|
||||||
|
scale = 1.0;
|
||||||
|
status = "enable";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
468
modules/home/niri.nix
Normal file
@@ -0,0 +1,468 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
# Executables
|
||||||
|
foot = lib.getExe' config.programs.foot.package "foot";
|
||||||
|
vicinae = lib.getExe' config.programs.vicinae.package "vicinae";
|
||||||
|
noctalia-shell = lib.getExe' config.programs.noctalia-shell.package "noctalia-shell";
|
||||||
|
playerctl = lib.getExe' pkgs.playerctl "playerctl";
|
||||||
|
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
|
||||||
|
brightnessctl = lib.getExe' pkgs.brightnessctl "brightnessctl";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.niri = {
|
||||||
|
# Niri is enabled by niri.nixosModules.nir in desktop.nix
|
||||||
|
settings = {
|
||||||
|
input = {
|
||||||
|
keyboard = {
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
options = "compose:ralt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
touchpad = {
|
||||||
|
enable = true;
|
||||||
|
click-method = "clickfinger";
|
||||||
|
drag = true;
|
||||||
|
drag-lock = true;
|
||||||
|
dwt = true;
|
||||||
|
natural-scroll = false;
|
||||||
|
scroll-method = "two-finger";
|
||||||
|
tap = true;
|
||||||
|
tap-button-map = "left-right-middle"; # Mouse button click to register when tapping with 1, 2, or 3 fingers
|
||||||
|
};
|
||||||
|
warp-mouse-to-focus = {
|
||||||
|
enable = true;
|
||||||
|
mode = "center-xy-always";
|
||||||
|
};
|
||||||
|
focus-follows-mouse = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
mod-key = "Super";
|
||||||
|
};
|
||||||
|
binds = {
|
||||||
|
# General
|
||||||
|
"Mod+Slash" = {
|
||||||
|
action.show-hotkey-overlay = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Show hotkeys";
|
||||||
|
};
|
||||||
|
"Mod+Q" = {
|
||||||
|
action.close-window = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Close window";
|
||||||
|
};
|
||||||
|
"Mod+W" = {
|
||||||
|
action.spawn = foot;
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Terminal";
|
||||||
|
};
|
||||||
|
"Mod+A" = {
|
||||||
|
action.spawn = [
|
||||||
|
vicinae
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Launcher";
|
||||||
|
};
|
||||||
|
"Mod+Escape" = {
|
||||||
|
action.spawn = [
|
||||||
|
noctalia-shell
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"sessionMenu"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Session menu";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
"Mod+N" = {
|
||||||
|
action.spawn = [
|
||||||
|
noctalia-shell
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"notifications"
|
||||||
|
"toggleHistory"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Show notifications";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+N" = {
|
||||||
|
action.spawn = [
|
||||||
|
noctalia-shell
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"notifications"
|
||||||
|
"clear"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Clear notifications";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Media keys
|
||||||
|
"XF86AudioPrev" = {
|
||||||
|
action.spawn = [
|
||||||
|
playerctl
|
||||||
|
"previous"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Previous track";
|
||||||
|
};
|
||||||
|
"XF86AudioPlay" = {
|
||||||
|
action.spawn = [
|
||||||
|
playerctl
|
||||||
|
"play-pause"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Play / pause track";
|
||||||
|
};
|
||||||
|
"XF86AudioNext" = {
|
||||||
|
action.spawn = [
|
||||||
|
playerctl
|
||||||
|
"next"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Next track";
|
||||||
|
};
|
||||||
|
"XF86AudioRaiseVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"0.05+"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Raise volume";
|
||||||
|
};
|
||||||
|
"XF86AudioLowerVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"0.05-"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Lower volume";
|
||||||
|
};
|
||||||
|
"XF86AudioMute" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-mute"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Mute playback";
|
||||||
|
};
|
||||||
|
"Alt+XF86AudioRaiseVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SOURCE@"
|
||||||
|
"0.05+"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Raise microphone volume";
|
||||||
|
};
|
||||||
|
"Alt+XF86AudioLowerVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SOURCE@"
|
||||||
|
"0.05-"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Lower microphone volume";
|
||||||
|
};
|
||||||
|
"Alt+XF86AudioMute" = {
|
||||||
|
action.spawn = [
|
||||||
|
wpctl
|
||||||
|
"set-mute"
|
||||||
|
"@DEFAULT_AUDIO_SOURCE@"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
repeat = false;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Mute microphone";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Brightness
|
||||||
|
"XF86MonBrightnessUp" = {
|
||||||
|
action.spawn = [
|
||||||
|
brightnessctl
|
||||||
|
"set"
|
||||||
|
"5%+"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Increase brightness";
|
||||||
|
};
|
||||||
|
"XF86MonBrightnessDown" = {
|
||||||
|
action.spawn = [
|
||||||
|
brightnessctl
|
||||||
|
"set"
|
||||||
|
"5%-"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
allow-when-locked = true;
|
||||||
|
hotkey-overlay.title = "Decrease brightness";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Screen capture
|
||||||
|
"Print" = {
|
||||||
|
action.screenshot = {
|
||||||
|
show-pointer = false;
|
||||||
|
};
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Screenshot";
|
||||||
|
};
|
||||||
|
"Mod+Print" = {
|
||||||
|
action.screenshot-window = {
|
||||||
|
# show-pointer = false;
|
||||||
|
};
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Screenshot window";
|
||||||
|
};
|
||||||
|
"Shift+Print" = {
|
||||||
|
action.screenshot-screen = {
|
||||||
|
show-pointer = false;
|
||||||
|
};
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Screenshot screen";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Display scaling
|
||||||
|
"Mod+Ctrl+Equal" = {
|
||||||
|
action.spawn = [
|
||||||
|
"output-scale"
|
||||||
|
"+0.1"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Increase display scale";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+Minus" = {
|
||||||
|
action.spawn = [
|
||||||
|
"output-scale"
|
||||||
|
"-0.1"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Decrease display scale";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+0" = {
|
||||||
|
action.spawn = [
|
||||||
|
"output-scale"
|
||||||
|
"1.0"
|
||||||
|
];
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Reset display scale";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Window and column size
|
||||||
|
"Mod+F" = {
|
||||||
|
action.maximize-column = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Maximize Column";
|
||||||
|
};
|
||||||
|
"Mod+Shift+F" = {
|
||||||
|
action.fullscreen-window = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Fullscreen";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+F" = {
|
||||||
|
action.expand-column-to-available-width = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Fill empty column space";
|
||||||
|
};
|
||||||
|
"Mod+Equal" = {
|
||||||
|
action.set-column-width = "+10%";
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Increase column width";
|
||||||
|
};
|
||||||
|
"Mod+Minus" = {
|
||||||
|
action.set-column-width = "-10%";
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Decrease column width";
|
||||||
|
};
|
||||||
|
"Mod+Shift+Equal" = {
|
||||||
|
action.set-window-height = "+10%";
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Increase window height";
|
||||||
|
};
|
||||||
|
"Mod+Shift+Minus" = {
|
||||||
|
action.set-window-height = "-10%";
|
||||||
|
repeat = true;
|
||||||
|
hotkey-overlay.title = "Decrease window height";
|
||||||
|
};
|
||||||
|
"Mod+Z" = {
|
||||||
|
action.toggle-window-floating = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Toggle floating";
|
||||||
|
};
|
||||||
|
"Mod+T" = {
|
||||||
|
action.toggle-column-tabbed-display = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Toggle tabbed column";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Window and column movement
|
||||||
|
"Mod+K" = {
|
||||||
|
action.focus-window-or-monitor-up = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus window up";
|
||||||
|
};
|
||||||
|
"Mod+J" = {
|
||||||
|
action.focus-window-or-monitor-down = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus window down";
|
||||||
|
};
|
||||||
|
"Mod+H" = {
|
||||||
|
action.focus-column-or-monitor-left = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus window left";
|
||||||
|
};
|
||||||
|
"Mod+L" = {
|
||||||
|
action.focus-column-or-monitor-right = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus window right";
|
||||||
|
};
|
||||||
|
"Mod+BracketLeft" = {
|
||||||
|
action.consume-or-expel-window-left = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move window left";
|
||||||
|
};
|
||||||
|
"Mod+BracketRight" = {
|
||||||
|
action.consume-or-expel-window-right = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move window right";
|
||||||
|
};
|
||||||
|
"Mod+Shift+K" = {
|
||||||
|
action.move-column-to-monitor-up = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column up";
|
||||||
|
};
|
||||||
|
"Mod+Shift+J" = {
|
||||||
|
action.move-column-to-monitor-down = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column down";
|
||||||
|
};
|
||||||
|
"Mod+Shift+H" = {
|
||||||
|
action.move-column-left-or-to-monitor-left = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column left";
|
||||||
|
};
|
||||||
|
"Mod+Shift+L" = {
|
||||||
|
action.move-column-right-or-to-monitor-right = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column right";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Workspaces
|
||||||
|
"Mod+Ctrl+K" = {
|
||||||
|
action.focus-workspace-up = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus workspace up";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+J" = {
|
||||||
|
action.focus-workspace-down = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Focus workspace down";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+Shift+K" = {
|
||||||
|
action.move-column-to-workspace-up = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column to workspace up";
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+Shift+J" = {
|
||||||
|
action.move-column-to-workspace-down = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Move column to workspace down";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Overview
|
||||||
|
"Mod+Tab" = {
|
||||||
|
action.toggle-overview = { };
|
||||||
|
repeat = false;
|
||||||
|
hotkey-overlay.title = "Toggle overview";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
window-rules = [
|
||||||
|
{
|
||||||
|
geometry-corner-radius = {
|
||||||
|
bottom-left = 10.0;
|
||||||
|
bottom-right = 10.0;
|
||||||
|
top-left = 10.0;
|
||||||
|
top-right = 10.0;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
}
|
||||||
|
# Unfortunately windows like firefox extensions set their titles after spawning preventing
|
||||||
|
# the window rules from being applied. There is a script to fix this but it is pretty hacky.
|
||||||
|
# {
|
||||||
|
# matches = [
|
||||||
|
# {
|
||||||
|
# title = "^Extension:.*";
|
||||||
|
# app-id = "firefox";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# open-floating = true;
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{ app-id = "foot"; }
|
||||||
|
{ app-id = "Alacritty"; }
|
||||||
|
];
|
||||||
|
opacity = 0.93;
|
||||||
|
default-column-width.proportion = 0.4;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
layer-rules = [
|
||||||
|
{
|
||||||
|
# Use noctalia wallpaper as overview backdrop
|
||||||
|
matches = [ { namespace = "^noctalia-overview*"; } ];
|
||||||
|
place-within-backdrop = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
prefer-no-csd = true;
|
||||||
|
screenshot-path = "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png";
|
||||||
|
hotkey-overlay = {
|
||||||
|
skip-at-startup = true;
|
||||||
|
};
|
||||||
|
# If not using systemd for noctalia, use this
|
||||||
|
# spawn-at-startup = [
|
||||||
|
# { argv = [ "noctalia-shell" ]; }
|
||||||
|
# ];
|
||||||
|
cursor = {
|
||||||
|
size = config.stylix.cursor.size;
|
||||||
|
theme = config.stylix.cursor.name;
|
||||||
|
hide-when-typing = true;
|
||||||
|
};
|
||||||
|
gestures = {
|
||||||
|
hot-corners.enable = false;
|
||||||
|
};
|
||||||
|
xwayland-satellite = {
|
||||||
|
enable = true;
|
||||||
|
path = lib.getExe pkgs.xwayland-satellite-unstable;
|
||||||
|
};
|
||||||
|
environment = {
|
||||||
|
"NIXOS_OZONE_WL" = "1";
|
||||||
|
};
|
||||||
|
debug = {
|
||||||
|
# Allows notification actions and window activation from Noctalia.
|
||||||
|
honor-xdg-activation-with-invalid-serial = { };
|
||||||
|
};
|
||||||
|
# Support for external 'includes' sounds like it is in the works.
|
||||||
|
# Will just have to wait until then for noctalia color scheme integration.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
133
modules/home/noctalia.nix
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.noctalia.homeModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.noctalia-shell = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true; # Replaces spawn-at-startup in niri
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
avatarImage = "~/.face";
|
||||||
|
autoStartAuth = true;
|
||||||
|
allowPasswordWithFprintd = true;
|
||||||
|
};
|
||||||
|
location.name = "Washington DC";
|
||||||
|
bar = {
|
||||||
|
widgets = {
|
||||||
|
right = [
|
||||||
|
{
|
||||||
|
id = "plugin:tailscale";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "Tray";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "NotificationHistory";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "Battery";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "Volume";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "Brightness";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "ControlCenter";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
templates = {
|
||||||
|
activeTemplates = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "alacritty";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "discord";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "foot";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "gtk";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "helix";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "niri";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "pywalfox";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "qt";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "vicinae";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "yazi";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "zed";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
enableUserTheming = true;
|
||||||
|
};
|
||||||
|
wallpaper = {
|
||||||
|
enabled = true;
|
||||||
|
overviewEnabled = true;
|
||||||
|
directory = "${config.xdg.userDirs.extraConfig.WALLPAPERS}";
|
||||||
|
};
|
||||||
|
colorSchemes.predefinedScheme = "Catppuccin";
|
||||||
|
};
|
||||||
|
plugins = {
|
||||||
|
sources = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
name = "Noctalia Plugins";
|
||||||
|
url = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
states = {
|
||||||
|
tailscale = {
|
||||||
|
enabled = true;
|
||||||
|
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
version = 1;
|
||||||
|
};
|
||||||
|
pluginSettings = {
|
||||||
|
tailscale = {
|
||||||
|
refreshInterval = 5000;
|
||||||
|
compactMode = true;
|
||||||
|
showIpAddress = false;
|
||||||
|
showPeerCount = false;
|
||||||
|
hideDisconnected = false;
|
||||||
|
terminalCommand = "foot";
|
||||||
|
pingCount = 5;
|
||||||
|
defaultPeerAction = "copy-ip";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
host,
|
# host,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -13,11 +13,19 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
vim = {
|
vim = {
|
||||||
viAlias = false;
|
viAlias = true;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
|
|
||||||
|
# lazy.plugins = {
|
||||||
|
# "kanagawa.nvim" = {
|
||||||
|
# package = pkgs.vimPlugins.kanagawa-nvim;
|
||||||
|
# setupModule = "kanagawa";
|
||||||
|
# after = "vim.cmd(\"colorscheme kanagawa\")";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
wrap = false;
|
wrap = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
clipboard = {
|
clipboard = {
|
||||||
@@ -61,15 +69,18 @@
|
|||||||
# Formatting files
|
# Formatting files
|
||||||
formatter.conform-nvim = {
|
formatter.conform-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
binds = {
|
binds = {
|
||||||
whichKey.enable = true;
|
whichKey.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
enable = true;
|
||||||
|
name = "catppuccin";
|
||||||
|
style = "mocha";
|
||||||
|
};
|
||||||
|
|
||||||
keymaps = [
|
keymaps = [
|
||||||
{
|
{
|
||||||
key = "<A-e>";
|
key = "<A-e>";
|
||||||
@@ -127,12 +138,6 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
theme = {
|
|
||||||
enable = true;
|
|
||||||
name = "catppuccin";
|
|
||||||
style = "mocha";
|
|
||||||
};
|
|
||||||
|
|
||||||
languages = {
|
languages = {
|
||||||
enableTreesitter = true;
|
enableTreesitter = true;
|
||||||
enableFormat = true;
|
enableFormat = true;
|
||||||
@@ -143,7 +148,7 @@
|
|||||||
dap.enable = true;
|
dap.enable = true;
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
server = "clangd";
|
servers = [ "clangd" ];
|
||||||
};
|
};
|
||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
};
|
};
|
||||||
@@ -152,7 +157,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "prettier";
|
type = [ "prettier" ];
|
||||||
};
|
};
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
@@ -173,6 +178,7 @@
|
|||||||
};
|
};
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
type = [ "prettierd" ];
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -186,21 +192,19 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nixfmt;
|
type = [ "nixfmt" ];
|
||||||
type = "nixfmt";
|
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nixd;
|
servers = [ "nixd" ];
|
||||||
server = "nixd";
|
# options = {
|
||||||
options = {
|
# nixos = {
|
||||||
nixos = {
|
# expr = "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.${host}.options";
|
||||||
expr = "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.${host}.options";
|
# };
|
||||||
};
|
# home-manager = {
|
||||||
home-manager = {
|
# expr = "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.${host}.options.home-manager.users.type.getSubOptions []";
|
||||||
expr = "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.${host}.options.home-manager.users.type.getSubOptions []";
|
# };
|
||||||
};
|
# };
|
||||||
};
|
|
||||||
};
|
};
|
||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
};
|
};
|
||||||
@@ -213,7 +217,10 @@
|
|||||||
};
|
};
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "black-and-isort";
|
type = [
|
||||||
|
"black"
|
||||||
|
"isort"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -221,6 +228,17 @@
|
|||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
enable = true;
|
||||||
|
# crates = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
dap.enable = true;
|
||||||
|
format.enable = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
tailwind = {
|
tailwind = {
|
||||||
enable = true;
|
enable = true;
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
@@ -234,7 +252,7 @@
|
|||||||
extraDiagnostics.enable = true;
|
extraDiagnostics.enable = true;
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "prettier";
|
type = [ "prettier" ];
|
||||||
};
|
};
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
treesitter.enable = true;
|
treesitter.enable = true;
|
||||||
|
|||||||
@@ -1,27 +1,26 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nix-jmu-cs345.homeManagerModules.bernstdh
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nix-jmu-cs345.enable = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
zoom-us
|
|
||||||
devenv
|
devenv
|
||||||
discord
|
htop
|
||||||
sqlitebrowser
|
obsidian
|
||||||
drawio
|
|
||||||
bitwarden-desktop
|
|
||||||
|
|
||||||
# Libre Office
|
|
||||||
libreoffice-qt
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.en_US
|
|
||||||
|
|
||||||
# KDE
|
|
||||||
kdePackages.kate
|
|
||||||
|
|
||||||
# CD Stuff
|
# CD Stuff
|
||||||
picard
|
picard
|
||||||
heybrochecklog
|
heybrochecklog
|
||||||
rsgain
|
rsgain
|
||||||
|
|
||||||
|
playerctl
|
||||||
|
brightnessctl
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
26
modules/home/screenshot.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
wl-clipboard-rs
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.swappy = {
|
||||||
|
enable = true;
|
||||||
|
# Configuration options: https://github.com/jtheoof/swappy?tab=readme-ov-file#config
|
||||||
|
settings = {
|
||||||
|
Default = {
|
||||||
|
save_dir = config.xdg.userDirs.extraConfig.SCREENSHOTS;
|
||||||
|
save_filename_format = "%Y%m%d-%H%M%S.png";
|
||||||
|
show_panel = false;
|
||||||
|
auto_save = false;
|
||||||
|
early_exit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
32
modules/home/ssh.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
matchBlocks = {
|
||||||
|
"*" = {
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
identityFile = [ "~/.ssh/id_ed25519_sk_rk" ];
|
||||||
|
};
|
||||||
|
"stu" = {
|
||||||
|
hostname = "stu.cs.jmu.edu";
|
||||||
|
user = "tamassno";
|
||||||
|
localForwards = [
|
||||||
|
{
|
||||||
|
bind.port = 5432;
|
||||||
|
host = {
|
||||||
|
address = "data.cs.jmu.edu";
|
||||||
|
port = 5432;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
serverAliveCountMax = 5;
|
||||||
|
serverAliveInterval = 60;
|
||||||
|
};
|
||||||
|
"cluster" = {
|
||||||
|
hostname = "login02.cluster.cs.jmu.edu";
|
||||||
|
user = "tamassno";
|
||||||
|
proxyJump = "stu";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
89
modules/home/stylix.nix
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.stylix.homeModules.stylix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Not really using stylix as it was intended because IMO it sets too many defaults for some
|
||||||
|
# programs and not enought for others, meaning I wind up setting a lot myself anyway. That
|
||||||
|
# being said it provides a nice structure for setting fonts, cursors, icons, etc.
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
autoEnable = false;
|
||||||
|
polarity = "dark";
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
cursor = {
|
||||||
|
name = "catppuccin-mocha-dark-cursors";
|
||||||
|
package = pkgs.catppuccin-cursors.mochaDark;
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
# For some reason setting the fonts' package option doesn't work.
|
||||||
|
# Just use home.packages instead
|
||||||
|
fonts = {
|
||||||
|
monospace.name = "JetBrainsMono Nerd Font";
|
||||||
|
sansSerif.name = "Noto Sans";
|
||||||
|
emoji.name = "Noto Color Emoji";
|
||||||
|
sizes = {
|
||||||
|
applications = 12;
|
||||||
|
terminal = 12;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
icons = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.morewaita-icon-theme;
|
||||||
|
light = "MoreWaita";
|
||||||
|
dark = "MoreWaita";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
];
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
colorScheme = config.stylix.polarity;
|
||||||
|
# iconTheme is set by default by stylix.icons.enable
|
||||||
|
theme = {
|
||||||
|
name = "adw-gtk3-${config.stylix.polarity}";
|
||||||
|
package = pkgs.adw-gtk3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
qt =
|
||||||
|
let
|
||||||
|
qt_settings = ver: {
|
||||||
|
Appearance = {
|
||||||
|
color_scheme_path = "${config.xdg.configHome}/${ver}/colors/noctalia.conf";
|
||||||
|
custom_palette = true;
|
||||||
|
icon_theme = config.stylix.icons.${config.stylix.polarity};
|
||||||
|
standard_dialogs = "xdgdesktopportal";
|
||||||
|
style = "Breeze";
|
||||||
|
};
|
||||||
|
Fonts = {
|
||||||
|
fixed = "\"${config.stylix.fonts.monospace.name},${toString config.stylix.fonts.sizes.applications}\"";
|
||||||
|
general = "\"${config.stylix.fonts.sansSerif.name},${toString config.stylix.fonts.sizes.applications}\"";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "qtct";
|
||||||
|
style.name = "breeze";
|
||||||
|
qt5ctSettings = qt_settings "qt5ct";
|
||||||
|
qt6ctSettings = qt_settings "qt6ct";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
QS_ICON_THEME = config.stylix.icons.${config.stylix.polarity};
|
||||||
|
};
|
||||||
|
}
|
||||||
146
modules/home/terminal.nix
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
import = [ "${config.xdg.configHome}/alacritty/themes/noctalia.toml" ];
|
||||||
|
};
|
||||||
|
font = {
|
||||||
|
normal = {
|
||||||
|
family = "${config.stylix.fonts.monospace.name}";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
size = config.stylix.fonts.sizes.terminal;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
fastfetch = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
foot = {
|
||||||
|
enable = true;
|
||||||
|
server.enable = false;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
term = "xterm-256color";
|
||||||
|
include = "${config.xdg.configHome}/foot/themes/noctalia";
|
||||||
|
dpi-aware = "no";
|
||||||
|
font = "${config.stylix.fonts.monospace.name}:size=${toString config.stylix.fonts.sizes.terminal}";
|
||||||
|
};
|
||||||
|
mouse = {
|
||||||
|
hide-when-typing = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
format = pkgs.lib.concatStrings [
|
||||||
|
"[ ╭─[\\[](1)$username([@](bold 2)$hostname)[\\]:](1) $directory( $git_branch)](5)"
|
||||||
|
"$line_break"
|
||||||
|
"[ ╰─$character](5)"
|
||||||
|
];
|
||||||
|
username = {
|
||||||
|
style_root = "white";
|
||||||
|
format = "[$user](3)";
|
||||||
|
disabled = false;
|
||||||
|
show_always = true;
|
||||||
|
};
|
||||||
|
hostname = {
|
||||||
|
format = "[$hostname](bold 4)";
|
||||||
|
disabled = false;
|
||||||
|
ssh_only = false;
|
||||||
|
};
|
||||||
|
character = {
|
||||||
|
success_symbol = "[❯](bold 5)";
|
||||||
|
error_symbol = "[✘](bold 5)";
|
||||||
|
vimcmd_symbol = "[❮](bold 5)";
|
||||||
|
};
|
||||||
|
directory = {
|
||||||
|
read_only = "";
|
||||||
|
format = "[ $path](5)";
|
||||||
|
read_only_style = "bold white";
|
||||||
|
truncation_length = 5;
|
||||||
|
};
|
||||||
|
git_branch = {
|
||||||
|
symbol = "";
|
||||||
|
style = "bright-black";
|
||||||
|
format = "[$symbol $branch]($style)";
|
||||||
|
};
|
||||||
|
scan_timeout = 100;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
zellij = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
theme = "catppuccin-mocha";
|
||||||
|
show_startup_tips = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = false;
|
||||||
|
antidote = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
"Aloxaf/fzf-tab"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
dotDir = "${config.xdg.configHome}/zsh";
|
||||||
|
history = {
|
||||||
|
append = true;
|
||||||
|
findNoDups = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
saveNoDups = true;
|
||||||
|
share = true;
|
||||||
|
};
|
||||||
|
historySubstringSearch = {
|
||||||
|
enable = true;
|
||||||
|
searchDownKey = "^p";
|
||||||
|
searchUpKey = "^n";
|
||||||
|
};
|
||||||
|
initContent = ''
|
||||||
|
# disable sort when completing `git checkout`
|
||||||
|
zstyle ':completion:*:git-checkout:*' sort false
|
||||||
|
# set descriptions format to enable group support
|
||||||
|
# NOTE: don't use escape sequences (like '%F{red}%d%f') here, fzf-tab will ignore them
|
||||||
|
zstyle ':completion:*:descriptions' format '[%d]'
|
||||||
|
# preview directory's content when completing cd or zoxide
|
||||||
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
|
||||||
|
# custom fzf flags
|
||||||
|
# NOTE: fzf-tab does not follow FZF_DEFAULT_OPTS by default
|
||||||
|
zstyle ':fzf-tab:*' fzf-flags --color=fg:1,fg+:2 --bind=tab:accept
|
||||||
|
# switch group using `<` and `>`
|
||||||
|
zstyle ':fzf-tab:*' switch-group '<' '>'
|
||||||
|
'';
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
shellAliases = {
|
||||||
|
ff = "fastfetch";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
modules/home/vesktop.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
programs.vesktop = {
|
||||||
|
enable = true;
|
||||||
|
vencord = {
|
||||||
|
settings = {
|
||||||
|
oUpdate = false;
|
||||||
|
autoUpdateNotification = false;
|
||||||
|
notifyAboutUpdates = false;
|
||||||
|
useQuickCss = true;
|
||||||
|
disableMinSize = true;
|
||||||
|
enabledThemes = [ "noctalia.theme.css" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
37
modules/home/vicinae.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Not using Vicinae's flake because the server fucking seg faults immediately
|
||||||
|
programs.vicinae = {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
};
|
||||||
|
# For configuration option documentation, see: https://github.com/vicinaehq/vicinae/blob/f6222f1e82fe2077ad42f10a6d6837dc61c67fd0/vicinae/assets/config.jsonc
|
||||||
|
settings = {
|
||||||
|
escape_key_behavior = "close_window";
|
||||||
|
close_on_focus_loss = true;
|
||||||
|
pop_to_root_on_close = true;
|
||||||
|
favicon_service = "twenty";
|
||||||
|
font = {
|
||||||
|
normal = {
|
||||||
|
size = 12;
|
||||||
|
normal = "${config.stylix.fonts.sansSerif.name}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
theme = {
|
||||||
|
light = {
|
||||||
|
name = "noctalia";
|
||||||
|
icon_theme = "${config.stylix.icons.light}";
|
||||||
|
};
|
||||||
|
dark = {
|
||||||
|
name = "noctalia";
|
||||||
|
icon_theme = "${config.stylix.icons.dark}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
34
modules/home/xdg.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
configPackages = [ pkgs.gnome-session ];
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-gnome
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
DEV = "${config.home.homeDirectory}/Dev";
|
||||||
|
WALLPAPERS = "${config.xdg.userDirs.pictures}/Wallpapers";
|
||||||
|
SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".face".source = ../../assets/profile-picture.jpg;
|
||||||
|
|
||||||
|
home.file."${config.xdg.userDirs.extraConfig.WALLPAPERS}" = {
|
||||||
|
source = ../../assets/wallpapers;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
63
modules/home/yazi.nix
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
dragon-drop
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
plugins = with pkgs.yaziPlugins; {
|
||||||
|
inherit git full-border chmod;
|
||||||
|
};
|
||||||
|
initLua = ''
|
||||||
|
require("git"):setup {
|
||||||
|
-- Order of status signs showing in the linemode
|
||||||
|
order = 1500,
|
||||||
|
}
|
||||||
|
require("full-border"):setup()
|
||||||
|
'';
|
||||||
|
keymap = {
|
||||||
|
mgr.prepend_keymap = [
|
||||||
|
{
|
||||||
|
on = "<C-d>";
|
||||||
|
run = "shell -- dragon-drop -x -i -T %s1";
|
||||||
|
desc = "Open a prompt to drag and drop a file";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = [
|
||||||
|
"c"
|
||||||
|
"m"
|
||||||
|
];
|
||||||
|
run = "plugin chmod";
|
||||||
|
desc = "Chmod on selected files";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
plugin = {
|
||||||
|
# Disable all preset previewers, preloaders
|
||||||
|
# This is recommended by yazi when working with network shares
|
||||||
|
preloaders = [ ];
|
||||||
|
previewers = [ ];
|
||||||
|
|
||||||
|
prepend_fetchers = [
|
||||||
|
{
|
||||||
|
id = "git";
|
||||||
|
url = "*";
|
||||||
|
run = "git";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "git";
|
||||||
|
url = "*/";
|
||||||
|
run = "git";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
20
modules/home/zed.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.zed-editor = {
|
||||||
|
enable = true;
|
||||||
|
extensions = [
|
||||||
|
"nix"
|
||||||
|
];
|
||||||
|
extraPackages = [ pkgs.nixd ];
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
theme = "Noctalia Dark";
|
||||||
|
features = {
|
||||||
|
edit_prediction_provider = "copilot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
13
modules/home/zen-browser.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.zen-browser.homeModules.twilight
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.zen-browser = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
sessionVariables = {
|
|
||||||
SSH_AUTH_SOCK = "/home/eclypse/.bitwarden-ssh-agent.sock";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(import ./heybrochecklog.nix)
|
(import ./heybrochecklog.nix)
|
||||||
|
(import ./pywalfox-native.nix)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
16
modules/overlays/pywalfox-native.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
self: super: with super.python3Packages; {
|
||||||
|
heybrochecklog = buildPythonApplication rec {
|
||||||
|
pname = "pywalfox-native";
|
||||||
|
version = "2.8.0rc1";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = super.fetchurl {
|
||||||
|
url = "https://test-files.pythonhosted.org/packages/89/a1/8e011e2d325de8e987f7c0a67222448b252fc894634bfa0d3b3728ec6dbf/pywalfox-${version}.tar.gz";
|
||||||
|
sha256 = "89e0d7a441eb600933440c713cddbfaecda236bde7f3f655db0ec20b0ae12845";
|
||||||
|
};
|
||||||
|
|
||||||
|
build-system = [ setuptools ];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "pywalfox" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
40
modules/system/agenix.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.agenix-rekey.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
# agenix-rekey's CLI tool replaces standard agenix's
|
||||||
|
inputs.agenix-rekey.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
age = {
|
||||||
|
# Need to explicitly set identity paths because OpenSSH daemon is disabled
|
||||||
|
# but the host keys are still generated via services.openssh.generateHostKeys = true
|
||||||
|
identityPaths = map (key: key.path) config.services.openssh.hostKeys;
|
||||||
|
rekey = {
|
||||||
|
masterIdentities = [ "${inputs.self}/secrets/age-yubikey-identity-d9ed335b.pub" ];
|
||||||
|
storageMode = "local";
|
||||||
|
localStorageDir = ../../. + "/secrets/rekeyed/${config.host.name}";
|
||||||
|
}
|
||||||
|
# We only set the hostPubkey if one is supplied. For new hosts the pub key will not
|
||||||
|
# exist until it is generated after the first rebuild. Runtime decryption will fail
|
||||||
|
# but then the ssh host key will be generated in /etc/ssh and can be supplied
|
||||||
|
// lib.optionalAttrs (config.host.pubKey != null) {
|
||||||
|
hostPubkey = config.host.pubKey;
|
||||||
|
};
|
||||||
|
secrets = {
|
||||||
|
tailscale-auth.rekeyFile = ../../secrets/tailscale-auth.age;
|
||||||
|
eclypsecloud-eclypse.rekeyFile = ../../secrets/eclypsecloud-eclypse.age;
|
||||||
|
eclypse-password.rekeyFile = ../../secrets/eclypse-password.age;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
|
extraModulePackages = with config.boot.kernelPackages; [ virtualbox ];
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -10,5 +12,8 @@
|
|||||||
};
|
};
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
kernelParams = [
|
||||||
|
"kvm.enable_virt_at_load=0" # Fixes some virtuallization issues
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./agenix.nix
|
||||||
./boot.nix
|
./boot.nix
|
||||||
|
./desktop.nix
|
||||||
./fileSystems.nix
|
./fileSystems.nix
|
||||||
./fonts.nix
|
|
||||||
./network.nix
|
./network.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./security.nix
|
./security.nix
|
||||||
./services.nix
|
./services.nix
|
||||||
./system.nix
|
./system.nix
|
||||||
|
./tailscale.nix
|
||||||
./user.nix
|
./user.nix
|
||||||
|
./virtualisation.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
39
modules/system/desktop.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.niri.nixosModules.niri
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
niri = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.niri-unstable;
|
||||||
|
};
|
||||||
|
uwsm = {
|
||||||
|
enable = true;
|
||||||
|
waylandCompositors = {
|
||||||
|
niri = {
|
||||||
|
prettyName = "Niri";
|
||||||
|
binPath = "/run/current-system/sw/bin/niri-session";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.xwayland-satellite-unstable ];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.niri.overlays.niri
|
||||||
|
];
|
||||||
|
|
||||||
|
services.displayManager = {
|
||||||
|
gdm = {
|
||||||
|
enable = true;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
44
modules/system/fileSystems.nix
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
automount_opts = [
|
||||||
|
"x-systemd.automount"
|
||||||
|
"x-systemd.idle-timeout=60"
|
||||||
|
"x-systemd.device-timeout=5s"
|
||||||
|
"x-systemd.mount-timeout=5s"
|
||||||
|
"noauto"
|
||||||
|
"user"
|
||||||
|
"users"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
fileSystems = {
|
||||||
|
"/mnt/EclypseCloud" = {
|
||||||
|
device = "//100.78.212.35/EclypseCloud";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||||
|
"uid=${toString config.users.users.eclypse.uid}"
|
||||||
|
"rw"
|
||||||
|
]
|
||||||
|
++ automount_opts;
|
||||||
|
};
|
||||||
|
"/mnt/Music" = {
|
||||||
|
device = "//100.78.212.35/music";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||||
|
"uid=${toString config.users.users.eclypse.uid}"
|
||||||
|
"rw"
|
||||||
|
]
|
||||||
|
++ automount_opts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
cifs-utils
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
{
|
{
|
||||||
host,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "${host}"; # Define your hostname
|
hostName = "${config.host.name}"; # Define your hostname
|
||||||
|
|
||||||
# Pick only one of the below networking options.
|
# Pick only one of the below networking options.
|
||||||
# wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
# wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
# Configure network proxy if necessary
|
||||||
# proxy.default = "http://user:password@proxy:port/";
|
# proxy.default = "http://user:password@proxy:port/";
|
||||||
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
# firewall.allowedTCPPorts = [ ... ];
|
# firewall.allowedTCPPorts = [ ... ];
|
||||||
# firewall.allowedUDPPorts = [ ... ];
|
# firewall.allowedUDPPorts = [ ... ];
|
||||||
|
|||||||
@@ -17,6 +17,9 @@
|
|||||||
# enable = true;
|
# enable = true;
|
||||||
# enableSSHSupport = true;
|
# enableSSHSupport = true;
|
||||||
# };
|
# };
|
||||||
|
gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||||
|
nix-ld.enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -36,6 +39,10 @@
|
|||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
git
|
git
|
||||||
|
disktui
|
||||||
];
|
];
|
||||||
|
variables = {
|
||||||
|
EDITOR = "vim";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,22 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
programs = {
|
||||||
|
yubikey-manager.enable = true;
|
||||||
|
yubikey-touch-detector.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
age-plugin-yubikey
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
yubikey-agent.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
security = {
|
security = {
|
||||||
rtkit.enable = true;
|
rtkit.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -6,24 +7,32 @@
|
|||||||
xserver = {
|
xserver = {
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
# You can disable this if you're only using the Wayland session.
|
# You can disable this if you're only using the Wayland session.
|
||||||
enable = true;
|
enable = false;
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
xkb = {
|
xkb = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
variant = "";
|
variant = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# libinput.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
displayManager.sddm.enable = true;
|
libinput.enable = true;
|
||||||
desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing.enable = true;
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [
|
||||||
|
gutenprint
|
||||||
|
cnijfilter2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
# Enable sound with pipewire.
|
||||||
pulseaudio.enable = false;
|
pulseaudio.enable = false;
|
||||||
@@ -40,14 +49,56 @@
|
|||||||
# media-session.enable = true;
|
# media-session.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
|
upower.enable = true;
|
||||||
|
|
||||||
|
# Disable SSH daemon but generate host keys anyway for secret rekeying
|
||||||
openssh = {
|
openssh = {
|
||||||
|
enable = false;
|
||||||
|
generateHostKeys = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
system76-scheduler.settings.cfsProfiles.enable = true;
|
||||||
|
|
||||||
|
tlp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = false;
|
CPU_BOOST_ON_AC = 1;
|
||||||
PermitRootLogin = "prohibit-password";
|
CPU_BOOST_ON_BAT = 0;
|
||||||
AllowUsers = [ "eclypse" ];
|
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||||||
|
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||||
|
PLATFORM_PROFILE_ON_AC = "performance";
|
||||||
|
PLATFORM_PROFILE_ON_BAT = "balanced";
|
||||||
|
START_CHARGE_THRESH_BAT1 = 65; # Only STOP_CHARGE_THRESH available on Framework
|
||||||
|
STOP_CHARGE_THRESH_BAT1 = 80;
|
||||||
|
# Fixes stuttering Hyprland animations on Intel iGPU (https://wiki.hypr.land/Configuring/Performance/)
|
||||||
|
INTEL_GPU_MIN_FREQ_ON_AC = 300;
|
||||||
|
INTEL_GPU_MIN_FREQ_ON_BAT = 300;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Disable GNOME's power management (conflicts with TLP)
|
||||||
|
power-profiles-daemon.enable = false;
|
||||||
|
|
||||||
|
# Enable thermald (only necessary for Intel CPUs)
|
||||||
|
thermald.enable = true;
|
||||||
|
|
||||||
|
fwupd.enable = true;
|
||||||
|
|
||||||
|
fprintd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
powerManagement = {
|
||||||
|
enable = true;
|
||||||
|
powertop.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = false;
|
||||||
|
};
|
||||||
|
sane = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,12 +14,16 @@
|
|||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://devenv.cachix.org"
|
"https://devenv.cachix.org"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
];
|
];
|
||||||
|
extra-substituters = [ "https://vicinae.cachix.org" ];
|
||||||
|
extra-trusted-public-keys = [ "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
31
modules/system/tailscale.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
useRoutingFeatures = "client";
|
||||||
|
authKeyFile = config.age.secrets.tailscale-auth.path;
|
||||||
|
|
||||||
|
# * Only applied if `authKeyFile` is specified
|
||||||
|
extraUpFlags = [
|
||||||
|
"--ssh"
|
||||||
|
"--accept-routes=true"
|
||||||
|
];
|
||||||
|
extraSetFlags = [
|
||||||
|
"--operator=eclypse"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Taildrop
|
||||||
|
systemd.user.services.taildrop = {
|
||||||
|
description = "Taildrop File Receiver Service";
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.tailscale}/bin/tailscale file get --verbose --loop %h/Downloads/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
host,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
home-manager = {
|
home-manager = {
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
extraSpecialArgs = { inherit inputs host; };
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
|
||||||
users.eclypse = {
|
users.eclypse = {
|
||||||
imports = [ ../home ];
|
imports = [ ../home ];
|
||||||
@@ -21,6 +21,8 @@
|
|||||||
};
|
};
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
backupFileExtension = "backup";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
@@ -31,8 +33,10 @@
|
|||||||
extraGroups = [
|
extraGroups = [
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
|
"scanner"
|
||||||
|
"lp"
|
||||||
];
|
];
|
||||||
hashedPassword = "$6$33qMKGMsdYC//e/s$Z2mQCqDOwbP185OVOLsE63hg.orMrBbxR8WHIiZ9dAnNk3jgEsEU218qtgsQsyATvjsyHUPBQjsa/3JmNLoMM0";
|
hashedPasswordFile = config.age.secrets.eclypse-password.path;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
19
modules/system/virtualisation.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
virtualisation = {
|
||||||
|
# virtualbox.host = {
|
||||||
|
# enable = true;
|
||||||
|
# enableExtensionPack = true;
|
||||||
|
# };
|
||||||
|
podman.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
];
|
||||||
|
|
||||||
|
users.extraGroups.vboxusers.members = [ "eclypse" ];
|
||||||
|
}
|
||||||
@@ -8,6 +8,10 @@
|
|||||||
fontconfig.enable = true;
|
fontconfig.enable = true;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
nerd-fonts.fira-code
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
nerd-fonts.geist-mono
|
||||||
|
rubik
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
11
modules/unused/hypr/default.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hyprland.nix
|
||||||
|
./keybinds.nix
|
||||||
|
./monitors.nix
|
||||||
|
./pyprland.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
124
modules/unused/hypr/hyprland.nix
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hyprpolkitagent
|
||||||
|
hyprpicker
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = false;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
portalPackage =
|
||||||
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
source = [
|
||||||
|
"${config.xdg.configHome}/hypr/monitors.conf"
|
||||||
|
"${config.xdg.configHome}/hypr/noctalia/noctalia-colors.conf"
|
||||||
|
];
|
||||||
|
|
||||||
|
# monitor = [
|
||||||
|
# "desc:BOE 0x095F,2256x1504@60.00,0x0,1"
|
||||||
|
# "desc:LG Electronics LG TV SSCR2 0x01010101,3840x2160@120.00,2256x0,1"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
# Stolen from https://github.com/Vobledoble/nixparency-dots/
|
||||||
|
enabled = true;
|
||||||
|
bezier = [
|
||||||
|
"easeOutQuint,0.23,1,0.32,1"
|
||||||
|
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||||
|
"linear,0,0,1,1"
|
||||||
|
"almostLinear,0.5,0.5,0.75,1.0"
|
||||||
|
"quick,0.15,0,0.1,1"
|
||||||
|
];
|
||||||
|
animation = [
|
||||||
|
"global, 1, 10, default"
|
||||||
|
"border, 1, 5.39, easeOutQuint"
|
||||||
|
"windows, 1, 4.79, easeOutQuint"
|
||||||
|
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
|
||||||
|
"windowsOut, 1, 1.49, linear, popin 87%"
|
||||||
|
"fadeIn, 1, 1.73, almostLinear"
|
||||||
|
"fadeOut, 1, 1.46, almostLinear"
|
||||||
|
"fade, 1, 3.03, quick"
|
||||||
|
"layers, 1, 3.81, easeOutQuint"
|
||||||
|
"layersIn, 1, 4, easeOutQuint, fade"
|
||||||
|
"layersOut, 1, 1.5, linear, fade"
|
||||||
|
"fadeLayersIn, 1, 1.79, almostLinear"
|
||||||
|
"fadeLayersOut, 1, 1.39, almostLinear"
|
||||||
|
"workspaces, 1, 1.94, almostLinear, fade"
|
||||||
|
"workspacesIn, 1, 1.21, almostLinear, fade"
|
||||||
|
"workspacesOut, 1, 1.94, almostLinear, fade"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
debug.disable_logs = false;
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
border_size = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 20;
|
||||||
|
rounding_power = 2;
|
||||||
|
|
||||||
|
# active_opacity = 0.95;
|
||||||
|
# inactive_opacity = 0.85;
|
||||||
|
# fullscreen_opacity = 1.0;
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 2;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
new_optimizations = true;
|
||||||
|
popups = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shadow = {
|
||||||
|
enabled = true;
|
||||||
|
range = 4;
|
||||||
|
render_power = 3;
|
||||||
|
color = "rgba(1a1a1aee)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
kb_options = "compose:ralt";
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
vfr = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowrule = {
|
||||||
|
name = "floating-terminal-dropdown";
|
||||||
|
"match:class" = "term_dropdown";
|
||||||
|
float = "on";
|
||||||
|
};
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"systemctl --user enable --now hyprpolkitagent.service"
|
||||||
|
"noctalia-shell"
|
||||||
|
"pypr"
|
||||||
|
];
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"NIXOS_OZONE_WL, 1"
|
||||||
|
"HYPRSHOT_DIR, ${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}"
|
||||||
|
"XDG_CURRENT_DESKTOP, Hyprland"
|
||||||
|
"XDG_SESSION_TYPE, wayland"
|
||||||
|
"XDG_SESSION_DESKTOP, Hyprland"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
83
modules/unused/hypr/keybinds.nix
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec = "hyprctl dispatch submap global";
|
||||||
|
submap = "global";
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"$mod, W, exec, foot"
|
||||||
|
"$mod, S, exec, vicinae toggle"
|
||||||
|
"$mod, Escape, exec, noctalia-shell ipc call sessionMenu toggle"
|
||||||
|
|
||||||
|
# Window Movement
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
"$mod SHIFT, left, movewindow, l"
|
||||||
|
"$mod SHIFT, right, movewindow, r"
|
||||||
|
"$mod SHIFT, up, movewindow, u"
|
||||||
|
"$mod SHIFT, down, movewindow, d"
|
||||||
|
"$mod CTRL, left, workspace, r-1"
|
||||||
|
"$mod CTRL, right, workspace, r+1"
|
||||||
|
"$mod CTRL SHIFT, left, movetoworkspace, r-1"
|
||||||
|
"$mod CTRL SHIFT, right, movetoworkspace, r+1"
|
||||||
|
|
||||||
|
# Screenshoting
|
||||||
|
", PRINT, exec, grim -g \"$(slurp)\" - | wl-copy"
|
||||||
|
"SHIFT, PRINT, exec, wl-paste | swappy -f -"
|
||||||
|
|
||||||
|
# Media Control Keys
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
", XF86AudioMute, exec, pamixer -t"
|
||||||
|
"ALT, XF86AudioMute, exec, pamixer --default-source -t"
|
||||||
|
|
||||||
|
# Notification Center
|
||||||
|
"$mod, n, exec, noctalia-shell ipc call notifications toggleHistory"
|
||||||
|
|
||||||
|
# Scratchpads
|
||||||
|
"$mod, TAB, exec, pypr toggle term"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
|
||||||
|
builtins.concatLists (
|
||||||
|
builtins.genList (
|
||||||
|
i:
|
||||||
|
let
|
||||||
|
ws = i + 1;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
"$mod, code:1${toString i}, workspace, ${toString ws}"
|
||||||
|
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||||
|
]
|
||||||
|
) 9
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
"$mod ALT, mouse:272, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindel = [
|
||||||
|
# Volume Controls
|
||||||
|
", XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||||
|
", XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||||
|
"ALT, XF86AudioRaiseVolume, exec, pamixer --default-source -i 5"
|
||||||
|
"ALT, XF86AudioLowerVolume, exec, pamixer --default-source -d 5"
|
||||||
|
|
||||||
|
# Brightness Controls
|
||||||
|
", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
|
||||||
|
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
22
modules/unused/hypr/monitors.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.hyprdynamicmonitors.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
inputs.hyprdynamicmonitors.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
home.hyprdynamicmonitors = {
|
||||||
|
enable = true;
|
||||||
|
installExamples = false;
|
||||||
|
extraFlags = [
|
||||||
|
"--enable-lid-events"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/unused/hypr/pyprland.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pyprland
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile."hypr/pyprland.toml".text = ''
|
||||||
|
[pyprland]
|
||||||
|
plugins = ["scratchpads"]
|
||||||
|
|
||||||
|
[scratchpads.term]
|
||||||
|
command = "foot --app-id term_dropdown"
|
||||||
|
class = "term_dropdown"
|
||||||
|
animation = "fromTop"
|
||||||
|
margin = 150
|
||||||
|
size = "80% 80%"
|
||||||
|
max_size = "1920px 1080px"
|
||||||
|
multi = false
|
||||||
|
'';
|
||||||
|
}
|
||||||
30
modules/unused/hypridle.nix
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd = "pidof hyprlock || hyprlock --grace 10";
|
||||||
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
|
after_sleep_cmd = "hypctl dispatch dpms on";
|
||||||
|
};
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 300;
|
||||||
|
on-timeout = "loginctl lock-session";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 450;
|
||||||
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
|
on-resume = "hyprctl dispatch dpms on";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 600;
|
||||||
|
on-timeout = "systemctl suspend";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
108
modules/unused/hyprlock.nix
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
wallpaper,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = with config.lib.stylix.colors; {
|
||||||
|
general = {
|
||||||
|
hide_cursor = true;
|
||||||
|
};
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
path = "${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/${wallpaper}";
|
||||||
|
blur_size = 4;
|
||||||
|
blur_passes = 3;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input-field = [
|
||||||
|
rec {
|
||||||
|
size = "250, 50";
|
||||||
|
outline_thickness = 3;
|
||||||
|
dots_size = 0.25;
|
||||||
|
dots_spacing = 0.4;
|
||||||
|
outer_color = "rgba(${base0F}55)";
|
||||||
|
capslock_color = outer_color;
|
||||||
|
numlock_color = outer_color;
|
||||||
|
bothlock_color = outer_color;
|
||||||
|
inner_color = "rgba(${base0F}11)";
|
||||||
|
font_color = "rgba(${base0F}ff)";
|
||||||
|
fade_on_empty = true;
|
||||||
|
placeholder_text = "<i>Password...</i>";
|
||||||
|
position = "0, -60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
label = [
|
||||||
|
# Hours
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"<b><big> $(date +\"%H\") </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 112;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 350";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Minutes
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"<b><big> $(date +\"%M\") </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 112;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 220";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Day of the Week
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b><big> \"$(date +'%A')\" </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 22;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, 115";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Date
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b> \"$(date +'%d %b')\" </b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 18;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, 85";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Temperature
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b>Feels like<big> $(curl -s 'wttr.in?format=%t' | tr -d '+') </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 18;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 40";
|
||||||
|
halign = "center";
|
||||||
|
valign = "bottom";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Caps Lock Warning
|
||||||
|
{
|
||||||
|
text = "cmd[update:250] check-capslock";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 13;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, -120";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
87
modules/unused/mango.nix
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.mango.hmModules.mango
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.mango = {
|
||||||
|
enable = true;
|
||||||
|
settings = ''
|
||||||
|
source=${config.xdg.configHome}/mango/noctalia.conf
|
||||||
|
|
||||||
|
monitorrule=name:eDP-1,width:2256,height:1504,refresh:59.999001,x:0,y:0,scale:1.0,vrr:0,rr:0
|
||||||
|
monitorrule=name:LG Electronics LG TV SSCR2 *,width:3840,height:2160,refresh:120.0,x:2256,y:0,scale:1.0,vrr:0,rr:0
|
||||||
|
|
||||||
|
cursor_size=16
|
||||||
|
cursor_theme=catppuccin-mocha-dark-cursors
|
||||||
|
|
||||||
|
bind=SUPER,q,killclient
|
||||||
|
bind=SUPER,w,spawn,foot
|
||||||
|
bind=SUPER,a,spawn,vicinae toggle
|
||||||
|
bind=SUPER,Escape,spawn,noctalia-shell ipc call sessionMenu toggle
|
||||||
|
bind=SUPER,n,spawn,noctalia-shell ipc call notifications toggleHistory
|
||||||
|
|
||||||
|
bind=SUPER+SHIFT,r,reload_config
|
||||||
|
|
||||||
|
bind=SUPER,t,setlayout,tile
|
||||||
|
bind=SUPER,s,setlayout,scroller
|
||||||
|
|
||||||
|
bind=SUPER,f,togglefloating
|
||||||
|
bind=SUPER+SHIFT,f,togglefullscreen
|
||||||
|
|
||||||
|
bind=NONE,XF86AudioPrev,spawn,playerctl previous
|
||||||
|
bind=NONE,XF86AudioPlay,spawn,playerctl play-pause
|
||||||
|
bind=NONE,XF86AudioNext,spawn,playerctl next
|
||||||
|
|
||||||
|
bindl=NONE,XF86AudioRaiseVolume,spawn,pamixer -i 5
|
||||||
|
bindl=NONE,XF86AudioLowerVolume,spawn,pamixer -d 5
|
||||||
|
bindl=NONE,XF86AudioMute,spawn,pamixer -t
|
||||||
|
bindl=ALT,XF86AudioRaiseVolume,spawn,pamixer --default-source -i 5
|
||||||
|
bindl=ALT,XF86AudioLowerVolume,spawn,pamixer --default-source -d 5
|
||||||
|
bindl=ALT,XF86AudioMute,spawn,pamixer --default-source -t
|
||||||
|
|
||||||
|
bindl=NONE,XF86MonBrightnessUp,spawn,brightnessctl set 5%+
|
||||||
|
bindl=NONE,XF86MonBrightnessDown,spawn,brightnessctl set 5%-
|
||||||
|
|
||||||
|
bind=NONE,Print,spawn_shell,grim -g "$(slurp)" - | wl-copy
|
||||||
|
bind=SHIFT,Print,spawn_shell,wl-paste | swappy -f -
|
||||||
|
|
||||||
|
bind=SUPER,Up,focusdir,up
|
||||||
|
bind=SUPER,Down,focusdir,down
|
||||||
|
bind=SUPER,Left,focusdir,left
|
||||||
|
bind=SUPER,Right,focusdir,right
|
||||||
|
bind=SUPER+SHIFT,Up,exchange_client,up
|
||||||
|
bind=SUPER+SHIFT,Down,exchange_client,down
|
||||||
|
bind=SUPER+SHIFT,Left,exchange_client,left
|
||||||
|
bind=SUPER+SHIFT,Right,exchange_client,right
|
||||||
|
|
||||||
|
bind=SUPER+CTRL,Left,viewtoleft
|
||||||
|
bind=SUPER+CTRL,Right,viewtoright
|
||||||
|
bind=SUPER+CTRL+SHIFT,Left,tagtoleft
|
||||||
|
bind=SUPER+CTRL+SHIFT,Right,tagtoright
|
||||||
|
|
||||||
|
mousebind=SUPER,btn_left,moveresize,curmove
|
||||||
|
mousebind=SUPER,btn_right,moveresize,curresize
|
||||||
|
mousebind=SUPER+ALT,btn_left,moveresize,curresize
|
||||||
|
|
||||||
|
bind=SUPER,Tab,toggleoverview
|
||||||
|
|
||||||
|
blur=1
|
||||||
|
blur_params_radius=6
|
||||||
|
blur_params_num_passes=2
|
||||||
|
|
||||||
|
windowrule=blur:1,unfocused_opacity:0.95,focused_opacity:0.95,appid:foot
|
||||||
|
|
||||||
|
exec-once=${config.xdg.configHome}/mango/autostart.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
autostart_sh = ''
|
||||||
|
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=wlroots
|
||||||
|
noctalia-shell
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
104
modules/unused/swaync.nix
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.swaync = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
positionX = "right";
|
||||||
|
positionY = "top";
|
||||||
|
cssPriority = "user"; # "application"
|
||||||
|
|
||||||
|
control-center-width = 380;
|
||||||
|
control-center-height = 860;
|
||||||
|
control-center-margin-top = 10;
|
||||||
|
control-center-margin-bottom = 10;
|
||||||
|
control-center-margin-right = 10;
|
||||||
|
control-center-margin-left = 10;
|
||||||
|
|
||||||
|
notification-window-width = 400;
|
||||||
|
notification-icon-size = 48;
|
||||||
|
notification-body-image-height = 100;
|
||||||
|
notification-body-image-width = 200;
|
||||||
|
|
||||||
|
timeout = 4;
|
||||||
|
timeout-low = 2;
|
||||||
|
timeout-critical = 6;
|
||||||
|
|
||||||
|
fit-to-screen = false;
|
||||||
|
keyboard-shortcuts = true;
|
||||||
|
image-visibility = "when-available";
|
||||||
|
transition-time = 200;
|
||||||
|
hide-on-clear = false;
|
||||||
|
hide-on-action = false;
|
||||||
|
script-fail-notify = true;
|
||||||
|
scripts = {
|
||||||
|
example-script = {
|
||||||
|
exec = "echo 'Do something...'";
|
||||||
|
urgency = "Normal";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
notification-visibility = {
|
||||||
|
example-name = {
|
||||||
|
state = "muted";
|
||||||
|
urgency = "low";
|
||||||
|
app-name = "Spotify";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
widgets = [
|
||||||
|
"label"
|
||||||
|
"buttons-grid"
|
||||||
|
"mpris"
|
||||||
|
"dnd"
|
||||||
|
"title"
|
||||||
|
"notifications"
|
||||||
|
];
|
||||||
|
widget-config = {
|
||||||
|
title = {
|
||||||
|
text = "Notifications";
|
||||||
|
clear-all-button = true;
|
||||||
|
button-text = " ";
|
||||||
|
};
|
||||||
|
dnd = {
|
||||||
|
text = "Do Not Disturb";
|
||||||
|
};
|
||||||
|
label = {
|
||||||
|
max-lines = 1;
|
||||||
|
text = " ";
|
||||||
|
};
|
||||||
|
mpris = {
|
||||||
|
image-size = 96;
|
||||||
|
image-radius = 12;
|
||||||
|
};
|
||||||
|
volume = {
|
||||||
|
label = "";
|
||||||
|
show-per-app = true;
|
||||||
|
};
|
||||||
|
buttons-grid = {
|
||||||
|
actions = [
|
||||||
|
{
|
||||||
|
label = "";
|
||||||
|
command = "pamixer -t";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "";
|
||||||
|
command = "pamixer --default-source -t";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "";
|
||||||
|
command = "nmtui";
|
||||||
|
}
|
||||||
|
# {
|
||||||
|
# label = "";
|
||||||
|
# command = "blueman-manager";
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# label = "";
|
||||||
|
# command = "nwg-look";
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -17,6 +18,7 @@
|
|||||||
aaron-bond.better-comments
|
aaron-bond.better-comments
|
||||||
yzane.markdown-pdf
|
yzane.markdown-pdf
|
||||||
mechatroner.rainbow-csv
|
mechatroner.rainbow-csv
|
||||||
|
catppuccin.catppuccin-vsc
|
||||||
|
|
||||||
# Remote development
|
# Remote development
|
||||||
ms-vscode-remote.remote-ssh
|
ms-vscode-remote.remote-ssh
|
||||||
@@ -46,6 +48,14 @@
|
|||||||
# General
|
# General
|
||||||
"editor.formatOnSave" = true;
|
"editor.formatOnSave" = true;
|
||||||
"workbench.iconTheme" = "material-icon-theme";
|
"workbench.iconTheme" = "material-icon-theme";
|
||||||
|
"workbench.colorTheme" = "Catppuccin Mocha";
|
||||||
|
"catppuccin.accentColor" = "flamingo";
|
||||||
|
|
||||||
|
# Remote SSH
|
||||||
|
# VSCode attempts to write to ~/.ssh/config for remote ssh connections.
|
||||||
|
# Because ~/.ssh/config is managed with home-manager, it is not writeable.
|
||||||
|
# So we specify a custom ssh config path
|
||||||
|
"remote.SSH.configFile" = "${config.home.homeDirectory}/.ssh/vscode-config";
|
||||||
|
|
||||||
# Prettier
|
# Prettier
|
||||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||||
@@ -85,6 +95,13 @@
|
|||||||
|
|
||||||
# C / C++
|
# C / C++
|
||||||
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
|
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
|
||||||
|
"C_Cpp.default.cStandard" = "gnu17";
|
||||||
|
"[c]" = {
|
||||||
|
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||||
|
};
|
||||||
|
"[cpp]" = {
|
||||||
|
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
143
modules/unused/waybar/default.nix
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
enable = false;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
margin-left = 10;
|
||||||
|
margin-right = 10;
|
||||||
|
margin-top = 5;
|
||||||
|
fixed-center = true;
|
||||||
|
reload_style_on_change = false;
|
||||||
|
|
||||||
|
"hyprland/workspaces" = import ./modules/hyprland-workspaces.nix { };
|
||||||
|
"custom/menu" = import ./modules/menu.nix { };
|
||||||
|
"hyprland/window" = import ./modules/hyprland-window.nix { };
|
||||||
|
"disk" = import ./modules/disk.nix { };
|
||||||
|
"cpu" = import ./modules/cpu.nix { };
|
||||||
|
"memory" = import ./modules/memory.nix { };
|
||||||
|
"temperature" = import ./modules/temperature.nix { };
|
||||||
|
"idle_inhibitor" = import ./modules/idle-inhibitor.nix { };
|
||||||
|
"tray" = import ./modules/tray.nix { };
|
||||||
|
"network" = import ./modules/network.nix { };
|
||||||
|
"wireplumber" = import ./modules/wireplumber.nix { };
|
||||||
|
"backlight" = import ./modules/backlight.nix { };
|
||||||
|
"mpris" = import ./modules/mpris.nix { };
|
||||||
|
"battery" = import ./modules/battery.nix { full-at = 80; }; # Change this to come from the TLP setting
|
||||||
|
"clock" = import ./modules/clock.nix { };
|
||||||
|
"custom/power" = import ./modules/power.nix { };
|
||||||
|
"custom/hyprpicker" = import ./modules/hyprpicker.nix { };
|
||||||
|
"custom/separator#blank" = {
|
||||||
|
format = "";
|
||||||
|
interval = "once";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"custom/menu"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"clock"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"custom/hyprpicker"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"tray"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"group/motherboard"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"wireplumber"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"battery"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"custom/power"
|
||||||
|
];
|
||||||
|
|
||||||
|
"group/motherboard" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"temperature"
|
||||||
|
"disk"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
style = ''
|
||||||
|
@define-color base00 #192435; /* Darkest background (night sky / deep shadows) */
|
||||||
|
@define-color base01 #243449; /* Slightly lighter background */
|
||||||
|
@define-color base02 #36455D; /* Selection / inactive UI */
|
||||||
|
@define-color base03 #51637E; /* Comments / subtle foreground */
|
||||||
|
|
||||||
|
@define-color base04 #8FA3BA; /* Dark foreground (status bars) */
|
||||||
|
@define-color base05 #C7D2DF; /* Default foreground (text) */
|
||||||
|
@define-color base06 #E3EAF2; /* Light foreground (highlighted text) */
|
||||||
|
@define-color base07 #F4D9C7; /* Bright foreground (lantern light) */
|
||||||
|
|
||||||
|
@define-color base08 #D88C7A; /* Red / Errors (warm wood & lantern glow) */
|
||||||
|
@define-color base09 #E5AD97; /* Orange / Numbers / Constants */
|
||||||
|
@define-color base0A #E9C48A; /* Yellow / Classes / Warnings */
|
||||||
|
@define-color base0B #9FBFA8; /* Green / Strings */
|
||||||
|
@define-color base0C #8FB6C8; /* Cyan / Support / Regex */
|
||||||
|
@define-color base0D #7FA6D9; /* Blue / Functions / Keywords */
|
||||||
|
@define-color base0E #B69BCB; /* Purple / Types / Specials */
|
||||||
|
@define-color base0F #B0896A; /* Brown / Deprecated */
|
||||||
|
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-family: "JetBrainsMono Nerd Font Propo"; /* The Propo(rtional) variant of the ensures icons are properly spaced */
|
||||||
|
font-feature-settings: '"zero", "tnum", "ss01", "ss02", "ss03", "cv01"';
|
||||||
|
font-weight: 700;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.module {
|
||||||
|
padding: 0 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left,
|
||||||
|
.modules-center,
|
||||||
|
.modules-right {
|
||||||
|
background: @base00;
|
||||||
|
padding: 6px 8px;
|
||||||
|
border-color: @base03;
|
||||||
|
border-width: 1.5px;
|
||||||
|
border-style: solid;
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: @base04;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
padding: 0 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#motherboard,
|
||||||
|
#custom-menu {
|
||||||
|
color: @base04;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber,
|
||||||
|
#battery,
|
||||||
|
#custom-power,
|
||||||
|
#custom-hyprpicker,
|
||||||
|
#clock {
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
27
modules/unused/waybar/modules/backlight.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Backlight {percent}%";
|
||||||
|
format-icons = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
icon-size = 10;
|
||||||
|
on-scroll-down = "brightnessctl set 10%-";
|
||||||
|
on-scroll-up = "brightnessctl set +10%";
|
||||||
|
}
|
||||||
33
modules/unused/waybar/modules/battery.nix
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
full-at ? 100,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
inherit full-at;
|
||||||
|
states = {
|
||||||
|
# These values are percentages based on `full-at`
|
||||||
|
good = 95;
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-plugged = " {capacity}%";
|
||||||
|
format-full = "{icon} {capacity}%";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
format-time = "{H}h {M}min";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{timeTo} {power}w";
|
||||||
|
}
|
||||||
13
modules/unused/waybar/modules/bluetooth.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "";
|
||||||
|
format-disabled = "";
|
||||||
|
format-connected = " {num_connections}";
|
||||||
|
tooltip-format = " {device_alias}";
|
||||||
|
tooltip-format-connected = "{device_enumerate}";
|
||||||
|
tooltip-format-enumerate-connected = " {device_alias} {device_battery_percentage}%";
|
||||||
|
tooltip = true;
|
||||||
|
# on-click = "blueman-manager";
|
||||||
|
}
|
||||||
21
modules/unused/waybar/modules/clock.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
interval = 1; # Poll every second
|
||||||
|
format = "{:%H:%M - %d/%b}";
|
||||||
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||||
|
calendar = {
|
||||||
|
mode = "year";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "right";
|
||||||
|
on-scroll = 1;
|
||||||
|
format = {
|
||||||
|
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||||
|
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||||
|
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/unused/waybar/modules/cpu.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{usage}% ";
|
||||||
|
interval = 1;
|
||||||
|
}
|
||||||
10
modules/unused/waybar/modules/disk.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
interval = 30;
|
||||||
|
format = "{percentage_used}% ";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{specific_free:0.1f}/{specific_total:0.1f}GiB";
|
||||||
|
unit = "GiB";
|
||||||
|
}
|
||||||
15
modules/unused/waybar/modules/hyprland-window.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{title}";
|
||||||
|
max-length = 40;
|
||||||
|
separate-outputs = true; # List different titles for each monitor
|
||||||
|
offscreen-css = true; # No idea what this does
|
||||||
|
offscreen-css-text = "(inactive)"; # No idea what this does either
|
||||||
|
rewrite = {
|
||||||
|
"(.*) — Mozilla Firefox" = " Firefox";
|
||||||
|
# Foot terminal doesn't display any title for some reason
|
||||||
|
# Find a fix
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/unused/waybar/modules/hyprland-workspaces.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
active-only = false; # Show all workspaces
|
||||||
|
all-outputs = true; # Show all workspace groups
|
||||||
|
format = "{icon}";
|
||||||
|
show-special = false; # Hide Hyprland's "special" workspaces
|
||||||
|
on-click = "activate";
|
||||||
|
on-scroll-up = "hyprctl dispatch workspace r+1";
|
||||||
|
on-scroll-down = "hyprctl dispatch workspace r-1";
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [ ];
|
||||||
|
"2" = [ ];
|
||||||
|
"3" = [ ];
|
||||||
|
"4" = [ ];
|
||||||
|
"5" = [ ];
|
||||||
|
};
|
||||||
|
format-icons = {
|
||||||
|
active = "";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/unused/waybar/modules/hyprpicker.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "";
|
||||||
|
on-click = "hyprpicker | tr -d '\\n' | wl-copy";
|
||||||
|
}
|
||||||
10
modules/unused/waybar/modules/idle-inhibitor.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = " ";
|
||||||
|
deactivated = " ";
|
||||||
|
};
|
||||||
|
}
|
||||||
11
modules/unused/waybar/modules/memory.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
interval = 10;
|
||||||
|
format = "{used:0.1f}G ";
|
||||||
|
format-alt = "{percentage}% ";
|
||||||
|
format-alt-click = "click";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{used:0.1f}/{total:0.1f}GiB";
|
||||||
|
}
|
||||||
10
modules/unused/waybar/modules/menu.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{}";
|
||||||
|
exec = "echo ; echo app launcher";
|
||||||
|
interval = 86400;
|
||||||
|
tooltip = true;
|
||||||
|
on-click = "walker";
|
||||||
|
}
|
||||||
26
modules/unused/waybar/modules/mpris.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
interval = 10;
|
||||||
|
format = "{player_icon} ";
|
||||||
|
format-paused = "{status_icon} <i>{dynamic}</i>";
|
||||||
|
player-icons = {
|
||||||
|
chromium = "";
|
||||||
|
mpd = "";
|
||||||
|
default = "";
|
||||||
|
firefox = "";
|
||||||
|
kdeconnect = "";
|
||||||
|
mopidy = "";
|
||||||
|
mpv = "";
|
||||||
|
spotify = "";
|
||||||
|
vlc = "";
|
||||||
|
};
|
||||||
|
status-icons = {
|
||||||
|
paused = "";
|
||||||
|
playing = "";
|
||||||
|
stopped = "";
|
||||||
|
};
|
||||||
|
max-length = 30;
|
||||||
|
|
||||||
|
}
|
||||||
22
modules/unused/waybar/modules/network.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = "{icon}";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-disconnected = "";
|
||||||
|
format-linked = " {ifname} (No IP)";
|
||||||
|
tooltip-format = "{ipaddr} {bandwidthUpBytes} {bandwidthDownBytes}";
|
||||||
|
tooltip-format-wifi = "{essid} {icon} {signalStrength}%";
|
||||||
|
tooltip-format-ethernet = "{essid} ";
|
||||||
|
tooltip-format-disconnected = " Disconnected";
|
||||||
|
max-length = 50;
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
}
|
||||||
10
modules/unused/waybar/modules/power.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "⏻";
|
||||||
|
exec = "echo ; echo power";
|
||||||
|
on-click = "wlogout";
|
||||||
|
interval = 86400; # once every day
|
||||||
|
tooltip = true;
|
||||||
|
}
|
||||||
14
modules/unused/waybar/modules/temperature.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
interval = 10;
|
||||||
|
tooltip = true;
|
||||||
|
# Thermal Zone 12 refers to the CPU package temp
|
||||||
|
# This might vary between devices. Maybe make it an input?
|
||||||
|
thermal-zone = 12;
|
||||||
|
critical-threshold = 85;
|
||||||
|
format-critical = "{temperatureC}°C {icon}";
|
||||||
|
format = "{temperatureC}°C {icon}";
|
||||||
|
format-icons = [ "" ];
|
||||||
|
}
|
||||||
7
modules/unused/waybar/modules/tray.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
icon-size = 15;
|
||||||
|
spacing = 8;
|
||||||
|
}
|
||||||
27
modules/unused/waybar/modules/wireplumber.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{icon} {volume}% {format_source}";
|
||||||
|
format-muted = " {format_source}";
|
||||||
|
format-source = " {volume}%";
|
||||||
|
format-source-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
scroll-step = 5.0;
|
||||||
|
on-click = "pavucontrol -t 3";
|
||||||
|
on-click-right = "pavucontrol -t 4";
|
||||||
|
tooltip-format = "{node_name} {volume}%\n{source_desc} {source_volume}%";
|
||||||
|
}
|
||||||
116
modules/unused/wlogout.nix
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
wallpaper,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.wlogout = {
|
||||||
|
enable = true;
|
||||||
|
layout = [
|
||||||
|
{
|
||||||
|
label = "lock";
|
||||||
|
action = "loginctl lock-session";
|
||||||
|
text = "Lock";
|
||||||
|
keybind = "l";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "hibernate";
|
||||||
|
action = "systemctl hibernate";
|
||||||
|
text = "Hibernate";
|
||||||
|
keybind = "h";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logout";
|
||||||
|
action = "uwsm stop";
|
||||||
|
text = "Logout";
|
||||||
|
keybind = "e";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "shutdown";
|
||||||
|
action = "systemctl poweroff";
|
||||||
|
text = "Shutdown";
|
||||||
|
keybind = "s";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "suspend";
|
||||||
|
action = "systemctl suspend";
|
||||||
|
text = "Suspend";
|
||||||
|
keybind = "u";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "reboot";
|
||||||
|
action = "systemctl reboot";
|
||||||
|
text = "Reboot";
|
||||||
|
keybind = "r";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
# * IMPORTANT
|
||||||
|
# * The for some reason the SVG icons will not be rendered when wlogout is called
|
||||||
|
# * from a hyprland keybind unless librsvg is installed.
|
||||||
|
# * See packages.nix (programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];)
|
||||||
|
style = with config.lib.stylix.colors.withHashtag; ''
|
||||||
|
* {
|
||||||
|
font-family: "Rubik Light";
|
||||||
|
background-image: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background: url("${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/${wallpaper}");
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin: 10px;
|
||||||
|
border-radius: 20px;
|
||||||
|
border-color: ${base0F};
|
||||||
|
text-decoration-color: ${base0F};
|
||||||
|
color: ${base0F};
|
||||||
|
background-color: alpha(${base01}, 0.5);
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:focus, button:active, button:hover {
|
||||||
|
background-color: alpha(${base0F}, 0.3);
|
||||||
|
outline-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-size: 27%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button span {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lock {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/lock.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#logout {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/logout.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#suspend {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/suspend.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#hibernate {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/hibernate.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#shutdown {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/shutdown.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#reboot {
|
||||||
|
background-image: url("${pkgs.wlogout}/share/wlogout/assets/reboot.svg");
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
17
profiles/intel.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-media-driver
|
||||||
|
intel-ocl
|
||||||
|
intel-vaapi-driver
|
||||||
|
vpl-gpu-rt
|
||||||
|
libvdpau-va-gl
|
||||||
|
libva-vdpau-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
42
profiles/nvidia.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Enable OpenGL
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
|
||||||
|
# Modesetting is required.
|
||||||
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||||
|
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||||
|
# of just the bare essentials.
|
||||||
|
powerManagement.enable = true;
|
||||||
|
|
||||||
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
|
# Use the Nvidia open source kernel module (not to be confused with the
|
||||||
|
# independent third-party "nouveau" open source driver).
|
||||||
|
# Support is limited to the Turing and later architectures. Full list of
|
||||||
|
# supported GPUs is at:
|
||||||
|
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||||
|
# Only available from driver 513.43.04+
|
||||||
|
open = false;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
secrets/age-yubikey-identity-d9ed335b.pub
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Serial: 27501992, Slot: 1
|
||||||
|
# Name: agenix-rekey-alpha
|
||||||
|
# Created: Sat, 20 Dec 2025 06:01:41 +0000
|
||||||
|
# PIN policy: Once (A PIN is required once per session, if set)
|
||||||
|
# Touch policy: Always (A physical touch is required for every decryption)
|
||||||
|
# Recipient: age1yubikey1qvq48l020xg9xtt5epdpnzp3kvkm2vvc57357p58pyfq557a8q8hv84c82e
|
||||||
|
AGE-PLUGIN-YUBIKEY-14ZJ6XQVZM8KNXKCT2PKLW
|
||||||
BIN
secrets/eclypse-password.age
Normal file
BIN
secrets/eclypsecloud-eclypse.age
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw HgBYYM/VqZ4KN4V4TrGmk86wPRhDgM+VaXfa3VlODRM
|
||||||
|
OdM//HvJTzB7/jw+c+6euiYz9ptUf/z22tzJSgxTD+w
|
||||||
|
-> B%P@9-grease
|
||||||
|
Zgr76aiZDhCWBdnbxoOptAfEuM1RWw1bN4rsUCec4VP0cDN856bCtaQjnWWbSTvv
|
||||||
|
YPHtmw
|
||||||
|
--- obv+bg63dTlnoke3tQdkAizcAqsYG2sUjYBZrhGZG68
|
||||||
|
(2Ÿã$ÃY@ö<>i°7òjþ<02>ÕarÄ7¼X$UêÝ~åô|œå'¯óéoo`¢†¯¹úDƆ{¸#º%š<<mÊO)Vƒõ2C<17><!¨e©Ýº(24·¹Œ~™¦
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw FdmJ1odfweTU4HWPTeWuEcoIUq1V4ke28BWmlNNdNHg
|
||||||
|
9qi5QQHociRgSzZ97HifRDf+/Hh0cCZJzFsobpP1cpU
|
||||||
|
-> 4pq5-grease
|
||||||
|
yKZUs4lQM6BQgsyzMn3T1pvUt393/NvcRe7KwuTCDCU
|
||||||
|
--- N7NO5Ps2SG3SFNNnNNvYUSGgA0b5Dk7H6+x0rt6JtXA
|
||||||
|
DlŽ]epÛ(F0i3<Æû¿‰„Sm×E½EhÊ£ïS¯eXèËÁçŸÒô›V$0žÅœ©é c`²ˆ%ÕøöüàQ©£¯â7&øX,ëéLoš÷?QQ+ª~|%{‡»ð-Vï%H±):Ö<>]Kx¼½KªÎNXÁª6éÂÛ¦ejOÉë#XÊÇ
|
||||||
8
secrets/tailscale-auth.age
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> piv-p256 2e0zWw ApoXPsP2VGfJnOt+dDk7DfssOkbM/3vkn4jwSfxD4UAj
|
||||||
|
jtn4DCA/EyrTl9DW1hs84yd3RgVuDU77ggM218HiUdc
|
||||||
|
-> *E(-grease Ull1npy_ >F7 *?
|
||||||
|
IM+85AtRNlMrFgqk/uAG
|
||||||
|
--- nxCTKF6R3E/qaTTgr7jZdz4ZLRE15NsJpyKHizEJnPw
|
||||||
|
ø>¡"l°ðé´ßrésNŒ®V*FËIÝ|•†0XÓ8öÂ
|
||||||
|
ò<EFBFBD>|PžäÏÙF »ÊD“\xðZ¯šP±ó]¶Ê§€t-"n¦m<C2A6>©ˆÐø&‘Í|À %”þ‡æÝ.Ó†
|
||||||