Compare commits
19 Commits
modularizi
...
main
Author | SHA1 | Date | |
---|---|---|---|
da62178c02 | |||
832b2056aa | |||
24a8ccfc8f | |||
33f45c4cad | |||
fd3e5f781f | |||
9dbf38ec77 | |||
fa31e0738f | |||
d336c8bf9c | |||
065a363242 | |||
44f55e90bc | |||
c1d3821667 | |||
ff4438867c | |||
9e60951806 | |||
60c824cf42 | |||
bb8e08f6c6 | |||
b1ac37d40e | |||
15bfe273d9 | |||
f88c275f57 | |||
1c11c6486d |
10
README.md
10
README.md
@ -6,6 +6,7 @@ My modular NixOS configuration with Home Manager integration.
|
|||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
| nix /
|
| nix /
|
||||||
|-flake.nix (Where everything starts)
|
|-flake.nix (Where everything starts)
|
||||||
|-assets/ (profile pic, sddm background, etc)
|
|-assets/ (profile pic, sddm background, etc)
|
||||||
@ -13,11 +14,14 @@ My modular NixOS configuration with Home Manager integration.
|
|||||||
|-modules/ (Pieces I want to be able to switch in and out)
|
|-modules/ (Pieces I want to be able to switch in and out)
|
||||||
|--system/ (System level configs like bootloader, GPU drivers)
|
|--system/ (System level configs like bootloader, GPU drivers)
|
||||||
|--home/ (Most of the juice is here. Managed by home manager. Program configs and such)
|
|--home/ (Most of the juice is here. Managed by home manager. Program configs and such)
|
||||||
|
```
|
||||||
|
|
||||||
## Base setup
|
## Base setup
|
||||||
|
|
||||||
**OS:** NixOS
|
**OS:** NixOS
|
||||||
|
|
||||||
**Display Manager:** SDDM with the [Chili Theme](https://github.com/MarianArlt/sddm-chili) and a custom wallpaper to match my theme.
|
**Display Manager:** SDDM with the [Chili Theme](https://github.com/MarianArlt/sddm-chili) and a custom wallpaper to match my theme.
|
||||||
|
|
||||||
**Window Manager:** HyprLand
|
**Window Manager:** HyprLand
|
||||||
|
|
||||||
### Desktop Environment
|
### Desktop Environment
|
||||||
@ -59,4 +63,8 @@ tools since they played a lot nicer with stylix for theming as well as just resp
|
|||||||
|
|
||||||
## Theming
|
## Theming
|
||||||
|
|
||||||
- Consistent **Gruvbox** color scheme across all applications thanks to stylix
|
- Consistent **Gruvbox** color scheme across all applications thanks to stylix
|
||||||
|
|
||||||
|
## Extra Features
|
||||||
|
|
||||||
|
- [Solaar](https://pwr-solaar.github.io/Solaar/) to manage my logitech mouse.
|
BIN
assets/Fantasy-Landscape3.png
Normal file
BIN
assets/Fantasy-Landscape3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 MiB |
BIN
assets/lockscreen.png
Normal file
BIN
assets/lockscreen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 MiB |
BIN
assets/slums.png
Normal file
BIN
assets/slums.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.6 MiB |
BIN
assets/wallpaper.png
Normal file
BIN
assets/wallpaper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 MiB |
532
flake.lock
generated
532
flake.lock
generated
@ -1,5 +1,38 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"aquamarine": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755946532,
|
||||||
|
"narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"base16": {
|
"base16": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"fromYaml": "fromYaml"
|
"fromYaml": "fromYaml"
|
||||||
@ -115,6 +148,38 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747046372,
|
||||||
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_4": {
|
||||||
|
"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-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
@ -178,6 +243,24 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fromYaml": {
|
"fromYaml": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -196,8 +279,8 @@
|
|||||||
},
|
},
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_3",
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"neovim-nightly-overlay",
|
"neovim-nightly-overlay",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
@ -218,6 +301,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"neovim-nightly-overlay",
|
"neovim-nightly-overlay",
|
||||||
@ -298,9 +403,218 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprcursor": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753964049,
|
||||||
|
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755678602,
|
||||||
|
"narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "157cc52065a104fc3b8fa542ae648b992421d1c7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": "aquamarine",
|
||||||
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprland-qtutils": "hyprland-qtutils",
|
||||||
|
"hyprlang": "hyprlang",
|
||||||
|
"hyprutils": "hyprutils",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"systems": "systems",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756656879,
|
||||||
|
"narHash": "sha256-QCNUXw1J0BaykSKSb9jp5h1v4YVBLVcekhrxnivlgY4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "5bb8adbc3228901d199e8d22d6f712bd1d7d4e15",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1749046714,
|
||||||
|
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-qt-support": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1749154592,
|
||||||
|
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qt-support",
|
||||||
|
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qt-support",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-qtutils": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-qt-support": "hyprland-qt-support",
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"hyprlang",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753819801,
|
||||||
|
"narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753622892,
|
||||||
|
"narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprshell": {
|
"hyprshell": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754802608,
|
"lastModified": 1754802608,
|
||||||
@ -316,6 +630,56 @@
|
|||||||
"url": "https://gitgud.foo/thegrind/hypr-shell.git"
|
"url": "https://gitgud.foo/thegrind/hypr-shell.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprutils": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756117388,
|
||||||
|
"narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755184602,
|
||||||
|
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"my-assets": {
|
"my-assets": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -330,12 +694,12 @@
|
|||||||
},
|
},
|
||||||
"neovim-nightly-overlay": {
|
"neovim-nightly-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"git-hooks": "git-hooks",
|
"git-hooks": "git-hooks",
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
"hercules-ci-effects": "hercules-ci-effects",
|
||||||
"neovim-src": "neovim-src",
|
"neovim-src": "neovim-src",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -369,6 +733,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756266583,
|
||||||
|
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754725699,
|
"lastModified": 1754725699,
|
||||||
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=",
|
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=",
|
||||||
@ -384,7 +764,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754800730,
|
"lastModified": 1754800730,
|
||||||
"narHash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
|
"narHash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
|
||||||
@ -400,7 +780,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754498491,
|
"lastModified": 1754498491,
|
||||||
"narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=",
|
"narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=",
|
||||||
@ -416,6 +796,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708161998,
|
||||||
|
"narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "84d981bae8b5e783b3b548de505b22880559515f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
@ -441,14 +837,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755960406,
|
||||||
|
"narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"hyprland": "hyprland",
|
||||||
"hyprshell": "hyprshell",
|
"hyprshell": "hyprshell",
|
||||||
"my-assets": "my-assets",
|
"my-assets": "my-assets",
|
||||||
"neovim-nightly-overlay": "neovim-nightly-overlay",
|
"neovim-nightly-overlay": "neovim-nightly-overlay",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"stylix": "stylix"
|
"stylix": "stylix",
|
||||||
|
"zig": "zig"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stylix": {
|
"stylix": {
|
||||||
@ -464,7 +885,7 @@
|
|||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems",
|
"systems": "systems_2",
|
||||||
"tinted-foot": "tinted-foot",
|
"tinted-foot": "tinted-foot",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
@ -486,6 +907,36 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@ -601,6 +1052,67 @@
|
|||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755354946,
|
||||||
|
"narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zig": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_4",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755864794,
|
||||||
|
"narHash": "sha256-hgnov6RLA+DD4Uocs/vCbiH3/3sKvqiJOKHpdhGyVAI=",
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"rev": "5cd601f8760d2383210b7b8c8a45fc79388f3ddf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
@ -7,11 +7,17 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
hyprshell.url = "git+https://gitgud.foo/thegrind/hypr-shell.git";
|
hyprshell.url = "git+https://gitgud.foo/thegrind/hypr-shell.git";
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
# hyprland-plugins = {
|
||||||
|
# url = "github:hyprwm/hyprland-plugins";
|
||||||
|
# inputs.hyprland.follows = "hyprland";
|
||||||
|
# };
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:danth/stylix";
|
url = "github:danth/stylix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
|
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
|
||||||
|
zig.url = "github:mitchellh/zig-overlay";
|
||||||
|
|
||||||
my-assets = {
|
my-assets = {
|
||||||
url = "path:./assets";
|
url = "path:./assets";
|
||||||
@ -24,6 +30,7 @@
|
|||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
my-assets,
|
my-assets,
|
||||||
|
zig,
|
||||||
...
|
...
|
||||||
}@inputs:
|
}@inputs:
|
||||||
let
|
let
|
||||||
@ -32,6 +39,7 @@
|
|||||||
# Common overlays for all hosts
|
# Common overlays for all hosts
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.neovim-nightly-overlay.overlays.default
|
inputs.neovim-nightly-overlay.overlays.default
|
||||||
|
inputs.zig.overlays.default
|
||||||
];
|
];
|
||||||
|
|
||||||
# Helper function to create a host configuration
|
# Helper function to create a host configuration
|
||||||
@ -71,6 +79,7 @@
|
|||||||
./modules/system/nvidia.nix
|
./modules/system/nvidia.nix
|
||||||
./modules/system/nfs.nix
|
./modules/system/nfs.nix
|
||||||
./modules/system/display-manager/sddm.nix
|
./modules/system/display-manager/sddm.nix
|
||||||
|
./modules/system/gaming.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
laptop = mkHost "laptop" [
|
laptop = mkHost "laptop" [
|
||||||
|
191
hosts/common-config.nix
Normal file
191
hosts/common-config.nix
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
hostname,
|
||||||
|
assets,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Bootloader.
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Mount my second drive
|
||||||
|
supportedFilesystems = [ "ntfs" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = hostname;
|
||||||
|
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
time = {
|
||||||
|
timeZone = "America/New_York";
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Flatpak is here just for discord pretty much
|
||||||
|
flatpak = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.flatpak-repo = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = [ pkgs.flatpak ];
|
||||||
|
script = ''
|
||||||
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
security = {
|
||||||
|
rtkit = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
brave
|
||||||
|
git
|
||||||
|
openssh
|
||||||
|
xdg-user-dirs-gtk # This helps with Nautilus integration
|
||||||
|
cachix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set up my user icon
|
||||||
|
etc = {
|
||||||
|
"avatars/javi.png".source = "${assets}/user-icon.png";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.javi = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "javi";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
useDefaultShell = true;
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
system = {
|
||||||
|
stateVersion = "25.05"; # Did you read the comment?
|
||||||
|
activationScripts.avatar = ''
|
||||||
|
mkdir -p /var/lib/AccountsService/icons
|
||||||
|
ln -sf /etc/avatars/javi.png /var/lib/AccountsService/icons/javi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org/"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
hyprland.enable = true;
|
||||||
|
ssh = {
|
||||||
|
startAgent = true;
|
||||||
|
extraConfig = "
|
||||||
|
Host myhost
|
||||||
|
Hostname gitgud.foo
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
# More thunar support
|
||||||
|
xfconf = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||||
|
# image = "/home/javi/Documents/wallpapers/Fantasy-Mountain.png";
|
||||||
|
polarity = "dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable home manager
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
zigpkg = pkgs.zigpkgs.master;
|
||||||
|
assets = assets;
|
||||||
|
};
|
||||||
|
users = {
|
||||||
|
"javi" = {
|
||||||
|
imports = [
|
||||||
|
../modules/home/home.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -8,179 +8,29 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
../common-config.nix
|
||||||
|
../../modules/system/nix-valet.nix
|
||||||
|
../../modules/system/device-management/logitech.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Bootloader.
|
# Mount second hard drive
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
supportedFilesystems = [
|
||||||
systemd-boot = {
|
"ntfs"
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
efi = {
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Mount my second drive
|
|
||||||
supportedFilesystems = [ "ntfs" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = hostname;
|
|
||||||
|
|
||||||
networkmanager = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
time = {
|
|
||||||
timeZone = "America/New_York";
|
|
||||||
};
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
printing = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Flatpak is here just for discord pretty much
|
|
||||||
flatpak = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
pulseaudio = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.flatpak-repo = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.flatpak ];
|
|
||||||
script = ''
|
|
||||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
security = {
|
|
||||||
rtkit = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
brave
|
|
||||||
git
|
|
||||||
openssh
|
|
||||||
pkgs.ntfs3g
|
|
||||||
xdg-user-dirs-gtk # This helps with Nautilus integration
|
|
||||||
cachix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Set up my user icon
|
|
||||||
etc = {
|
|
||||||
"avatars/javi.png".source = "${assets}/user-icon.png";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.javi = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "javi";
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
useDefaultShell = true;
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
system = {
|
fileSystems."/home/javi/working-files" = {
|
||||||
stateVersion = "25.05"; # Did you read the comment?
|
|
||||||
activationScripts.avatar = ''
|
|
||||||
mkdir -p /var/lib/AccountsService/icons
|
|
||||||
ln -sf /etc/avatars/javi.png /var/lib/AccountsService/icons/javi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
hyprland.enable = true;
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
startAgent = true;
|
|
||||||
extraConfig = "
|
|
||||||
Host myhost
|
|
||||||
Hostname gitgud.foo
|
|
||||||
";
|
|
||||||
};
|
|
||||||
|
|
||||||
# More thunar support
|
|
||||||
xfconf = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Mount the second drive
|
|
||||||
fileSystems."/mnt/working-files" = {
|
|
||||||
device = "/dev/disk/by-uuid/BE8EBBDA8EBB8A03";
|
device = "/dev/disk/by-uuid/BE8EBBDA8EBB8A03";
|
||||||
fsType = "ntfs";
|
fsType = "ntfs";
|
||||||
options = [
|
options = [
|
||||||
"uid=1000" # your user ID (check with `id -u`)
|
"uid=1000" # your user ID (check with `id -u`)
|
||||||
"gid=100" # your primary group ID (check with `id -g`)
|
"gid=100" # your primary group ID (check with `id -g`)
|
||||||
"dmask=022" # dir permissions
|
"dmask=022" # dir permissions
|
||||||
"fmask=133" # file permissions
|
"fmask=022" # file permissions
|
||||||
"nofail"
|
"nofail"
|
||||||
|
"exec"
|
||||||
|
|
||||||
# make Nautilus show it with a friendly name/icon
|
# make Nautilus show it with a friendly name/icon
|
||||||
"x-gvfs-show"
|
"x-gvfs-show"
|
||||||
@ -188,23 +38,10 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Theme
|
environment = {
|
||||||
stylix = {
|
systemPackages = with pkgs; [
|
||||||
enable = true;
|
pkgs.ntfs3g
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark.yaml";
|
zigpkgs.master
|
||||||
# image = "/home/javi/Documents/wallpapers/Fantasy-Mountain.png";
|
];
|
||||||
polarity = "dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable home manager
|
|
||||||
home-manager = {
|
|
||||||
extraSpecialArgs = { inherit inputs; };
|
|
||||||
users = {
|
|
||||||
"javi" = {
|
|
||||||
imports = [
|
|
||||||
../../modules/home/home.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,183 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
hostname,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = hostname;
|
|
||||||
networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/New_York";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Flatpak (Basically just for discord)
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
systemd.services.flatpak-repo = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.flatpak ];
|
|
||||||
script = ''
|
|
||||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
#jack.enable = true;
|
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.javi = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "javi";
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
useDefaultShell = true;
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Set up my user icon
|
|
||||||
environment.etc."avatars/javi.png".source = ./assets/user-icon.png;
|
|
||||||
system.activationScripts.avatar = ''
|
|
||||||
mkdir -p /var/lib/AccountsService/icons
|
|
||||||
ln -sf /etc/avatars/javi.png /var/lib/AccountsService/icons/javi
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
brave
|
|
||||||
git
|
|
||||||
openssh
|
|
||||||
pkgs.ntfs3g
|
|
||||||
xdg-user-dirs-gtk # This helps with Nautilus integration
|
|
||||||
cachix
|
|
||||||
];
|
|
||||||
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh = {
|
|
||||||
startAgent = true;
|
|
||||||
extraConfig = "
|
|
||||||
Host myhost
|
|
||||||
Hostname gitgud.foo
|
|
||||||
";
|
|
||||||
};
|
|
||||||
|
|
||||||
# More thunar support
|
|
||||||
programs.xfconf = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "25.05"; # Did you read the comment?
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Mount my second drive
|
|
||||||
boot.supportedFilesystems = [ "ntfs" ];
|
|
||||||
fileSystems."/mnt/working-files" = {
|
|
||||||
device = "/dev/disk/by-uuid/BE8EBBDA8EBB8A03";
|
|
||||||
fsType = "ntfs";
|
|
||||||
options = [
|
|
||||||
"uid=1000" # your user ID (check with `id -u`)
|
|
||||||
"gid=100" # your primary group ID (check with `id -g`)
|
|
||||||
"dmask=022" # dir permissions
|
|
||||||
"fmask=133" # file permissions
|
|
||||||
"nofail"
|
|
||||||
|
|
||||||
# make Nautilus show it with a friendly name/icon
|
|
||||||
"x-gvfs-show"
|
|
||||||
"x-gvfs-name=Working Files"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Theme
|
|
||||||
stylix = {
|
|
||||||
enable = true;
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark.yaml";
|
|
||||||
# image = "/home/javi/Documents/wallpapers/Fantasy-Mountain.png";
|
|
||||||
polarity = "dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable zshell
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
|
|
||||||
# Enable home manager
|
|
||||||
home-manager = {
|
|
||||||
extraSpecialArgs = { inherit inputs; };
|
|
||||||
users = {
|
|
||||||
"javi" = {
|
|
||||||
imports = [
|
|
||||||
inputs.hyprshell.homeManagerModules.default
|
|
||||||
./home.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
15
hosts/laptop/default.nix
Executable file
15
hosts/laptop/default.nix
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../common-config.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services.xserver.libinput.enable = true;
|
||||||
|
}
|
7
modules/home/common/fzf.nix
Normal file
7
modules/home/common/fzf.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
@ -15,6 +15,7 @@
|
|||||||
sudo = "sudo ";
|
sudo = "sudo ";
|
||||||
# Nix
|
# Nix
|
||||||
rb = "git add . && sudo nixos-rebuild switch --flake $HOME/nix#desktop";
|
rb = "git add . && sudo nixos-rebuild switch --flake $HOME/nix#desktop";
|
||||||
|
rbl = "git add . && sudo nixos-rebuild switch --flake $HOME/nix#laptop";
|
||||||
|
|
||||||
eza = "eza";
|
eza = "eza";
|
||||||
ls = "eza -lh --group-directories-first --icons";
|
ls = "eza -lh --group-directories-first --icons";
|
||||||
@ -60,6 +61,9 @@
|
|||||||
gr = "go run .";
|
gr = "go run .";
|
||||||
gmt = "go mod tidy";
|
gmt = "go mod tidy";
|
||||||
|
|
||||||
|
# Zig
|
||||||
|
zb = "zig build";
|
||||||
|
zbr = "zig build run";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Additional bash configuration
|
# Additional bash configuration
|
||||||
@ -130,4 +134,8 @@
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
"$HOME/.config/composer/vendor/bin"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
427
modules/home/common/vscode.nix
Normal file
427
modules/home/common/vscode.nix
Normal file
@ -0,0 +1,427 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
zigpkg,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vscode; # or pkgs.vscodium for the open-source version
|
||||||
|
|
||||||
|
# Extensions
|
||||||
|
extensions =
|
||||||
|
with pkgs.vscode-extensions;
|
||||||
|
[
|
||||||
|
# Misc
|
||||||
|
vscodevim.vim
|
||||||
|
eamodio.gitlens
|
||||||
|
christian-kohler.path-intellisense
|
||||||
|
catppuccin.catppuccin-vsc-icons
|
||||||
|
foxundermoon.shell-format
|
||||||
|
gruntfuggly.todo-tree
|
||||||
|
jdinhlife.gruvbox
|
||||||
|
redhat.ansible
|
||||||
|
redhat.vscode-yaml
|
||||||
|
shd101wyy.markdown-preview-enhanced
|
||||||
|
ms-vsliveshare.vsliveshare
|
||||||
|
pkief.material-icon-theme
|
||||||
|
tamasfe.even-better-toml
|
||||||
|
# PHP
|
||||||
|
bmewburn.vscode-intelephense-client
|
||||||
|
# Html/Front End Support
|
||||||
|
bradlc.vscode-tailwindcss
|
||||||
|
formulahendry.auto-close-tag
|
||||||
|
formulahendry.auto-rename-tag
|
||||||
|
svelte.svelte-vscode
|
||||||
|
vue.volar
|
||||||
|
# Go
|
||||||
|
golang.go
|
||||||
|
mikestead.dotenv
|
||||||
|
# Python
|
||||||
|
ms-python.debugpy
|
||||||
|
ms-python.python
|
||||||
|
ms-python.vscode-pylance
|
||||||
|
# Zig
|
||||||
|
# ziglang.vscode-zig
|
||||||
|
# C++
|
||||||
|
ms-vscode.cpptools
|
||||||
|
ms-vscode.cmake-tools
|
||||||
|
# delgan.qml-format
|
||||||
|
# Nix
|
||||||
|
mkhl.direnv
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
# adpyke.vscode-sql-formatter
|
||||||
|
# adrianwilczynski.alpine-js-intellisense
|
||||||
|
# anthropic.claude-code
|
||||||
|
# cierra.livewire-vscode
|
||||||
|
# neilbrayfield.php-docblocker
|
||||||
|
# zignd.html-css-class-completion
|
||||||
|
]
|
||||||
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
# Extensions not in nixpkgs
|
||||||
|
{
|
||||||
|
name = "base16-tinted-themes";
|
||||||
|
publisher = "TintedTheming";
|
||||||
|
version = "0.27.0";
|
||||||
|
sha256 = "7wLBwfaXEoumAfp9kK5Mv1VaGffuGdoYMGZ+ZjN9G8Q=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "vscode-laravel";
|
||||||
|
publisher = "laravel";
|
||||||
|
version = "1.0.14";
|
||||||
|
sha256 = "DEHr8kAGm6ShdQCThh7MUhv24Ghwg10mGDhZgUIojrY=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "phpstorm-snippets";
|
||||||
|
publisher = "phiter";
|
||||||
|
version = "1.1.2";
|
||||||
|
sha256 = "EHEzM4YKYR+2r6RVun8tSjGYDsbriBPATNwxczEuqjQ=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "laravel-blade";
|
||||||
|
publisher = "onecentlin";
|
||||||
|
version = "1.37.0";
|
||||||
|
sha256 = "q5CTRj746404yM9mhOWYAGTzt/8CJ7Fx4QUQSJ+LdLs=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "vscode-antlers";
|
||||||
|
publisher = "stillat-llc";
|
||||||
|
version = "2.6.22";
|
||||||
|
sha256 = "3JtT5AxtbxciivfG6JaUYNPL74+8ydhDeB7SCE/92ko=";
|
||||||
|
}
|
||||||
|
# Qt Extension Pack
|
||||||
|
{
|
||||||
|
name = "qt-qml";
|
||||||
|
publisher = "TheQtCompany";
|
||||||
|
version = "1.7.0";
|
||||||
|
sha256 = "QjfvZIcE4LcJU93YiYN/zykEluHtR7zVOwYiPL0k+cQ=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "qt-ui";
|
||||||
|
publisher = "TheQtCompany";
|
||||||
|
version = "1.7.0";
|
||||||
|
sha256 = "XDOIyCZIUYPGfcszZMUkR9MHH+zrXZgympKNhcQwITY=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "qt-core";
|
||||||
|
publisher = "TheQtCompany";
|
||||||
|
version = "1.7.0";
|
||||||
|
sha256 = "2413vMpvxSYBKpaD14sMgI92W8NtCYa/sJ7PZO62WfY=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# User settings
|
||||||
|
userSettings = {
|
||||||
|
# Disable the fucking copilot chat
|
||||||
|
"github.copilot.chat.showChatPanel" = false;
|
||||||
|
"github.copilot.enable" = false;
|
||||||
|
"window.titleBarStyle" = "custom";
|
||||||
|
"window.customTitleBarVisibility" = "auto";
|
||||||
|
"workbench.colorTheme" = lib.mkForce "Stylix";
|
||||||
|
"git.autofetch" = true;
|
||||||
|
"editor.fontSize" = lib.mkForce 18;
|
||||||
|
"editor.snippetSuggestions" = "top";
|
||||||
|
"editor.formatOnPaste" = true;
|
||||||
|
"editor.formatOnSave" = true;
|
||||||
|
"qt-qml.qmlls.useQmlImportPathEnvVar" = true;
|
||||||
|
"[qml]" = {
|
||||||
|
"editor.defaultFormatter" = "Delgan.qml-format";
|
||||||
|
"editor.formatOnSave" = true;
|
||||||
|
};
|
||||||
|
"[yaml]" = {
|
||||||
|
"editor.formatOnSave" = false;
|
||||||
|
};
|
||||||
|
"[astro]" = {
|
||||||
|
"editor.formatOnSave" = false;
|
||||||
|
};
|
||||||
|
"[dockerfile]" = {
|
||||||
|
"editor.formatOnSave" = false;
|
||||||
|
"editor.formatOnPaste" = false;
|
||||||
|
"editor.formatOnType" = false;
|
||||||
|
"editor.defaultFormatter" = "ms-azuretools.vscode-containers";
|
||||||
|
};
|
||||||
|
"tailwindCSS.includeLanguages" = {
|
||||||
|
"templ" = "html";
|
||||||
|
};
|
||||||
|
"emmet.triggerExpansionOnTab" = true;
|
||||||
|
"editor.autoIndent" = "full";
|
||||||
|
"files.eol" = "\n";
|
||||||
|
"emmet.excludeLanguages" = [ ];
|
||||||
|
"emmet.includeLanguages" = {
|
||||||
|
"blade" = "html";
|
||||||
|
"templ" = "html";
|
||||||
|
"markdown" = "html";
|
||||||
|
};
|
||||||
|
"explorer.openEditors.visible" = 0;
|
||||||
|
"editor.tabCompletion" = "on";
|
||||||
|
"workbench.editor.highlightModifiedTabs" = true;
|
||||||
|
"git.enableSmartCommit" = true;
|
||||||
|
"extensions.ignoreRecommendations" = true;
|
||||||
|
"blade.format.enable" = true;
|
||||||
|
"editor.autoClosingBrackets" = "always";
|
||||||
|
"material-icon-theme.folders.theme" = "specific";
|
||||||
|
"security.workspace.trust.untrustedFiles" = "open";
|
||||||
|
"editor.unusualLineTerminators" = "auto";
|
||||||
|
"files.associations" = { };
|
||||||
|
"intelephense.environment.phpVersion" = "8.1.0";
|
||||||
|
"git.useEditorAsCommitInput" = false;
|
||||||
|
"editor.inlineSuggest.enabled" = true;
|
||||||
|
"[xml]" = {
|
||||||
|
"editor.defaultFormatter" = "redhat.vscode-xml";
|
||||||
|
};
|
||||||
|
"terminal.integrated.fontSize" = lib.mkForce 18;
|
||||||
|
"explorer.confirmDragAndDrop" = false;
|
||||||
|
"editor.unicodeHighlight.nonBasicASCII" = false;
|
||||||
|
"markdown-preview-enhanced.previewTheme" = "github-dark.css";
|
||||||
|
"window.commandCenter" = false;
|
||||||
|
"workbench.editor.editorActionsLocation" = "hidden";
|
||||||
|
"workbench.layoutControl.enabled" = false;
|
||||||
|
"editor.minimap.enabled" = false;
|
||||||
|
"workbench.activityBar.location" = "hidden";
|
||||||
|
"editor.fontFamily" = lib.mkForce "'Fira Code Retina'";
|
||||||
|
"editor.fontLigatures" = true;
|
||||||
|
"keyboard.dispatch" = "keyCode";
|
||||||
|
"workbench.iconTheme" = "catppuccin-frappe";
|
||||||
|
"search.useIgnoreFiles" = false;
|
||||||
|
"search.exclude" = {
|
||||||
|
# Hide everything in /vendor; except the "laravel" and "livewire" folder.
|
||||||
|
"**/vendor/{[^l];?[^ai]}*" = true;
|
||||||
|
# Hide everything in /public; except "index.php"
|
||||||
|
"**/public/{[^i];?[^n]}*" = true;
|
||||||
|
"**/node_modules" = true;
|
||||||
|
"**/dist" = true;
|
||||||
|
"**/_ide_helper.php" = true;
|
||||||
|
"**/composer.lock" = true;
|
||||||
|
"**/package-lock.json" = true;
|
||||||
|
"storage" = true;
|
||||||
|
".phpunit.result.cache" = true;
|
||||||
|
};
|
||||||
|
"scm.diffDecorations" = "none";
|
||||||
|
"editor.hover.enabled" = false;
|
||||||
|
"editor.matchBrackets" = "never";
|
||||||
|
"workbench.tips.enabled" = false;
|
||||||
|
"editor.colorDecorators" = false;
|
||||||
|
"git.decorations.enabled" = false;
|
||||||
|
"workbench.startupEditor" = "none";
|
||||||
|
"editor.lightbulb.enabled" = "off";
|
||||||
|
"editor.selectionHighlight" = false;
|
||||||
|
"editor.overviewRulerBorder" = false;
|
||||||
|
"editor.renderLineHighlight" = "none";
|
||||||
|
"editor.occurrencesHighlight" = "off";
|
||||||
|
"problems.decorations.enabled" = false;
|
||||||
|
"editor.renderControlCharacters" = false;
|
||||||
|
"editor.hideCursorInOverviewRuler" = true;
|
||||||
|
"editor.gotoLocation.multipleReferences" = "goto";
|
||||||
|
"editor.gotoLocation.multipleDefinitions" = "goto";
|
||||||
|
"editor.gotoLocation.multipleDeclarations" = "goto";
|
||||||
|
"workbench.editor.enablePreviewFromQuickOpen" = false;
|
||||||
|
"editor.gotoLocation.multipleImplementations" = "goto";
|
||||||
|
"editor.gotoLocation.multipleTypeDefinitions" = "goto";
|
||||||
|
"editor.cursorSurroundingLines" = 200;
|
||||||
|
"workbench.editor.pinnedTabsOnSeparateRow" = true;
|
||||||
|
"C_Cpp.default.compileCommands" = "\${workspaceFolder}/build/compile_commands.json";
|
||||||
|
"C_Cpp.default.configurationProvider" = "ms-vscode.cmake-tools";
|
||||||
|
"antlersLanguageServer.languageVersion" = "runtime";
|
||||||
|
"[antlers]" = {
|
||||||
|
"editor.defaultFormatter" = "html";
|
||||||
|
};
|
||||||
|
"window.menuBarVisibility" = "compact";
|
||||||
|
"vim.leader" = "<space>";
|
||||||
|
"vim.normalModeKeyBindings" = [
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"g"
|
||||||
|
"r"
|
||||||
|
];
|
||||||
|
"commands" = [ "editor.action.goToReferences" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"g"
|
||||||
|
"v"
|
||||||
|
];
|
||||||
|
"commands" = [ "editor.action.revealDefinitionAside" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"<leader>"
|
||||||
|
"o"
|
||||||
|
];
|
||||||
|
"commands" = [ "workbench.action.quickOpen" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"<leader>"
|
||||||
|
"p"
|
||||||
|
];
|
||||||
|
"commands" = [ "workbench.action.showCommands" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"<leader>"
|
||||||
|
"i"
|
||||||
|
];
|
||||||
|
"commands" = [ "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"vim.insertModeKeyBindings" = [
|
||||||
|
{
|
||||||
|
"before" = [
|
||||||
|
"j"
|
||||||
|
"j"
|
||||||
|
];
|
||||||
|
"after" = [ "<Esc>" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"vim.visualModeKeyBindings" = [
|
||||||
|
{
|
||||||
|
"before" = [ "<Enter>" ];
|
||||||
|
"after" = [ "<Esc>" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
"workbench.editor.showTabs" = "none";
|
||||||
|
"ansible.lightspeed.enabled" = false;
|
||||||
|
"ansible.lightspeed.suggestions.enabled" = false;
|
||||||
|
"[sql]" = {
|
||||||
|
"editor.formatOnSave" = false;
|
||||||
|
};
|
||||||
|
"svelte.enable-ts-plugin" = true;
|
||||||
|
"workbench.sideBar.location" = "right";
|
||||||
|
"workbench.panel.defaultLocation" = "right";
|
||||||
|
"zig.zls.enabled" = "on";
|
||||||
|
"zig.path" = "${zigpkg}/bin/zig";
|
||||||
|
"zig.zls.path" = "${pkgs.zls}/bin/zls";
|
||||||
|
"zig.zls.zigLibPath" = "${zigpkg}/lib";
|
||||||
|
"zig.zls.completionLabelDetails" = false;
|
||||||
|
"zig.zls.enableArgumentPlaceholders" = false;
|
||||||
|
"zig.zls.inlayHintsShowParameterName" = false;
|
||||||
|
"zig.zls.inlayHintsShowVariableTypeHints" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
keybindings = [
|
||||||
|
{
|
||||||
|
"key" = "ctrl+k";
|
||||||
|
"command" = "git.commitAll";
|
||||||
|
"when" = "!inDebugMode && !terminalFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+k";
|
||||||
|
"command" = "git.pushTo";
|
||||||
|
"when" = "!inDebugMode && !terminalFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+n";
|
||||||
|
"command" = "workbench.action.quickOpen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "shift+escape";
|
||||||
|
"command" = "workbench.action.terminal.toggleTerminal";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+`";
|
||||||
|
"command" = "workbench.action.closeAllEditors";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+1";
|
||||||
|
"command" = "workbench.files.action.collapseExplorerFolders";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+e";
|
||||||
|
"command" = "workbench.view.explorer";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+e";
|
||||||
|
"command" = "workbench.action.toggleSidebarVisibility";
|
||||||
|
"when" = "!editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+1";
|
||||||
|
"command" = "workbench.action.toggleSidebarVisibility";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+a";
|
||||||
|
"command" = "explorer.newFile";
|
||||||
|
"when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+a";
|
||||||
|
"command" = "explorer.newFolder";
|
||||||
|
"when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+d";
|
||||||
|
"command" = "deleteFile";
|
||||||
|
"when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+\\";
|
||||||
|
"command" = "workbench.action.splitEditorRight";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+h";
|
||||||
|
"command" = "workbench.action.navigateLeft";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+l";
|
||||||
|
"command" = "workbench.action.navigateRight";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+*";
|
||||||
|
"command" = "workbench.action.increaseViewSize";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+/";
|
||||||
|
"command" = "workbench.action.decreaseViewSize";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+w";
|
||||||
|
"command" = "workbench.action.joinAllGroups";
|
||||||
|
"when" = "editorFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+alt+p";
|
||||||
|
"command" = "editor.emmet.action.wrapWithAbbreviation";
|
||||||
|
"when" = "editorTextFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+alt+i";
|
||||||
|
"command" = "editor.emmet.action.balanceIn";
|
||||||
|
"when" = "editorTextFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+alt+o";
|
||||||
|
"command" = "editor.emmet.action.balanceOut";
|
||||||
|
"when" = "editorTextFocus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "alt+n";
|
||||||
|
"command" = "workbench.action.quickOpenSelectNext";
|
||||||
|
"when" = "inQuickOpen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "alt+p";
|
||||||
|
"command" = "workbench.action.quickOpenSelectPrevious";
|
||||||
|
"when" = "inQuickOpen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "alt+0";
|
||||||
|
"command" = "workbench.action.closeQuickOpen";
|
||||||
|
"when" = "inQuickOpen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"key" = "ctrl+shift+\\";
|
||||||
|
"command" = "workbench.action.toggleAuxiliaryBar";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -13,6 +13,8 @@
|
|||||||
./common/shell.nix
|
./common/shell.nix
|
||||||
./common/starship.nix
|
./common/starship.nix
|
||||||
./common/yazi.nix
|
./common/yazi.nix
|
||||||
|
./common/fzf.nix
|
||||||
|
./common/vscode.nix
|
||||||
./hyprland
|
./hyprland
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -25,7 +27,6 @@
|
|||||||
# package = pkgs.papirus-icon-theme;
|
# package = pkgs.papirus-icon-theme;
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
username = "javi";
|
username = "javi";
|
||||||
homeDirectory = "/home/javi";
|
homeDirectory = "/home/javi";
|
||||||
@ -33,10 +34,13 @@
|
|||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Basics
|
# Basics
|
||||||
quickshell
|
quickshell
|
||||||
|
zoom-us
|
||||||
|
obsidian
|
||||||
|
kdePackages.kdenlive
|
||||||
|
ffmpeg
|
||||||
|
|
||||||
# Terminal tools
|
# Terminal tools
|
||||||
ripgrep
|
ripgrep
|
||||||
fzf
|
|
||||||
bat
|
bat
|
||||||
eza
|
eza
|
||||||
jq
|
jq
|
||||||
@ -47,11 +51,16 @@
|
|||||||
nixfmt # Nix formatting
|
nixfmt # Nix formatting
|
||||||
pkgs.libsForQt5.full # QML formatting (for working on quickshell)
|
pkgs.libsForQt5.full # QML formatting (for working on quickshell)
|
||||||
claude-code
|
claude-code
|
||||||
|
xsel
|
||||||
|
nss.tools
|
||||||
|
ansible
|
||||||
|
|
||||||
# System tools
|
# System tools
|
||||||
btop
|
btop
|
||||||
fastfetch
|
fastfetch
|
||||||
gnumake
|
gnumake
|
||||||
|
dig
|
||||||
|
lsof
|
||||||
|
|
||||||
# Langs
|
# Langs
|
||||||
php
|
php
|
||||||
@ -60,6 +69,7 @@
|
|||||||
go
|
go
|
||||||
nodejs_22
|
nodejs_22
|
||||||
bun
|
bun
|
||||||
|
zls # Zig language server
|
||||||
];
|
];
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
@ -73,6 +83,7 @@
|
|||||||
XDG_CONFIG_HOME = "${config.home.homeDirectory}/.config";
|
XDG_CONFIG_HOME = "${config.home.homeDirectory}/.config";
|
||||||
XDG_DATA_HOME = "${config.home.homeDirectory}/.local/share";
|
XDG_DATA_HOME = "${config.home.homeDirectory}/.local/share";
|
||||||
XDG_STATE_HOME = "${config.home.homeDirectory}/.local/state";
|
XDG_STATE_HOME = "${config.home.homeDirectory}/.local/state";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,6 +92,11 @@
|
|||||||
btop = {
|
btop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
stylix = {
|
stylix = {
|
||||||
@ -91,7 +107,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
# Normal expected directories
|
enable = true;
|
||||||
|
configFile."user-dirs.conf" = {
|
||||||
|
text = ''
|
||||||
|
enabled=True
|
||||||
|
filename_encoding=UTF-8
|
||||||
|
'';
|
||||||
|
force = true; # This forces overwrite of existing content
|
||||||
|
};
|
||||||
userDirs = {
|
userDirs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
createDirectories = true;
|
createDirectories = true;
|
||||||
|
@ -23,12 +23,13 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
bind = [
|
bind = [
|
||||||
|
# "$mod, a, hyprexpo:expo, toggle"
|
||||||
# Start programs
|
# Start programs
|
||||||
"$mod, q, exec, $terminal"
|
"$mod, q, exec, $terminal"
|
||||||
"$mod SHIFT, o, exec, $browser"
|
"$mod SHIFT, o, exec, $browser"
|
||||||
"$mod SHIFT, p, exec, $browser --incognito"
|
"$mod SHIFT, p, exec, $browser --incognito"
|
||||||
"$mod, e, exec, $file_browser"
|
"$mod, e, exec, $file_browser"
|
||||||
"$mod SHIFT, n, exec, $terminal --start-as=normal -- bash -ic 'code ~/nix && exit'"
|
"$mod SHIFT, n, exec, code ~/nix"
|
||||||
"$mod SHIFT, ESC, exec, $terminal --start-as=normal -- bash -ic 'btop'"
|
"$mod SHIFT, ESC, exec, $terminal --start-as=normal -- bash -ic 'btop'"
|
||||||
# "$mod ALT, p, exec, $terminal --start-as=normal -- bash -ic 'proj'"
|
# "$mod ALT, p, exec, $terminal --start-as=normal -- bash -ic 'proj'"
|
||||||
|
|
||||||
@ -52,17 +53,19 @@
|
|||||||
|
|
||||||
"$mod, f, fullscreen, 0"
|
"$mod, f, fullscreen, 0"
|
||||||
"$mod, v, togglefloating, active"
|
"$mod, v, togglefloating, active"
|
||||||
"$mod, SPACE, exec, wofi --show drun"
|
# "$mod, SPACE, exec, wofi --show drun"
|
||||||
|
"$mod, SPACE, exec, waycast"
|
||||||
"$mod, d, exec, ${pkgs.wofi-emoji}/bin/wofi-emoji"
|
"$mod, d, exec, ${pkgs.wofi-emoji}/bin/wofi-emoji"
|
||||||
|
|
||||||
"$mod SHIFT, s, exec, hyprshot --mode region"
|
"$mod SHIFT, s, exec, flameshot gui"
|
||||||
", PRINT, exec, hyprshot --mode output"
|
", PRINT, exec, hyprshot --mode output"
|
||||||
|
|
||||||
"$mod SHIFT, c, togglespecialworkspace, comms"
|
"$mod SHIFT, c, togglespecialworkspace, comms"
|
||||||
"$mod SHIFT, a, togglespecialworkspace, research"
|
"$mod SHIFT, a, togglespecialworkspace, research"
|
||||||
"$mod SHIFT ALT, x, exec, hyprctl dispatch exit"
|
"$mod SHIFT ALT, x, exec, hyprctl dispatch exit"
|
||||||
"SHIFT, Print, exec, grimblast copy area"
|
"$mod SHIFT ALT, l, exec, hyprlock"
|
||||||
"CTRL, Print, exec, grimblast copy active"
|
# "SHIFT, Print, exec, grimblast copy area"
|
||||||
|
# "CTRL, Print, exec, grimblast copy active"
|
||||||
]
|
]
|
||||||
++ (
|
++ (
|
||||||
# workspaces
|
# workspaces
|
||||||
@ -81,9 +84,4 @@
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
wayland.windowManager.hyprland.plugins = [
|
|
||||||
# inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,28 +10,30 @@
|
|||||||
./binds.nix
|
./binds.nix
|
||||||
./hyprpaper.nix
|
./hyprpaper.nix
|
||||||
./hyprpanel.nix
|
./hyprpanel.nix
|
||||||
|
./hyprlock.nix
|
||||||
./wofi.nix
|
./wofi.nix
|
||||||
./desktop-env.nix
|
./desktop-env.nix
|
||||||
|
./screenshots.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
NIXOS_OZON_WL = "1";
|
NIXOS_OZON_WL = "1";
|
||||||
|
|
||||||
|
HYPR_PLUGIN_DIR = pkgs.symlinkJoin {
|
||||||
|
name = "hyprland-plugins";
|
||||||
|
paths = with pkgs.hyprlandPlugins; [
|
||||||
|
hyprexpo
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Notifications
|
# Notifications
|
||||||
libnotify
|
libnotify
|
||||||
|
|
||||||
# Screenshots
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
wl-clipboard
|
|
||||||
hyprshot
|
|
||||||
|
|
||||||
# Desktop env
|
# Desktop env
|
||||||
hyprpanel
|
hyprpanel
|
||||||
|
hyprpolkitagent
|
||||||
# Utility
|
# Utility
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
];
|
];
|
||||||
@ -59,6 +61,10 @@
|
|||||||
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
plugins = with pkgs.hyprlandPlugins; [
|
||||||
|
hyprexpo
|
||||||
|
];
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
@ -104,11 +110,9 @@
|
|||||||
exec-once = [
|
exec-once = [
|
||||||
# "quickshell -c hyprshell"
|
# "quickshell -c hyprshell"
|
||||||
"hyprpanel"
|
"hyprpanel"
|
||||||
|
"hypridle"
|
||||||
|
"systemctl --user start hyprpolkitagent"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
plugins = [
|
|
||||||
# inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,11 @@
|
|||||||
# onlyoffice-bin # Alternative office suite
|
# onlyoffice-bin # Alternative office suite
|
||||||
];
|
];
|
||||||
|
|
||||||
|
xdg.configFile."Thunar/thunarrc".text = ''
|
||||||
|
[Configuration]
|
||||||
|
DefaultView=ThunarDetailsView
|
||||||
|
'';
|
||||||
|
|
||||||
# XDG MIME associations for seamless integration
|
# XDG MIME associations for seamless integration
|
||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
87
modules/home/hyprland/hyprlock.nix
Normal file
87
modules/home/hyprland/hyprlock.nix
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
assets,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# Variables
|
||||||
|
"$font" = "Monospace";
|
||||||
|
|
||||||
|
general = {
|
||||||
|
hide_cursor = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
bezier = "linear, 1, 1, 0, 0";
|
||||||
|
animation = [
|
||||||
|
"fadeIn, 1, 5, linear"
|
||||||
|
"fadeOut, 1, 5, linear"
|
||||||
|
"inputFieldDots, 1, 2, linear"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
background = lib.mkForce [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "/etc/lockscreen.png";
|
||||||
|
blur_passes = 1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# input-field = [
|
||||||
|
# {
|
||||||
|
# monitor = "";
|
||||||
|
# size = "20%, 5%";
|
||||||
|
# fade_on_empty = false;
|
||||||
|
# rounding = 15;
|
||||||
|
# font_family = "$font";
|
||||||
|
# placeholder_text = "Input password...";
|
||||||
|
# fail_text = "$PAMFAIL";
|
||||||
|
# # Uncomment to use a letter instead of a dot to indicate the typed password
|
||||||
|
# # dots_text_format = "*";
|
||||||
|
# # dots_size = 0.4;
|
||||||
|
# dots_spacing = 0.3;
|
||||||
|
# # Uncomment to use an input indicator that does not show the password length
|
||||||
|
# # hide_input = true;
|
||||||
|
# position = "0, -20";
|
||||||
|
# halign = "center";
|
||||||
|
# valign = "center";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Labels are defined as a list since there are multiple
|
||||||
|
label = [
|
||||||
|
# TIME
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "$TIME"; # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
|
||||||
|
font_size = 90;
|
||||||
|
font_family = "$font";
|
||||||
|
position = "-30, 0";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
# DATE
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = ''cmd[update:60000] date +"%A, %d %B %Y"''; # update every 60 seconds
|
||||||
|
font_size = 25;
|
||||||
|
font_family = "$font";
|
||||||
|
position = "-30, -150";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix.targets.hyprlock = {
|
||||||
|
useWallpaper = true;
|
||||||
|
};
|
||||||
|
}
|
@ -1,5 +1,42 @@
|
|||||||
{ inputs, pkgs, ... }:
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
themeDirectory = "${config.programs.hyprpanel.package}/share/themes";
|
||||||
|
currentTheme = "gruvbox_vivid";
|
||||||
|
raw = lib.importJSON "${themeDirectory}/${currentTheme}.json";
|
||||||
|
selectedTheme = if raw ? theme then raw.theme else raw;
|
||||||
|
|
||||||
|
# We need to turn the theme json into a nested attribute set. Otherwise we
|
||||||
|
# end up with an incorrect configuration that looks like:
|
||||||
|
# theme: {theme.bar.transparent: "value", theme.foo.bar: "another value"}
|
||||||
|
# when what we really want is: theme: {bar: ..., buttons: ...}
|
||||||
|
# ----
|
||||||
|
# turn "foo.bar.baz" and value into { foo = { bar = { baz = value; }; }; }
|
||||||
|
nestAttr = path: value: lib.attrsets.setAttrByPath (lib.splitString "." path) value;
|
||||||
|
|
||||||
|
# merge a flat attrset into nested
|
||||||
|
unflatten =
|
||||||
|
flat:
|
||||||
|
lib.foldlAttrs (
|
||||||
|
acc: k: v:
|
||||||
|
lib.recursiveUpdate acc (nestAttr k v)
|
||||||
|
) { } flat;
|
||||||
|
|
||||||
|
themeAttrs = unflatten selectedTheme;
|
||||||
|
base = themeAttrs.theme;
|
||||||
|
themeOverrides = {
|
||||||
|
font.size = "14px";
|
||||||
|
bar.background = "#000000";
|
||||||
|
};
|
||||||
|
|
||||||
|
finalTheme = lib.recursiveUpdate base themeOverrides;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.hyprpanel = {
|
programs.hyprpanel = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -41,17 +78,8 @@
|
|||||||
menus.dashboard.directories.enabled = false;
|
menus.dashboard.directories.enabled = false;
|
||||||
menus.dashboard.stats.enable_gpu = true;
|
menus.dashboard.stats.enable_gpu = true;
|
||||||
|
|
||||||
theme = import ./hyprpanel/theme-gruvbox.nix;
|
# theme = builtins.fromJSON (builtins.readFile "${themeDirectory}/${currentTheme}.json");
|
||||||
|
theme = finalTheme;
|
||||||
# theme.bar.transparent = {
|
|
||||||
# transparent = false;
|
|
||||||
# buttons.style = "wave";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# theme.font = {
|
|
||||||
# name = "CaskaydiaCove NF";
|
|
||||||
# size = "14px";
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,28 +2,27 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
|
assets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
basePath = "/home/javi/Documents/wallpapers";
|
|
||||||
wallpaper = "Fantasy-Mountain.png";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.hyprpaper
|
pkgs.hyprpaper
|
||||||
];
|
];
|
||||||
|
# Home Manager
|
||||||
|
xdg.configFile."wallpaper.png".source = "${assets}/slums.png";
|
||||||
services.hyprpaper = {
|
services.hyprpaper = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
ipc = "on";
|
ipc = "on";
|
||||||
splash = false;
|
splash = false;
|
||||||
preload = [
|
preload = [
|
||||||
"${basePath}/${wallpaper}"
|
"/home/javi/.config/wallpaper.png"
|
||||||
];
|
];
|
||||||
|
|
||||||
wallpaper = [
|
wallpaper = [
|
||||||
", ${basePath}/${wallpaper}"
|
", /home/javi/.config/wallpaper.png"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
20
modules/home/hyprland/screenshots.nix
Normal file
20
modules/home/hyprland/screenshots.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
|
flameshot = pkgs.flameshot.override {
|
||||||
|
enableWlrSupport = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
flameshot
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
];
|
||||||
|
}
|
30
modules/system/device-management/logitech.nix
Normal file
30
modules/system/device-management/logitech.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
kernelModules = [ "uinput" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
solaar # Manage logitech mouse
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
logitech = {
|
||||||
|
wireless.enable = true;
|
||||||
|
wireless.enableGraphical = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.javi.extraGroups = [
|
||||||
|
"input"
|
||||||
|
"plugdev"
|
||||||
|
];
|
||||||
|
}
|
@ -13,6 +13,7 @@ in
|
|||||||
environment = {
|
environment = {
|
||||||
etc = {
|
etc = {
|
||||||
"sddm-wallpaper.png".source = "${assets}/sddm-background.png";
|
"sddm-wallpaper.png".source = "${assets}/sddm-background.png";
|
||||||
|
"lockscreen.png".source = "${assets}/lockscreen.png";
|
||||||
"gtk-3.0/settings.ini".text = ''
|
"gtk-3.0/settings.ini".text = ''
|
||||||
[Settings]
|
[Settings]
|
||||||
gtk-icon-theme-name=Papirus
|
gtk-icon-theme-name=Papirus
|
||||||
|
22
modules/system/gaming.nix
Normal file
22
modules/system/gaming.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Install Steam
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||||
|
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||||
|
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gamemode
|
||||||
|
];
|
||||||
|
|
||||||
|
# In your configuration.nix
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
{ lib, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
nasIp = "10.89.0.15";
|
nasIp = "10.89.0.15";
|
||||||
@ -7,10 +7,11 @@ let
|
|||||||
"backups"
|
"backups"
|
||||||
"container-data"
|
"container-data"
|
||||||
"javi"
|
"javi"
|
||||||
|
"xrandr"
|
||||||
];
|
];
|
||||||
|
|
||||||
configureShare = share: {
|
configureShare = share: {
|
||||||
name = "/mnt/${share}";
|
name = "/home/javi/network-shares/${share}";
|
||||||
value = {
|
value = {
|
||||||
device = "${nasIp}:${baseMnt}/${share}";
|
device = "${nasIp}:${baseMnt}/${share}";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
@ -19,11 +20,6 @@ let
|
|||||||
"noauto"
|
"noauto"
|
||||||
"rw"
|
"rw"
|
||||||
"vers=4"
|
"vers=4"
|
||||||
|
|
||||||
# make Nautilus/Dolphin/Any File Manager show it with a friendly name/icon
|
|
||||||
"x-gvfs-show"
|
|
||||||
"x-gvfs-name=NAS — ${share}"
|
|
||||||
"x-gvfs-icon=network-server"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -41,8 +37,11 @@ in
|
|||||||
udisks2.enable = true;
|
udisks2.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = fsConfig;
|
# Add NFS utilities
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nfs-utils
|
||||||
|
];
|
||||||
|
|
||||||
# # Optional: Create mount directories
|
fileSystems = fsConfig;
|
||||||
# systemd.tmpfiles.rules = map (share: "d /mnt/${share} 0755 root root -") shares;
|
systemd.tmpfiles.rules = map (share: "d /mnt/${share} 0755 root root -") shares;
|
||||||
}
|
}
|
||||||
|
201
modules/system/nix-valet.nix
Normal file
201
modules/system/nix-valet.nix
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
/*
|
||||||
|
This module gives the same functionality as laravel valet or valet linux.
|
||||||
|
|
||||||
|
Set up DNSMasq to point all *.test domains to caddy.
|
||||||
|
|
||||||
|
Caddy will look for a folder with the same name in ~/projects and serve it.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
# Enable dnsmasq
|
||||||
|
dnsmasq = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Point all .test domains to localhost
|
||||||
|
address = "/.test/127.0.0.1";
|
||||||
|
# Don't forward .test queries to upstream DNS
|
||||||
|
# server = "/test/";
|
||||||
|
# Listen on localhost only
|
||||||
|
listen-address = "127.0.0.1";
|
||||||
|
# Bind to interface
|
||||||
|
bind-interfaces = true;
|
||||||
|
# Cache size
|
||||||
|
cache-size = 1000;
|
||||||
|
# Don't read /etc/hosts
|
||||||
|
no-hosts = true;
|
||||||
|
# Don't poll /etc/resolv.conf
|
||||||
|
no-poll = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable PHP-FPM
|
||||||
|
# phpfpm = {
|
||||||
|
# pools.www = {
|
||||||
|
# user = "javi";
|
||||||
|
# group = "users";
|
||||||
|
# settings = {
|
||||||
|
# "listen.owner" = "javi";
|
||||||
|
# "listen.group" = "users";
|
||||||
|
# "listen.mode" = "0660";
|
||||||
|
# "pm" = "dynamic";
|
||||||
|
# "pm.max_children" = 32;
|
||||||
|
# "pm.start_servers" = 2;
|
||||||
|
# "pm.min_spare_servers" = 2;
|
||||||
|
# "pm.max_spare_servers" = 4;
|
||||||
|
# "pm.max_requests" = 500;
|
||||||
|
# };
|
||||||
|
# phpEnv."PATH" = lib.makeBinPath [ pkgs.php ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable Caddy
|
||||||
|
caddy = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.frankenphp;
|
||||||
|
globalConfig = ''
|
||||||
|
auto_https off
|
||||||
|
frankenphp
|
||||||
|
debug
|
||||||
|
order php_server before file_server
|
||||||
|
'';
|
||||||
|
/*
|
||||||
|
WORKING CONFIG
|
||||||
|
map {host} {pname} {
|
||||||
|
~^(.+)\.test$ $1
|
||||||
|
default "unknown"
|
||||||
|
}
|
||||||
|
root * /home/javi/projects/{pname}/public
|
||||||
|
|
||||||
|
# Add file server directive with browse enabled for debugging
|
||||||
|
file_server browse
|
||||||
|
|
||||||
|
# Or for PHP apps, add try_files
|
||||||
|
try_files {path} {path}/ /index.php?{query}
|
||||||
|
|
||||||
|
php_server
|
||||||
|
*/
|
||||||
|
extraConfig = ''
|
||||||
|
# Specific subdomain first (more specific routes come first)
|
||||||
|
http://caddytest.test {
|
||||||
|
respond "fuck"
|
||||||
|
}
|
||||||
|
|
||||||
|
http://*.test, http://*.*.test {
|
||||||
|
map {host} {project_dir} {
|
||||||
|
~^(.+)\.test$ $1
|
||||||
|
default "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
vars base_path "/home/javi/projects/{project_dir}"
|
||||||
|
|
||||||
|
@laravel file {
|
||||||
|
root {vars.base_path}/public
|
||||||
|
try_files index.php
|
||||||
|
}
|
||||||
|
|
||||||
|
@jigsaw file {
|
||||||
|
root {vars.base_path}/build_local
|
||||||
|
try_files index.html
|
||||||
|
}
|
||||||
|
|
||||||
|
handle @laravel {
|
||||||
|
root * {vars.base_path}/public
|
||||||
|
php_server
|
||||||
|
file_server
|
||||||
|
|
||||||
|
try_files {path} {path}/ /index.php?{query}
|
||||||
|
}
|
||||||
|
|
||||||
|
handle @jigsaw {
|
||||||
|
root * {vars.base_path}/build_local
|
||||||
|
try_files {path} {path}/ /index.html
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
respond "Unknown project type"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure system to use local dnsmasq for .test domains
|
||||||
|
resolved = {
|
||||||
|
enable = true;
|
||||||
|
domains = [ "~test" ];
|
||||||
|
fallbackDns = [
|
||||||
|
"10.89.0.1"
|
||||||
|
# "8.8.8.8"
|
||||||
|
# "1.1.1.1"
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
DNS=127.0.0.1#53
|
||||||
|
Domains=~test
|
||||||
|
DNSSEC=false
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Install PHP and related packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# Add common PHP extensions you might need
|
||||||
|
php84Extensions.mbstring
|
||||||
|
php84Extensions.xml
|
||||||
|
php84Extensions.curl
|
||||||
|
php84Extensions.zip
|
||||||
|
php84Extensions.gd
|
||||||
|
php84Extensions.intl
|
||||||
|
php84Extensions.bcmath
|
||||||
|
php84Extensions.soap
|
||||||
|
php84Extensions.mysqli
|
||||||
|
php84Extensions.pdo_mysql
|
||||||
|
php84Extensions.pgsql
|
||||||
|
php84Extensions.pdo_sqlite
|
||||||
|
];
|
||||||
|
|
||||||
|
# Create a dedicated caddy config directory
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/lib/caddy 0755 javi users -"
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.caddy = {
|
||||||
|
serviceConfig = {
|
||||||
|
User = lib.mkForce "javi";
|
||||||
|
Group = lib.mkForce "users";
|
||||||
|
|
||||||
|
ProtectHome = lib.mkForce false; # This is key!
|
||||||
|
ProtectSystem = lib.mkForce false;
|
||||||
|
PrivateTmp = lib.mkForce false;
|
||||||
|
|
||||||
|
# More comprehensive capabilities
|
||||||
|
AmbientCapabilities = [
|
||||||
|
"CAP_NET_BIND_SERVICE"
|
||||||
|
"CAP_SETUID"
|
||||||
|
"CAP_SETGID"
|
||||||
|
];
|
||||||
|
CapabilityBoundingSet = [
|
||||||
|
"CAP_NET_BIND_SERVICE"
|
||||||
|
"CAP_SETUID"
|
||||||
|
"CAP_SETGID"
|
||||||
|
];
|
||||||
|
# Keep it simple - just set the config directory
|
||||||
|
Environment = [ "XDG_CONFIG_HOME=/var/lib/caddy" ];
|
||||||
|
# Ensure the working directory is accessible
|
||||||
|
WorkingDirectory = "/var/lib/caddy";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# And make sure your user is in the caddy group
|
||||||
|
users.users.javi = {
|
||||||
|
extraGroups = [
|
||||||
|
"users"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user