Compare commits
17 commits
pre-restru
...
main
121
LICENSE
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||||
|
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||||
|
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||||
|
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||||
|
HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without fear
|
||||||
|
of later claims of infringement build upon, modify, incorporate in other
|
||||||
|
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||||
|
and for any purposes, including without limitation commercial purposes.
|
||||||
|
These owners may contribute to the Commons to promote the ideal of a free
|
||||||
|
culture and the further production of creative, cultural and scientific
|
||||||
|
works, or to gain reputation or greater distribution for their Work in
|
||||||
|
part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||||
|
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||||
|
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||||
|
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or future
|
||||||
|
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional
|
||||||
|
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||||
|
member of the public at large and to the detriment of Affirmer's heirs and
|
||||||
|
successors, fully intending that such Waiver shall not be subject to
|
||||||
|
revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||||
|
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||||
|
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||||
|
maximum duration provided by applicable law or treaty (including future
|
||||||
|
time extensions), (iii) in any current or future medium and for any number
|
||||||
|
of copies, and (iv) for any purpose whatsoever, including without
|
||||||
|
limitation commercial, advertising or promotional purposes (the
|
||||||
|
"License"). The License shall be deemed effective as of the date CC0 was
|
||||||
|
applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||||
|
of the License, and in such case Affirmer hereby affirms that he or she
|
||||||
|
will not (i) exercise any of his or her remaining Copyright and Related
|
||||||
|
Rights in the Work or (ii) assert any associated claims and causes of
|
||||||
|
action with respect to the Work, in either case contrary to Affirmer's
|
||||||
|
express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the
|
||||||
|
Work.
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
67
README.md
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# linuxware
|
||||||
|
|
||||||
|
This repository contains the configuration of my main Linux based system(s), currently this repository consists of a
|
||||||
|
[NixOS] system configuration alongside [dotfiles] generated by [Home Manager] and [dotfiles] maintained by me.
|
||||||
|
|
||||||
|
## Navigation guide
|
||||||
|
|
||||||
|
In this section I will detail how you can navigate and make the most use out of my configuration.
|
||||||
|
|
||||||
|
### File structure
|
||||||
|
|
||||||
|
- [`flake.nix` & `flake.lock`](#flake)
|
||||||
|
- _This is the "entry-point" of the [NixOS] configuration._
|
||||||
|
- [`hosts/`](/hosts/)
|
||||||
|
- _Inside you can find the per-system customizations I've made._
|
||||||
|
- [`modules/`](/modules/)
|
||||||
|
- _These contain the modules I export in the [flake](#flake)._
|
||||||
|
- [`packages/`](/packages/)
|
||||||
|
- _Encompasses the packages I maintain outside or in tandem with [nixpkgs]._
|
||||||
|
- [`shared/`](/shared/)
|
||||||
|
- _The [NixOS] and [Home Manager] configuration that's shared across hosts._
|
||||||
|
- [`assets/`](/assets/)
|
||||||
|
- _All media used in this configuration or shown inside READMEs._
|
||||||
|
|
||||||
|
> _Be sure to click the hyperlinks for the relevant documentation._
|
||||||
|
|
||||||
|
#### Flake
|
||||||
|
|
||||||
|
A flake basically contains what you want to consume in your environment and what you want to export to be consumed, on
|
||||||
|
top of having a lockfile to pin the versions of what you are consuming.
|
||||||
|
|
||||||
|
Personally, the best way to learn how to use it as a beginner is the [Unofficial NixOS & Flakes
|
||||||
|
Book](https://nixos-and-flakes.thiscute.world/). I will not explain how to configure or use my flake as that would be
|
||||||
|
lenghty.
|
||||||
|
|
||||||
|
I export four modules that you can use in your configuration:
|
||||||
|
- [Hyprland NixOS configuration](/modules/hyprland/README.md)
|
||||||
|
- _Accessed through `<linuxware>.nixosModules.hyprland`._
|
||||||
|
- [Hyprland home-manager configuration](/modules/hyprland/README.md#configuration)
|
||||||
|
- _Accessed through `<linuxware>.homeManagerModules.hyprland`._
|
||||||
|
- [Emacs home-manager configuration & dotfiles](/modules/emacs/README.md)
|
||||||
|
- _Accessed through `<linuxware>.homeManagerModules.emacs`_
|
||||||
|
- [Neovim home-manager configuration & dotfiles](/modules/neovim/README.md)
|
||||||
|
- _Accessed through `<linuxware>.homeManagerModules.neovim`._
|
||||||
|
|
||||||
|
> _Be sure to click the hyperlinks for the relevant documentation._
|
||||||
|
|
||||||
|
To facilitate on-boarding, once you've set-up the experimental features needed for flakes I have provided a template
|
||||||
|
with this repository for you to use; it comes with a [NixOS] system configuration, [Home Manager] configuration
|
||||||
|
alongside the modules that I provide.
|
||||||
|
|
||||||
|
All you have to do is enter the directory you want your configuration to reside and execute
|
||||||
|
`nix flake init -t github:wizardlink/linuxware`. Be sure to read the `README.md` file!
|
||||||
|
|
||||||
|
## Desktop screenshot
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> _All screenshots of the system and it's components are available [here](/assets/README.md)._
|
||||||
|
|
||||||
|
|
||||||
|
<!-- REFERENCES -->
|
||||||
|
|
||||||
|
[dotfiles]: https://wiki.archlinux.org/title/Dotfiles
|
||||||
|
[home manager]: https://github.com/nix-community/home-manager
|
||||||
|
[nixos]: https://nixos.org/
|
||||||
|
[nixpkgs]: https://github.com/NixOS/nixpkgs/
|
42
assets/README.md
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
## Desktop
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Window gaps
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Window borders
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Programs
|
||||||
|
|
||||||
|
### Neovim
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
### Alacritty & Fish
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Rofi
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Waybar
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Emacs
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## System
|
||||||
|
|
||||||
|
### SDDM background
|
||||||
|
|
||||||
|

|
BIN
assets/screenshots/alacritty-and-fish.png
Normal file
After Width: | Height: | Size: 366 KiB |
BIN
assets/screenshots/doomemacs.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
assets/screenshots/fastfetch-wizdesk.png
Normal file
After Width: | Height: | Size: 399 KiB |
BIN
assets/screenshots/full-system.png
Normal file
After Width: | Height: | Size: 4.1 MiB |
BIN
assets/screenshots/hyprland-active.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/screenshots/hyprland-gaps.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/screenshots/hyprland-inactive.png
Normal file
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
BIN
assets/screenshots/rofi.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
assets/screenshots/waybar.png
Normal file
After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 4.8 MiB After Width: | Height: | Size: 4.8 MiB |
159
flake.lock
|
@ -20,11 +20,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739298463,
|
"lastModified": 1742213273,
|
||||||
"narHash": "sha256-oAFv9jKwwA7d7384d2LeywDSgwhvb3ZnrwbfoWPhXsI=",
|
"narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "f239e5aadd6d23c48e085c2de3397e2058e54d16",
|
"rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -69,25 +69,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gakuen-cosplay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"utils": "utils"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741220025,
|
|
||||||
"narHash": "sha256-Eib4BQfSCQ0XSB0OJ+IahFIf5WN3VyJ2Zx0AAvID5z8=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "c5fcfedf91b8a34014132902fc76eac6674ed49a",
|
|
||||||
"revCount": 15,
|
|
||||||
"type": "git",
|
|
||||||
"url": "file:///mnt/internal/shared/work/gakuen/projects/cosplayer_submission"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "file:///mnt/internal/shared/work/gakuen/projects/cosplayer_submission"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -117,11 +98,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741217763,
|
"lastModified": 1742569620,
|
||||||
"narHash": "sha256-g/TrltIjFHIjtzKY5CJpoPANfHQWDD43G5U1a/v5oVg=",
|
"narHash": "sha256-igC2cu+cPRB3E4QwKR+vGagyAtoyB+DrmWwDKm8jkaw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "486b066025dccd8af7fbe5dd2cc79e46b88c80da",
|
"rev": "8a68f18e96bcab13e4f97bece61e6602298a3141",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -133,8 +114,8 @@
|
||||||
"hydractify-bot": {
|
"hydractify-bot": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"naersk": "naersk",
|
"naersk": "naersk",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"utils": "utils_2"
|
"utils": "utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736510643,
|
"lastModified": 1736510643,
|
||||||
|
@ -166,11 +147,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738664950,
|
"lastModified": 1742215578,
|
||||||
"narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=",
|
"narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3",
|
"rev": "2fd36421c21aa87e2fe3bee11067540ae612f719",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -218,17 +199,17 @@
|
||||||
"hyprlang": "hyprlang",
|
"hyprlang": "hyprlang",
|
||||||
"hyprutils": "hyprutils",
|
"hyprutils": "hyprutils",
|
||||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"systems": "systems_3",
|
"systems": "systems_2",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741218628,
|
"lastModified": 1742563987,
|
||||||
"narHash": "sha256-Z+jPT8nijCV1EzCZ5XkLr8x82WPCX/GKk8OKg8Kr+s4=",
|
"narHash": "sha256-P7rQo7SClIFU6OkUlnN01OqVWsjTMgmG/8gqhpXHfRI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "243376078655f304b01e5097c59108745bbb9da9",
|
"rev": "c7f0519fafbf334a8f5088a8a0fc385732a24036",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -346,11 +327,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739048914,
|
"lastModified": 1741191527,
|
||||||
"narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=",
|
"narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "a7334904d591f38757c46fbe2ab68651877d9099",
|
"rev": "72df3861f1197e41b078faa3e38eedd60e00018d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -371,11 +352,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739891528,
|
"lastModified": 1741534688,
|
||||||
"narHash": "sha256-h8HOCZ/rw2Buzku+GKF77VXxrGjCSOQkLhptiEKMYg0=",
|
"narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "61a5382f4b1ab578064d470b1b3d3f0df396b8ba",
|
"rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -396,11 +377,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739049028,
|
"lastModified": 1739870480,
|
||||||
"narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=",
|
"narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "04146df74a8d5ec0b579657307be01f1e241125f",
|
"rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -411,7 +392,7 @@
|
||||||
},
|
},
|
||||||
"naersk": {
|
"naersk": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721727458,
|
"lastModified": 1721727458,
|
||||||
|
@ -429,18 +410,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 0,
|
|
||||||
"narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=",
|
|
||||||
"path": "/nix/store/s1fbk6a410xn8vcaj54iqv22agyn0ria-source",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 0,
|
"lastModified": 0,
|
||||||
"narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=",
|
"narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=",
|
||||||
|
@ -452,7 +421,7 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729850857,
|
"lastModified": 1729850857,
|
||||||
"narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=",
|
"narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=",
|
||||||
|
@ -468,13 +437,13 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739020877,
|
"lastModified": 1742069588,
|
||||||
"narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
|
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
|
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -484,13 +453,13 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741010256,
|
"lastModified": 1742422364,
|
||||||
"narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=",
|
"narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246",
|
"rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -510,11 +479,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737465171,
|
"lastModified": 1742058297,
|
||||||
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
|
"narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
|
"rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -526,11 +495,10 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"clipboard-sync": "clipboard-sync",
|
"clipboard-sync": "clipboard-sync",
|
||||||
"gakuen-cosplay": "gakuen-cosplay",
|
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"hydractify-bot": "hydractify-bot",
|
"hydractify-bot": "hydractify-bot",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"spicetify-nix": "spicetify-nix"
|
"spicetify-nix": "spicetify-nix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -539,14 +507,14 @@
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_4"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740889006,
|
"lastModified": 1742512598,
|
||||||
"narHash": "sha256-A1iyKVvZrLdLwqWPC9OvPjC85ADQn2R1EGfCzJBl+wI=",
|
"narHash": "sha256-nFPhSSxrPrpkmFR6vQq8OpUS+lGIAxDCUKg+5/qcnR8=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "spicetify-nix",
|
"repo": "spicetify-nix",
|
||||||
"rev": "f8d3757d4ae3af2175a631fb9598a42d30ee75fc",
|
"rev": "610654a0afe56766e639077d9d267148667a25e8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -571,21 +539,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"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": 1689347949,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
@ -600,7 +553,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_4": {
|
"systems_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
@ -619,24 +572,6 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils_2": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726560853,
|
"lastModified": 1726560853,
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
|
@ -679,11 +614,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737634991,
|
"lastModified": 1741934139,
|
||||||
"narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=",
|
"narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a",
|
"rev": "150b0b6f52bb422a1b232a53698606fe0320dde0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
33
flake.nix
|
@ -8,7 +8,6 @@
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
spicetify-nix = {
|
spicetify-nix = {
|
||||||
url = "github:Gerg-L/spicetify-nix";
|
url = "github:Gerg-L/spicetify-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
@ -22,8 +21,6 @@
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
|
||||||
hydractify-bot.url = "github:hydractify/hydractify-bot";
|
hydractify-bot.url = "github:hydractify/hydractify-bot";
|
||||||
|
|
||||||
gakuen-cosplay.url = "git+file:///mnt/internal/shared/work/gakuen/projects/cosplayer_submission";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
@ -42,13 +39,13 @@
|
||||||
let
|
let
|
||||||
specialArgs = inputs;
|
specialArgs = inputs;
|
||||||
modules = [
|
modules = [
|
||||||
./specific/desktop/nixos.nix
|
./hosts/wizdesk/nixos.nix
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.extraSpecialArgs = inputs;
|
home-manager.extraSpecialArgs = inputs;
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.wizardlink = import ./specific/desktop/home-manager.nix;
|
home-manager.users.wizardlink = import ./hosts/wizdesk/home-manager.nix;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
|
@ -58,13 +55,13 @@
|
||||||
let
|
let
|
||||||
specialArgs = inputs;
|
specialArgs = inputs;
|
||||||
modules = [
|
modules = [
|
||||||
./specific/laptop/nixos.nix
|
./hosts/wizlap/nixos.nix
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.extraSpecialArgs = inputs;
|
home-manager.extraSpecialArgs = inputs;
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.wizardlink = import ./specific/laptop/home-manager.nix;
|
home-manager.users.wizardlink = import ./hosts/wizlap/home-manager.nix;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
|
@ -73,10 +70,26 @@
|
||||||
|
|
||||||
formatter."${system}" = pkgs.nixfmt-rfc-style;
|
formatter."${system}" = pkgs.nixfmt-rfc-style;
|
||||||
|
|
||||||
|
packages."${system}" = {
|
||||||
|
miraclecast = pkgs.callPackage ./packages/miraclecast.nix { };
|
||||||
|
wb32dfu-udev-rules = pkgs.callPackage ./packages/wb32dfu-udev-rules { };
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosModules = {
|
||||||
|
hyprland = import ./modules/hyprland/nixos.nix;
|
||||||
|
};
|
||||||
|
|
||||||
homeManagerModules = {
|
homeManagerModules = {
|
||||||
emacsConfig = import ./modules/home-manager/programs/emacs;
|
emacs = import ./modules/emacs;
|
||||||
hyprlandConfig = import ./modules/home-manager/programs/hyprland;
|
hyprland = import ./modules/hyprland/home-manager.nix;
|
||||||
neovim = import ./modules/home-manager/programs/neovim;
|
neovim = import ./modules/neovim;
|
||||||
|
};
|
||||||
|
|
||||||
|
templates.default = {
|
||||||
|
path = ./modules/template;
|
||||||
|
description = ''
|
||||||
|
A NixOS & Home-Manager template to get started with the https://github.com/wizardlink/linuxware configuration.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
15
hosts/README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
## wizdesk
|
||||||
|
|
||||||
|
My main machine, this is where I host everything that's accessible through the `thewizard.link` domain.
|
||||||
|
|
||||||
|
### Specs
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## wizlap
|
||||||
|
|
||||||
|
My ASUS Vivobook 15 (M1502IA), I mostly use it when I have to travel so there isn't much to say about it.
|
||||||
|
|
||||||
|
### Specs
|
||||||
|
|
||||||
|
They can be found in ASUS' store/support page, I haven't modified it yet.
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
# Import configurations for better modularity.
|
# Import configurations for better modularity.
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/home-manager
|
../../modules/emacs
|
||||||
./services/openttd.nix
|
../../modules/hyprland/home-manager.nix
|
||||||
./services/terraria.nix
|
../../modules/neovim
|
||||||
./services/hydractify-bot.nix
|
../../shared/home-manager
|
||||||
./services/gakuen-cosplay-api.nix
|
./services/home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
@ -28,11 +28,6 @@
|
||||||
# release notes.
|
# release notes.
|
||||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
MANPAGER = "nvim +Man!";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
# Create wallpaper script to be read by the start_services.sh script.
|
# Create wallpaper script to be read by the start_services.sh script.
|
||||||
".local/share/scripts/wallpaper.sh" = {
|
".local/share/scripts/wallpaper.sh" = {
|
||||||
|
@ -137,6 +132,13 @@
|
||||||
screenshot.enable = true;
|
screenshot.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable hypridle and hyprlock
|
||||||
|
hypridle.enable = true;
|
||||||
|
hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
background = "/mnt/internal/personal/wallpapers/wallhaven-2em8y6.jpg";
|
||||||
|
};
|
||||||
|
|
||||||
# Add monitor configuration to hyprland
|
# Add monitor configuration to hyprland
|
||||||
extraConfig = # hyprlang
|
extraConfig = # hyprlang
|
||||||
''
|
''
|
|
@ -1,11 +1,11 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/nixos
|
../../modules/hyprland/nixos.nix
|
||||||
|
../../shared/nixos
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./hardware.nix
|
./services/nixos
|
||||||
./services.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -134,11 +134,36 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#
|
#
|
||||||
# NETWORK #
|
# HARDWARE #
|
||||||
#
|
#
|
||||||
|
|
||||||
# Enable WOL on my ethernet interface.
|
# Enable Zenergy
|
||||||
networking.interfaces.enp5s0.wakeOnLan.enable = true;
|
boot.initrd.kernelModules = [
|
||||||
|
"zenergy"
|
||||||
|
];
|
||||||
|
boot.extraModulePackages = [
|
||||||
|
config.boot.kernelPackages.zenergy
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable openrazer for managing Razer products' configuration
|
||||||
|
hardware.openrazer = {
|
||||||
|
enable = true;
|
||||||
|
users = [ "wizardlink" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev = {
|
||||||
|
# Vial udev rule for Monsgeek M1
|
||||||
|
extraRules = ''
|
||||||
|
# Monsgeek M1
|
||||||
|
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0005", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# WB32 DFU rules - needed for flashing
|
||||||
|
packages = [ (pkgs.callPackage ../../packages/wb32dfu-udev-rules { }) ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# enable a better driver for wireless xbox controllers.
|
||||||
|
hardware.xpadneo.enable = true;
|
||||||
|
|
||||||
#
|
#
|
||||||
# PACKAGES #
|
# PACKAGES #
|
9
hosts/wizdesk/services/home-manager/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hydractify-bot.nix
|
||||||
|
./openttd.nix
|
||||||
|
./terraria.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -43,15 +43,8 @@
|
||||||
reverse_proxy 127.0.0.1:8111
|
reverse_proxy 127.0.0.1:8111
|
||||||
'';
|
'';
|
||||||
|
|
||||||
virtualHosts."api.cosplay.thewizard.link".extraConfig = ''
|
virtualHosts."nixbin.thewizard.link".extraConfig = ''
|
||||||
reverse_proxy 127.0.0.1:3000
|
reverse_proxy 127.0.0.1:7373
|
||||||
'';
|
|
||||||
|
|
||||||
virtualHosts."cosplay.thewizard.link".extraConfig = ''
|
|
||||||
root * /srv/cosplay
|
|
||||||
encode
|
|
||||||
try_files {path} /index.html
|
|
||||||
file_server
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
12
hosts/wizdesk/services/nixos/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./archi.nix
|
||||||
|
./caddy.nix
|
||||||
|
./forgejo.nix
|
||||||
|
./jellyfin.nix
|
||||||
|
./nix-serve.nix
|
||||||
|
./postgresql.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -4,6 +4,6 @@
|
||||||
services.nix-serve = {
|
services.nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 7373;
|
port = 7373;
|
||||||
secretKeyFile = "/etc/keys/nix-store-wizdesk-1";
|
secretKeyFile = "/etc/keys/nixbin.thewizard.link-1";
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -7,7 +7,10 @@
|
||||||
|
|
||||||
# Import configurations for better modularity.
|
# Import configurations for better modularity.
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/home-manager
|
../../modules/emacs
|
||||||
|
../../modules/hyprland/home-manager.nix
|
||||||
|
../../modules/neovim
|
||||||
|
../../shared/home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
@ -24,11 +27,6 @@
|
||||||
# release notes.
|
# release notes.
|
||||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
MANPAGER = "nvim +Man!";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
# Create wallpaper script to be read by the start_services.sh script.
|
# Create wallpaper script to be read by the start_services.sh script.
|
||||||
".local/share/scripts/wallpaper.sh" = {
|
".local/share/scripts/wallpaper.sh" = {
|
|
@ -1,10 +1,10 @@
|
||||||
{ ... }:
|
{ config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/nixos
|
../../modules/hyprland/nixos.nix
|
||||||
|
../../shared/nixos
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./hardware.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -19,6 +19,9 @@
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
|
# Consume my desktop's binary cache. This is specially useful since (in theory)
|
||||||
|
# I will always update the flake and desktop machine first, so when I pull the changes,
|
||||||
|
# my desktop will have all the binaries my laptop needs.
|
||||||
nix.settings.substituters = [ "http://192.168.0.100:7373" ];
|
nix.settings.substituters = [ "http://192.168.0.100:7373" ];
|
||||||
nix.settings.trusted-public-keys = [
|
nix.settings.trusted-public-keys = [
|
||||||
"wizdesk-1:2UvctPjiMwMs7r2r7VPvoPmh4OcUjY3JmaRDJnOTZY8="
|
"wizdesk-1:2UvctPjiMwMs7r2r7VPvoPmh4OcUjY3JmaRDJnOTZY8="
|
||||||
|
@ -97,4 +100,19 @@
|
||||||
LC_TIME = "en_GB.UTF-8";
|
LC_TIME = "en_GB.UTF-8";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#
|
||||||
|
# HARDWARE #
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable Zenergy
|
||||||
|
boot.initrd.kernelModules = [
|
||||||
|
"zenergy"
|
||||||
|
];
|
||||||
|
boot.extraModulePackages = [
|
||||||
|
config.boot.kernelPackages.zenergy
|
||||||
|
];
|
||||||
|
|
||||||
|
# enable a better driver for wireless xbox controllers.
|
||||||
|
hardware.xpadneo.enable = true;
|
||||||
}
|
}
|
10
modules/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
This directory encompasses all modules/resources that are exported by this repository's flake.
|
||||||
|
|
||||||
|
## Currently maintained modules
|
||||||
|
|
||||||
|
- [hyprland](./hyprland)
|
||||||
|
- [neovim](./neovim)
|
||||||
|
- [emacs](./emacs)
|
||||||
|
- [template](./template)
|
||||||
|
|
||||||
|
> _Be sure to click the hyperlinks for the relevant documentation._
|
6
modules/emacs/README.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
This module has no options, it simply just adds the necessary packages to run
|
||||||
|
[DOOM Emacs](https://github.com/doomemacs/doomemacs) and writes contents inside [./doom](./doom) into `$XDG_CONFIG_HOME/doom`.
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|

|
|
@ -1,92 +0,0 @@
|
||||||
{ pkgs, clipboard-sync, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./programs
|
|
||||||
];
|
|
||||||
|
|
||||||
# The home.packages option allows you to install Nix packages into your
|
|
||||||
# environment.
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# # You can also create simple shell scripts directly inside your
|
|
||||||
# # configuration. For example, this adds a command 'my-hello' to your
|
|
||||||
# # environment:
|
|
||||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
|
||||||
# echo "Hello, ${config.home.username}!"
|
|
||||||
# '')
|
|
||||||
|
|
||||||
## Tools
|
|
||||||
# Utilities
|
|
||||||
fastfetch
|
|
||||||
firefox
|
|
||||||
pavucontrol
|
|
||||||
protonvpn-gui
|
|
||||||
qbittorrent
|
|
||||||
qdirstat
|
|
||||||
speedcrunch
|
|
||||||
vlc
|
|
||||||
yt-dlp
|
|
||||||
zathura
|
|
||||||
|
|
||||||
# Personal utilities
|
|
||||||
anki
|
|
||||||
ledger
|
|
||||||
(vesktop.override {
|
|
||||||
# FIXME: Need to pin until https://github.com/NixOS/nixpkgs/issues/380429 gets resolved.
|
|
||||||
electron = electron_33;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Editing
|
|
||||||
libreoffice
|
|
||||||
|
|
||||||
# Creative work
|
|
||||||
aseprite
|
|
||||||
blender
|
|
||||||
krita
|
|
||||||
lmms
|
|
||||||
orca-slicer
|
|
||||||
shotcut
|
|
||||||
vcv-rack
|
|
||||||
vhs
|
|
||||||
|
|
||||||
## Entertainment
|
|
||||||
jellyfin-media-player
|
|
||||||
|
|
||||||
# Gaming
|
|
||||||
gamescope
|
|
||||||
heroic
|
|
||||||
protontricks
|
|
||||||
wineWowPackages.unstableFull
|
|
||||||
winetricks
|
|
||||||
|
|
||||||
# Games
|
|
||||||
openttd
|
|
||||||
prismlauncher
|
|
||||||
shattered-pixel-dungeon
|
|
||||||
xonotic
|
|
||||||
|
|
||||||
## Libraries
|
|
||||||
libsForQt5.kdegraphics-thumbnailers
|
|
||||||
libsForQt5.kio-extras
|
|
||||||
rnnoise-plugin
|
|
||||||
|
|
||||||
## Development
|
|
||||||
beekeeper-studio
|
|
||||||
godot_4
|
|
||||||
hoppscotch
|
|
||||||
lazygit
|
|
||||||
|
|
||||||
## Desktop environment
|
|
||||||
clipboard-sync.packages.${pkgs.stdenv.hostPlatform.system}.default
|
|
||||||
cliphist
|
|
||||||
grim
|
|
||||||
libsForQt5.ark
|
|
||||||
loupe
|
|
||||||
mako
|
|
||||||
slurp
|
|
||||||
swww
|
|
||||||
|
|
||||||
# Mail client
|
|
||||||
thunderbird
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
# My [Home Manager] module for neovim configuration
|
|
||||||
|
|
||||||
This is my personal configuration for _[neovim]_ using [Nix](https://nixos.org/), so this will not work outside of it - though it can be made to be.
|
|
||||||
|
|
||||||
In this case, I am outputting a [Home Manager] module to be used directly in your configuration, it currently barely has
|
|
||||||
any
|
|
||||||
options and is opinionated due to it being my personal configuration for daily use... But I plan to slowly add options
|
|
||||||
to make it usable by other people.
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
First you add this repository as a flake input:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
inputs = {
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
wizardlink.url = "git+https://git.thewizard.link/wizardlink/linuxware";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { home-manager, ... }@inputs: {
|
|
||||||
homeConfigurations.YOURHOSTNAME = home-manager.lib.homeManagerConfiguration {
|
|
||||||
# ...
|
|
||||||
extraSPecialArgs = inputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Then in your [Home Manager] configuration you can just import it:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ wizardlink }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
wizardlink.homeManagerModules.neovim
|
|
||||||
];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuring
|
|
||||||
|
|
||||||
### [nixd](https://github.com/nix-community/nixd/)
|
|
||||||
|
|
||||||
```nix
|
|
||||||
programs.neovim.flake = {
|
|
||||||
hostname = "nixos"; # Your hostname used to build your system.
|
|
||||||
location = "git+file:///home/wizardlink/.system"; # Where you store your flake.
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## My neovim failed because of package X not existing
|
|
||||||
|
|
||||||
My configuration is based off of `nixos-unstable` so sometimes your package may not exist or have a different name, I
|
|
||||||
apologise for that but I don't plan on maintaining backwards compatibility. :(
|
|
||||||
|
|
||||||
## How it looks
|
|
||||||
|
|
||||||
Here's some screenshots of how it currently looks like:
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
The theme I'm using is [catppuccin](https://github.com/catppuccin) in case you're curious.
|
|
||||||
|
|
||||||
[neovim]: https://neovim.io/
|
|
||||||
[Home Manager]: https://github.com/nix-community/home-manager
|
|
60
modules/hyprland/README.md
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
The [NixOS] module installs [Hyprland] onto the system.
|
||||||
|
|
||||||
|
Whilst the [Home Manager] module generates the dotfiles for [Hyprland] and optionally [hyprlock] and [hypridle].
|
||||||
|
|
||||||
|
It can be configured through `modules.hyprland`.
|
||||||
|
|
||||||
|
## Module options
|
||||||
|
|
||||||
|
### extraConfig
|
||||||
|
|
||||||
|
`modules.hyprland.extraConfig` when set will be appended to the top of the configuration I generate, you can see where
|
||||||
|
that is [here](./home-manager.nix#L189).
|
||||||
|
|
||||||
|
There are no monitors configured by default, so you should use this option to do so.
|
||||||
|
|
||||||
|
### hypridle.enable
|
||||||
|
|
||||||
|
Whether to configure and enable the [hypridle] package. Be mindful that it may not auto-start, I have yet to find why but
|
||||||
|
even though it configures to start after `graphical-session.target`, that isn't reached in Hyprland sometimes.
|
||||||
|
|
||||||
|
### hyprlock.enable
|
||||||
|
|
||||||
|
Whether to configure and enable the [hyprlock] package, by itself it does nothing but when [hypridle] is also enabled it
|
||||||
|
will automatically call [hyprlock] after a 120 second timeout.
|
||||||
|
|
||||||
|
### hyprlock.background
|
||||||
|
|
||||||
|
A path to an image that will be used as background when [hyprlock] is invoked.
|
||||||
|
|
||||||
|
### scripts.screenshot.enable
|
||||||
|
|
||||||
|
When enabled it will create two script files in `$XDG_DATA_HOME/scripts/hyprland` and two keybinds for you to run these
|
||||||
|
scripts, allowing you to take screenshots of a region and the entire screen of your first monitor.
|
||||||
|
|
||||||
|
### scripts.startup.enable
|
||||||
|
|
||||||
|
Not my proudest option, this will add two packages containing a startup script for apps that I use in the daily &
|
||||||
|
services. If this module ever gets actually used by someone, then I'll refine it.
|
||||||
|
|
||||||
|
## Visuals
|
||||||
|
|
||||||
|
### Active window
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Inactive window
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Gaps
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
<!-- REFERENCES -->
|
||||||
|
[hyprland]: https://hyprland.org/
|
||||||
|
[hyprlock]: https://github.com/hyprwm/hyprlock
|
||||||
|
[hypridle]: https://github.com/hyprwm/hypridle
|
||||||
|
[home manager]: https://github.com/nix-community/home-manager
|
||||||
|
[nixos]: https://nixos.org
|
|
@ -21,6 +21,18 @@ in
|
||||||
description = "Configuration to be appended to my own.";
|
description = "Configuration to be appended to my own.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hypridle.enable = lib.mkEnableOption "hypridle";
|
||||||
|
|
||||||
|
hyprlock = {
|
||||||
|
enable = lib.mkEnableOption "hyprlock";
|
||||||
|
background = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
default = "";
|
||||||
|
example = "~/wallpapers/abc.png";
|
||||||
|
description = "The image to be used as background for hyprlock.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
scripts = {
|
scripts = {
|
||||||
screenshot.enable = lib.mkEnableOption "screenshot";
|
screenshot.enable = lib.mkEnableOption "screenshot";
|
||||||
startup.enable = lib.mkEnableOption "startup";
|
startup.enable = lib.mkEnableOption "startup";
|
||||||
|
@ -28,13 +40,18 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
home.sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
};
|
||||||
|
|
||||||
xdg.configFile."hypr/frappe.conf".source = builtins.fetchurl {
|
xdg.configFile."hypr/frappe.conf".source = builtins.fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/catppuccin/hyprland/main/themes/frappe.conf";
|
url = "https://raw.githubusercontent.com/catppuccin/hyprland/main/themes/frappe.conf";
|
||||||
sha256 = "1clw669i1n3dhawdw4clmjv75fy3smycb5iqk3sanzpr3y0i4vwx";
|
sha256 = "1clw669i1n3dhawdw4clmjv75fy3smycb5iqk3sanzpr3y0i4vwx";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable hypridle and hyprlock
|
# Enable hypridle and hyprlock
|
||||||
services.hypridle = {
|
services.hypridle = lib.mkIf cfg.hypridle.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
|
@ -43,21 +60,24 @@ in
|
||||||
lock_cmd = "hyprlock";
|
lock_cmd = "hyprlock";
|
||||||
};
|
};
|
||||||
|
|
||||||
listener = [
|
listener =
|
||||||
{
|
[
|
||||||
timeout = 120;
|
{
|
||||||
on-timeout = "hyprlock";
|
timeout = 180;
|
||||||
}
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
{
|
on-resume = "hyprctl dispatch dpms on";
|
||||||
timeout = 180;
|
}
|
||||||
on-timeout = "hyprctl dispatch dpms off";
|
]
|
||||||
on-resume = "hyprctl dispatch dpms on";
|
++ lib.optionals cfg.hyprlock.enable [
|
||||||
}
|
{
|
||||||
];
|
timeout = 120;
|
||||||
|
on-timeout = "hyprlock";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.hyprlock = {
|
programs.hyprlock = lib.mkIf cfg.hyprlock.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = # hyprlang
|
extraConfig = # hyprlang
|
||||||
''
|
''
|
||||||
|
@ -76,7 +96,7 @@ in
|
||||||
# BACKGROUND
|
# BACKGROUND
|
||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
path = $HOME/internal/personal/wallpapers/wallhaven-2em8y6.jpg
|
path = ${cfg.hyprlock.background}
|
||||||
blur_passes = 0
|
blur_passes = 0
|
||||||
color = $base
|
color = $base
|
||||||
}
|
}
|
||||||
|
@ -283,7 +303,7 @@ in
|
||||||
# Example windowrule v1
|
# Example windowrule v1
|
||||||
# windowrule = float, ^(kitty)$
|
# windowrule = float, ^(kitty)$
|
||||||
# Example windowrule v2
|
# Example windowrule v2
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
@ -361,37 +381,38 @@ in
|
||||||
bind = SHIFT CTRL, F12, pass, ^(com.obsproject.Studio)$
|
bind = SHIFT CTRL, F12, pass, ^(com.obsproject.Studio)$
|
||||||
|
|
||||||
# Window rules for xwaylandvideobridge
|
# Window rules for xwaylandvideobridge
|
||||||
windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
|
windowrule = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
|
||||||
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
|
windowrule = noanim,class:^(xwaylandvideobridge)$
|
||||||
windowrulev2 = nofocus,class:^(xwaylandvideobridge)$
|
windowrule = nofocus,class:^(xwaylandvideobridge)$
|
||||||
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$
|
windowrule = noinitialfocus,class:^(xwaylandvideobridge)$
|
||||||
|
|
||||||
# Rules for windowkill
|
# Rules for windowkill
|
||||||
windowrule = noborder, ^(steam_app_2726450)$
|
windowrule = tag +windowkill, class:^(steam_app_2726450)$
|
||||||
windowrule = pin, ^(steam_app_2726450)$
|
windowrule = noborder, tag:windowkill
|
||||||
windowrule = opacity 0.9, ^(steam_app_2726450)$
|
windowrule = pin, tag:windowkill
|
||||||
|
windowrule = opacity 0.9, tag:windowkill
|
||||||
|
|
||||||
# Rules for Awakened PoE
|
# Rules for Awakened PoE
|
||||||
windowrulev2 = tag +poe, class:^(steam_app_238960)$
|
windowrule = tag +poe, class:^(steam_app_238960)$
|
||||||
windowrulev2 = allowsinput, tag:poe
|
windowrule = allowsinput, tag:poe
|
||||||
|
|
||||||
windowrulev2 = tag +apt, class:^(awakened-poe-trade)$
|
windowrule = tag +apt, class:^(awakened-poe-trade)$
|
||||||
windowrulev2 = float, tag:apt
|
windowrule = float, tag:apt
|
||||||
windowrulev2 = noblur, tag:apt
|
windowrule = noblur, tag:apt
|
||||||
windowrulev2 = noborder, tag:apt
|
windowrule = noborder, tag:apt
|
||||||
windowrulev2 = noshadow, tag:apt
|
windowrule = noshadow, tag:apt
|
||||||
|
|
||||||
# Rules for anki
|
# Rules for anki
|
||||||
windowrulev2 = float, class:^(anki)$
|
windowrule = float, class:^(anki)$
|
||||||
|
|
||||||
windowrulev2 = tag +gw2, class:^(steam_app_1284210)$
|
windowrule = tag +gw2, class:^(steam_app_1284210)$
|
||||||
windowrulev2 = noblur, tag:gw2
|
windowrule = noblur, tag:gw2
|
||||||
windowrulev2 = noborder, tag:gw2
|
windowrule = noborder, tag:gw2
|
||||||
|
|
||||||
# Rules for godot
|
# Rules for godot
|
||||||
windowrulev2 = tag +godot, class:^(Godot)$, title:^(.+)$
|
windowrule = tag +godot, class:^(Godot)$, title:^(.+)$
|
||||||
windowrulev2 = center, tag:godot
|
windowrule = center, tag:godot
|
||||||
windowrulev2 = size 50% 50%, tag:godot
|
windowrule = size 50% 50%, tag:godot
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
26
modules/hyprland/nixos.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ pkgs, hyprland, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
hyprland-pkgs = hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Enable Hyprland's cachix
|
||||||
|
nix.settings.substituters = [ "https://hyprland.cachix.org" ];
|
||||||
|
nix.settings.trusted-public-keys = [
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable Hyprland
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Overwrite the Mesa packages with Hyprland's for consitency
|
||||||
|
hardware.graphics = {
|
||||||
|
package = hyprland-pkgs.mesa;
|
||||||
|
package32 = hyprland-pkgs.pkgsi686Linux.mesa;
|
||||||
|
};
|
||||||
|
}
|
44
modules/neovim/README.md
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
This module generates dotfiles for [neovim].
|
||||||
|
|
||||||
|
The module extends `programs.neovim`.
|
||||||
|
|
||||||
|
## Module options
|
||||||
|
|
||||||
|
### programs.neovim.nixd.hostname
|
||||||
|
|
||||||
|
By default [nixd] is enabled, you **need** to pass the current machine's
|
||||||
|
hostname that is used to generate your system.
|
||||||
|
|
||||||
|
### programs.neovim.nixd.location
|
||||||
|
|
||||||
|
The location of your system's flake, [nixd] will execute an expression defined in the LSP's configuration that reads
|
||||||
|
the flake's contents to evaluate [NixOS] and [Home Manager] options.
|
||||||
|
|
||||||
|
### programs.neovim.ollama.enable
|
||||||
|
|
||||||
|
Whether to add an [ollama] package to be used with [ollama.nvim](https://github.com/nomnivore/ollama.nvim).
|
||||||
|
|
||||||
|
### programs.neovim.ollama.type
|
||||||
|
|
||||||
|
The type of [ollama] package to be added, valid options are: `amd`, `nvidia` or `cpu`.
|
||||||
|
|
||||||
|
## My neovim failed because of package X not existing
|
||||||
|
|
||||||
|
My configuration is based off of `nixos-unstable` so sometimes your package may not exist or have a different name, I
|
||||||
|
apologise for that but I don't plan on maintaining backwards compatibility. :(
|
||||||
|
|
||||||
|
## How it looks
|
||||||
|
|
||||||
|
Here's some screenshots of how it currently looks like:
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
The theme I'm using is [catppuccin](https://github.com/catppuccin) in case you're curious.
|
||||||
|
|
||||||
|
[neovim]: https://neovim.io/
|
||||||
|
[Home Manager]: https://github.com/nix-community/home-manager
|
||||||
|
[nixos]: https://nixos.org
|
||||||
|
[nixd]: https://github.com/nix-community/nixd/
|
||||||
|
[ollama]: https://ollama.com/
|
|
@ -56,81 +56,89 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
MANPAGER = "nvim +Man!";
|
||||||
|
};
|
||||||
|
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
withPython3 = true;
|
withPython3 = true;
|
||||||
|
|
||||||
extraLuaConfig = builtins.readFile ./init.lua;
|
extraLuaConfig = builtins.readFile ./init.lua;
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages =
|
||||||
# Needed by ollama.nvim
|
with pkgs;
|
||||||
curl
|
[
|
||||||
ollamaPackage
|
# Needed by LuaSnip
|
||||||
|
luajitPackages.jsregexp
|
||||||
|
|
||||||
# Needed by LuaSnip
|
# Treesitter
|
||||||
luajitPackages.jsregexp
|
gcc # For compiling languages
|
||||||
|
|
||||||
# Treesitter
|
# CMAKE
|
||||||
gcc # For compiling languages
|
neocmakelsp
|
||||||
|
|
||||||
# CMAKE
|
# C/C++
|
||||||
neocmakelsp
|
clang-tools
|
||||||
|
vscode-extensions.ms-vscode.cpptools
|
||||||
|
|
||||||
# C/C++
|
# C#
|
||||||
clang-tools
|
#csharp-ls Testing roslyn.nvim
|
||||||
vscode-extensions.ms-vscode.cpptools
|
roslyn-ls
|
||||||
|
rzls
|
||||||
|
csharpier
|
||||||
|
netcoredbg
|
||||||
|
|
||||||
# C#
|
# HTML/CSS/JSON
|
||||||
#csharp-ls Testing roslyn.nvim
|
emmet-ls
|
||||||
roslyn-ls
|
vscode-langservers-extracted
|
||||||
rzls
|
|
||||||
csharpier
|
|
||||||
netcoredbg
|
|
||||||
|
|
||||||
# HTML/CSS/JSON
|
# LUA
|
||||||
emmet-ls
|
lua-language-server
|
||||||
vscode-langservers-extracted
|
stylua
|
||||||
|
|
||||||
# LUA
|
# Markdown
|
||||||
lua-language-server
|
markdownlint-cli
|
||||||
stylua
|
marksman
|
||||||
|
|
||||||
# Markdown
|
# Nix
|
||||||
markdownlint-cli
|
deadnix
|
||||||
marksman
|
nixd
|
||||||
|
nixfmt-rfc-style
|
||||||
|
statix
|
||||||
|
|
||||||
# Nix
|
# Python
|
||||||
deadnix
|
basedpyright
|
||||||
nixd
|
python312Packages.flake8
|
||||||
nixfmt-rfc-style
|
ruff
|
||||||
statix
|
|
||||||
|
|
||||||
# Python
|
# TypeScript/JavaScript
|
||||||
basedpyright
|
vtsls
|
||||||
python312Packages.flake8
|
deno
|
||||||
ruff
|
vscode-js-debug
|
||||||
|
|
||||||
# TypeScript/JavaScript
|
# Rust
|
||||||
vtsls
|
rust-analyzer
|
||||||
deno
|
cargo # Needed by blink-cmp
|
||||||
vscode-js-debug
|
taplo
|
||||||
|
vscode-extensions.vadimcn.vscode-lldb
|
||||||
|
|
||||||
# Rust
|
# Vue
|
||||||
rust-analyzer
|
prettierd
|
||||||
cargo # Needed by blink-cmp
|
vue-language-server
|
||||||
taplo
|
|
||||||
vscode-extensions.vadimcn.vscode-lldb
|
|
||||||
|
|
||||||
# Vue
|
# Svelte
|
||||||
prettierd
|
nodePackages.svelte-language-server
|
||||||
vue-language-server
|
|
||||||
|
|
||||||
# Svelte
|
# YAML
|
||||||
nodePackages.svelte-language-server
|
yaml-language-server
|
||||||
|
]
|
||||||
# YAML
|
++ pkgs.lib.optionals config.programs.neovim.ollama.enable [
|
||||||
yaml-language-server
|
# Needed by ollama.nvim
|
||||||
];
|
curl
|
||||||
|
ollamaPackage
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."nvim/lua" = {
|
xdg.configFile."nvim/lua" = {
|
|
@ -28,11 +28,4 @@ require("lazy").setup({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
dev = {
|
|
||||||
path = "/mnt/internal/repos",
|
|
||||||
patterns = {
|
|
||||||
"nvim-ufo",
|
|
||||||
"nix-store.nvim",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
} --[[@as LazyConfig]])
|
} --[[@as LazyConfig]])
|
|
@ -1,6 +1,6 @@
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
"kevinhwang91/nvim-ufo",
|
"wizardlink/nvim-ufo",
|
||||||
opts = {
|
opts = {
|
||||||
provider_selector = function(_, filetype, _)
|
provider_selector = function(_, filetype, _)
|
||||||
---@type table<string, UfoProviderEnum | UfoProviderEnum[]>
|
---@type table<string, UfoProviderEnum | UfoProviderEnum[]>
|
|
@ -29,7 +29,6 @@ return {
|
||||||
"objc",
|
"objc",
|
||||||
"proto",
|
"proto",
|
||||||
"python",
|
"python",
|
||||||
"razor",
|
|
||||||
"svelte",
|
"svelte",
|
||||||
"tsx",
|
"tsx",
|
||||||
"typescript",
|
"typescript",
|
|
@ -1,111 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enable GPG.
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable fish system-wide to integrate with nixpkgs.
|
|
||||||
programs.fish.enable = true;
|
|
||||||
|
|
||||||
# Enable Steam.
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
|
||||||
# ^ Enables so we can transfer games to other computers in the network.
|
|
||||||
|
|
||||||
# Add Proton-GE to 'compatibilitytools.d'.
|
|
||||||
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable and configure gamemode.
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = true;
|
|
||||||
enableRenice = true;
|
|
||||||
settings = {
|
|
||||||
gpu = {
|
|
||||||
apply_gpu_optimisations = "accept-responsibility";
|
|
||||||
gpu_device = 1;
|
|
||||||
amd_performance_level = "auto";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable KDEConnect
|
|
||||||
programs.kdeconnect = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.kdePackages.kdeconnect-kde;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable Docker.
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
# Enable virt-manager
|
|
||||||
programs.virt-manager.enable = true;
|
|
||||||
|
|
||||||
# Enable virtd and spice USB redirection
|
|
||||||
virtualisation.spiceUSBRedirection.enable = true;
|
|
||||||
virtualisation.libvirtd.enable = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
## Tools
|
|
||||||
# Utilities
|
|
||||||
bat
|
|
||||||
duf
|
|
||||||
fuseiso
|
|
||||||
lm_sensors
|
|
||||||
p7zip
|
|
||||||
tree
|
|
||||||
unrar
|
|
||||||
unzip
|
|
||||||
wget
|
|
||||||
zip
|
|
||||||
|
|
||||||
# File managing
|
|
||||||
sshfs
|
|
||||||
yazi
|
|
||||||
|
|
||||||
# Virtualization
|
|
||||||
docker-compose
|
|
||||||
quickemu
|
|
||||||
|
|
||||||
# Desktop
|
|
||||||
wl-clipboard
|
|
||||||
xclip
|
|
||||||
zoxide
|
|
||||||
(catppuccin-sddm.override # So SDDM finds the theme files.
|
|
||||||
{
|
|
||||||
flavor = "frappe";
|
|
||||||
font = "IBM Plex Sans";
|
|
||||||
fontSize = "11";
|
|
||||||
background = "${./theming/sddm/Background.jpg}";
|
|
||||||
loginBackground = true;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Networking
|
|
||||||
gping
|
|
||||||
nmap
|
|
||||||
|
|
||||||
# Processes
|
|
||||||
(btop.override {
|
|
||||||
# AMD GPU support
|
|
||||||
rocmSupport = true;
|
|
||||||
})
|
|
||||||
killall
|
|
||||||
|
|
||||||
# Filter
|
|
||||||
fzf
|
|
||||||
ripgrep
|
|
||||||
|
|
||||||
## Libraries
|
|
||||||
libsForQt5.qt5.qtgraphicaleffects
|
|
||||||
libsForQt5.qt5.qtquickcontrols2
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enable polkit,
|
|
||||||
security.polkit.enable = true;
|
|
||||||
|
|
||||||
# install an agent to interface with it,
|
|
||||||
environment.systemPackages = with pkgs; [ polkit_gnome ];
|
|
||||||
|
|
||||||
# And enable GNOME keyring for registering keys.
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
# Enable flatpak to all users.
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
|
|
||||||
services.postgresql = {
|
|
||||||
identMap = lib.mkIf config.services.postgresql.enable ''
|
|
||||||
# MAP_NAME SYSTEM_USER DB_USER
|
|
||||||
superuser_map root postgres
|
|
||||||
superuser_map postgres postgres
|
|
||||||
superuser_map /^(.*)$ \1
|
|
||||||
'';
|
|
||||||
|
|
||||||
authentication = lib.mkIf config.services.postgresql.enable (
|
|
||||||
lib.mkOverride 10 ''
|
|
||||||
# TYPE DATABASE USER ADDRESS METHOD MAP
|
|
||||||
local all all peer map=superuser_map
|
|
||||||
host all all 127.0.0.1/32 md5
|
|
||||||
host all all ::1/128 md5
|
|
||||||
local replication all peer map=superuser_map
|
|
||||||
host replication all 127.0.0.1/32 ident map=superuser_map
|
|
||||||
host replication all ::1/128 ident map=superuser_map
|
|
||||||
''
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
audio.enable = true;
|
|
||||||
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Set the default fonts for the system.
|
|
||||||
fonts.fontconfig = {
|
|
||||||
defaultFonts = {
|
|
||||||
serif = [ "IBM Plex Serif" ];
|
|
||||||
sansSerif = [ "IBM Plex Sans" ];
|
|
||||||
monospace = [ "IBM Plex Mono" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
18
modules/template/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# READ THIS BEFORE PROCEEDING
|
||||||
|
|
||||||
|
Below is a checklist of changes you need to do before rebuilding your system.
|
||||||
|
|
||||||
|
## Generate your system configuration and replace the placeholders.
|
||||||
|
|
||||||
|
You can achieve this by running `sudo nixos-generate-config`, then overwrite `hardware-configuration.nix` and
|
||||||
|
`configuration.nix` with the contents of the files found in `/etc/nixos`.
|
||||||
|
|
||||||
|
## Replace placeholder text
|
||||||
|
|
||||||
|
In `flake.nix` you will find `your-hostname-here`, replace with your machine's current hostname.
|
||||||
|
|
||||||
|
In `home-manager.nix` you have to replace:
|
||||||
|
- `your-username-here` with your user's username;
|
||||||
|
- `your-home-directory-here` with the path of your home directory, usually the same as your username;
|
||||||
|
- `your-hostname-here` with your machine's current hostname;
|
||||||
|
- `your-flake-location-here` with where you are storing the flake.
|
1
modules/template/configuration.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ ... }: { }
|
48
modules/template/flake.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
description = "NixOS System Flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
# Ideally using nixos-unstable since my configuration
|
||||||
|
# is based off of this channel.
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
linuxware = {
|
||||||
|
url = "github:wizardlink/linuxware";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs"; # Pin to your local `nixpkgs` if you use the unstable channel.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
home-manager,
|
||||||
|
nixpkgs,
|
||||||
|
linuxware,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
your-hostname-here =
|
||||||
|
let
|
||||||
|
specialArgs = inputs;
|
||||||
|
modules = [
|
||||||
|
./configuration.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.extraSpecialArgs = inputs;
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.wizardlink = import ./home-manager.nix;
|
||||||
|
}
|
||||||
|
linuxware.nixosModules.hyprland
|
||||||
|
];
|
||||||
|
in
|
||||||
|
nixpkgs.lib.nixosSystem { inherit system specialArgs modules; };
|
||||||
|
};
|
||||||
|
}
|
1
modules/template/hardware-configuration.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ ... }: { }
|
98
modules/template/home-manager.nix
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
linuxware,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
linuxware.homeManagerModules.emacs
|
||||||
|
linuxware.homeManagerModules.hyprland
|
||||||
|
linuxware.homeManagerModules.neovim
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
# manage.
|
||||||
|
home.username = "your-username-here";
|
||||||
|
home.homeDirectory = "/home/your-home-directory-here";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your configuration is
|
||||||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||||
|
# introduces backwards incompatible changes.
|
||||||
|
#
|
||||||
|
# You should not change this value, even if you update Home Manager. If you do
|
||||||
|
# want to update the value, then make sure to first check the Home Manager
|
||||||
|
# release notes.
|
||||||
|
home.stateVersion = "24.11"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
# The home.packages option allows you to install Nix packages into your
|
||||||
|
# environment.
|
||||||
|
home.packages = [
|
||||||
|
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||||
|
# # "Hello, world!" when run.
|
||||||
|
# pkgs.hello
|
||||||
|
|
||||||
|
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||||
|
# # overrides. You can do that directly here, just don't forget the
|
||||||
|
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||||
|
# # fonts?
|
||||||
|
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||||
|
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||||
|
# plain files is through 'home.file'.
|
||||||
|
home.file = {
|
||||||
|
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||||
|
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||||
|
# # symlink to the Nix store copy.
|
||||||
|
# ".screenrc".source = dotfiles/screenrc;
|
||||||
|
|
||||||
|
# # You can also set the file content immediately.
|
||||||
|
# ".gradle/gradle.properties".text = ''
|
||||||
|
# org.gradle.console=verbose
|
||||||
|
# org.gradle.daemon.idletimeout=3600000
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Manager can also manage your environment variables through
|
||||||
|
# 'home.sessionVariables'. These will be explicitly sourced when using a
|
||||||
|
# shell provided by Home Manager. If you don't want to manage your shell
|
||||||
|
# through Home Manager then you have to manually source 'hm-session-vars.sh'
|
||||||
|
# located at either
|
||||||
|
#
|
||||||
|
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# /etc/profiles/per-user/wizardlink/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
home.sessionVariables = {
|
||||||
|
# EDITOR = "emacs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
programs.neovim = {
|
||||||
|
# Enable Neovim, pre-configured by `linuxware`.
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Configure nixd
|
||||||
|
nixd = {
|
||||||
|
hostname = "your-hostname-here";
|
||||||
|
location = "your-flake-location-here";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
32
packages/README.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
## [zenergy](https://github.com/BoukeHaarsma23/zenergy/)
|
||||||
|
|
||||||
|
This is a kernel driver that adds the ability for user to fetch power draw data from AMD CPUs. I maintain it in
|
||||||
|
[nixpkgs], so you shouldn't use this package _unless_ it is broken in your current
|
||||||
|
version of [nixpkgs].
|
||||||
|
|
||||||
|
Unfortunately this cannot be outputted as a package in the flake since to create a derivation the `kernel` parameter
|
||||||
|
must be present, which, each user will have their own kernel package.
|
||||||
|
|
||||||
|
Thus you need to copy the `zenergy.nix` file somewhere in your configuration and inside `boot.extraModulePackages` pass
|
||||||
|
the package with the following expression: `config.boot.kernelPackages.callPackage ./path/to/zenergy.nix`; successfully
|
||||||
|
installing the package onto your system.
|
||||||
|
|
||||||
|
## wb32dfu-udev-rules
|
||||||
|
|
||||||
|
This package installs the udev rules necessary to allow flashing QMK/Vial onto keyboards that use WB32-DFU bootloaders.
|
||||||
|
|
||||||
|
It is meant to be used in tandem with [NixOS] using the
|
||||||
|
[`services.udev.packages`](https://search.nixos.org/options?query=services.udev.packages) configuration.
|
||||||
|
|
||||||
|
## [miraclecast](https://github.com/albfan/miraclecast/)
|
||||||
|
|
||||||
|
This is a suite of programs that allows you to connect external monitors through Wi-Fi, though unfortunately some of the
|
||||||
|
programs have no documentation and some an unhelpful help command too.
|
||||||
|
|
||||||
|
Currently the **package is available in [nixpkgs]** __however it currently fails to compile__, so you have to rely on my
|
||||||
|
configuration of this package or wait for [nixpkgs#387762](https://github.com/NixOS/nixpkgs/pull/387762) to be merged.
|
||||||
|
|
||||||
|
|
||||||
|
<!-- REFERENCES -->
|
||||||
|
[nixpkgs]: https://github.com/NixOS/nixpkgs/
|
||||||
|
[nixos]: https://nixos.org
|
91
packages/miraclecast.nix
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
glib,
|
||||||
|
gst_all_1,
|
||||||
|
iproute2,
|
||||||
|
libtool,
|
||||||
|
makeBinaryWrapper,
|
||||||
|
meson,
|
||||||
|
miraclecast,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
readline,
|
||||||
|
stdenv,
|
||||||
|
systemdLibs,
|
||||||
|
testers,
|
||||||
|
udev,
|
||||||
|
wpa_supplicant,
|
||||||
|
relyUdev ? true,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
gstreamerPluginPaths = lib.concatMapStrings (pth: pth + "/lib/gstreamer-1.0:") [
|
||||||
|
(lib.getLib gst_all_1.gstreamer)
|
||||||
|
gst_all_1.gst-libav
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-good
|
||||||
|
];
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "miraclecast";
|
||||||
|
version = "1.0-unstable-2024-07-13";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "albfan";
|
||||||
|
repo = "miraclecast";
|
||||||
|
rev = "937747fd4de64a33bccf5adb73924c435ceb821b";
|
||||||
|
hash = "sha256-y37+AOz8xYjtDk9ITxMB7UeWeMpDH+b6HQBczv+x5zo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeBinaryWrapper
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
glib
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
iproute2
|
||||||
|
libtool
|
||||||
|
readline
|
||||||
|
systemdLibs
|
||||||
|
udev
|
||||||
|
wpa_supplicant
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags =
|
||||||
|
[
|
||||||
|
"-Dbuild-tests=true"
|
||||||
|
"-Dip-binary=${iproute2}/bin/ip"
|
||||||
|
]
|
||||||
|
++ lib.optionals relyUdev [
|
||||||
|
"-Drely-udev=true"
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace res/miracle-gst \
|
||||||
|
--replace-fail "/usr/bin/gst-launch-1.0" "${gst_all_1.gstreamer}/bin/gst-launch-1.0"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
wrapProgram $out/bin/miracle-gst --set GST_PLUGIN_SYSTEM_PATH_1_0 ${gstreamerPluginPaths}
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests.version = testers.testVersion {
|
||||||
|
package = miraclecast;
|
||||||
|
command = "miracled --version";
|
||||||
|
version = "Miraclecast 1";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Connect external monitors to your system via Wifi-Display specification also known as Miracast";
|
||||||
|
homepage = "https://github.com/albfan/miraclecast";
|
||||||
|
license = licenses.lgpl21Plus;
|
||||||
|
maintainers = [ maintainers.wizardlink ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
55
shared/README.md
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
In this directory you will find the configuration for [NixOS] and [Home Manager] that I share across multiple machines.
|
||||||
|
|
||||||
|
## File structure
|
||||||
|
|
||||||
|
### ./nixos
|
||||||
|
|
||||||
|
- `default.nix`
|
||||||
|
- _Entry point._
|
||||||
|
- `common.nix`
|
||||||
|
- _General configuration and packages._
|
||||||
|
- `desktop.nix`
|
||||||
|
- _Desktop specific configuration._
|
||||||
|
- `gaming.nix`
|
||||||
|
- _Gaming related configuration._
|
||||||
|
- `hardware.nix`
|
||||||
|
- _Hardware specific configuration._
|
||||||
|
- `system.nix`
|
||||||
|
- _Configuration pertaining the system._
|
||||||
|
- `virtualization.nix`
|
||||||
|
- _Virtualization packages and configuration._
|
||||||
|
|
||||||
|
### ./home-manager
|
||||||
|
|
||||||
|
- `default.nix`
|
||||||
|
- _Entry point._
|
||||||
|
- `common.nix`
|
||||||
|
- _General and misc. packages alongside uncategorized dotfiles._
|
||||||
|
- `gaming.nix`
|
||||||
|
- _Packages and dotfiles pertaining games/gaming._
|
||||||
|
- `theming.nix`
|
||||||
|
- _Theming of the system and it's packages._
|
||||||
|
- `dotfiles/`
|
||||||
|
- _Program specific user configuration._
|
||||||
|
- `scripts/`
|
||||||
|
- _Contains scripts that I may use day to day._
|
||||||
|
|
||||||
|
#### Screenshots
|
||||||
|
|
||||||
|
Alacritty & Fish:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Waybar:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Rofi:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
<!-- REFERENCES -->
|
||||||
|
|
||||||
|
[nixos]: https://nixos.org
|
||||||
|
[home manager]: https://github.com/nix-community/home-manager
|
|
@ -1,21 +1,18 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, clipboard-sync, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
# Configuration for gamemode, for running games with optimizations.
|
# My utility scripts
|
||||||
".config/gamemode.ini".source = ./programs/gamemode.ini;
|
".local/share/scripts" = {
|
||||||
|
source = ./scripts;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Configuration for mako, a notification daemon.
|
# Configuration for mako, a notification daemon.
|
||||||
".config/mako".source = ./programs/mako;
|
".config/mako".source = ./dotfiles/mako;
|
||||||
|
|
||||||
# Configure pipewire for microphone noise supression.
|
# Configure pipewire for microphone noise supression.
|
||||||
".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = ''
|
".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = ''
|
||||||
|
@ -53,17 +50,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Configure DXVK
|
|
||||||
".config/dxvk.conf".text = ''
|
|
||||||
dxvk.enableGraphicsPipelineLibrary = Auto
|
|
||||||
'';
|
|
||||||
|
|
||||||
# My utility scripts
|
|
||||||
".local/share/scripts" = {
|
|
||||||
source = ./scripts;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure XDG
|
# Configure XDG
|
||||||
|
@ -77,4 +63,71 @@
|
||||||
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
||||||
"x-scheme-handler/unknown" = [ "firefox.desktop" ];
|
"x-scheme-handler/unknown" = [ "firefox.desktop" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
# Utilities
|
||||||
|
fastfetch
|
||||||
|
firefox
|
||||||
|
pavucontrol
|
||||||
|
protonvpn-gui
|
||||||
|
qbittorrent
|
||||||
|
qdirstat
|
||||||
|
speedcrunch
|
||||||
|
vlc
|
||||||
|
yt-dlp
|
||||||
|
zathura
|
||||||
|
|
||||||
|
# Personal utilities
|
||||||
|
anki
|
||||||
|
ledger
|
||||||
|
vesktop
|
||||||
|
|
||||||
|
# Editing
|
||||||
|
libreoffice
|
||||||
|
|
||||||
|
# Creative work
|
||||||
|
aseprite
|
||||||
|
blender
|
||||||
|
krita
|
||||||
|
lmms
|
||||||
|
orca-slicer
|
||||||
|
shotcut
|
||||||
|
vcv-rack
|
||||||
|
vhs
|
||||||
|
|
||||||
|
## Entertainment
|
||||||
|
jellyfin-media-player
|
||||||
|
|
||||||
|
## Libraries
|
||||||
|
libsForQt5.kdegraphics-thumbnailers
|
||||||
|
libsForQt5.kio-extras
|
||||||
|
rnnoise-plugin
|
||||||
|
|
||||||
|
## Development
|
||||||
|
beekeeper-studio
|
||||||
|
godot_4
|
||||||
|
hoppscotch
|
||||||
|
lazygit
|
||||||
|
|
||||||
|
## Desktop environment
|
||||||
|
clipboard-sync.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||||
|
cliphist
|
||||||
|
grim
|
||||||
|
libsForQt5.ark
|
||||||
|
loupe
|
||||||
|
mako
|
||||||
|
slurp
|
||||||
|
swww
|
||||||
|
|
||||||
|
# Mail client
|
||||||
|
thunderbird
|
||||||
|
];
|
||||||
}
|
}
|
|
@ -3,7 +3,8 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./common.nix
|
./common.nix
|
||||||
./packages.nix
|
./dotfiles
|
||||||
|
./gaming.nix
|
||||||
./theming.nix
|
./theming.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -4,12 +4,9 @@
|
||||||
imports = [
|
imports = [
|
||||||
./alacritty.nix
|
./alacritty.nix
|
||||||
./direnv
|
./direnv
|
||||||
./emacs
|
|
||||||
./fish
|
./fish
|
||||||
./git.nix
|
./git.nix
|
||||||
./hyprland
|
|
||||||
./mangohud.nix
|
./mangohud.nix
|
||||||
./neovim
|
|
||||||
./obs-studio.nix
|
./obs-studio.nix
|
||||||
./rofi
|
./rofi
|
||||||
./spotify
|
./spotify
|
|
@ -1,6 +1,11 @@
|
||||||
{ pkgs, ... }:
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
home.file = {
|
||||||
|
# Cattpuccin theme for fish shell.
|
||||||
|
".config/fish/themes/Catppuccin-Frappe.theme".source = ./Catppuccin-Frappe.theme;
|
||||||
|
};
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|